diff --git a/.editorconfig b/.editorconfig index ba4931db..dd6173cc 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,7 +1,3 @@ -# SPDX-FileCopyrightText: 2021 Johannes Loher -# -# SPDX-License-Identifier: MIT - root = true [*] diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..e1314530 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,3 @@ +/dist +/.pnp.js +/.yarn/ diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..616d3efc --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,29 @@ +module.exports = { + parser: "@typescript-eslint/parser", + + parserOptions: { + ecmaVersion: 2020, + sourceType: "module", + }, + + env: { + browser: true, + }, + + extends: ["plugin:@typescript-eslint/recommended", "plugin:jest/recommended", "plugin:prettier/recommended"], + + plugins: ["@typescript-eslint", "jest"], + + rules: { + // Specify any specific ESLint rules. + }, + + overrides: [ + { + files: ["./*.js"], + rules: { + "@typescript-eslint/no-var-requires": "off", + }, + }, + ], +}; diff --git a/.gitea/ISSUE_TEMPLATE/bug_report.yaml b/.gitea/ISSUE_TEMPLATE/bug_report.yaml deleted file mode 100644 index fc0fbaa0..00000000 --- a/.gitea/ISSUE_TEMPLATE/bug_report.yaml +++ /dev/null @@ -1,99 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Johannes Loher -# -# SPDX-License-Identifier: MIT - -name: Bug Report -about: File a bug report -labels: ["bug", "to be confirmed"] -body: - - type: markdown - attributes: - value: | - Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/ds4/issues) before submitting a new one. - - Thanks for taking the time to fill out this bug report! In order to make it effective, please provide the following information. - - type: markdown - attributes: - value: | - ## Issue Description - - type: textarea - id: expected - attributes: - label: Expected Behavior - description: What is the behavior that you expected? - validations: - required: true - - type: textarea - id: current - attributes: - label: Current Behavior - description: What is the current behavior, i.e., what happens actually? - validations: - required: true - - type: textarea - id: steps - attributes: - label: Steps to Reproduce - description: What are the steps to reproduce the problem? - placeholder: | - 1. - 2. - 3. - 4. - validations: - required: true - - type: textarea - id: context - attributes: - label: Context - description: Please provide any additional context that might be helpful, e.g. log messages, screenshots, videos, or exports of problematic scenes or worlds. - validations: - required: false - - type: markdown - attributes: - value: | - ## Environment Details - - type: input - id: version - attributes: - label: Version - description: Which version(s) of DS4 are you seeing the problem on? - validations: - required: true - - type: input - id: foundry-version - attributes: - label: Foundry VTT Version - description: Which version(s) and build of Foundry VTT are you seeing the problem on? - validations: - required: true - - type: input - id: os - attributes: - label: Operating System - description: Which operating system are you using? (Windows, OS X, Linux (which distro)) - placeholder: Windows - validations: - required: true - - type: dropdown - id: browser - attributes: - label: Browser / App - description: Are you using a Browser or the native Electron application? (Select all that apply) - multiple: true - options: - - Native Electron App - - Chrome - - Firefox - - Microsoft Edge - - Safari - - Other - validations: - required: true - - type: input - id: modules - attributes: - label: Relevant Modules - description: Please list any other active modules (including their versions) that you think might be relevant. - validations: - required: false diff --git a/.gitea/ISSUE_TEMPLATE/config.yaml b/.gitea/ISSUE_TEMPLATE/config.yaml deleted file mode 100644 index f1387a8f..00000000 --- a/.gitea/ISSUE_TEMPLATE/config.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Johannes Loher -# -# SPDX-License-Identifier: MIT - -blank_issues_enabled: false diff --git a/.gitea/ISSUE_TEMPLATE/feature_request.yaml b/.gitea/ISSUE_TEMPLATE/feature_request.yaml deleted file mode 100644 index 83816387..00000000 --- a/.gitea/ISSUE_TEMPLATE/feature_request.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Johannes Loher -# -# SPDX-License-Identifier: MIT - -name: Feature Request -description: Submit a feature request -labels: ["feature"] -body: - - type: markdown - attributes: - value: | - Your issue may already have been reported! Please search on the [issue tracker](https://git.f3l.de/dungeonslayers/ds4/issues) before submitting a new one. - - In order to submit an effective feature request, please provide the following information. - - type: textarea - id: description - attributes: - label: Description - description: Please describe the proposal in as much detail as you feel is necessary. - validations: - required: true - - type: textarea - id: context - attributes: - label: Context - description: Is there anything else you can add about the proposal? You might want to link to related issues here if you haven't already. - validations: - required: false diff --git a/.gitignore b/.gitignore index c13ce325..3ab83e13 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,3 @@ -# SPDX-FileCopyrightText: 2021 Johannes Loher -# SPDX-FileCopyrightText: 2021 Oliver Rümpelein - -# -# SPDX-License-Identifier: MIT - # IDE .idea/ .vs/ @@ -25,8 +19,10 @@ dist results.xml junit.xml -# foundry -/client -/common - -.pnpm-store/ +# yarn +.yarn/* +!.yarn/releases +!.yarn/plugins +!.yarn/sdks +!.yarn/versions +.pnp.* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..16596581 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,88 @@ +image: node:lts + +stages: + - test + - build + - release + +before_script: + - yarn install --immutable + +cache: &global_cache + paths: + - .yarn/cache + +lint: + stage: test + script: + - yarn lint + cache: + <<: *global_cache + +test: + stage: test + script: + - yarn test:ci + cache: + <<: *global_cache + artifacts: + when: always + reports: + junit: + - junit.xml + +build: + stage: build + script: + - yarn build + - mv dist ds4 + cache: + <<: *global_cache + artifacts: + paths: + - ds4 + expire_in: 1 week + +.release-template: &release-template + stage: release + before_script: + - yarn install + - apt update + - apt install --yes jq + - REPOSITORY_URL=$(echo "${CI_REPOSITORY_URL}" | sed -e "s|gitlab-ci-token:.*@|${RELEASE_TOKEN}:${RELEASE_TOKEN_SECRET}@|g") + - git remote set-url origin $REPOSITORY_URL + - git config user.name $GITLAB_USER_LOGIN + - git config user.email $GITLAB_USER_EMAIL + - git branch -D ci-processing || true + - git checkout -b ci-processing + cache: + <<: *global_cache + script: | + yarn bump-version --release=${RELEASE_TYPE} + RELEASE_VERSION=$(jq -r '.version' < package.json) + git add package.json src/system.json + git --no-pager diff + git commit -m "release version ${RELEASE_VERSION}" + git tag -f latest + git tag -f ${RELEASE_VERSION} + git push origin ci-processing:${CI_BUILD_REF_NAME} + git push origin latest -f + git push origin ${RELEASE_VERSION} + only: + - master + when: manual + +release-patch: + variables: + RELEASE_TYPE: patch + <<: *release-template + +release-minor: + variables: + RELEASE_TYPE: minor + <<: *release-template + +release-major: + variables: + RELEASE_TYPE: major + <<: *release-template diff --git a/.gitlab/issue_templates/Bug Report.md b/.gitlab/issue_templates/Bug Report.md new file mode 100644 index 00000000..c209b177 --- /dev/null +++ b/.gitlab/issue_templates/Bug Report.md @@ -0,0 +1,29 @@ +# Description + +Please describe the issue. + +# Steps to Reproduce + +1. ... +2. ... +3. ... + +# Expected Behavior + +Please describe the expected behavior. + +# Actual Behavior + +Please describe the actual behavior. + +# Additional Details + +These are optional, please add them if it makes sense. + +- ![Screenshot]() +- [Logfile]() +- ... + +# Possible Solutions + +If you have any suggestions on how to solve the issue, please add them here. diff --git a/.gitlab/issue_templates/Feature Request.md b/.gitlab/issue_templates/Feature Request.md new file mode 100644 index 00000000..d6dbe30b --- /dev/null +++ b/.gitlab/issue_templates/Feature Request.md @@ -0,0 +1,13 @@ +# Story + +As a …, I want … so that … + +# Description + +Please add a more detailed description of the feature here. + +# Acceptance criteria + +1. Criterion 1 +2. Criterion 2 +3. … diff --git a/.husky/.gitignore b/.husky/.gitignore new file mode 100644 index 00000000..31354ec1 --- /dev/null +++ b/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 00000000..f23377e9 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +yarn run lint-staged diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..8acb5aa3 --- /dev/null +++ b/.npmignore @@ -0,0 +1,7 @@ +# IDE +.idea/ +.vs/ + +# Node Modules +node_modules/ +npm-debug.log \ No newline at end of file diff --git a/.nvmrc b/.nvmrc index 2bd5a0a9..b009dfb9 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -22 +lts/* diff --git a/.nvmrc.license b/.nvmrc.license deleted file mode 100644 index 56430a92..00000000 --- a/.nvmrc.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT diff --git a/.prettierignore b/.prettierignore index 3c545cf4..c9ec7c77 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,11 +1,5 @@ -# SPDX-FileCopyrightText: 2021 Johannes Loher -# -# SPDX-License-Identifier: MIT - /dist /package-lock.json -/node_modules/ +/.pnp.js +/.yarn/ /.vscode/ -client -common -pnpm-lock.yaml diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 00000000..42618567 --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,7 @@ +module.exports = { + semi: true, + trailingComma: "all", + singleQuote: false, + printWidth: 120, + tabWidth: 4, +}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 2d0f12b4..7281d215 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,9 @@ { - "recommendations": [ - "dbaeumer.vscode-eslint", - "esbenp.prettier-vscode", - ] -} \ No newline at end of file + "recommendations": [ + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "gruntfuggly.todo-tree", + "eg2.vscode-npm-script", + "arcanis.vscode-zipfs" + ] +} diff --git a/.vscode/extensions.json.license b/.vscode/extensions.json.license deleted file mode 100644 index 409f785b..00000000 --- a/.vscode/extensions.json.license +++ /dev/null @@ -1,4 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein - -SPDX-License-Identifier: MIT diff --git a/.vscode/launch.json b/.vscode/launch.json index 370f6fec..9371697e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,14 +5,12 @@ "version": "0.2.0", "configurations": [ { - "type": "chrome", + "type": "pwa-chrome", "request": "launch", "runtimeExecutable": "/usr/bin/chromium", "name": "Launch Chrome against localhost", "url": "http://localhost:30000/game", - "pathMapping": { - "/systems/ds4": "${workspaceFolder}/dist" - } + "webRoot": "${workspaceFolder}/dist" } ] } diff --git a/.vscode/launch.json.license b/.vscode/launch.json.license deleted file mode 100644 index 31803f36..00000000 --- a/.vscode/launch.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index bb762981..4b06d0d6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,20 +1,10 @@ { - "typescript.tsdk": "node_modules/typescript/lib", - "typescript.enablePromptUseWorkspaceTsdk": true, - "eslint.useFlatConfig": true, - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[json]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[jsonc]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[yaml]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, + "search.exclude": { + "**/.yarn": true, + "**/.pnp.*": true + }, + "eslint.nodePath": ".yarn/sdks", + "prettier.prettierPath": ".yarn/sdks/prettier/index.js", + "typescript.tsdk": ".yarn/sdks/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true } diff --git a/.vscode/settings.json.license b/.vscode/settings.json.license deleted file mode 100644 index 31803f36..00000000 --- a/.vscode/settings.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/.woodpecker/checks.yaml b/.woodpecker/checks.yaml deleted file mode 100644 index bf3e1cdf..00000000 --- a/.woodpecker/checks.yaml +++ /dev/null @@ -1,70 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Johannes Loher -# -# SPDX-License-Identifier: MIT - -$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json - -variables: - - &node_image node:22 - - &enable_pnpm - - corepack enable - - corepack prepare pnpm@latest --activate - -when: - - event: push - branch: ${CI_REPO_DEFAULT_BRANCH} - - event: pull_request - - event: tag - - event: manual - -steps: - install: - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm install --frozen-lockfile - lint: - depends_on: install - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm lint - formatcheck: - depends_on: install - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm format:check - typecheck: - depends_on: install - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm typecheck - test: - depends_on: install - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm test - reuse: - depends_on: install - image: fsfe/reuse:latest - commands: - - reuse lint - commitlint: - depends_on: install - image: *node_image - commands: - - <<: *enable_pnpm - - git fetch origin ${CI_COMMIT_TARGET_BRANCH} - - pnpm exec commitlint --from origin/${CI_COMMIT_TARGET_BRANCH} - when: - event: pull_request - build: - depends_on: [lint, formatcheck, typecheck, test, reuse] - image: *node_image - commands: - - export APPDATA=$(pwd) - - <<: *enable_pnpm - - pnpm build diff --git a/.woodpecker/publish.yaml b/.woodpecker/publish.yaml deleted file mode 100644 index 5cdef92e..00000000 --- a/.woodpecker/publish.yaml +++ /dev/null @@ -1,132 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Johannes Loher -# -# SPDX-License-Identifier: MIT - -$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json - -variables: - - &node_image node:22 - - &enable_pnpm - - corepack enable - - corepack prepare pnpm@latest --activate - - &is_latest_channel - evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+$" - - &is_beta_channel - evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+-[0-9]+$" - - &release_plugin woodpeckerci/plugin-gitea-release - - &release_base_settings - base_url: ${CI_FORGE_URL} - title: ${CI_COMMIT_TAG} - note: CHANGELOG.md - files: - - ${CI_REPO_NAME}.zip - - ${CI_REPO_NAME}/system.json - api_key: - from_secret: forge_token - - &publish_manifest_base - image: alpine:latest - environment: - FORGE_TOKEN: - from_secret: forge_token - commands: - - apk update - - apk add curl - - export RELEASE_CHANNEL=$(cat .RELEASE_CHANNEL) - - 'curl --header "Authorization: token $${FORGE_TOKEN}" -X "DELETE" "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"' - - 'curl --fail --header "Authorization: token $${FORGE_TOKEN}" --upload-file ${CI_REPO_NAME}/system.json "${CI_FORGE_URL}/api/packages/${CI_REPO_OWNER}/generic/${CI_REPO_NAME}/$${RELEASE_CHANNEL}/system.json"' - -when: - event: tag - evaluate: CI_COMMIT_TAG matches "^[0-9]+\\\\.[0-9]+\\\\.[0-9]+(-[0-9]+)?$" - -depends_on: - - checks - -steps: - install: - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm install --frozen-lockfile - build: - depends_on: install - image: *node_image - environment: - NODE_ENV: production - commands: - - export APPDATA=$(pwd) - - <<: *enable_pnpm - - pnpm build - package: - depends_on: build - image: alpine:latest - commands: - - apk update - - apk add zip curl - - mv dist ${CI_REPO_NAME} - - zip -r ${CI_REPO_NAME}.zip ${CI_REPO_NAME}/* - changelog: - depends_on: build - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm changelog - choose-latest-channel: - depends_on: build - image: alpine:latest - commands: - - echo latest > .RELEASE_CHANNEL - when: - <<: *is_latest_channel - choose-beta-channel: - depends_on: build - image: alpine:latest - commands: - - echo beta > .RELEASE_CHANNEL - when: - <<: *is_beta_channel - release-latest: - depends_on: - - package - - changelog - - choose-latest-channel - image: *release_plugin - settings: - <<: *release_base_settings - when: - <<: *is_latest_channel - release-beta: - depends_on: - - package - - changelog - - choose-beta-channel - image: *release_plugin - settings: - <<: *release_base_settings - prerelease: true - when: - <<: *is_beta_channel - publish-manifest-latest: - <<: *publish_manifest_base - depends_on: release-latest - when: - <<: *is_latest_channel - publish-manifest-beta: - <<: *publish_manifest_base - depends_on: release-beta - when: - <<: *is_beta_channel - publish-to-foundry-admin: - depends_on: release-latest - image: johannesloher/foundry-publish:v4.0.0 - environment: - FVTT_PACKAGE_ID: - from_secret: fvtt_package_id - FVTT_TOKEN: - from_secret: fvtt_token - commands: - - export FVTT_MANIFEST_PATH=${CI_REPO_NAME}/system.json - - export FVTT_MANIFEST_URL=${CI_REPO_URL}/releases/download/${CI_COMMIT_TAG}/system.json - - foundry-publish - when: - <<: *is_latest_channel diff --git a/.woodpecker/release.yaml b/.woodpecker/release.yaml deleted file mode 100644 index 17966857..00000000 --- a/.woodpecker/release.yaml +++ /dev/null @@ -1,49 +0,0 @@ -# SPDX-FileCopyrightText: 2023 Johannes Loher -# -# SPDX-License-Identifier: MIT - -$schema: https://raw.githubusercontent.com/woodpecker-ci/woodpecker/master/pipeline/schema/schema.json - -variables: - - &node_image node:22 - - &enable_pnpm - - corepack enable - - corepack prepare pnpm@latest --activate - -when: - event: manual - branch: ${CI_REPO_DEFAULT_BRANCH} - -depends_on: - - checks - -steps: - install: - image: *node_image - commands: - - <<: *enable_pnpm - - pnpm install --frozen-lockfile - release: - image: *node_image - environment: - FORGE_TOKEN_NAME: - from_secret: forge_token_name - FORGE_TOKEN: - from_secret: forge_token - commands: - - <<: *enable_pnpm - - apt-get update - - apt-get install --yes jq - - export REPOSITORY_URL=$(echo "${CI_REPO_CLONE_URL}" | sed -e "s|://|://$${FORGE_TOKEN_NAME}:$${FORGE_TOKEN}@|g") - - git remote set-url origin $${REPOSITORY_URL} - - git config user.name woodpecker[bot] - - git config user.email woodpecker[bot]@${CI_SYSTEM_HOST} - - pnpm bump-version --release=${RELEASE_TYPE} - - pnpm exec prettier --write package.json system.json - - export RELEASE_VERSION=$(jq -r '.version' < package.json) - - git --no-pager diff - - git add package.json system.json - - 'git commit -m "chore(release): $${RELEASE_VERSION}"' - - git tag -f $${RELEASE_VERSION} - - git push origin ${CI_COMMIT_BRANCH} - - git push origin $${RELEASE_VERSION} diff --git a/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs b/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs new file mode 100644 index 00000000..e64e6dda --- /dev/null +++ b/.yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs @@ -0,0 +1,77 @@ +/* eslint-disable */ +module.exports = { +name: "@yarnpkg/plugin-interactive-tools", +factory: function (require) { +var plugin;plugin=(()=>{var __webpack_modules__={7560:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>K});function r(e,t,n,r){var i,o=arguments.length,u=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(u=(o<3?i(u):o>3?i(t,n,u):i(t,n))||u);return o>3&&u&&Object.defineProperty(t,n,u),u}const i=require("@yarnpkg/cli"),o=require("@yarnpkg/core");var u=n(9245),a=n(7382);const l=(0,a.memo)(({active:e})=>{const t=(0,a.useMemo)(()=>e?"◉":"◯",[e]),n=(0,a.useMemo)(()=>e?"green":"yellow",[e]);return a.createElement(u.Text,{color:n},t)});function s({active:e},t,n){const{stdin:r}=(0,u.useStdin)(),i=(0,a.useCallback)((e,n)=>t(e,n),n);(0,a.useEffect)(()=>{if(e&&r)return r.on("keypress",i),()=>{r.off("keypress",i)}},[e,i,r])}var c;!function(e){e.BEFORE="before",e.AFTER="after"}(c||(c={}));const f=function(e,t,{active:n,minus:r,plus:i,set:o,loop:u=!0}){s({active:n},(n,a)=>{const l=t.indexOf(e);switch(a.name){case r:{const e=l-1;if(u)return void o(t[(t.length+e)%t.length]);if(e<0)return;o(t[e])}break;case i:{const e=l+1;if(u)return void o(t[e%t.length]);if(e>=t.length)return;o(t[e])}}},[t,e,i,o,u])},d=({active:e=!0,children:t=[],radius:n=10,size:r=1,loop:i=!0,onFocusRequest:o,willReachEnd:l})=>{const d=a.Children.map(t,e=>(e=>{if(null===e.key)throw new Error("Expected all children to have a key");return e.key})(e)),p=d[0],[h,v]=(0,a.useState)(p),m=d.indexOf(h);(0,a.useEffect)(()=>{d.includes(h)||v(p)},[t]),(0,a.useEffect)(()=>{l&&m>=d.length-2&&l()},[m]),function({active:e},t,n){s({active:e},(e,n)=>{"tab"===n.name&&(n.shift?t(c.BEFORE):t(c.AFTER))},n)}({active:e&&!!o},e=>{null==o||o(e)},[o]),f(h,d,{active:e,minus:"up",plus:"down",set:v,loop:i});let g=m-n,y=m+n;y>d.length&&(g-=y-d.length,y=d.length),g<0&&(y+=-g,g=0),y>=d.length&&(y=d.length-1);const _=[];for(let n=g;n<=y;++n){const i=d[n],o=e&&i===h;_.push(a.createElement(u.Box,{key:i,height:r},a.createElement(u.Box,{marginLeft:1,marginRight:1},a.createElement(u.Text,null,o?a.createElement(u.Text,{color:"cyan",bold:!0},">"):" ")),a.createElement(u.Box,null,a.cloneElement(t[n],{active:o}))))}return a.createElement(u.Box,{flexDirection:"column",width:"100%"},_)},p=require("readline"),h=a.createContext(null),v=({children:e})=>{const{stdin:t,setRawMode:n}=(0,u.useStdin)();(0,a.useEffect)(()=>{n&&n(!0),t&&(0,p.emitKeypressEvents)(t)},[t,n]);const[r,i]=(0,a.useState)(new Map),o=(0,a.useMemo)(()=>({getAll:()=>r,get:e=>r.get(e),set:(e,t)=>i(new Map([...r,[e,t]]))}),[r,i]);return a.createElement(h.Provider,{value:o,children:e})};function m(e,t){const n=(0,a.useContext)(h);if(null===n)throw new Error("Expected this hook to run with a ministore context attached");if(void 0===e)return n.getAll();const r=(0,a.useCallback)(t=>{n.set(e,t)},[e,n.set]);let i=n.get(e);return void 0===i&&(i=t),[i,r]}async function g(e,t){let n;const{waitUntilExit:r}=(0,u.render)(a.createElement(v,null,a.createElement(e,Object.assign({},t,{useSubmit:e=>{const{exit:t}=(0,u.useApp)();s({active:!0},(r,i)=>{"return"===i.name&&(n=e,t())},[t,e])}}))));return await r(),n}const y=require("clipanion");var _=n(7840),b=n(4410);const w={appId:"OFCNCOG2CU",apiKey:"6fe4476ee5a1832882e326b506d14126",indexName:"npm-search"},E=n.n(b)()(w.appId,w.apiKey).initIndex(w.indexName),D=async(e,t=0)=>await E.search(e,{analyticsTags:["yarn-plugin-interactive-tools"],attributesToRetrieve:["name","version","owner","repository","humanDownloadsLast30Days"],page:t,hitsPerPage:10}),S=["regular","dev","peer"];class C extends i.BaseCommand{async execute(){const e=await o.Configuration.find(this.context.cwd,this.context.plugins),t=()=>a.createElement(u.Box,{flexDirection:"row"},a.createElement(u.Box,{flexDirection:"column",width:48},a.createElement(u.Box,null,a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},""),"/",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to move between packages.")),a.createElement(u.Box,null,a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to select a package.")),a.createElement(u.Box,null,a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," again to change the target."))),a.createElement(u.Box,{flexDirection:"column"},a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to install the selected packages.")),a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to abort.")))),n=()=>a.createElement(a.Fragment,null,a.createElement(u.Box,{width:15},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Owner")),a.createElement(u.Box,{width:11},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Version")),a.createElement(u.Box,{width:10},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Downloads"))),r=()=>a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Target")),i=({hit:t,active:n})=>{const[r,i]=m(t.name,null);s({active:n},(e,t)=>{if("space"!==t.name)return;if(!r)return void i(S[0]);const n=S.indexOf(r)+1;n===S.length?i(null):i(S[n])},[r,i]);const l=o.structUtils.parseIdent(t.name),c=o.structUtils.prettyIdent(e,l);return a.createElement(u.Box,null,a.createElement(u.Box,{width:45},a.createElement(u.Text,{bold:!0,wrap:"wrap"},c)),a.createElement(u.Box,{width:14,marginLeft:1},a.createElement(u.Text,{bold:!0,wrap:"truncate"},t.owner.name)),a.createElement(u.Box,{width:10,marginLeft:1},a.createElement(u.Text,{italic:!0,wrap:"truncate"},t.version)),a.createElement(u.Box,{width:16,marginLeft:1},a.createElement(u.Text,null,t.humanDownloadsLast30Days)))},c=({name:t,active:n})=>{const[r]=m(t,null),i=o.structUtils.parseIdent(t);return a.createElement(u.Box,null,a.createElement(u.Box,{width:47},a.createElement(u.Text,{bold:!0}," - ",o.structUtils.prettyIdent(e,i))),S.map(e=>a.createElement(u.Box,{key:e,width:14,marginLeft:1},a.createElement(u.Text,null," ",a.createElement(l,{active:r===e})," ",a.createElement(u.Text,{bold:!0},e)))))},f=()=>a.createElement(u.Box,{marginTop:1},a.createElement(u.Text,null,"Powered by Algolia.")),p=await g(({useSubmit:e})=>{const o=m();e(o);const l=Array.from(o.keys()).filter(e=>null!==o.get(e)),[s,p]=(0,a.useState)(""),[h,v]=(0,a.useState)(0),[g,y]=(0,a.useState)([]);return(0,a.useEffect)(()=>{s?(async()=>{v(0);const e=await D(s);e.query===s&&y(e.hits)})():y([])},[s]),a.createElement(u.Box,{flexDirection:"column"},a.createElement(t,null),a.createElement(u.Box,{flexDirection:"row",marginTop:1},a.createElement(u.Text,{bold:!0},"Search: "),a.createElement(u.Box,{width:41},a.createElement(_.ZP,{value:s,onChange:e=>{e.match(/\t| /)||p(e)},placeholder:"i.e. babel, webpack, react...",showCursor:!1})),a.createElement(n,null)),g.length?a.createElement(d,{radius:2,loop:!1,children:g.map(e=>a.createElement(i,{key:e.name,hit:e,active:!1})),willReachEnd:async()=>{const e=await D(s,h+1);e.query===s&&e.page-1===h&&(v(e.page),y([...g,...e.hits]))}}):a.createElement(u.Text,{color:"gray"},"Start typing..."),a.createElement(u.Box,{flexDirection:"row",marginTop:1},a.createElement(u.Box,{width:49},a.createElement(u.Text,{bold:!0},"Selected:")),a.createElement(r,null)),l.length?l.map(e=>a.createElement(c,{key:e,name:e,active:!1})):a.createElement(u.Text,{color:"gray"},"No selected packages..."),a.createElement(f,null))},{});if(void 0===p)return 1;const h=Array.from(p.keys()).filter(e=>"regular"===p.get(e)),v=Array.from(p.keys()).filter(e=>"dev"===p.get(e)),y=Array.from(p.keys()).filter(e=>"peer"===p.get(e));return h.length&&await this.cli.run(["add",...h]),v.length&&await this.cli.run(["add","--dev",...v]),y&&await this.cli.run(["add","--peer",...y]),0}}C.usage=y.Command.Usage({category:"Interactive commands",description:"open the search interface",details:"\n This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n ",examples:[["Open the search window","yarn search"]]}),r([y.Command.Path("search")],C.prototype,"execute",null);var k=n(5882),T=n.n(k);const x=({length:e,active:t})=>{if(0===e)return null;const n=e>1?" "+T().underline(" ".repeat(e-1)):" ";return a.createElement(u.Text,{dimColor:!t},n)},A=function({active:e,skewer:t,options:n,value:r,onChange:i,sizes:o=[]}){const s=n.map(({value:e})=>e),c=s.indexOf(r);return f(r,s,{active:e,minus:"left",plus:"right",set:i}),a.createElement(a.Fragment,null,n.map(({label:n},r)=>{const i=r===c,s=o[r]-1||0,f=n.replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,""),d=Math.max(0,s-f.length-2);return a.createElement(u.Box,{key:n,width:s,marginLeft:1},a.createElement(u.Text,{wrap:"truncate"},a.createElement(l,{active:i})," ",n),t?a.createElement(x,{active:e,length:d}):null)}))},O=require("@yarnpkg/plugin-essentials");function P(){}function I(e,t,n,r,i){for(var o=0,u=t.length,a=0,l=0;oe.length?n:e})),s.value=e.join(f)}else s.value=e.join(n.slice(a,a+s.count));a+=s.count,s.added||(l+=s.count)}}var d=t[u-1];return u>1&&"string"==typeof d.value&&(d.added||d.removed)&&e.equals("",d.value)&&(t[u-2].value+=d.value,t.pop()),t}function N(e){return{newPos:e.newPos,components:e.components.slice(0)}}P.prototype={diff:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.callback;"function"==typeof n&&(r=n,n={}),this.options=n;var i=this;function o(e){return r?(setTimeout((function(){r(void 0,e)}),0),!0):e}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e));var u=(t=this.removeEmpty(this.tokenize(t))).length,a=e.length,l=1,s=u+a,c=[{newPos:-1,components:[]}],f=this.extractCommon(c[0],t,e,0);if(c[0].newPos+1>=u&&f+1>=a)return o([{value:this.join(t),count:t.length}]);function d(){for(var n=-1*l;n<=l;n+=2){var r=void 0,s=c[n-1],f=c[n+1],d=(f?f.newPos:0)-n;s&&(c[n-1]=void 0);var p=s&&s.newPos+1=u&&d+1>=a)return o(I(i,r.components,t,e,i.useLongestToken));c[n]=r}else c[n]=void 0}l++}if(r)!function e(){setTimeout((function(){if(l>s)return r();d()||e()}),0)}();else for(;l<=s;){var p=d();if(p)return p}},pushComponent:function(e,t,n){var r=e[e.length-1];r&&r.added===t&&r.removed===n?e[e.length-1]={count:r.count+1,added:t,removed:n}:e.push({count:1,added:t,removed:n})},extractCommon:function(e,t,n,r){for(var i=t.length,o=n.length,u=e.newPos,a=u-r,l=0;u+1=?)?)([0-9]+)(\.[0-9]+)(\.[0-9]+)((?:-\S+)?)$/;class Y extends i.BaseCommand{async execute(){const e=await o.Configuration.find(this.context.cwd,this.context.plugins),{project:t,workspace:n}=await o.Project.find(e,this.context.cwd),r=await o.Cache.find(e);if(!n)throw new i.WorkspaceRequiredError(t.cwd,this.context.cwd);const l=(t,n)=>{const r=(i=t,u=n,a=M(a,{ignoreWhitespace:!0}),L.diff(i,u,a));var i,u,a;let l="";for(const t of r)t.added?l+=o.formatUtils.pretty(e,t.value,"green"):t.removed||(l+=t.value);return l},s=(t,n)=>{if(t===n)return n;const r=o.structUtils.parseRange(t),i=o.structUtils.parseRange(n),u=r.selector.match($),a=i.selector.match($);if(!u||!a)return l(t,n);const s=["gray","red","yellow","green","magenta"];let c=null,f="";for(let t=1;t{const u=await O.suggestUtils.fetchDescriptorFrom(e,o,{project:t,cache:r,preserveModifier:i,workspace:n});return null!==u?u.range:e.range},f=()=>a.createElement(u.Box,{flexDirection:"row"},a.createElement(u.Box,{flexDirection:"column",width:49},a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},""),"/",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to select packages.")),a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},""),"/",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to select versions."))),a.createElement(u.Box,{flexDirection:"column"},a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to install.")),a.createElement(u.Box,{marginLeft:1},a.createElement(u.Text,null,"Press ",a.createElement(u.Text,{bold:!0,color:"cyanBright"},"")," to abort.")))),p=()=>a.createElement(u.Box,{flexDirection:"row",paddingTop:1,paddingBottom:1},a.createElement(u.Box,{width:50},a.createElement(u.Text,{bold:!0},a.createElement(u.Text,{color:"greenBright"},"?")," Pick the packages you want to upgrade.")),a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Current")),a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Range")),a.createElement(u.Box,{width:17},a.createElement(u.Text,{bold:!0,underline:!0,color:"gray"},"Latest"))),h=({active:t,descriptor:n,suggestions:r})=>{const[i,l]=m(n.descriptorHash,null),s=o.structUtils.stringifyIdent(n),c=Math.max(0,45-s.length);return a.createElement(a.Fragment,null,a.createElement(u.Box,null,a.createElement(u.Box,{width:45},a.createElement(u.Text,{bold:!0},o.structUtils.prettyIdent(e,n)),a.createElement(x,{active:t,length:c})),null!==r?a.createElement(A,{active:t,options:r,value:i,skewer:!0,onChange:l,sizes:[17,17,17]}):a.createElement(u.Box,{marginLeft:2},a.createElement(u.Text,{color:"gray"},"Fetching suggestions..."))))},v=({dependencies:e})=>{const[t,n]=(0,a.useState)(null),r=(0,a.useRef)(!0);return(0,a.useEffect)(()=>()=>{r.current=!1}),(0,a.useEffect)(()=>{Promise.all(e.map(e=>(async e=>{const t=G().valid(e.range)?"^"+e.range:e.range,[n,r]=await Promise.all([c(e,e.range,t).catch(()=>null),c(e,e.range,"latest").catch(()=>null)]),i=[{value:null,label:e.range}];return n&&n!==e.range&&i.push({value:n,label:s(e.range,n)}),r&&r!==n&&r!==e.range&&i.push({value:r,label:s(e.range,r)}),i})(e))).then(t=>{const i=e.map((e,n)=>[e,t[n]]).filter(([e,t])=>t.length>1);r.current&&n(i)})},[]),t?t.length?a.createElement(d,{radius:10,children:t.map(([e,t])=>a.createElement(h,{key:e.descriptorHash,active:!1,descriptor:e,suggestions:t}))}):a.createElement(u.Text,null,"No upgrades found"):a.createElement(u.Text,null,"Fetching suggestions...")},y=await g(({useSubmit:e})=>{e(m());const n=new Map;for(const e of t.workspaces)for(const r of["dependencies","devDependencies"])for(const i of e.manifest[r].values())null===t.tryWorkspaceByDescriptor(i)&&n.set(i.descriptorHash,i);const r=o.miscUtils.sortMap(n.values(),e=>o.structUtils.stringifyDescriptor(e));return a.createElement(u.Box,{flexDirection:"column"},a.createElement(f,null),a.createElement(p,null),a.createElement(v,{dependencies:r}))},{});if(void 0===y)return 1;let _=!1;for(const e of t.workspaces)for(const t of["dependencies","devDependencies"]){const n=e.manifest[t];for(const e of n.values()){const t=y.get(e.descriptorHash);null!=t&&(n.set(e.identHash,o.structUtils.makeDescriptor(e,t)),_=!0)}}if(!_)return 0;return(await o.StreamReport.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async e=>{await t.install({cache:r,report:e})})).exitCode()}}Y.usage=y.Command.Usage({category:"Interactive commands",description:"open the upgrade interface",details:"\n This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n ",examples:[["Open the upgrade window","yarn upgrade-interactive"]]}),r([y.Command.Path("upgrade-interactive")],Y.prototype,"execute",null);const K={commands:[C,Y]}},7840:(e,t,n)=>{"use strict";const r=n(7382),i=n(7382),o=n(9245),u=n(1525),a=({value:e,placeholder:t="",focus:n=!0,mask:a,highlightPastedText:l=!1,showCursor:s=!0,onChange:c,onSubmit:f})=>{const[{cursorOffset:d,cursorWidth:p},h]=i.useState({cursorOffset:(e||"").length,cursorWidth:0});i.useEffect(()=>{h(t=>{if(!n||!s)return t;const r=e||"";return t.cursorOffset>r.length-1?{cursorOffset:r.length,cursorWidth:0}:t})},[e,n,s]);const v=l?p:0,m=a?a.repeat(e.length):e;let g=m,y=t?u.grey(t):void 0;if(s&&n){y=t.length>0?u.inverse(t[0])+u.grey(t.slice(1)):u.inverse(" "),g=m.length>0?"":u.inverse(" ");let e=0;for(const t of m)g+=e>=d-v&&e<=d?u.inverse(t):t,e++;m.length>0&&d===m.length&&(g+=u.inverse(" "))}return o.useInput((t,n)=>{if(n.upArrow||n.downArrow||n.ctrl&&"c"===t||n.tab||n.shift&&n.tab)return;if(n.return)return void(f&&f(e));let r=d,i=e,o=0;n.leftArrow?s&&r--:n.rightArrow?s&&r++:n.backspace||n.delete?d>0&&(i=e.slice(0,d-1)+e.slice(d,e.length),r--):(i=e.slice(0,d)+t+e.slice(d,e.length),r+=t.length,t.length>1&&(o=t.length)),d<0&&(r=0),d>e.length&&(r=e.length),h({cursorOffset:r,cursorWidth:o}),i!==e&&c(i)},{isActive:n}),r.createElement(o.Text,null,t?m.length>0?g:y:g)};t.ZP=a},9902:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(1525)),o=/^(rgb|hsl|hsv|hwb)\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)$/,u=/^(ansi|ansi256)\(\s?(\d+)\s?\)$/,a=(e,t)=>"foreground"===t?e:"bg"+e[0].toUpperCase()+e.slice(1);t.default=(e,t,n)=>{if(!t)return e;if(t in i.default){const r=a(t,n);return i.default[r](e)}if(t.startsWith("#")){const r=a("hex",n);return i.default[r](t)(e)}if(t.startsWith("ansi")){const r=u.exec(t);if(!r)return e;const o=a(r[1],n),l=Number(r[2]);return i.default[o](l)(e)}if(t.startsWith("rgb")||t.startsWith("hsl")||t.startsWith("hsv")||t.startsWith("hwb")){const r=o.exec(t);if(!r)return e;const u=a(r[1],n),l=Number(r[2]),s=Number(r[3]),c=Number(r[4]);return i.default[u](l,s,c)(e)}return e}},2773:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=o(n(7382)),l=u(n(1696)),s=u(n(5512)),c=u(n(1489)),f=u(n(6834)),d=u(n(5001)),p=u(n(2560)),h=u(n(9052));class v extends a.PureComponent{constructor(){super(...arguments),this.state={isFocusEnabled:!0,activeFocusId:void 0,focusables:[],error:void 0},this.rawModeEnabledCount=0,this.handleSetRawMode=e=>{const{stdin:t}=this.props;if(!this.isRawModeSupported())throw t===process.stdin?new Error("Raw mode is not supported on the current process.stdin, which Ink uses as input stream by default.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported"):new Error("Raw mode is not supported on the stdin provided to Ink.\nRead about how to prevent this error on https://github.com/vadimdemedes/ink/#israwmodesupported");if(t.setEncoding("utf8"),e)return 0===this.rawModeEnabledCount&&(t.addListener("data",this.handleInput),t.resume(),t.setRawMode(!0)),void this.rawModeEnabledCount++;0==--this.rawModeEnabledCount&&(t.setRawMode(!1),t.removeListener("data",this.handleInput),t.pause())},this.handleInput=e=>{""===e&&this.props.exitOnCtrlC&&this.handleExit(),""===e&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&("\t"===e&&this.focusNext(),""===e&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focusNext=()=>{this.setState(e=>{const t=e.focusables[0].id;return{activeFocusId:this.findNextFocusable(e)||t}})},this.focusPrevious=()=>{this.setState(e=>{const t=e.focusables[e.focusables.length-1].id;return{activeFocusId:this.findPreviousFocusable(e)||t}})},this.addFocusable=(e,{autoFocus:t})=>{this.setState(n=>{let r=n.activeFocusId;return!r&&t&&(r=e),{activeFocusId:r,focusables:[...n.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.filter(t=>t.id!==e)}))},this.activateFocusable=e=>{this.setState(t=>({focusables:t.focusables.map(t=>t.id!==e?t:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(t=>({activeFocusId:t.activeFocusId===e?void 0:t.activeFocusId,focusables:t.focusables.map(t=>t.id!==e?t:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{for(let t=e.focusables.findIndex(t=>t.id===e.activeFocusId)+1;t{for(let t=e.focusables.findIndex(t=>t.id===e.activeFocusId)-1;t>=0;t--)if(e.focusables[t].isActive)return e.focusables[t].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return a.default.createElement(s.default.Provider,{value:{exit:this.handleExit}},a.default.createElement(c.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},a.default.createElement(f.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},a.default.createElement(d.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},a.default.createElement(p.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious}},this.state.error?a.default.createElement(h.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){l.default.hide(this.props.stdout)}componentWillUnmount(){l.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}}t.default=v,v.displayName="InternalApp"},5512:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({exit:()=>{}});r.displayName="InternalAppContext",t.default=r},5277:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__rest||function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(r=Object.getOwnPropertySymbols(e);i{var{children:n}=e,r=u(e,["children"]);const i=Object.assign(Object.assign({},r),{marginLeft:r.marginLeft||r.marginX||r.margin||0,marginRight:r.marginRight||r.marginX||r.margin||0,marginTop:r.marginTop||r.marginY||r.margin||0,marginBottom:r.marginBottom||r.marginY||r.margin||0,paddingLeft:r.paddingLeft||r.paddingX||r.padding||0,paddingRight:r.paddingRight||r.paddingX||r.padding||0,paddingTop:r.paddingTop||r.paddingY||r.padding||0,paddingBottom:r.paddingBottom||r.paddingY||r.padding||0});return a.default.createElement("ink-box",{ref:t,style:i},n)});l.displayName="Box",l.defaultProps={flexDirection:"row",flexGrow:0,flexShrink:1},t.default=l},9052:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=o(n(5747)),l=u(n(7382)),s=u(n(9796)),c=u(n(9908)),f=u(n(5277)),d=u(n(9146)),p=new s.default({cwd:process.cwd(),internals:s.default.nodeInternals()});t.default=({error:e})=>{const t=e.stack?e.stack.split("\n").slice(1):void 0,n=t?p.parseLine(t[0]):void 0;let r,i=0;if((null==n?void 0:n.file)&&(null==n?void 0:n.line)&&a.existsSync(n.file)){const e=a.readFileSync(n.file,"utf8");if(r=c.default(e,n.line),r)for(const{line:e}of r)i=Math.max(i,String(e).length)}return l.default.createElement(f.default,{flexDirection:"column",padding:1},l.default.createElement(f.default,null,l.default.createElement(d.default,{backgroundColor:"red",color:"white"}," ","ERROR"," "),l.default.createElement(d.default,null," ",e.message)),n&&l.default.createElement(f.default,{marginTop:1},l.default.createElement(d.default,{dimColor:!0},n.file,":",n.line,":",n.column)),n&&r&&l.default.createElement(f.default,{marginTop:1,flexDirection:"column"},r.map(({line:e,value:t})=>l.default.createElement(f.default,{key:e},l.default.createElement(f.default,{width:i+1},l.default.createElement(d.default,{dimColor:e!==n.line,backgroundColor:e===n.line?"red":void 0,color:e===n.line?"white":void 0},String(e).padStart(i," "),":")),l.default.createElement(d.default,{key:e,backgroundColor:e===n.line?"red":void 0,color:e===n.line?"white":void 0}," "+t)))),e.stack&&l.default.createElement(f.default,{marginTop:1,flexDirection:"column"},e.stack.split("\n").slice(1).map(e=>{const t=p.parseLine(e);return t?l.default.createElement(f.default,{key:e},l.default.createElement(d.default,{dimColor:!0},"- "),l.default.createElement(d.default,{dimColor:!0,bold:!0},t.function),l.default.createElement(d.default,{dimColor:!0,color:"gray"}," ","(",t.file,":",t.line,":",t.column,")")):l.default.createElement(f.default,{key:e},l.default.createElement(d.default,{dimColor:!0},"- "),l.default.createElement(d.default,{dimColor:!0,bold:!0},e))})))}},2560:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{}});r.displayName="InternalFocusContext",t.default=r},8200:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=({count:e=1})=>i.default.createElement("ink-text",null,"\n".repeat(e));o.displayName="Newline",t.default=o},2198:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=r(n(5277)),u=()=>i.default.createElement(o.default,{flexGrow:1});u.displayName="Spacer",t.default=u},8915:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const u=o(n(7382)),a=e=>{const{items:t,children:n,style:r}=e,[i,o]=u.useState(0),a=u.useMemo(()=>t.slice(i),[t,i]);u.useLayoutEffect(()=>{o(t.length)},[t.length]);const l=a.map((e,t)=>n(e,i+t)),s=u.useMemo(()=>Object.assign({position:"absolute",flexDirection:"column"},r),[r]);return u.default.createElement("ink-box",{internal_static:!0,style:s},l)};a.displayName="Static",t.default=a},5001:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({stderr:void 0,write:()=>{}});r.displayName="InternalStderrContext",t.default=r},1489:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});r.displayName="InternalStdinContext",t.default=r},6834:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(7382).createContext({stdout:void 0,write:()=>{}});r.displayName="InternalStdoutContext",t.default=r},9146:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=r(n(1525)),u=r(n(9902)),a=({color:e,backgroundColor:t,dimColor:n,bold:r,italic:a,underline:l,strikethrough:s,inverse:c,wrap:f,children:d})=>{if(null==d)return null;return i.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row",textWrap:f},internal_transform:i=>(n&&(i=o.default.dim(i)),e&&(i=u.default(i,e,"foreground")),t&&(i=u.default(i,t,"background")),r&&(i=o.default.bold(i)),a&&(i=o.default.italic(i)),l&&(i=o.default.underline(i)),s&&(i=o.default.strikethrough(i)),c&&(i=o.default.inverse(i)),i)},d)};a.displayName="Text",a.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:"wrap"},t.default=a},4592:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7382)),o=({children:e,transform:t})=>null==e?null:i.default.createElement("ink-text",{style:{flexGrow:0,flexShrink:1,flexDirection:"row"},internal_transform:t},e);o.displayName="Transform",t.default=o},146:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(3296)),o=n(5187),u=global;u.WebSocket||(u.WebSocket=i.default),u.window||(u.window=global),u.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__=[{type:1,value:7,isEnabled:!0},{type:2,value:"InternalApp",isEnabled:!0,isValid:!0},{type:2,value:"InternalAppContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdoutContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStderrContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalStdinContext",isEnabled:!0,isValid:!0},{type:2,value:"InternalFocusContext",isEnabled:!0,isValid:!0}],o.connectToDevTools()},9864:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setTextNodeValue=t.createTextNode=t.setStyle=t.setAttribute=t.removeChildNode=t.insertBeforeNode=t.appendChildNode=t.createNode=t.TEXT_NAME=void 0;const i=r(n(6401)),o=r(n(8113)),u=r(n(5809)),a=r(n(2030)),l=r(n(9099));t.TEXT_NAME="#text",t.createNode=e=>{var t;const n={nodeName:e,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:"ink-virtual-text"===e?void 0:i.default.Node.create()};return"ink-text"===e&&(null===(t=n.yogaNode)||void 0===t||t.setMeasureFunc(s.bind(null,n))),n},t.appendChildNode=(e,n)=>{var r;n.parentNode&&t.removeChildNode(n.parentNode,n),n.parentNode=e,e.childNodes.push(n),n.yogaNode&&(null===(r=e.yogaNode)||void 0===r||r.insertChild(n.yogaNode,e.yogaNode.getChildCount())),"ink-text"!==e.nodeName&&"ink-virtual-text"!==e.nodeName||f(e)},t.insertBeforeNode=(e,n,r)=>{var i,o;n.parentNode&&t.removeChildNode(n.parentNode,n),n.parentNode=e;const u=e.childNodes.indexOf(r);if(u>=0)return e.childNodes.splice(u,0,n),void(n.yogaNode&&(null===(i=e.yogaNode)||void 0===i||i.insertChild(n.yogaNode,u)));e.childNodes.push(n),n.yogaNode&&(null===(o=e.yogaNode)||void 0===o||o.insertChild(n.yogaNode,e.yogaNode.getChildCount())),"ink-text"!==e.nodeName&&"ink-virtual-text"!==e.nodeName||f(e)},t.removeChildNode=(e,t)=>{var n,r;t.yogaNode&&(null===(r=null===(n=t.parentNode)||void 0===n?void 0:n.yogaNode)||void 0===r||r.removeChild(t.yogaNode)),t.parentNode=null;const i=e.childNodes.indexOf(t);i>=0&&e.childNodes.splice(i,1),"ink-text"!==e.nodeName&&"ink-virtual-text"!==e.nodeName||f(e)},t.setAttribute=(e,t,n)=>{e.attributes[t]=n},t.setStyle=(e,t)=>{e.style=t,e.yogaNode&&u.default(e.yogaNode,t)},t.createTextNode=e=>{const n={nodeName:"#text",nodeValue:e,yogaNode:void 0,parentNode:null,style:{}};return t.setTextNodeValue(n,e),n};const s=function(e,t){var n,r;const i="#text"===e.nodeName?e.nodeValue:l.default(e),u=o.default(i);if(u.width<=t)return u;if(u.width>=1&&t>0&&t<1)return u;const s=null!==(r=null===(n=e.style)||void 0===n?void 0:n.textWrap)&&void 0!==r?r:"wrap",c=a.default(i,t,s);return o.default(c)},c=e=>{var t;if(e&&e.parentNode)return null!==(t=e.yogaNode)&&void 0!==t?t:c(e.parentNode)},f=e=>{const t=c(e);null==t||t.markDirty()};t.setTextNodeValue=(e,t)=>{"string"!=typeof t&&(t=String(t)),e.nodeValue=t,f(e)}},317:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401));t.default=e=>e.getComputedWidth()-e.getComputedPadding(i.default.EDGE_LEFT)-e.getComputedPadding(i.default.EDGE_RIGHT)-e.getComputedBorder(i.default.EDGE_LEFT)-e.getComputedBorder(i.default.EDGE_RIGHT)},4699:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(5512));t.default=()=>i.useContext(o.default)},5442:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(2560));t.default=()=>{const e=i.useContext(o.default);return{enableFocus:e.enableFocus,disableFocus:e.disableFocus,focusNext:e.focusNext,focusPrevious:e.focusPrevious}}},8230:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(2560)),u=r(n(1541));t.default=({isActive:e=!0,autoFocus:t=!1}={})=>{const{isRawModeSupported:n,setRawMode:r}=u.default(),{activeId:a,add:l,remove:s,activate:c,deactivate:f}=i.useContext(o.default),d=i.useMemo(()=>Math.random().toString().slice(2,7),[]);return i.useEffect(()=>(l(d,{autoFocus:t}),()=>{s(d)}),[d,t]),i.useEffect(()=>{e?c(d):f(d)},[e,d]),i.useEffect(()=>{if(n&&e)return r(!0),()=>{r(!1)}},[e]),{isFocused:Boolean(d)&&a===d}}},4495:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(1541));t.default=(e,t={})=>{const{stdin:n,setRawMode:r,internal_exitOnCtrlC:u}=o.default();i.useEffect(()=>{if(!1!==t.isActive)return r(!0),()=>{r(!1)}},[t.isActive,r]),i.useEffect(()=>{if(!1===t.isActive)return;const r=t=>{let n=String(t);const r={upArrow:""===n,downArrow:""===n,leftArrow:""===n,rightArrow:""===n,pageDown:"[6~"===n,pageUp:"[5~"===n,return:"\r"===n,escape:""===n,ctrl:!1,shift:!1,tab:"\t"===n||""===n,backspace:"\b"===n,delete:""===n||"[3~"===n,meta:!1};n<=""&&!r.return&&(n=String.fromCharCode(n.charCodeAt(0)+"a".charCodeAt(0)-1),r.ctrl=!0),n.startsWith("")&&(n=n.slice(1),r.meta=!0);const i=n>="A"&&n<="Z",o=n>="А"&&n<="Я";1===n.length&&(i||o)&&(r.shift=!0),r.tab&&"[Z"===n&&(r.shift=!0),(r.tab||r.backspace||r.delete)&&(n=""),"c"===n&&r.ctrl&&u||e(n,r)};return null==n||n.on("data",r),()=>{null==n||n.off("data",r)}},[t.isActive,n,u,e])}},1686:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(5001));t.default=()=>i.useContext(o.default)},1541:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(1489));t.default=()=>i.useContext(o.default)},9890:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7382),o=r(n(6834));t.default=()=>i.useContext(o.default)},9245:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(9417);Object.defineProperty(t,"render",{enumerable:!0,get:function(){return r.default}});var i=n(5277);Object.defineProperty(t,"Box",{enumerable:!0,get:function(){return i.default}});var o=n(9146);Object.defineProperty(t,"Text",{enumerable:!0,get:function(){return o.default}});var u=n(8915);Object.defineProperty(t,"Static",{enumerable:!0,get:function(){return u.default}});var a=n(4592);Object.defineProperty(t,"Transform",{enumerable:!0,get:function(){return a.default}});var l=n(8200);Object.defineProperty(t,"Newline",{enumerable:!0,get:function(){return l.default}});var s=n(2198);Object.defineProperty(t,"Spacer",{enumerable:!0,get:function(){return s.default}});var c=n(4495);Object.defineProperty(t,"useInput",{enumerable:!0,get:function(){return c.default}});var f=n(4699);Object.defineProperty(t,"useApp",{enumerable:!0,get:function(){return f.default}});var d=n(1541);Object.defineProperty(t,"useStdin",{enumerable:!0,get:function(){return d.default}});var p=n(9890);Object.defineProperty(t,"useStdout",{enumerable:!0,get:function(){return p.default}});var h=n(1686);Object.defineProperty(t,"useStderr",{enumerable:!0,get:function(){return h.default}});var v=n(8230);Object.defineProperty(t,"useFocus",{enumerable:!0,get:function(){return v.default}});var m=n(5442);Object.defineProperty(t,"useFocusManager",{enumerable:!0,get:function(){return m.default}});var g=n(3887);Object.defineProperty(t,"measureElement",{enumerable:!0,get:function(){return g.default}})},3206:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t},u=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=u(n(7382)),l=n(464),s=u(n(503)),c=u(n(7589)),f=u(n(2738)),d=u(n(2633)),p=u(n(5117)),h=u(n(5691)),v=u(n(6458)),m=u(n(8070)),g=o(n(9864)),y=u(n(9679)),_=u(n(2773)),b="false"!==process.env.CI&&f.default,w=()=>{};t.default=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;const{output:e,outputHeight:t,staticOutput:n}=h.default(this.rootNode,this.options.stdout.columns||80),r=n&&"\n"!==n;return this.options.debug?(r&&(this.fullStaticOutput+=n),void this.options.stdout.write(this.fullStaticOutput+e)):b?(r&&this.options.stdout.write(n),void(this.lastOutput=e)):(r&&(this.fullStaticOutput+=n),t>=this.options.stdout.rows?(this.options.stdout.write(c.default.clearTerminal+this.fullStaticOutput+e),void(this.lastOutput=e)):(r&&(this.log.clear(),this.options.stdout.write(n),this.log(e)),r||e===this.lastOutput||this.throttledLog(e),void(this.lastOutput=e)))},d.default(this),this.options=e,this.rootNode=g.createNode("ink-root"),this.rootNode.onRender=e.debug?this.onRender:l.throttle(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=s.default.create(e.stdout),this.throttledLog=e.debug?this.log:l.throttle(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput="",this.fullStaticOutput="",this.container=p.default.createContainer(this.rootNode,!1,!1),this.unsubscribeExit=v.default(this.unmount,{alwaysLast:!1}),"true"===process.env.DEV&&p.default.injectIntoDevTools({bundleType:0,version:"16.13.1",rendererPackageName:"ink"}),e.patchConsole&&this.patchConsole(),b||(e.stdout.on("resize",this.onRender),this.unsubscribeResize=()=>{e.stdout.off("resize",this.onRender)})}render(e){const t=a.default.createElement(_.default,{stdin:this.options.stdin,stdout:this.options.stdout,stderr:this.options.stderr,writeToStdout:this.writeToStdout,writeToStderr:this.writeToStderr,exitOnCtrlC:this.options.exitOnCtrlC,onExit:this.unmount},e);p.default.updateContainer(t,this.container,null,w)}writeToStdout(e){this.isUnmounted||(this.options.debug?this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput):b?this.options.stdout.write(e):(this.log.clear(),this.options.stdout.write(e),this.log(this.lastOutput)))}writeToStderr(e){if(!this.isUnmounted)return this.options.debug?(this.options.stderr.write(e),void this.options.stdout.write(this.fullStaticOutput+this.lastOutput)):void(b?this.options.stderr.write(e):(this.log.clear(),this.options.stderr.write(e),this.log(this.lastOutput)))}unmount(e){this.isUnmounted||(this.onRender(),this.unsubscribeExit(),"function"==typeof this.restoreConsole&&this.restoreConsole(),"function"==typeof this.unsubscribeResize&&this.unsubscribeResize(),b?this.options.stdout.write(this.lastOutput+"\n"):this.options.debug||this.log.done(),this.isUnmounted=!0,p.default.updateContainer(null,this.container,null,w),y.default.delete(this.options.stdout),e instanceof Error?this.rejectExitPromise(e):this.resolveExitPromise())}waitUntilExit(){return this.exitPromise||(this.exitPromise=new Promise((e,t)=>{this.resolveExitPromise=e,this.rejectExitPromise=t})),this.exitPromise}clear(){b||this.options.debug||this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=m.default((e,t)=>{if("stdout"===e&&this.writeToStdout(t),"stderr"===e){t.startsWith("The above error occurred")||this.writeToStderr(t)}}))}}},9679:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=new WeakMap},503:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(7589)),o=r(n(1696));t.default={create:(e,{showCursor:t=!1}={})=>{let n=0,r="",u=!1;const a=a=>{t||u||(o.default.hide(),u=!0);const l=a+"\n";l!==r&&(r=l,e.write(i.default.eraseLines(n)+l),n=l.split("\n").length)};return a.clear=()=>{e.write(i.default.eraseLines(n)),r="",n=0},a.done=()=>{r="",n=0,t||(o.default.show(),u=!1)},a}}},3887:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=e=>{var t,n,r,i;return{width:null!==(n=null===(t=e.yogaNode)||void 0===t?void 0:t.getComputedWidth())&&void 0!==n?n:0,height:null!==(i=null===(r=e.yogaNode)||void 0===r?void 0:r.getComputedHeight())&&void 0!==i?i:0}}},8113:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(8949)),o={};t.default=e=>{if(0===e.length)return{width:0,height:0};if(o[e])return o[e];const t=i.default(e),n=e.split("\n").length;return o[e]={width:t,height:n},{width:t,height:n}}},4110:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(1566)),o=r(n(3262));t.default=class{constructor(e){this.writes=[];const{width:t,height:n}=e;this.width=t,this.height=n}write(e,t,n,r){const{transformers:i}=r;n&&this.writes.push({x:e,y:t,text:n,transformers:i})}get(){const e=[];for(let t=0;te.trimRight()).join("\n"),height:e.length}}}},5117:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7181),o=r(n(7714)),u=r(n(6401)),a=n(9864);"true"===process.env.DEV&&n(146);const l=e=>{null==e||e.unsetMeasureFunc(),null==e||e.freeRecursive()};t.default=o.default({schedulePassiveEffects:i.unstable_scheduleCallback,cancelPassiveEffects:i.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>{},resetAfterCommit:e=>{if(e.isStaticDirty)return e.isStaticDirty=!1,void("function"==typeof e.onImmediateRender&&e.onImmediateRender());"function"==typeof e.onRender&&e.onRender()},getChildHostContext:(e,t)=>{const n="ink-text"===t||"ink-virtual-text"===t;return e.isInsideText===n?e:{isInsideText:n}},shouldSetTextContent:()=>!1,createInstance:(e,t,n,r)=>{if(r.isInsideText&&"ink-box"===e)throw new Error(" can’t be nested inside component");const i="ink-text"===e&&r.isInsideText?"ink-virtual-text":e,o=a.createNode(i);for(const[e,n]of Object.entries(t))"children"!==e&&("style"===e?a.setStyle(o,n):"internal_transform"===e?o.internal_transform=n:"internal_static"===e?o.internal_static=!0:a.setAttribute(o,e,n));return o},createTextInstance:(e,t,n)=>{if(!n.isInsideText)throw new Error(`Text string "${e}" must be rendered inside component`);return a.createTextNode(e)},resetTextContent:()=>{},hideTextInstance:e=>{a.setTextNodeValue(e,"")},unhideTextInstance:(e,t)=>{a.setTextNodeValue(e,t)},getPublicInstance:e=>e,hideInstance:e=>{var t;null===(t=e.yogaNode)||void 0===t||t.setDisplay(u.default.DISPLAY_NONE)},unhideInstance:e=>{var t;null===(t=e.yogaNode)||void 0===t||t.setDisplay(u.default.DISPLAY_FLEX)},appendInitialChild:a.appendChildNode,appendChild:a.appendChildNode,insertBefore:a.insertBeforeNode,finalizeInitialChildren:(e,t,n,r)=>(e.internal_static&&(r.isStaticDirty=!0,r.staticNode=e),!1),supportsMutation:!0,appendChildToContainer:a.appendChildNode,insertInContainerBefore:a.insertBeforeNode,removeChildFromContainer:(e,t)=>{a.removeChildNode(e,t),l(t.yogaNode)},prepareUpdate:(e,t,n,r,i)=>{e.internal_static&&(i.isStaticDirty=!0);const o={},u=Object.keys(r);for(const e of u)if(r[e]!==n[e]){if("style"===e&&"object"==typeof r.style&&"object"==typeof n.style){const e=r.style,t=n.style,i=Object.keys(e);for(const n of i){if("borderStyle"===n||"borderColor"===n){if("object"!=typeof o.style){const e={};o.style=e}o.style.borderStyle=e.borderStyle,o.style.borderColor=e.borderColor}if(e[n]!==t[n]){if("object"!=typeof o.style){const e={};o.style=e}o.style[n]=e[n]}}continue}o[e]=r[e]}return o},commitUpdate:(e,t)=>{for(const[n,r]of Object.entries(t))"children"!==n&&("style"===n?a.setStyle(e,r):"internal_transform"===n?e.internal_transform=r:"internal_static"===n?e.internal_static=!0:a.setAttribute(e,n,r))},commitTextUpdate:(e,t,n)=>{a.setTextNodeValue(e,n)},removeChild:(e,t)=>{a.removeChildNode(e,t),l(t.yogaNode)}})},4907:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(4097)),o=r(n(9902));t.default=(e,t,n,r)=>{if("string"==typeof n.style.borderStyle){const u=n.yogaNode.getComputedWidth(),a=n.yogaNode.getComputedHeight(),l=n.style.borderColor,s=i.default[n.style.borderStyle],c=o.default(s.topLeft+s.horizontal.repeat(u-2)+s.topRight,l,"foreground"),f=(o.default(s.vertical,l,"foreground")+"\n").repeat(a-2),d=o.default(s.bottomLeft+s.horizontal.repeat(u-2)+s.bottomRight,l,"foreground");r.write(e,t,c,{transformers:[]}),r.write(e,t+1,f,{transformers:[]}),r.write(e+u-1,t+1,f,{transformers:[]}),r.write(e,t+a-1,d,{transformers:[]})}}},3782:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401)),o=r(n(8949)),u=r(n(9646)),a=r(n(2030)),l=r(n(317)),s=r(n(9099)),c=r(n(4907)),f=(e,t,n)=>{var r;const{offsetX:d=0,offsetY:p=0,transformers:h=[],skipStaticElements:v}=n;if(v&&e.internal_static)return;const{yogaNode:m}=e;if(m){if(m.getDisplay()===i.default.DISPLAY_NONE)return;const n=d+m.getComputedLeft(),g=p+m.getComputedTop();let y=h;if("function"==typeof e.internal_transform&&(y=[e.internal_transform,...h]),"ink-text"===e.nodeName){let i=s.default(e);if(i.length>0){const s=o.default(i),c=l.default(m);if(s>c){const t=null!==(r=e.style.textWrap)&&void 0!==r?r:"wrap";i=a.default(i,c,t)}i=((e,t)=>{var n;const r=null===(n=e.childNodes[0])||void 0===n?void 0:n.yogaNode;if(r){const e=r.getComputedLeft(),n=r.getComputedTop();t="\n".repeat(n)+u.default(t,e)}return t})(e,i),t.write(n,g,i,{transformers:y})}return}if("ink-box"===e.nodeName&&c.default(n,g,e,t),"ink-root"===e.nodeName||"ink-box"===e.nodeName)for(const r of e.childNodes)f(r,t,{offsetX:n,offsetY:g,transformers:y,skipStaticElements:v})}};t.default=f},9417:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(3206)),o=r(n(9679)),u=n(2413);t.default=(e,t)=>{const n=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},a(t)),r=l(n.stdout,()=>new i.default(n));return r.render(e),{rerender:r.render,unmount:()=>r.unmount(),waitUntilExit:r.waitUntilExit,cleanup:()=>o.default.delete(n.stdout),clear:r.clear}};const a=(e={})=>e instanceof u.Stream?{stdout:e,stdin:process.stdin}:e,l=(e,t)=>{let n;return o.default.has(e)?n=o.default.get(e):(n=t(),o.default.set(e,n)),n}},5691:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401)),o=r(n(3782)),u=r(n(4110));t.default=(e,t)=>{var n;if(e.yogaNode.setWidth(t),e.yogaNode){e.yogaNode.calculateLayout(void 0,void 0,i.default.DIRECTION_LTR);const t=new u.default({width:e.yogaNode.getComputedWidth(),height:e.yogaNode.getComputedHeight()});let r;o.default(e,t,{skipStaticElements:!0}),(null===(n=e.staticNode)||void 0===n?void 0:n.yogaNode)&&(r=new u.default({width:e.staticNode.yogaNode.getComputedWidth(),height:e.staticNode.yogaNode.getComputedHeight()}),o.default(e.staticNode,r,{skipStaticElements:!1}));const{output:a,height:l}=t.get();return{output:a,outputHeight:l,staticOutput:r?r.get().output+"\n":""}}return{output:"",outputHeight:0,staticOutput:""}}},9099:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=e=>{let t="";if(e.childNodes.length>0)for(const r of e.childNodes){let e="";"#text"===r.nodeName?e=r.nodeValue:("ink-text"!==r.nodeName&&"ink-virtual-text"!==r.nodeName||(e=n(r)),e.length>0&&"function"==typeof r.internal_transform&&(e=r.internal_transform(e))),t+=e}return t};t.default=n},5809:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(6401));t.default=(e,t={})=>{((e,t)=>{"position"in t&&e.setPositionType("absolute"===t.position?i.default.POSITION_TYPE_ABSOLUTE:i.default.POSITION_TYPE_RELATIVE)})(e,t),((e,t)=>{"marginLeft"in t&&e.setMargin(i.default.EDGE_START,t.marginLeft||0),"marginRight"in t&&e.setMargin(i.default.EDGE_END,t.marginRight||0),"marginTop"in t&&e.setMargin(i.default.EDGE_TOP,t.marginTop||0),"marginBottom"in t&&e.setMargin(i.default.EDGE_BOTTOM,t.marginBottom||0)})(e,t),((e,t)=>{"paddingLeft"in t&&e.setPadding(i.default.EDGE_LEFT,t.paddingLeft||0),"paddingRight"in t&&e.setPadding(i.default.EDGE_RIGHT,t.paddingRight||0),"paddingTop"in t&&e.setPadding(i.default.EDGE_TOP,t.paddingTop||0),"paddingBottom"in t&&e.setPadding(i.default.EDGE_BOTTOM,t.paddingBottom||0)})(e,t),((e,t)=>{var n;"flexGrow"in t&&e.setFlexGrow(null!==(n=t.flexGrow)&&void 0!==n?n:0),"flexShrink"in t&&e.setFlexShrink("number"==typeof t.flexShrink?t.flexShrink:1),"flexDirection"in t&&("row"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_ROW),"row-reverse"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_ROW_REVERSE),"column"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_COLUMN),"column-reverse"===t.flexDirection&&e.setFlexDirection(i.default.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in t&&("number"==typeof t.flexBasis?e.setFlexBasis(t.flexBasis):"string"==typeof t.flexBasis?e.setFlexBasisPercent(Number.parseInt(t.flexBasis,10)):e.setFlexBasis(NaN)),"alignItems"in t&&("stretch"!==t.alignItems&&t.alignItems||e.setAlignItems(i.default.ALIGN_STRETCH),"flex-start"===t.alignItems&&e.setAlignItems(i.default.ALIGN_FLEX_START),"center"===t.alignItems&&e.setAlignItems(i.default.ALIGN_CENTER),"flex-end"===t.alignItems&&e.setAlignItems(i.default.ALIGN_FLEX_END)),"alignSelf"in t&&("auto"!==t.alignSelf&&t.alignSelf||e.setAlignSelf(i.default.ALIGN_AUTO),"flex-start"===t.alignSelf&&e.setAlignSelf(i.default.ALIGN_FLEX_START),"center"===t.alignSelf&&e.setAlignSelf(i.default.ALIGN_CENTER),"flex-end"===t.alignSelf&&e.setAlignSelf(i.default.ALIGN_FLEX_END)),"justifyContent"in t&&("flex-start"!==t.justifyContent&&t.justifyContent||e.setJustifyContent(i.default.JUSTIFY_FLEX_START),"center"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_CENTER),"flex-end"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_FLEX_END),"space-between"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_SPACE_BETWEEN),"space-around"===t.justifyContent&&e.setJustifyContent(i.default.JUSTIFY_SPACE_AROUND))})(e,t),((e,t)=>{var n,r;"width"in t&&("number"==typeof t.width?e.setWidth(t.width):"string"==typeof t.width?e.setWidthPercent(Number.parseInt(t.width,10)):e.setWidthAuto()),"height"in t&&("number"==typeof t.height?e.setHeight(t.height):"string"==typeof t.height?e.setHeightPercent(Number.parseInt(t.height,10)):e.setHeightAuto()),"minWidth"in t&&("string"==typeof t.minWidth?e.setMinWidthPercent(Number.parseInt(t.minWidth,10)):e.setMinWidth(null!==(n=t.minWidth)&&void 0!==n?n:0)),"minHeight"in t&&("string"==typeof t.minHeight?e.setMinHeightPercent(Number.parseInt(t.minHeight,10)):e.setMinHeight(null!==(r=t.minHeight)&&void 0!==r?r:0))})(e,t),((e,t)=>{"display"in t&&e.setDisplay("flex"===t.display?i.default.DISPLAY_FLEX:i.default.DISPLAY_NONE)})(e,t),((e,t)=>{if("borderStyle"in t){const n="string"==typeof t.borderStyle?1:0;e.setBorder(i.default.EDGE_TOP,n),e.setBorder(i.default.EDGE_BOTTOM,n),e.setBorder(i.default.EDGE_LEFT,n),e.setBorder(i.default.EDGE_RIGHT,n)}})(e,t)}},2030:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(n(4332)),o=r(n(5301)),u={};t.default=(e,t,n)=>{const r=e+String(t)+String(n);if(u[r])return u[r];let a=e;if("wrap"===n&&(a=i.default(e,t,{trim:!1,hard:!0})),n.startsWith("truncate")){let r="end";"truncate-middle"===n&&(r="middle"),"truncate-start"===n&&(r="start"),a=o.default(e,t,{position:r})}return u[r]=a,a}},5767:(e,t,n)=>{ +/** @license React v0.24.0 + * react-reconciler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +e.exports=function t(r){"use strict";var i=n(9381),o=n(7382),u=n(7181);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nOe||(e.current=Ae[Oe],Ae[Oe]=null,Oe--)}function Ie(e,t){Oe++,Ae[Oe]=e.current,e.current=t}var Ne={},Me={current:Ne},Re={current:!1},Fe=Ne;function Le(e,t){var n=e.type.contextTypes;if(!n)return Ne;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var i,o={};for(i in n)o[i]=t[i];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function Be(e){return null!=(e=e.childContextTypes)}function je(e){Pe(Re),Pe(Me)}function Ue(e){Pe(Re),Pe(Me)}function ze(e,t,n){if(Me.current!==Ne)throw Error(a(168));Ie(Me,t),Ie(Re,n)}function We(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,"function"!=typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in e))throw Error(a(108,C(t)||"Unknown",o));return i({},n,{},r)}function He(e){var t=e.stateNode;return t=t&&t.__reactInternalMemoizedMergedChildContext||Ne,Fe=Me.current,Ie(Me,t),Ie(Re,Re.current),!0}function Ve(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(t=We(e,t,Fe),r.__reactInternalMemoizedMergedChildContext=t,Pe(Re),Pe(Me),Ie(Me,t)):Pe(Re),Ie(Re,n)}var qe=u.unstable_runWithPriority,Ge=u.unstable_scheduleCallback,$e=u.unstable_cancelCallback,Ye=u.unstable_shouldYield,Ke=u.unstable_requestPaint,Xe=u.unstable_now,Qe=u.unstable_getCurrentPriorityLevel,Je=u.unstable_ImmediatePriority,Ze=u.unstable_UserBlockingPriority,et=u.unstable_NormalPriority,tt=u.unstable_LowPriority,nt=u.unstable_IdlePriority,rt={},it=void 0!==Ke?Ke:function(){},ot=null,ut=null,at=!1,lt=Xe(),st=1e4>lt?Xe:function(){return Xe()-lt};function ct(){switch(Qe()){case Je:return 99;case Ze:return 98;case et:return 97;case tt:return 96;case nt:return 95;default:throw Error(a(332))}}function ft(e){switch(e){case 99:return Je;case 98:return Ze;case 97:return et;case 96:return tt;case 95:return nt;default:throw Error(a(332))}}function dt(e,t){return e=ft(e),qe(e,t)}function pt(e,t,n){return e=ft(e),Ge(e,t,n)}function ht(e){return null===ot?(ot=[e],ut=Ge(Je,mt)):ot.push(e),rt}function vt(){if(null!==ut){var e=ut;ut=null,$e(e)}mt()}function mt(){if(!at&&null!==ot){at=!0;var e=0;try{var t=ot;dt(99,(function(){for(;e=t&&(dr=!0),e.firstContext=null)}function It(e,t){if(kt!==e&&!1!==t&&0!==t)if("number"==typeof t&&1073741823!==t||(kt=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Ct){if(null===St)throw Error(a(308));Ct=t,St.dependencies={expirationTime:0,firstContext:t,responders:null}}else Ct=Ct.next=t;return q?e._currentValue:e._currentValue2}var Nt=!1;function Mt(e){return{baseState:e,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Rt(e){return{baseState:e.baseState,firstUpdate:e.firstUpdate,lastUpdate:e.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function Ft(e,t){return{expirationTime:e,suspenseConfig:t,tag:0,payload:null,callback:null,next:null,nextEffect:null}}function Lt(e,t){null===e.lastUpdate?e.firstUpdate=e.lastUpdate=t:(e.lastUpdate.next=t,e.lastUpdate=t)}function Bt(e,t){var n=e.alternate;if(null===n){var r=e.updateQueue,i=null;null===r&&(r=e.updateQueue=Mt(e.memoizedState))}else r=e.updateQueue,i=n.updateQueue,null===r?null===i?(r=e.updateQueue=Mt(e.memoizedState),i=n.updateQueue=Mt(n.memoizedState)):r=e.updateQueue=Rt(i):null===i&&(i=n.updateQueue=Rt(r));null===i||r===i?Lt(r,t):null===r.lastUpdate||null===i.lastUpdate?(Lt(r,t),Lt(i,t)):(Lt(r,t),i.lastUpdate=t)}function jt(e,t){var n=e.updateQueue;null===(n=null===n?e.updateQueue=Mt(e.memoizedState):Ut(e,n)).lastCapturedUpdate?n.firstCapturedUpdate=n.lastCapturedUpdate=t:(n.lastCapturedUpdate.next=t,n.lastCapturedUpdate=t)}function Ut(e,t){var n=e.alternate;return null!==n&&t===n.updateQueue&&(t=e.updateQueue=Rt(t)),t}function zt(e,t,n,r,o,u){switch(n.tag){case 1:return"function"==typeof(e=n.payload)?e.call(u,r,o):e;case 3:e.effectTag=-4097&e.effectTag|64;case 0:if(null==(o="function"==typeof(e=n.payload)?e.call(u,r,o):e))break;return i({},r,o);case 2:Nt=!0}return r}function Wt(e,t,n,r,i){Nt=!1;for(var o=(t=Ut(e,t)).baseState,u=null,a=0,l=t.firstUpdate,s=o;null!==l;){var c=l.expirationTime;cd?(p=f,f=null):p=f.sibling;var h=m(i,f,a[d],l);if(null===h){null===f&&(f=p);break}e&&f&&null===h.alternate&&t(i,f),u=o(h,u,d),null===c?s=h:c.sibling=h,c=h,f=p}if(d===a.length)return n(i,f),s;if(null===f){for(;dp?(h=d,d=null):h=d.sibling;var _=m(i,d,y.value,s);if(null===_){null===d&&(d=h);break}e&&d&&null===_.alternate&&t(i,d),u=o(_,u,p),null===f?c=_:f.sibling=_,f=_,d=h}if(y.done)return n(i,d),c;if(null===d){for(;!y.done;p++,y=l.next())null!==(y=v(i,y.value,s))&&(u=o(y,u,p),null===f?c=y:f.sibling=y,f=y);return c}for(d=r(i,d);!y.done;p++,y=l.next())null!==(y=g(d,i,p,y.value,s))&&(e&&null!==y.alternate&&d.delete(null===y.key?p:y.key),u=o(y,u,p),null===f?c=y:f.sibling=y,f=y);return e&&d.forEach((function(e){return t(i,e)})),c}return function(e,r,o,l){var s="object"==typeof o&&null!==o&&o.type===d&&null===o.key;s&&(o=o.props.children);var p="object"==typeof o&&null!==o;if(p)switch(o.$$typeof){case c:e:{for(p=o.key,s=r;null!==s;){if(s.key===p){if(7===s.tag?o.type===d:s.elementType===o.type){n(e,s.sibling),(r=i(s,o.type===d?o.props.children:o.props)).ref=en(e,s,o),r.return=e,e=r;break e}n(e,s);break}t(e,s),s=s.sibling}o.type===d?((r=so(o.props.children,e.mode,l,o.key)).return=e,e=r):((l=lo(o.type,o.key,o.props,null,e.mode,l)).ref=en(e,r,o),l.return=e,e=l)}return u(e);case f:e:{for(s=o.key;null!==r;){if(r.key===s){if(4===r.tag&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),(r=i(r,o.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=fo(o,e.mode,l)).return=e,e=r}return u(e)}if("string"==typeof o||"number"==typeof o)return o=""+o,null!==r&&6===r.tag?(n(e,r.sibling),(r=i(r,o)).return=e,e=r):(n(e,r),(r=co(o,e.mode,l)).return=e,e=r),u(e);if(Zt(o))return y(e,r,o,l);if(S(o))return _(e,r,o,l);if(p&&tn(e,o),void 0===o&&!s)switch(e.tag){case 1:case 0:throw e=e.type,Error(a(152,e.displayName||e.name||"Component"))}return n(e,r)}}var rn=nn(!0),on=nn(!1),un={},an={current:un},ln={current:un},sn={current:un};function cn(e){if(e===un)throw Error(a(174));return e}function fn(e,t){Ie(sn,t),Ie(ln,e),Ie(an,un),t=P(t),Pe(an),Ie(an,t)}function dn(e){Pe(an),Pe(ln),Pe(sn)}function pn(e){var t=cn(sn.current),n=cn(an.current);n!==(t=I(n,e.type,t))&&(Ie(ln,e),Ie(an,t))}function hn(e){ln.current===e&&(Pe(an),Pe(ln))}var vn={current:0};function mn(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||ye(n)||_e(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(64&t.effectTag))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function gn(e,t){return{responder:e,props:t}}var yn=l.ReactCurrentDispatcher,_n=l.ReactCurrentBatchConfig,bn=0,wn=null,En=null,Dn=null,Sn=null,Cn=null,kn=null,Tn=0,xn=null,An=0,On=!1,Pn=null,In=0;function Nn(){throw Error(a(321))}function Mn(e,t){if(null===t)return!1;for(var n=0;nTn&&zi(Tn=f)):(Ui(f,s.suspenseConfig),o=s.eagerReducer===e?s.eagerState:e(o,s.action)),u=s,s=s.next}while(null!==s&&s!==r);c||(l=u,i=o),_t(o,t.memoizedState)||(dr=!0),t.memoizedState=o,t.baseUpdate=l,t.baseState=i,n.lastRenderedState=o}return[t.memoizedState,n.dispatch]}function zn(e){var t=Ln();return"function"==typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={last:null,dispatch:null,lastRenderedReducer:jn,lastRenderedState:e}).dispatch=Jn.bind(null,wn,e),[t.memoizedState,e]}function Wn(e){return Un(jn)}function Hn(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===xn?(xn={lastEffect:null}).lastEffect=e.next=e:null===(t=xn.lastEffect)?xn.lastEffect=e.next=e:(n=t.next,t.next=e,e.next=n,xn.lastEffect=e),e}function Vn(e,t,n,r){var i=Ln();An|=e,i.memoizedState=Hn(t,n,void 0,void 0===r?null:r)}function qn(e,t,n,r){var i=Bn();r=void 0===r?null:r;var o=void 0;if(null!==En){var u=En.memoizedState;if(o=u.destroy,null!==r&&Mn(r,u.deps))return void Hn(0,n,o,r)}An|=e,i.memoizedState=Hn(t,n,o,r)}function Gn(e,t){return Vn(516,192,e,t)}function $n(e,t){return qn(516,192,e,t)}function Yn(e,t){return"function"==typeof t?(e=e(),t(e),function(){t(null)}):null!=t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Kn(){}function Xn(e,t){return Ln().memoizedState=[e,void 0===t?null:t],e}function Qn(e,t){var n=Bn();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Mn(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Jn(e,t,n){if(!(25>In))throw Error(a(301));var r=e.alternate;if(e===wn||null!==r&&r===wn)if(On=!0,e={expirationTime:bn,suspenseConfig:null,action:n,eagerReducer:null,eagerState:null,next:null},null===Pn&&(Pn=new Map),void 0===(n=Pn.get(t)))Pn.set(t,e);else{for(t=n;null!==t.next;)t=t.next;t.next=e}else{var i=xi(),o=qt.suspense;o={expirationTime:i=Ai(i,e,o),suspenseConfig:o,action:n,eagerReducer:null,eagerState:null,next:null};var u=t.last;if(null===u)o.next=o;else{var l=u.next;null!==l&&(o.next=l),u.next=o}if(t.last=o,0===e.expirationTime&&(null===r||0===r.expirationTime)&&null!==(r=t.lastRenderedReducer))try{var s=t.lastRenderedState,c=r(s,n);if(o.eagerReducer=r,o.eagerState=c,_t(c,s))return}catch(e){}Oi(e,i)}}var Zn={readContext:It,useCallback:Nn,useContext:Nn,useEffect:Nn,useImperativeHandle:Nn,useLayoutEffect:Nn,useMemo:Nn,useReducer:Nn,useRef:Nn,useState:Nn,useDebugValue:Nn,useResponder:Nn,useDeferredValue:Nn,useTransition:Nn},er={readContext:It,useCallback:Xn,useContext:It,useEffect:Gn,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,Vn(4,36,Yn.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Vn(4,36,e,t)},useMemo:function(e,t){var n=Ln();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ln();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={last:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=Jn.bind(null,wn,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ln().memoizedState=e},useState:zn,useDebugValue:Kn,useResponder:gn,useDeferredValue:function(e,t){var n=zn(e),r=n[0],i=n[1];return Gn((function(){u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===t?null:t;try{i(e)}finally{_n.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=zn(!1),n=t[0],r=t[1];return[Xn((function(t){r(!0),u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===e?null:e;try{r(!1),t()}finally{_n.suspense=n}}))}),[e,n]),n]}},tr={readContext:It,useCallback:Qn,useContext:It,useEffect:$n,useImperativeHandle:function(e,t,n){return n=null!=n?n.concat([e]):null,qn(4,36,Yn.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qn(4,36,e,t)},useMemo:function(e,t){var n=Bn();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&Mn(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)},useReducer:Un,useRef:function(){return Bn().memoizedState},useState:Wn,useDebugValue:Kn,useResponder:gn,useDeferredValue:function(e,t){var n=Wn(),r=n[0],i=n[1];return $n((function(){u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===t?null:t;try{i(e)}finally{_n.suspense=n}}))}),[e,t]),r},useTransition:function(e){var t=Wn(),n=t[0],r=t[1];return[Qn((function(t){r(!0),u.unstable_next((function(){var n=_n.suspense;_n.suspense=void 0===e?null:e;try{r(!1),t()}finally{_n.suspense=n}}))}),[e,n]),n]}},nr=null,rr=null,ir=!1;function or(e,t){var n=oo(5,null,null,0);n.elementType="DELETED",n.type="DELETED",n.stateNode=t,n.return=e,n.effectTag=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function ur(e,t){switch(e.tag){case 5:return null!==(t=me(t,e.type,e.pendingProps))&&(e.stateNode=t,!0);case 6:return null!==(t=ge(t,e.pendingProps))&&(e.stateNode=t,!0);case 13:default:return!1}}function ar(e){if(ir){var t=rr;if(t){var n=t;if(!ur(e,t)){if(!(t=be(n))||!ur(e,t))return e.effectTag=-1025&e.effectTag|2,ir=!1,void(nr=e);or(nr,n)}nr=e,rr=we(t)}else e.effectTag=-1025&e.effectTag|2,ir=!1,nr=e}}function lr(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;nr=e}function sr(e){if(!Y||e!==nr)return!1;if(!ir)return lr(e),ir=!0,!1;var t=e.type;if(5!==e.tag||"head"!==t&&"body"!==t&&!j(t,e.memoizedProps))for(t=rr;t;)or(e,t),t=be(t);if(lr(e),13===e.tag){if(!Y)throw Error(a(316));if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));rr=Se(e)}else rr=nr?be(e.stateNode):null;return!0}function cr(){Y&&(rr=nr=null,ir=!1)}var fr=l.ReactCurrentOwner,dr=!1;function pr(e,t,n,r){t.child=null===e?on(t,null,n,r):rn(t,e.child,n,r)}function hr(e,t,n,r,i){n=n.render;var o=t.ref;return Pt(t,i),r=Rn(e,t,n,r,o,i),null===e||dr?(t.effectTag|=1,pr(e,t,r,i),t.child):(t.updateQueue=e.updateQueue,t.effectTag&=-517,e.expirationTime<=i&&(e.expirationTime=0),Pr(e,t,i))}function vr(e,t,n,r,i,o){if(null===e){var u=n.type;return"function"!=typeof u||uo(u)||void 0!==u.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=lo(n.type,null,r,null,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=u,mr(e,t,u,r,i,o))}return u=e.child,it)&&Si.set(e,t))}}function Pi(e,t){e.expirationTime(e=e.nextKnownPendingLevel)?t:e:t}function Ni(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741823,e.callbackPriority=99,e.callbackNode=ht(Ri.bind(null,e));else{var t=Ii(e),n=e.callbackNode;if(0===t)null!==n&&(e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90);else{var r=xi();if(1073741823===t?r=99:1===t||2===t?r=95:r=0>=(r=10*(1073741821-t)-10*(1073741821-r))?99:250>=r?98:5250>=r?97:95,null!==n){var i=e.callbackPriority;if(e.callbackExpirationTime===t&&i>=r)return;n!==rt&&$e(n)}e.callbackExpirationTime=t,e.callbackPriority=r,t=1073741823===t?ht(Ri.bind(null,e)):pt(r,Mi.bind(null,e),{timeout:10*(1073741821-t)-st()}),e.callbackNode=t}}}function Mi(e,t){if(Ti=0,t)return go(e,t=xi()),Ni(e),null;var n=Ii(e);if(0!==n){if(t=e.callbackNode,0!=(48&oi))throw Error(a(327));if(Xi(),e===ui&&n===li||Li(e,n),null!==ai){var r=oi;oi|=ii;for(var i=ji();;)try{Hi();break}catch(t){Bi(e,t)}if(Tt(),oi=r,ni.current=i,1===si)throw t=ci,Li(e,n),vo(e,n),Ni(e),t;if(null===ai)switch(i=e.finishedWork=e.current.alternate,e.finishedExpirationTime=n,r=si,ui=null,r){case 0:case 1:throw Error(a(345));case 2:go(e,2=n){e.lastPingedTime=n,Li(e,n);break}}if(0!==(o=Ii(e))&&o!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}e.timeoutHandle=W($i.bind(null,e),i);break}$i(e);break;case 4:if(vo(e,n),n===(r=e.lastSuspendedTime)&&(e.nextKnownPendingLevel=Gi(i)),vi&&(0===(i=e.lastPingedTime)||i>=n)){e.lastPingedTime=n,Li(e,n);break}if(0!==(i=Ii(e))&&i!==n)break;if(0!==r&&r!==n){e.lastPingedTime=r;break}if(1073741823!==di?r=10*(1073741821-di)-st():1073741823===fi?r=0:(r=10*(1073741821-fi)-5e3,0>(r=(i=st())-r)&&(r=0),(n=10*(1073741821-n)-i)<(r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*ti(r/1960))-r)&&(r=n)),10=(r=0|u.busyMinDurationMs)?r=0:(i=0|u.busyDelayMs,r=(o=st()-(10*(1073741821-o)-(0|u.timeoutMs||5e3)))<=i?0:i+r-o),10 component higher in the tree to provide a loading indicator or placeholder to display."+xe(i))}5!==si&&(si=2),o=Fr(o,i),l=r;do{switch(l.tag){case 3:u=o,l.effectTag|=4096,l.expirationTime=t,jt(l,Jr(l,u,t));break e;case 1:u=o;var g=l.type,y=l.stateNode;if(0==(64&l.effectTag)&&("function"==typeof g.getDerivedStateFromError||null!==y&&"function"==typeof y.componentDidCatch&&(null===bi||!bi.has(y)))){l.effectTag|=4096,l.expirationTime=t,jt(l,Zr(l,u,t));break e}}l=l.return}while(null!==l)}ai=qi(ai)}catch(e){t=e;continue}break}}function ji(){var e=ni.current;return ni.current=Zn,null===e?Zn:e}function Ui(e,t){ehi&&(hi=e)}function Wi(){for(;null!==ai;)ai=Vi(ai)}function Hi(){for(;null!==ai&&!Ye();)ai=Vi(ai)}function Vi(e){var t=ei(e.alternate,e,li);return e.memoizedProps=e.pendingProps,null===t&&(t=qi(e)),ri.current=null,t}function qi(e){ai=e;do{var t=ai.alternate;if(e=ai.return,0==(2048&ai.effectTag)){e:{var n=t,r=li,i=(t=ai).pendingProps;switch(t.tag){case 2:case 16:break;case 15:case 0:break;case 1:Be(t.type)&&je();break;case 3:dn(),Ue(),(i=t.stateNode).pendingContext&&(i.context=i.pendingContext,i.pendingContext=null),(null===n||null===n.child)&&sr(t)&&Ir(t),Dr(t);break;case 5:hn(t);var o=cn(sn.current);if(r=t.type,null!==n&&null!=t.stateNode)Sr(n,t,r,i,o),n.ref!==t.ref&&(t.effectTag|=128);else if(i){if(n=cn(an.current),sr(t)){if(i=t,!Y)throw Error(a(175));n=Ee(i.stateNode,i.type,i.memoizedProps,o,n,i),i.updateQueue=n,(n=null!==n)&&Ir(t)}else{var u=R(r,i,o,n,t);Er(u,t,!1,!1),t.stateNode=u,L(u,r,i,o,n)&&Ir(t)}null!==t.ref&&(t.effectTag|=128)}else if(null===t.stateNode)throw Error(a(166));break;case 6:if(n&&null!=t.stateNode)Cr(n,t,n.memoizedProps,i);else{if("string"!=typeof i&&null===t.stateNode)throw Error(a(166));if(n=cn(sn.current),o=cn(an.current),sr(t)){if(n=t,!Y)throw Error(a(176));(n=De(n.stateNode,n.memoizedProps,n))&&Ir(t)}else t.stateNode=z(i,n,o,t)}break;case 11:break;case 13:if(Pe(vn),i=t.memoizedState,0!=(64&t.effectTag)){t.expirationTime=r;break e}i=null!==i,o=!1,null===n?void 0!==t.memoizedProps.fallback&&sr(t):(o=null!==(r=n.memoizedState),i||null===r||null!==(r=n.child.sibling)&&(null!==(u=t.firstEffect)?(t.firstEffect=r,r.nextEffect=u):(t.firstEffect=t.lastEffect=r,r.nextEffect=null),r.effectTag=8)),i&&!o&&0!=(2&t.mode)&&(null===n&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!=(1&vn.current)?0===si&&(si=3):(0!==si&&3!==si||(si=4),0!==hi&&null!==ui&&(vo(ui,li),mo(ui,hi)))),$&&i&&(t.effectTag|=4),G&&(i||o)&&(t.effectTag|=4);break;case 7:case 8:case 12:break;case 4:dn(),Dr(t);break;case 10:At(t);break;case 9:case 14:break;case 17:Be(t.type)&&je();break;case 19:if(Pe(vn),null===(i=t.memoizedState))break;if(o=0!=(64&t.effectTag),null===(u=i.rendering)){if(o)Mr(i,!1);else if(0!==si||null!==n&&0!=(64&n.effectTag))for(n=t.child;null!==n;){if(null!==(u=mn(n))){for(t.effectTag|=64,Mr(i,!1),null!==(n=u.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),null===i.lastEffect&&(t.firstEffect=null),t.lastEffect=i.lastEffect,n=r,i=t.child;null!==i;)r=n,(o=i).effectTag&=2,o.nextEffect=null,o.firstEffect=null,o.lastEffect=null,null===(u=o.alternate)?(o.childExpirationTime=0,o.expirationTime=r,o.child=null,o.memoizedProps=null,o.memoizedState=null,o.updateQueue=null,o.dependencies=null):(o.childExpirationTime=u.childExpirationTime,o.expirationTime=u.expirationTime,o.child=u.child,o.memoizedProps=u.memoizedProps,o.memoizedState=u.memoizedState,o.updateQueue=u.updateQueue,r=u.dependencies,o.dependencies=null===r?null:{expirationTime:r.expirationTime,firstContext:r.firstContext,responders:r.responders}),i=i.sibling;Ie(vn,1&vn.current|2),t=t.child;break e}n=n.sibling}}else{if(!o)if(null!==(n=mn(u))){if(t.effectTag|=64,o=!0,null!==(n=n.updateQueue)&&(t.updateQueue=n,t.effectTag|=4),Mr(i,!0),null===i.tail&&"hidden"===i.tailMode&&!u.alternate){null!==(t=t.lastEffect=i.lastEffect)&&(t.nextEffect=null);break}}else st()>i.tailExpiration&&1i&&(i=r),(u=o.childExpirationTime)>i&&(i=u),o=o.sibling;n.childExpirationTime=i}if(null!==t)return t;null!==e&&0==(2048&e.effectTag)&&(null===e.firstEffect&&(e.firstEffect=ai.firstEffect),null!==ai.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=ai.firstEffect),e.lastEffect=ai.lastEffect),1(e=e.childExpirationTime)?t:e}function $i(e){var t=ct();return dt(99,Yi.bind(null,e,t)),null}function Yi(e,t){do{Xi()}while(null!==Ei);if(0!=(48&oi))throw Error(a(327));var n=e.finishedWork,r=e.finishedExpirationTime;if(null===n)return null;if(e.finishedWork=null,e.finishedExpirationTime=0,n===e.current)throw Error(a(177));e.callbackNode=null,e.callbackExpirationTime=0,e.callbackPriority=90,e.nextKnownPendingLevel=0;var i=Gi(n);if(e.firstPendingTime=i,r<=e.lastSuspendedTime?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:r<=e.firstSuspendedTime&&(e.firstSuspendedTime=r-1),r<=e.lastPingedTime&&(e.lastPingedTime=0),r<=e.lastExpiredTime&&(e.lastExpiredTime=0),e===ui&&(ai=ui=null,li=0),1=n?Tr(e,t,n):(Ie(vn,1&vn.current),null!==(t=Pr(e,t,n))?t.sibling:null);Ie(vn,1&vn.current);break;case 19:if(r=t.childExpirationTime>=n,0!=(64&e.effectTag)){if(r)return Or(e,t,n);t.effectTag|=64}if(null!==(i=t.memoizedState)&&(i.rendering=null,i.tail=null),Ie(vn,vn.current),!r)return null}return Pr(e,t,n)}dr=!1}}else dr=!1;switch(t.expirationTime=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,i=Le(t,Me.current),Pt(t,n),i=Rn(null,t,r,e,i,n),t.effectTag|=1,"object"==typeof i&&null!==i&&"function"==typeof i.render&&void 0===i.$$typeof){if(t.tag=1,Fn(),Be(r)){var o=!0;He(t)}else o=!1;t.memoizedState=null!==i.state&&void 0!==i.state?i.state:null;var u=r.getDerivedStateFromProps;"function"==typeof u&&$t(t,r,u,e),i.updater=Yt,t.stateNode=i,i._reactInternalFiber=t,Jt(t,r,e,n),t=br(null,t,r,!0,o,n)}else t.tag=0,pr(null,t,i,n),t=t.child;return t;case 16:if(i=t.elementType,null!==e&&(e.alternate=null,t.alternate=null,t.effectTag|=2),e=t.pendingProps,function(e){if(-1===e._status){e._status=0;var t=e._ctor;t=t(),e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}}(i),1!==i._status)throw i._result;switch(i=i._result,t.type=i,o=t.tag=function(e){if("function"==typeof e)return uo(e)?1:0;if(null!=e){if((e=e.$$typeof)===y)return 11;if(e===w)return 14}return 2}(i),e=Et(i,e),o){case 0:t=yr(null,t,i,e,n);break;case 1:t=_r(null,t,i,e,n);break;case 11:t=hr(null,t,i,e,n);break;case 14:t=vr(null,t,i,Et(i.type,e),r,n);break;default:throw Error(a(306,i,""))}return t;case 0:return r=t.type,i=t.pendingProps,yr(e,t,r,i=t.elementType===r?i:Et(r,i),n);case 1:return r=t.type,i=t.pendingProps,_r(e,t,r,i=t.elementType===r?i:Et(r,i),n);case 3:if(wr(t),null===(r=t.updateQueue))throw Error(a(282));if(i=null!==(i=t.memoizedState)?i.element:null,Wt(t,r,t.pendingProps,null,n),(r=t.memoizedState.element)===i)cr(),t=Pr(e,t,n);else{if((i=t.stateNode.hydrate)&&(Y?(rr=we(t.stateNode.containerInfo),nr=t,i=ir=!0):i=!1),i)for(n=on(t,null,r,n),t.child=n;n;)n.effectTag=-3&n.effectTag|1024,n=n.sibling;else pr(e,t,r,n),cr();t=t.child}return t;case 5:return pn(t),null===e&&ar(t),r=t.type,i=t.pendingProps,o=null!==e?e.memoizedProps:null,u=i.children,j(r,i)?u=null:null!==o&&j(r,o)&&(t.effectTag|=16),gr(e,t),4&t.mode&&1!==n&&U(r,i)?(t.expirationTime=t.childExpirationTime=1,t=null):(pr(e,t,u,n),t=t.child),t;case 6:return null===e&&ar(t),null;case 13:return Tr(e,t,n);case 4:return fn(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=rn(t,null,r,n):pr(e,t,r,n),t.child;case 11:return r=t.type,i=t.pendingProps,hr(e,t,r,i=t.elementType===r?i:Et(r,i),n);case 7:return pr(e,t,t.pendingProps,n),t.child;case 8:case 12:return pr(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,i=t.pendingProps,u=t.memoizedProps,xt(t,o=i.value),null!==u){var l=u.value;if(0===(o=_t(l,o)?0:0|("function"==typeof r._calculateChangedBits?r._calculateChangedBits(l,o):1073741823))){if(u.children===i.children&&!Re.current){t=Pr(e,t,n);break e}}else for(null!==(l=t.child)&&(l.return=t);null!==l;){var s=l.dependencies;if(null!==s){u=l.child;for(var c=s.firstContext;null!==c;){if(c.context===r&&0!=(c.observedBits&o)){1===l.tag&&((c=Ft(n,null)).tag=2,Bt(l,c)),l.expirationTime=t&&e<=t}function vo(e,t){var n=e.firstSuspendedTime,r=e.lastSuspendedTime;nt||0===n)&&(e.lastSuspendedTime=t),t<=e.lastPingedTime&&(e.lastPingedTime=0),t<=e.lastExpiredTime&&(e.lastExpiredTime=0)}function mo(e,t){t>e.firstPendingTime&&(e.firstPendingTime=t);var n=e.firstSuspendedTime;0!==n&&(t>=n?e.firstSuspendedTime=e.lastSuspendedTime=e.nextKnownPendingLevel=0:t>=e.lastSuspendedTime&&(e.lastSuspendedTime=t+1),t>e.nextKnownPendingLevel&&(e.nextKnownPendingLevel=t))}function go(e,t){var n=e.lastExpiredTime;(0===n||n>t)&&(e.lastExpiredTime=t)}function yo(e){var t=e._reactInternalFiber;if(void 0===t){if("function"==typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return null===(e=A(t))?null:e.stateNode}function _o(e,t){null!==(e=e.memoizedState)&&null!==e.dehydrated&&e.retryTime{"use strict";e.exports=n(5767)},3296:(e,t,n)=>{"use strict";const r=n(5760);r.createWebSocketStream=n(6387),r.Server=n(43),r.Receiver=n(1762),r.Sender=n(9576),e.exports=r},8716:(e,t,n)=>{"use strict";const{EMPTY_BUFFER:r}=n(5739);function i(e,t){if(0===e.length)return r;if(1===e.length)return e[0];const n=Buffer.allocUnsafe(t);let i=0;for(let t=0;t{"use strict";e.exports={BINARY_TYPES:["nodebuffer","arraybuffer","fragments"],GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),EMPTY_BUFFER:Buffer.alloc(0),NOOP:()=>{}}},7002:e=>{"use strict";class t{constructor(e,t){this.target=t,this.type=e}}class n extends t{constructor(e,t){super("message",t),this.data=e}}class r extends t{constructor(e,t,n){super("close",n),this.wasClean=n._closeFrameReceived&&n._closeFrameSent,this.reason=t,this.code=e}}class i extends t{constructor(e){super("open",e)}}class o extends t{constructor(e,t){super("error",t),this.message=e.message,this.error=e}}const u={addEventListener(e,t,u){if("function"!=typeof t)return;function a(e){t.call(this,new n(e,this))}function l(e,n){t.call(this,new r(e,n,this))}function s(e){t.call(this,new o(e,this))}function c(){t.call(this,new i(this))}const f=u&&u.once?"once":"on";"message"===e?(a._listener=t,this[f](e,a)):"close"===e?(l._listener=t,this[f](e,l)):"error"===e?(s._listener=t,this[f](e,s)):"open"===e?(c._listener=t,this[f](e,c)):this[f](e,t)},removeEventListener(e,t){const n=this.listeners(e);for(let r=0;r{"use strict";const t=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function n(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}e.exports={format:function(e){return Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>[t].concat(Object.keys(e).map(t=>{let n=e[t];return Array.isArray(n)||(n=[n]),n.map(e=>!0===e?t:`${t}=${e}`).join("; ")})).join("; ")).join(", ")}).join(", ")},parse:function(e){const r=Object.create(null);if(void 0===e||""===e)return r;let i,o,u=Object.create(null),a=!1,l=!1,s=!1,c=-1,f=-1,d=0;for(;d{"use strict";const t=Symbol("kDone"),n=Symbol("kRun");e.exports=class{constructor(e){this[t]=()=>{this.pending--,this[n]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[n]()}[n](){if(this.pending!==this.concurrency&&this.jobs.length){const e=this.jobs.shift();this.pending++,e(this[t])}}}},2309:(e,t,n)=>{"use strict";const r=n(8761),i=n(8716),o=n(1390),{kStatusCode:u,NOOP:a}=n(5739),l=Buffer.from([0,0,255,255]),s=Symbol("permessage-deflate"),c=Symbol("total-length"),f=Symbol("callback"),d=Symbol("buffers"),p=Symbol("error");let h;function v(e){this[d].push(e),this[c]+=e.length}function m(e){this[c]+=e.length,this[s]._maxPayload<1||this[c]<=this[s]._maxPayload?this[d].push(e):(this[p]=new RangeError("Max payload size exceeded"),this[p][u]=1009,this.removeListener("data",m),this.reset())}function g(e){this[s]._inflate=null,e[u]=1007,this[f](e)}e.exports=class{constructor(e,t,n){if(this._maxPayload=0|n,this._options=e||{},this._threshold=void 0!==this._options.threshold?this._options.threshold:1024,this._isServer=!!t,this._deflate=null,this._inflate=null,this.params=null,!h){const e=void 0!==this._options.concurrencyLimit?this._options.concurrencyLimit:10;h=new o(e)}}static get extensionName(){return"permessage-deflate"}offer(){const e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:null==this._options.clientMaxWindowBits&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){const e=this._deflate[f];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){const t=this._options,n=e.find(e=>!(!1===t.serverNoContextTakeover&&e.server_no_context_takeover||e.server_max_window_bits&&(!1===t.serverMaxWindowBits||"number"==typeof t.serverMaxWindowBits&&t.serverMaxWindowBits>e.server_max_window_bits)||"number"==typeof t.clientMaxWindowBits&&!e.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),"number"==typeof t.serverMaxWindowBits&&(n.server_max_window_bits=t.serverMaxWindowBits),"number"==typeof t.clientMaxWindowBits?n.client_max_window_bits=t.clientMaxWindowBits:!0!==n.client_max_window_bits&&!1!==t.clientMaxWindowBits||delete n.client_max_window_bits,n}acceptAsClient(e){const t=e[0];if(!1===this._options.clientNoContextTakeover&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(t.client_max_window_bits){if(!1===this._options.clientMaxWindowBits||"number"==typeof this._options.clientMaxWindowBits&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"')}else"number"==typeof this._options.clientMaxWindowBits&&(t.client_max_window_bits=this._options.clientMaxWindowBits);return t}normalizeParams(e){return e.forEach(e=>{Object.keys(e).forEach(t=>{let n=e[t];if(n.length>1)throw new Error(`Parameter "${t}" must have only a single value`);if(n=n[0],"client_max_window_bits"===t){if(!0!==n){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}else if("server_max_window_bits"===t){const e=+n;if(!Number.isInteger(e)||e<8||e>15)throw new TypeError(`Invalid value for parameter "${t}": ${n}`);n=e}else{if("client_no_context_takeover"!==t&&"server_no_context_takeover"!==t)throw new Error(`Unknown parameter "${t}"`);if(!0!==n)throw new TypeError(`Invalid value for parameter "${t}": ${n}`)}e[t]=n})}),e}decompress(e,t,n){h.add(r=>{this._decompress(e,t,(e,t)=>{r(),n(e,t)})})}compress(e,t,n){h.add(r=>{this._compress(e,t,(e,t)=>{r(),n(e,t)})})}_decompress(e,t,n){const o=this._isServer?"client":"server";if(!this._inflate){const e=o+"_max_window_bits",t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._inflate=r.createInflateRaw({...this._options.zlibInflateOptions,windowBits:t}),this._inflate[s]=this,this._inflate[c]=0,this._inflate[d]=[],this._inflate.on("error",g),this._inflate.on("data",m)}this._inflate[f]=n,this._inflate.write(e),t&&this._inflate.write(l),this._inflate.flush(()=>{const e=this._inflate[p];if(e)return this._inflate.close(),this._inflate=null,void n(e);const r=i.concat(this._inflate[d],this._inflate[c]);t&&this.params[o+"_no_context_takeover"]?(this._inflate.close(),this._inflate=null):(this._inflate[c]=0,this._inflate[d]=[]),n(null,r)})}_compress(e,t,n){const o=this._isServer?"server":"client";if(!this._deflate){const e=o+"_max_window_bits",t="number"!=typeof this.params[e]?r.Z_DEFAULT_WINDOWBITS:this.params[e];this._deflate=r.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:t}),this._deflate[c]=0,this._deflate[d]=[],this._deflate.on("error",a),this._deflate.on("data",v)}this._deflate[f]=n,this._deflate.write(e),this._deflate.flush(r.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let e=i.concat(this._deflate[d],this._deflate[c]);t&&(e=e.slice(0,e.length-4)),this._deflate[f]=null,t&&this.params[o+"_no_context_takeover"]?(this._deflate.close(),this._deflate=null):(this._deflate[c]=0,this._deflate[d]=[]),n(null,e)})}}},1762:(e,t,n)=>{"use strict";const{Writable:r}=n(2413),i=n(2309),{BINARY_TYPES:o,EMPTY_BUFFER:u,kStatusCode:a,kWebSocket:l}=n(5739),{concat:s,toArrayBuffer:c,unmask:f}=n(8716),{isValidStatusCode:d,isValidUTF8:p}=n(9498);function h(e,t,n,r){const i=new e(n?"Invalid WebSocket frame: "+t:t);return Error.captureStackTrace(i,h),i[a]=r,i}e.exports=class extends r{constructor(e,t,n,r){super(),this._binaryType=e||o[0],this[l]=void 0,this._extensions=t||{},this._isServer=!!n,this._maxPayload=0|r,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._state=0,this._loop=!1}_write(e,t,n){if(8===this._opcode&&0==this._state)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e=n.length?t.set(this._buffers.shift(),r):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),r),this._buffers[0]=n.slice(e)),e-=n.length}while(e>0);return t}startLoop(e){let t;this._loop=!0;do{switch(this._state){case 0:t=this.getInfo();break;case 1:t=this.getPayloadLength16();break;case 2:t=this.getPayloadLength64();break;case 3:this.getMask();break;case 4:t=this.getData(e);break;default:return void(this._loop=!1)}}while(this._loop);e(t)}getInfo(){if(this._bufferedBytes<2)return void(this._loop=!1);const e=this.consume(2);if(0!=(48&e[0]))return this._loop=!1,h(RangeError,"RSV2 and RSV3 must be clear",!0,1002);const t=64==(64&e[0]);if(t&&!this._extensions[i.extensionName])return this._loop=!1,h(RangeError,"RSV1 must be clear",!0,1002);if(this._fin=128==(128&e[0]),this._opcode=15&e[0],this._payloadLength=127&e[1],0===this._opcode){if(t)return this._loop=!1,h(RangeError,"RSV1 must be clear",!0,1002);if(!this._fragmented)return this._loop=!1,h(RangeError,"invalid opcode 0",!0,1002);this._opcode=this._fragmented}else if(1===this._opcode||2===this._opcode){if(this._fragmented)return this._loop=!1,h(RangeError,"invalid opcode "+this._opcode,!0,1002);this._compressed=t}else{if(!(this._opcode>7&&this._opcode<11))return this._loop=!1,h(RangeError,"invalid opcode "+this._opcode,!0,1002);if(!this._fin)return this._loop=!1,h(RangeError,"FIN must be set",!0,1002);if(t)return this._loop=!1,h(RangeError,"RSV1 must be clear",!0,1002);if(this._payloadLength>125)return this._loop=!1,h(RangeError,"invalid payload length "+this._payloadLength,!0,1002)}if(this._fin||this._fragmented||(this._fragmented=this._opcode),this._masked=128==(128&e[1]),this._isServer){if(!this._masked)return this._loop=!1,h(RangeError,"MASK must be set",!0,1002)}else if(this._masked)return this._loop=!1,h(RangeError,"MASK must be clear",!0,1002);if(126===this._payloadLength)this._state=1;else{if(127!==this._payloadLength)return this.haveLength();this._state=2}}getPayloadLength16(){if(!(this._bufferedBytes<2))return this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength();this._loop=!1}getPayloadLength64(){if(this._bufferedBytes<8)return void(this._loop=!1);const e=this.consume(8),t=e.readUInt32BE(0);return t>Math.pow(2,21)-1?(this._loop=!1,h(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009)):(this._payloadLength=t*Math.pow(2,32)+e.readUInt32BE(4),this.haveLength())}haveLength(){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0))return this._loop=!1,h(RangeError,"Max payload size exceeded",!1,1009);this._masked?this._state=3:this._state=4}getMask(){this._bufferedBytes<4?this._loop=!1:(this._mask=this.consume(4),this._state=4)}getData(e){let t=u;if(this._payloadLength){if(this._bufferedBytes7?this.controlMessage(t):this._compressed?(this._state=5,void this.decompress(t,e)):(t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage())}decompress(e,t){this._extensions[i.extensionName].decompress(e,this._fin,(e,n)=>{if(e)return t(e);if(n.length){if(this._messageLength+=n.length,this._messageLength>this._maxPayload&&this._maxPayload>0)return t(h(RangeError,"Max payload size exceeded",!1,1009));this._fragments.push(n)}const r=this.dataMessage();if(r)return t(r);this.startLoop(t)})}dataMessage(){if(this._fin){const e=this._messageLength,t=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],2===this._opcode){let n;n="nodebuffer"===this._binaryType?s(t,e):"arraybuffer"===this._binaryType?c(s(t,e)):t,this.emit("message",n)}else{const n=s(t,e);if(!p(n))return this._loop=!1,h(Error,"invalid UTF-8 sequence",!0,1007);this.emit("message",n.toString())}}this._state=0}controlMessage(e){if(8===this._opcode)if(this._loop=!1,0===e.length)this.emit("conclude",1005,""),this.end();else{if(1===e.length)return h(RangeError,"invalid payload length 1",!0,1002);{const t=e.readUInt16BE(0);if(!d(t))return h(RangeError,"invalid status code "+t,!0,1002);const n=e.slice(2);if(!p(n))return h(Error,"invalid UTF-8 sequence",!0,1007);this.emit("conclude",t,n.toString()),this.end()}}else 9===this._opcode?this.emit("ping",e):this.emit("pong",e);this._state=0}}},9576:(e,t,n)=>{"use strict";const{randomFillSync:r}=n(6417),i=n(2309),{EMPTY_BUFFER:o}=n(5739),{isValidStatusCode:u}=n(9498),{mask:a,toBuffer:l}=n(8716),s=Buffer.alloc(4);class c{constructor(e,t){this._extensions=t||{},this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._deflating=!1,this._queue=[]}static frame(e,t){const n=t.mask&&t.readOnly;let i=t.mask?6:2,o=e.length;e.length>=65536?(i+=8,o=127):e.length>125&&(i+=2,o=126);const u=Buffer.allocUnsafe(n?e.length+i:i);return u[0]=t.fin?128|t.opcode:t.opcode,t.rsv1&&(u[0]|=64),u[1]=o,126===o?u.writeUInt16BE(e.length,2):127===o&&(u.writeUInt32BE(0,2),u.writeUInt32BE(e.length,6)),t.mask?(r(s,0,4),u[1]|=128,u[i-4]=s[0],u[i-3]=s[1],u[i-2]=s[2],u[i-1]=s[3],n?(a(e,s,u,i,e.length),[u]):(a(e,s,e,0,e.length),[u,e])):[u,e]}close(e,t,n,r){let i;if(void 0===e)i=o;else{if("number"!=typeof e||!u(e))throw new TypeError("First argument must be a valid error code number");if(void 0===t||""===t)i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0);else{const n=Buffer.byteLength(t);if(n>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+n),i.writeUInt16BE(e,0),i.write(t,2)}}this._deflating?this.enqueue([this.doClose,i,n,r]):this.doClose(i,n,r)}doClose(e,t,n){this.sendFrame(c.frame(e,{fin:!0,rsv1:!1,opcode:8,mask:t,readOnly:!1}),n)}ping(e,t,n){const r=l(e);if(r.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPing,r,t,l.readOnly,n]):this.doPing(r,t,l.readOnly,n)}doPing(e,t,n,r){this.sendFrame(c.frame(e,{fin:!0,rsv1:!1,opcode:9,mask:t,readOnly:n}),r)}pong(e,t,n){const r=l(e);if(r.length>125)throw new RangeError("The data size must not be greater than 125 bytes");this._deflating?this.enqueue([this.doPong,r,t,l.readOnly,n]):this.doPong(r,t,l.readOnly,n)}doPong(e,t,n,r){this.sendFrame(c.frame(e,{fin:!0,rsv1:!1,opcode:10,mask:t,readOnly:n}),r)}send(e,t,n){const r=l(e),o=this._extensions[i.extensionName];let u=t.binary?2:1,a=t.compress;if(this._firstFragment?(this._firstFragment=!1,a&&o&&(a=r.length>=o._threshold),this._compress=a):(a=!1,u=0),t.fin&&(this._firstFragment=!0),o){const e={fin:t.fin,rsv1:a,opcode:u,mask:t.mask,readOnly:l.readOnly};this._deflating?this.enqueue([this.dispatch,r,this._compress,e,n]):this.dispatch(r,this._compress,e,n)}else this.sendFrame(c.frame(r,{fin:t.fin,rsv1:!1,opcode:u,mask:t.mask,readOnly:l.readOnly}),n)}dispatch(e,t,n,r){if(!t)return void this.sendFrame(c.frame(e,n),r);const o=this._extensions[i.extensionName];this._bufferedBytes+=e.length,this._deflating=!0,o.compress(e,n.fin,(t,i)=>{if(this._socket.destroyed){const e=new Error("The socket was closed while data was being compressed");"function"==typeof r&&r(e);for(let t=0;t{"use strict";const{Duplex:r}=n(2413);function i(e){e.emit("close")}function o(){!this.destroyed&&this._writableState.finished&&this.destroy()}function u(e){this.removeListener("error",u),this.destroy(),0===this.listenerCount("error")&&this.emit("error",e)}e.exports=function(e,t){let n=!0;function a(){n&&e._socket.resume()}e.readyState===e.CONNECTING?e.once("open",(function(){e._receiver.removeAllListeners("drain"),e._receiver.on("drain",a)})):(e._receiver.removeAllListeners("drain"),e._receiver.on("drain",a));const l=new r({...t,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return e.on("message",(function(t){l.push(t)||(n=!1,e._socket.pause())})),e.once("error",(function(e){l.destroyed||l.destroy(e)})),e.once("close",(function(){l.destroyed||l.push(null)})),l._destroy=function(t,n){if(e.readyState===e.CLOSED)return n(t),void process.nextTick(i,l);let r=!1;e.once("error",(function(e){r=!0,n(e)})),e.once("close",(function(){r||n(t),process.nextTick(i,l)})),e.terminate()},l._final=function(t){e.readyState!==e.CONNECTING?null!==e._socket&&(e._socket._writableState.finished?(t(),l._readableState.endEmitted&&l.destroy()):(e._socket.once("finish",(function(){t()})),e.close())):e.once("open",(function(){l._final(t)}))},l._read=function(){e.readyState!==e.OPEN||n||(n=!0,e._receiver._writableState.needDrain||e._socket.resume())},l._write=function(t,n,r){e.readyState!==e.CONNECTING?e.send(t,r):e.once("open",(function(){l._write(t,n,r)}))},l.on("end",o),l.on("error",u),l}},9498:(e,t,n)=>{"use strict";try{const e=n(Object(function(){var e=new Error("Cannot find module 'utf-8-validate'");throw e.code="MODULE_NOT_FOUND",e}()));t.isValidUTF8="object"==typeof e?e.Validation.isValidUTF8:e}catch(e){t.isValidUTF8=()=>!0}t.isValidStatusCode=e=>e>=1e3&&e<=1014&&1004!==e&&1005!==e&&1006!==e||e>=3e3&&e<=4999},43:(e,t,n)=>{"use strict";const r=n(8614),{createHash:i}=n(6417),{createServer:o,STATUS_CODES:u}=n(8605),a=n(2309),l=n(5760),{format:s,parse:c}=n(8162),{GUID:f,kWebSocket:d}=n(5739),p=/^[+/0-9A-Za-z]{22}==$/;function h(e){e.emit("close")}function v(){this.destroy()}function m(e,t,n,r){e.writable&&(n=n||u[t],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...r},e.write(`HTTP/1.1 ${t} ${u[t]}\r\n`+Object.keys(r).map(e=>`${e}: ${r[e]}`).join("\r\n")+"\r\n\r\n"+n)),e.removeListener("error",v),e.destroy()}e.exports=class extends r{constructor(e,t){if(super(),null==(e={maxPayload:104857600,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,...e}).port&&!e.server&&!e.noServer)throw new TypeError('One of the "port", "server", or "noServer" options must be specified');null!=e.port?(this._server=o((e,t)=>{const n=u[426];t.writeHead(426,{"Content-Length":n.length,"Content-Type":"text/plain"}),t.end(n)}),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server&&(this._removeListeners=function(e,t){for(const n of Object.keys(t))e.on(n,t[n]);return function(){for(const n of Object.keys(t))e.removeListener(n,t[n])}}(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(e,t,n)=>{this.handleUpgrade(e,t,n,t=>{this.emit("connection",t,e)})}})),!0===e.perMessageDeflate&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set),this.options=e}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(e&&this.once("close",e),this.clients)for(const e of this.clients)e.terminate();const t=this._server;t&&(this._removeListeners(),this._removeListeners=this._server=null,null!=this.options.port)?t.close(()=>this.emit("close")):process.nextTick(h,this)}shouldHandle(e){if(this.options.path){const t=e.url.indexOf("?");if((-1!==t?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,r){t.on("error",v);const i=void 0!==e.headers["sec-websocket-key"]&&e.headers["sec-websocket-key"].trim(),o=+e.headers["sec-websocket-version"],u={};if("GET"!==e.method||"websocket"!==e.headers.upgrade.toLowerCase()||!i||!p.test(i)||8!==o&&13!==o||!this.shouldHandle(e))return m(t,400);if(this.options.perMessageDeflate){const n=new a(this.options.perMessageDeflate,!0,this.options.maxPayload);try{const t=c(e.headers["sec-websocket-extensions"]);t[a.extensionName]&&(n.accept(t[a.extensionName]),u[a.extensionName]=n)}catch(e){return m(t,400)}}if(this.options.verifyClient){const a={origin:e.headers[""+(8===o?"sec-websocket-origin":"origin")],secure:!(!e.connection.authorized&&!e.connection.encrypted),req:e};if(2===this.options.verifyClient.length)return void this.options.verifyClient(a,(o,a,l,s)=>{if(!o)return m(t,a||401,l,s);this.completeUpgrade(i,u,e,t,n,r)});if(!this.options.verifyClient(a))return m(t,401)}this.completeUpgrade(i,u,e,t,n,r)}completeUpgrade(e,t,n,r,o,u){if(!r.readable||!r.writable)return r.destroy();if(r[d])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");const c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade","Sec-WebSocket-Accept: "+i("sha1").update(e+f).digest("base64")],p=new l(null);let h=n.headers["sec-websocket-protocol"];if(h&&(h=h.trim().split(/ *, */),h=this.options.handleProtocols?this.options.handleProtocols(h,n):h[0],h&&(c.push("Sec-WebSocket-Protocol: "+h),p.protocol=h)),t[a.extensionName]){const e=t[a.extensionName].params,n=s({[a.extensionName]:[e]});c.push("Sec-WebSocket-Extensions: "+n),p._extensions=t}this.emit("headers",c,n),r.write(c.concat("\r\n").join("\r\n")),r.removeListener("error",v),p.setSocket(r,o,this.options.maxPayload),this.clients&&(this.clients.add(p),p.on("close",()=>this.clients.delete(p))),u(p)}}},5760:(e,t,n)=>{"use strict";const r=n(8614),i=n(7211),o=n(8605),u=n(1631),a=n(4016),{randomBytes:l,createHash:s}=n(6417),{URL:c}=n(8835),f=n(2309),d=n(1762),p=n(9576),{BINARY_TYPES:h,EMPTY_BUFFER:v,GUID:m,kStatusCode:g,kWebSocket:y,NOOP:_}=n(5739),{addEventListener:b,removeEventListener:w}=n(7002),{format:E,parse:D}=n(8162),{toBuffer:S}=n(8716),C=["CONNECTING","OPEN","CLOSING","CLOSED"],k=[8,13];class T extends r{constructor(e,t,n){super(),this.readyState=T.CONNECTING,this.protocol="",this._binaryType=h[0],this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage="",this._closeTimer=null,this._closeCode=1006,this._extensions={},this._receiver=null,this._sender=null,this._socket=null,null!==e?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,Array.isArray(t)?t=t.join(", "):"object"==typeof t&&null!==t&&(n=t,t=void 0),function e(t,n,r,u){const a={protocolVersion:k[1],maxPayload:104857600,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...u,createConnection:void 0,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:void 0,host:void 0,path:void 0,port:void 0};if(!k.includes(a.protocolVersion))throw new RangeError(`Unsupported protocol version: ${a.protocolVersion} (supported versions: ${k.join(", ")})`);let d;n instanceof c?(d=n,t.url=n.href):(d=new c(n),t.url=n);const p="ws+unix:"===d.protocol;if(!(d.host||p&&d.pathname))throw new Error("Invalid URL: "+t.url);const h="wss:"===d.protocol||"https:"===d.protocol,v=h?443:80,g=l(16).toString("base64"),y=h?i.get:o.get;let _;a.createConnection=h?A:x,a.defaultPort=a.defaultPort||v,a.port=d.port||v,a.host=d.hostname.startsWith("[")?d.hostname.slice(1,-1):d.hostname,a.headers={"Sec-WebSocket-Version":a.protocolVersion,"Sec-WebSocket-Key":g,Connection:"Upgrade",Upgrade:"websocket",...a.headers},a.path=d.pathname+d.search,a.timeout=a.handshakeTimeout,a.perMessageDeflate&&(_=new f(!0!==a.perMessageDeflate?a.perMessageDeflate:{},!1,a.maxPayload),a.headers["Sec-WebSocket-Extensions"]=E({[f.extensionName]:_.offer()}));r&&(a.headers["Sec-WebSocket-Protocol"]=r);a.origin&&(a.protocolVersion<13?a.headers["Sec-WebSocket-Origin"]=a.origin:a.headers.Origin=a.origin);(d.username||d.password)&&(a.auth=`${d.username}:${d.password}`);if(p){const e=a.path.split(":");a.socketPath=e[0],a.path=e[1]}let b=t._req=y(a);a.timeout&&b.on("timeout",()=>{O(t,b,"Opening handshake has timed out")});b.on("error",e=>{t._req.aborted||(b=t._req=null,t.readyState=T.CLOSING,t.emit("error",e),t.emitClose())}),b.on("response",i=>{const o=i.headers.location,l=i.statusCode;if(o&&a.followRedirects&&l>=300&&l<400){if(++t._redirects>a.maxRedirects)return void O(t,b,"Maximum redirects exceeded");b.abort();const i=new c(o,n);e(t,i,r,u)}else t.emit("unexpected-response",b,i)||O(t,b,"Unexpected server response: "+i.statusCode)}),b.on("upgrade",(e,n,i)=>{if(t.emit("upgrade",e),t.readyState!==T.CONNECTING)return;b=t._req=null;const o=s("sha1").update(g+m).digest("base64");if(e.headers["sec-websocket-accept"]!==o)return void O(t,n,"Invalid Sec-WebSocket-Accept header");const u=e.headers["sec-websocket-protocol"],l=(r||"").split(/, */);let c;if(!r&&u?c="Server sent a subprotocol but none was requested":r&&!u?c="Server sent no subprotocol":u&&!l.includes(u)&&(c="Server sent an invalid subprotocol"),c)O(t,n,c);else{if(u&&(t.protocol=u),_)try{const n=D(e.headers["sec-websocket-extensions"]);n[f.extensionName]&&(_.accept(n[f.extensionName]),t._extensions[f.extensionName]=_)}catch(e){return void O(t,n,"Invalid Sec-WebSocket-Extensions header")}t.setSocket(n,i,a.maxPayload)}})}(this,e,t,n)):this._isServer=!0}get CONNECTING(){return T.CONNECTING}get CLOSING(){return T.CLOSING}get CLOSED(){return T.CLOSED}get OPEN(){return T.OPEN}get binaryType(){return this._binaryType}set binaryType(e){h.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}setSocket(e,t,n){const r=new d(this._binaryType,this._extensions,this._isServer,n);this._sender=new p(e,this._extensions),this._receiver=r,this._socket=e,r[y]=this,e[y]=this,r.on("conclude",I),r.on("drain",N),r.on("error",M),r.on("message",F),r.on("ping",L),r.on("pong",B),e.setTimeout(0),e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",j),e.on("data",U),e.on("end",z),e.on("error",W),this.readyState=T.OPEN,this.emit("open")}emitClose(){if(!this._socket)return this.readyState=T.CLOSED,void this.emit("close",this._closeCode,this._closeMessage);this._extensions[f.extensionName]&&this._extensions[f.extensionName].cleanup(),this._receiver.removeAllListeners(),this.readyState=T.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==T.CLOSED){if(this.readyState===T.CONNECTING){const e="WebSocket was closed before the connection was established";return O(this,this._req,e)}this.readyState!==T.CLOSING?(this.readyState=T.CLOSING,this._sender.close(e,t,!this._isServer,e=>{e||(this._closeFrameSent=!0,this._closeFrameReceived&&this._socket.end())}),this._closeTimer=setTimeout(this._socket.destroy.bind(this._socket),3e4)):this._closeFrameSent&&this._closeFrameReceived&&this._socket.end()}}ping(e,t,n){if(this.readyState===T.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(n=e,e=t=void 0):"function"==typeof t&&(n=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===T.OPEN?(void 0===t&&(t=!this._isServer),this._sender.ping(e||v,t,n)):P(this,e,n)}pong(e,t,n){if(this.readyState===T.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");"function"==typeof e?(n=e,e=t=void 0):"function"==typeof t&&(n=t,t=void 0),"number"==typeof e&&(e=e.toString()),this.readyState===T.OPEN?(void 0===t&&(t=!this._isServer),this._sender.pong(e||v,t,n)):P(this,e,n)}send(e,t,n){if(this.readyState===T.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if("function"==typeof t&&(n=t,t={}),"number"==typeof e&&(e=e.toString()),this.readyState!==T.OPEN)return void P(this,e,n);const r={binary:"string"!=typeof e,mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[f.extensionName]||(r.compress=!1),this._sender.send(e||v,r,n)}terminate(){if(this.readyState!==T.CLOSED){if(this.readyState===T.CONNECTING){const e="WebSocket was closed before the connection was established";return O(this,this._req,e)}this._socket&&(this.readyState=T.CLOSING,this._socket.destroy())}}}function x(e){return e.path=e.socketPath,u.connect(e)}function A(e){return e.path=void 0,e.servername||""===e.servername||(e.servername=e.host),a.connect(e)}function O(e,t,n){e.readyState=T.CLOSING;const r=new Error(n);Error.captureStackTrace(r,O),t.setHeader?(t.abort(),t.once("abort",e.emitClose.bind(e)),e.emit("error",r)):(t.destroy(r),t.once("error",e.emit.bind(e,"error")),t.once("close",e.emitClose.bind(e)))}function P(e,t,n){if(t){const n=S(t).length;e._socket?e._sender._bufferedBytes+=n:e._bufferedAmount+=n}if(n){n(new Error(`WebSocket is not open: readyState ${e.readyState} (${C[e.readyState]})`))}}function I(e,t){const n=this[y];n._socket.removeListener("data",U),n._socket.resume(),n._closeFrameReceived=!0,n._closeMessage=t,n._closeCode=e,1005===e?n.close():n.close(e,t)}function N(){this[y]._socket.resume()}function M(e){const t=this[y];t._socket.removeListener("data",U),t.readyState=T.CLOSING,t._closeCode=e[g],t.emit("error",e),t._socket.destroy()}function R(){this[y].emitClose()}function F(e){this[y].emit("message",e)}function L(e){const t=this[y];t.pong(e,!t._isServer,_),t.emit("ping",e)}function B(e){this[y].emit("pong",e)}function j(){const e=this[y];this.removeListener("close",j),this.removeListener("end",z),e.readyState=T.CLOSING,e._socket.read(),e._receiver.end(),this.removeListener("data",U),this[y]=void 0,clearTimeout(e._closeTimer),e._receiver._writableState.finished||e._receiver._writableState.errorEmitted?e.emitClose():(e._receiver.on("error",R),e._receiver.on("finish",R))}function U(e){this[y]._receiver.write(e)||this.pause()}function z(){const e=this[y];e.readyState=T.CLOSING,e._receiver.end(),this.end()}function W(){const e=this[y];this.removeListener("error",W),this.on("error",_),e&&(e.readyState=T.CLOSING,this.destroy())}C.forEach((e,t)=>{T[e]=t}),["open","error","close","message"].forEach(e=>{Object.defineProperty(T.prototype,"on"+e,{get(){const t=this.listeners(e);for(let e=0;e{"use strict";function r(e){const t=[...e.caches],n=t.shift();return void 0===n?i():{get:(e,i,o={miss:()=>Promise.resolve()})=>n.get(e,i,o).catch(()=>r({caches:t}).get(e,i,o)),set:(e,i)=>n.set(e,i).catch(()=>r({caches:t}).set(e,i)),delete:e=>n.delete(e).catch(()=>r({caches:t}).delete(e)),clear:()=>n.clear().catch(()=>r({caches:t}).clear())}}function i(){return{get:(e,t,n={miss:()=>Promise.resolve()})=>t().then(e=>Promise.all([e,n.miss(e)])).then(([e])=>e),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}}n.r(t),n.d(t,{createFallbackableCache:()=>r,createNullCache:()=>i})},6712:(e,t,n)=>{"use strict";function r(e={serializable:!0}){let t={};return{get(n,r,i={miss:()=>Promise.resolve()}){const o=JSON.stringify(n);if(o in t)return Promise.resolve(e.serializable?JSON.parse(t[o]):t[o]);const u=r(),a=i&&i.miss||(()=>Promise.resolve());return u.then(e=>a(e)).then(()=>u)},set:(n,r)=>(t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}n.r(t),n.d(t,{createInMemoryCache:()=>r})},2223:(e,t,n)=>{"use strict";n.r(t),n.d(t,{addABTest:()=>a,createAnalyticsClient:()=>u,deleteABTest:()=>l,getABTest:()=>s,getABTests:()=>c,stopABTest:()=>f});var r=n(1757),i=n(7858),o=n(5541);const u=e=>{const t=e.region||"us",n=(0,r.createAuth)(r.AuthMode.WithinHeaders,e.appId,e.apiKey),o=(0,i.createTransporter)({hosts:[{url:`analytics.${t}.algolia.com`}],...e,headers:{...n.headers(),"content-type":"application/json",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}}),u=e.appId;return(0,r.addMethods)({appId:u,transporter:o},e.methods)},a=e=>(t,n)=>e.transporter.write({method:o.N.Post,path:"2/abtests",data:t},n),l=e=>(t,n)=>e.transporter.write({method:o.N.Delete,path:(0,r.encode)("2/abtests/%s",t)},n),s=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("2/abtests/%s",t)},n),c=e=>t=>e.transporter.read({method:o.N.Get,path:"2/abtests"},t),f=e=>(t,n)=>e.transporter.write({method:o.N.Post,path:(0,r.encode)("2/abtests/%s/stop",t)},n)},1757:(e,t,n)=>{"use strict";function r(e,t,n){const r={"x-algolia-api-key":n,"x-algolia-application-id":t};return{headers:()=>e===f.WithinHeaders?r:{},queryParameters:()=>e===f.WithinQueryParameters?r:{}}}function i(e){let t=0;const n=()=>(t++,new Promise(r=>{setTimeout(()=>{r(e(n))},Math.min(100*t,1e3))}));return e(n)}function o(e,t=((e,t)=>Promise.resolve())){return Object.assign(e,{wait:n=>o(e.then(e=>Promise.all([t(e,n),e])).then(e=>e[1]))})}function u(e){let t=e.length-1;for(;t>0;t--){const n=Math.floor(Math.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}return e}function a(e,t){return Object.keys(void 0!==t?t:{}).forEach(n=>{e[n]=t[n](e)}),e}function l(e,...t){let n=0;return e.replace(/%s/g,()=>encodeURIComponent(t[n++]))}n.r(t),n.d(t,{AuthMode:()=>f,addMethods:()=>a,createAuth:()=>r,createRetryablePromise:()=>i,createWaitablePromise:()=>o,destroy:()=>c,encode:()=>l,shuffle:()=>u,version:()=>s});const s="4.2.0",c=e=>()=>e.transporter.requester.destroy(),f={WithinQueryParameters:0,WithinHeaders:1}},103:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createRecommendationClient:()=>u,getPersonalizationStrategy:()=>a,setPersonalizationStrategy:()=>l});var r=n(1757),i=n(7858),o=n(5541);const u=e=>{const t=e.region||"us",n=(0,r.createAuth)(r.AuthMode.WithinHeaders,e.appId,e.apiKey),o=(0,i.createTransporter)({hosts:[{url:`recommendation.${t}.algolia.com`}],...e,headers:{...n.headers(),"content-type":"application/json",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}});return(0,r.addMethods)({appId:e.appId,transporter:o},e.methods)},a=e=>t=>e.transporter.read({method:o.N.Get,path:"1/strategies/personalization"},t),l=e=>(t,n)=>e.transporter.write({method:o.N.Post,path:"1/strategies/personalization",data:t},n)},6586:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ApiKeyACLEnum:()=>Te,BatchActionEnum:()=>xe,ScopeEnum:()=>Ae,StrategyEnum:()=>Oe,SynonymEnum:()=>Pe,addApiKey:()=>d,assignUserID:()=>p,assignUserIDs:()=>h,batch:()=>z,browseObjects:()=>W,browseRules:()=>H,browseSynonyms:()=>V,chunkedBatch:()=>q,clearObjects:()=>G,clearRules:()=>$,clearSynonyms:()=>Y,copyIndex:()=>v,copyRules:()=>m,copySettings:()=>g,copySynonyms:()=>y,createBrowsablePromise:()=>a,createMissingObjectIDError:()=>s,createObjectNotFoundError:()=>c,createSearchClient:()=>l,createValidUntilNotFoundError:()=>f,deleteApiKey:()=>_,deleteBy:()=>K,deleteIndex:()=>X,deleteObject:()=>Q,deleteObjects:()=>J,deleteRule:()=>Z,deleteSynonym:()=>ee,exists:()=>te,findObject:()=>ne,generateSecuredApiKey:()=>b,getApiKey:()=>w,getLogs:()=>E,getObject:()=>re,getObjectPosition:()=>ie,getObjects:()=>oe,getRule:()=>ue,getSecuredApiKeyRemainingValidity:()=>D,getSettings:()=>ae,getSynonym:()=>le,getTask:()=>se,getTopUserIDs:()=>S,getUserID:()=>C,hasPendingMappings:()=>k,initIndex:()=>T,listApiKeys:()=>x,listClusters:()=>A,listIndices:()=>O,listUserIDs:()=>P,moveIndex:()=>I,multipleBatch:()=>N,multipleGetObjects:()=>M,multipleQueries:()=>R,multipleSearchForFacetValues:()=>F,partialUpdateObject:()=>ce,partialUpdateObjects:()=>fe,removeUserID:()=>L,replaceAllObjects:()=>de,replaceAllRules:()=>pe,replaceAllSynonyms:()=>he,restoreApiKey:()=>B,saveObject:()=>ve,saveObjects:()=>me,saveRule:()=>ge,saveRules:()=>ye,saveSynonym:()=>_e,saveSynonyms:()=>be,search:()=>we,searchForFacetValues:()=>Ee,searchRules:()=>De,searchSynonyms:()=>Se,searchUserIDs:()=>j,setSettings:()=>Ce,updateApiKey:()=>U,waitTask:()=>ke});var r=n(1757),i=n(7858),o=n(5541),u=n(6417);function a(e){const t=n=>e.request(n).then(r=>{if(void 0!==e.batch&&e.batch(r.hits),!e.shouldStop(r))return r.cursor?t({cursor:r.cursor}):t({page:(n.page||0)+1})});return t({})}const l=e=>{const t=e.appId,n=(0,r.createAuth)(void 0!==e.authMode?e.authMode:r.AuthMode.WithinHeaders,t,e.apiKey),o=(0,i.createTransporter)({hosts:[{url:t+"-dsn.algolia.net",accept:i.CallEnum.Read},{url:t+".algolia.net",accept:i.CallEnum.Write}].concat((0,r.shuffle)([{url:t+"-1.algolianet.com"},{url:t+"-2.algolianet.com"},{url:t+"-3.algolianet.com"}])),...e,headers:{...n.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}}),u={transporter:o,appId:t,addAlgoliaAgent(e,t){o.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([o.requestsCache.clear(),o.responsesCache.clear()]).then(()=>{})};return(0,r.addMethods)(u,e.methods)};function s(){return{name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}}function c(){return{name:"ObjectNotFoundError",message:"Object not found."}}function f(){return{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."}}const d=e=>(t,n)=>{const{queryParameters:i,...u}=n||{},a={acl:t,...void 0!==i?{queryParameters:i}:{}};return(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:"1/keys",data:a},u),(t,n)=>(0,r.createRetryablePromise)(r=>w(e)(t.key,n).catch(e=>{if(404!==e.status)throw e;return r()})))},p=e=>(t,n,r)=>{const u=(0,i.createMappedRequestOptions)(r);return u.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:o.N.Post,path:"1/clusters/mapping",data:{cluster:n}},u)},h=e=>(t,n,r)=>e.transporter.write({method:o.N.Post,path:"1/clusters/mapping/batch",data:{users:t,cluster:n}},r),v=e=>(t,n,i)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/operation",t),data:{operation:"copy",destination:n}},i),(n,r)=>T(e)(t,{methods:{waitTask:ke}}).waitTask(n.taskID,r)),m=e=>(t,n,r)=>v(e)(t,n,{...r,scope:[Ae.Rules]}),g=e=>(t,n,r)=>v(e)(t,n,{...r,scope:[Ae.Settings]}),y=e=>(t,n,r)=>v(e)(t,n,{...r,scope:[Ae.Synonyms]}),_=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/keys/%s",t)},n),(n,i)=>(0,r.createRetryablePromise)(n=>w(e)(t,i).then(n).catch(e=>{if(404!==e.status)throw e}))),b=()=>(e,t)=>{const n=(0,i.serializeQueryParameters)(t),r=(0,u.createHmac)("sha256",e).update(n).digest("hex");return Buffer.from(r+n).toString("base64")},w=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/keys/%s",t)},n),E=e=>t=>e.transporter.read({method:o.N.Get,path:"1/logs"},t),D=()=>e=>{const t=Buffer.from(e,"base64").toString("ascii").match(/validUntil=(\d+)/);if(null===t)throw{name:"ValidUntilNotFoundError",message:"ValidUntil not found in given secured api key."};return parseInt(t[1],10)-Math.round((new Date).getTime()/1e3)},S=e=>t=>e.transporter.read({method:o.N.Get,path:"1/clusters/mapping/top"},t),C=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/clusters/mapping/%s",t)},n),k=e=>t=>{const{retrieveMappings:n,...r}=t||{};return!0===n&&(r.getClusters=!0),e.transporter.read({method:o.N.Get,path:"1/clusters/mapping/pending"},r)},T=e=>(t,n={})=>{const i={transporter:e.transporter,appId:e.appId,indexName:t};return(0,r.addMethods)(i,n.methods)},x=e=>t=>e.transporter.read({method:o.N.Get,path:"1/keys"},t),A=e=>t=>e.transporter.read({method:o.N.Get,path:"1/clusters"},t),O=e=>t=>e.transporter.read({method:o.N.Get,path:"1/indexes"},t),P=e=>t=>e.transporter.read({method:o.N.Get,path:"1/clusters/mapping"},t),I=e=>(t,n,i)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/operation",t),data:{operation:"move",destination:n}},i),(n,r)=>T(e)(t,{methods:{waitTask:ke}}).waitTask(n.taskID,r)),N=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:"1/indexes/*/batch",data:{requests:t}},n),(t,n)=>Promise.all(Object.keys(t.taskID).map(r=>T(e)(r,{methods:{waitTask:ke}}).waitTask(t.taskID[r],n)))),M=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:"1/indexes/*/objects",data:{requests:t}},n),R=e=>(t,n)=>{const r=t.map(e=>({...e,params:(0,i.serializeQueryParameters)(e.params||{})}));return e.transporter.read({method:o.N.Post,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)},F=e=>(t,n)=>Promise.all(t.map(t=>{const{facetName:r,facetQuery:i,...o}=t.params;return T(e)(t.indexName,{methods:{searchForFacetValues:Ee}}).searchForFacetValues(r,i,{...n,...o})})),L=e=>(t,n)=>{const r=(0,i.createMappedRequestOptions)(n);return r.queryParameters["X-Algolia-User-ID"]=t,e.transporter.write({method:o.N.Delete,path:"1/clusters/mapping"},r)},B=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/keys/%s/restore",t)},n),(n,i)=>(0,r.createRetryablePromise)(n=>w(e)(t,i).catch(e=>{if(404!==e.status)throw e;return n()}))),j=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:"1/clusters/mapping/search",data:{query:t}},n),U=e=>(t,n)=>{const i=Object.assign({},n),{queryParameters:u,...a}=n||{},l=u?{queryParameters:u}:{},s=["acl","indexes","referers","restrictSources","queryParameters","description","maxQueriesPerIPPerHour","maxHitsPerQuery"];return(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Put,path:(0,r.encode)("1/keys/%s",t),data:l},a),(n,o)=>(0,r.createRetryablePromise)(n=>w(e)(t,o).then(e=>(e=>Object.keys(i).filter(e=>-1!==s.indexOf(e)).every(t=>e[t]===i[t]))(e)?Promise.resolve():n())))},z=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/batch",e.indexName),data:{requests:t}},n),(t,n)=>ke(e)(t.taskID,n)),W=e=>t=>a({...t,shouldStop:e=>void 0===e.cursor,request:n=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/browse",e.indexName),data:n},t)}),H=e=>t=>{const n={hitsPerPage:1e3,...t};return a({...n,shouldStop:e=>e.hits.lengthDe(e)("",{...n,...t}).then(e=>({...e,hits:e.hits.map(e=>(delete e._highlightResult,e))}))})},V=e=>t=>{const n={hitsPerPage:1e3,...t};return a({...n,shouldStop:e=>e.hits.lengthSe(e)("",{...n,...t}).then(e=>({...e,hits:e.hits.map(e=>(delete e._highlightResult,e))}))})},q=e=>(t,n,i)=>{const{batchSize:o,...u}=i||{},a={taskIDs:[],objectIDs:[]},l=(r=0)=>{const i=[];let s;for(s=r;s({action:n,body:e})),u).then(e=>(a.objectIDs=a.objectIDs.concat(e.objectIDs),a.taskIDs.push(e.taskID),s++,l(s)))};return(0,r.createWaitablePromise)(l(),(t,n)=>Promise.all(t.taskIDs.map(t=>ke(e)(t,n))))},G=e=>t=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/clear",e.indexName)},t),(t,n)=>ke(e)(t.taskID,n)),$=e=>t=>{const{forwardToReplicas:n,...u}=t||{},a=(0,i.createMappedRequestOptions)(u);return n&&(a.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/rules/clear",e.indexName)},a),(t,n)=>ke(e)(t.taskID,n))},Y=e=>t=>{const{forwardToReplicas:n,...u}=t||{},a=(0,i.createMappedRequestOptions)(u);return n&&(a.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/synonyms/clear",e.indexName)},a),(t,n)=>ke(e)(t.taskID,n))},K=e=>(t,n)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/deleteByQuery",e.indexName),data:t},n),(t,n)=>ke(e)(t.taskID,n)),X=e=>t=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/indexes/%s",e.indexName)},t),(t,n)=>ke(e)(t.taskID,n)),Q=e=>(t,n)=>(0,r.createWaitablePromise)(J(e)([t],n).then(e=>({taskID:e.taskIDs[0]})),(t,n)=>ke(e)(t.taskID,n)),J=e=>(t,n)=>{const r=t.map(e=>({objectID:e}));return q(e)(r,xe.DeleteObject,n)},Z=e=>(t,n)=>{const{forwardToReplicas:u,...a}=n||{},l=(0,i.createMappedRequestOptions)(a);return u&&(l.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/indexes/%s/rules/%s",e.indexName,t)},l),(t,n)=>ke(e)(t.taskID,n))},ee=e=>(t,n)=>{const{forwardToReplicas:u,...a}=n||{},l=(0,i.createMappedRequestOptions)(a);return u&&(l.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Delete,path:(0,r.encode)("1/indexes/%s/synonyms/%s",e.indexName,t)},l),(t,n)=>ke(e)(t.taskID,n))},te=e=>t=>ae(e)(t).then(()=>!0).catch(e=>{if(404!==e.status)throw e;return!1}),ne=e=>(t,n)=>{const{query:r,paginate:i,...o}=n||{};let u=0;const a=()=>we(e)(r||"",{...o,page:u}).then(e=>{for(const[n,r]of Object.entries(e.hits))if(t(r))return{object:r,position:parseInt(n,10),page:u};if(u++,!1===i||u>=e.nbPages)throw{name:"ObjectNotFoundError",message:"Object not found."};return a()});return a()},re=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/%s",e.indexName,t)},n),ie=()=>(e,t)=>{for(const[n,r]of Object.entries(e.hits))if(r.objectID===t)return parseInt(n,10);return-1},oe=e=>(t,n)=>{const{attributesToRetrieve:r,...i}=n||{},u=t.map(t=>({indexName:e.indexName,objectID:t,...r?{attributesToRetrieve:r}:{}}));return e.transporter.read({method:o.N.Post,path:"1/indexes/*/objects",data:{requests:u}},i)},ue=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/rules/%s",e.indexName,t)},n),ae=e=>t=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/settings",e.indexName),data:{getVersion:2}},t),le=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/synonyms/%s",e.indexName,t)},n),se=e=>(t,n)=>e.transporter.read({method:o.N.Get,path:(0,r.encode)("1/indexes/%s/task/%s",e.indexName,t.toString())},n),ce=e=>(t,n)=>(0,r.createWaitablePromise)(fe(e)([t],n).then(e=>({objectID:e.objectIDs[0],taskID:e.taskIDs[0]})),(t,n)=>ke(e)(t.taskID,n)),fe=e=>(t,n)=>{const{createIfNotExists:r,...i}=n||{},o=r?xe.PartialUpdateObject:xe.PartialUpdateObjectNoCreate;return q(e)(t,o,i)},de=e=>(t,n)=>{const{safe:i,autoGenerateObjectIDIfNotExist:u,batchSize:a,...l}=n||{},s=(t,n,i,u)=>(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/operation",t),data:{operation:i,destination:n}},u),(t,n)=>ke(e)(t.taskID,n)),c=Math.random().toString(36).substring(7),f=`${e.indexName}_tmp_${c}`,d=me({appId:e.appId,transporter:e.transporter,indexName:f});let p=[];const h=s(e.indexName,f,"copy",{...l,scope:["settings","synonyms","rules"]});p.push(h);const v=(i?h.wait(l):h).then(()=>{const e=d(t,{...l,autoGenerateObjectIDIfNotExist:u,batchSize:a});return p.push(e),i?e.wait(l):e}).then(()=>{const t=s(f,e.indexName,"move",l);return p.push(t),i?t.wait(l):t}).then(()=>Promise.all(p)).then(([e,t,n])=>({objectIDs:t.objectIDs,taskIDs:[e.taskID,...t.taskIDs,n.taskID]}));return(0,r.createWaitablePromise)(v,(e,t)=>Promise.all(p.map(e=>e.wait(t))))},pe=e=>(t,n)=>ye(e)(t,{...n,clearExistingRules:!0}),he=e=>(t,n)=>be(e)(t,{...n,replaceExistingSynonyms:!0}),ve=e=>(t,n)=>(0,r.createWaitablePromise)(me(e)([t],n).then(e=>({objectID:e.objectIDs[0],taskID:e.taskIDs[0]})),(t,n)=>ke(e)(t.taskID,n)),me=e=>(t,n)=>{const{autoGenerateObjectIDIfNotExist:i,...o}=n||{},u=i?xe.AddObject:xe.UpdateObject;if(u===xe.UpdateObject)for(const e of t)if(void 0===e.objectID)return(0,r.createWaitablePromise)(Promise.reject({name:"MissingObjectIDError",message:"All objects must have an unique objectID (like a primary key) to be valid. Algolia is also able to generate objectIDs automatically but *it's not recommended*. To do it, use the `{'autoGenerateObjectIDIfNotExist': true}` option."}));return q(e)(t,u,o)},ge=e=>(t,n)=>ye(e)([t],n),ye=e=>(t,n)=>{const{forwardToReplicas:u,clearExistingRules:a,...l}=n||{},s=(0,i.createMappedRequestOptions)(l);return u&&(s.queryParameters.forwardToReplicas=1),a&&(s.queryParameters.clearExistingRules=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/rules/batch",e.indexName),data:t},s),(t,n)=>ke(e)(t.taskID,n))},_e=e=>(t,n)=>be(e)([t],n),be=e=>(t,n)=>{const{forwardToReplicas:u,replaceExistingSynonyms:a,...l}=n||{},s=(0,i.createMappedRequestOptions)(l);return u&&(s.queryParameters.forwardToReplicas=1),a&&(s.queryParameters.replaceExistingSynonyms=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/synonyms/batch",e.indexName),data:t},s),(t,n)=>ke(e)(t.taskID,n))},we=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},n),Ee=e=>(t,n,i)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:n},cacheable:!0},i),De=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/rules/search",e.indexName),data:{query:t}},n),Se=e=>(t,n)=>e.transporter.read({method:o.N.Post,path:(0,r.encode)("1/indexes/%s/synonyms/search",e.indexName),data:{query:t}},n),Ce=e=>(t,n)=>{const{forwardToReplicas:u,...a}=n||{},l=(0,i.createMappedRequestOptions)(a);return u&&(l.queryParameters.forwardToReplicas=1),(0,r.createWaitablePromise)(e.transporter.write({method:o.N.Put,path:(0,r.encode)("1/indexes/%s/settings",e.indexName),data:t},l),(t,n)=>ke(e)(t.taskID,n))},ke=e=>(t,n)=>(0,r.createRetryablePromise)(r=>se(e)(t,n).then(e=>"published"!==e.status?r():void 0)),Te={AddObject:"addObject",Analytics:"analytics",Browser:"browse",DeleteIndex:"deleteIndex",DeleteObject:"deleteObject",EditSettings:"editSettings",ListIndexes:"listIndexes",Logs:"logs",Recommendation:"recommendation",Search:"search",SeeUnretrievableAttributes:"seeUnretrievableAttributes",Settings:"settings",Usage:"usage"},xe={AddObject:"addObject",UpdateObject:"updateObject",PartialUpdateObject:"partialUpdateObject",PartialUpdateObjectNoCreate:"partialUpdateObjectNoCreate",DeleteObject:"deleteObject"},Ae={Settings:"settings",Synonyms:"synonyms",Rules:"rules"},Oe={None:"none",StopIfEnoughMatches:"stopIfEnoughMatches"},Pe={Synonym:"synonym",OneWaySynonym:"oneWaySynonym",AltCorrection1:"altCorrection1",AltCorrection2:"altCorrection2",Placeholder:"placeholder"}},8045:(e,t,n)=>{"use strict";function r(){return{debug:(e,t)=>Promise.resolve(),info:(e,t)=>Promise.resolve(),error:(e,t)=>Promise.resolve()}}n.r(t),n.d(t,{LogLevelEnum:()=>i,createNullLogger:()=>r});const i={Debug:1,Info:2,Error:3}},5541:(e,t,n)=>{"use strict";n.d(t,{N:()=>r});const r={Delete:"DELETE",Get:"GET",Post:"POST",Put:"PUT"}},9178:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createNodeHttpRequester:()=>u});var r=n(8605),i=n(7211),o=n(8835);function u(){const e={keepAlive:!0},t=new r.Agent(e),n=new i.Agent(e);return{send:e=>new Promise(u=>{const a=(0,o.parse)(e.url),l=null===a.query?a.pathname:`${a.pathname}?${a.query}`,s={agent:"https:"===a.protocol?n:t,hostname:a.hostname,path:l,method:e.method,headers:e.headers,...void 0!==a.port?{port:a.port||""}:{}},c=("https:"===a.protocol?i:r).request(s,e=>{let t="";e.on("data",e=>t+=e),e.on("end",()=>{clearTimeout(d),clearTimeout(p),u({status:e.statusCode||0,content:t,isTimedOut:!1})})}),f=(e,t)=>setTimeout(()=>{c.abort(),u({status:0,content:t,isTimedOut:!0})},1e3*e),d=f(e.connectTimeout,"Connection timeout");let p;c.on("error",e=>{clearTimeout(d),clearTimeout(p),u({status:0,content:e.message,isTimedOut:!1})}),c.once("response",()=>{clearTimeout(d),p=f(e.responseTimeout,"Socket timeout")}),void 0!==e.data&&c.write(e.data),c.end()}),destroy:()=>(t.destroy(),n.destroy(),Promise.resolve())}}},7858:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CallEnum:()=>o,HostStatusEnum:()=>u,createApiError:()=>E,createDeserializationError:()=>D,createMappedRequestOptions:()=>i,createRetryError:()=>S,createStatefulHost:()=>a,createStatelessHost:()=>c,createTransporter:()=>d,createUserAgent:()=>p,deserializeFailure:()=>v,deserializeSuccess:()=>h,isStatefulHostTimeouted:()=>s,isStatefulHostUp:()=>l,serializeData:()=>y,serializeHeaders:()=>_,serializeQueryParameters:()=>g,serializeUrl:()=>m,stackFrameWithoutCredentials:()=>w,stackTraceWithoutCredentials:()=>b});var r=n(5541);function i(e,t){const n=e||{},r=n.data||{};return Object.keys(n).forEach(e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(r[e]=n[e])}),{data:Object.entries(r).length>0?r:void 0,timeout:n.timeout||t,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}const o={Read:1,Write:2,Any:3},u={Up:1,Down:2,Timeouted:3};function a(e,t=u.Up){return{...e,status:t,lastUpdate:Date.now()}}function l(e){return e.status===u.Up||Date.now()-e.lastUpdate>12e4}function s(e){return e.status===u.Timeouted&&Date.now()-e.lastUpdate<=12e4}function c(e){return{protocol:e.protocol||"https",url:e.url,accept:e.accept||o.Any}}function f(e,t,n,i){const o=[],f=y(n,i),d=_(e,i),p=n.method,g=n.method!==r.N.Get?{}:{...n.data,...i.data},E={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...g,...i.queryParameters};let D=0;const C=(t,r)=>{const l=t.pop();if(void 0===l)throw S(b(o));const s={data:f,headers:d,method:p,url:m(l,n.path,E),connectTimeout:r(D,e.timeouts.connect),responseTimeout:r(D,i.timeout)},c=e=>{const n={request:s,response:e,host:l,triesLeft:t.length};return o.push(n),n},g={onSucess:e=>h(e),onRetry(n){const i=c(n);return n.isTimedOut&&D++,Promise.all([e.logger.info("Retryable failure",w(i)),e.hostsCache.set(l,a(l,n.isTimedOut?u.Timeouted:u.Down))]).then(()=>C(t,r))},onFail(e){throw c(e),v(e,b(o))}};return e.requester.send(s).then(e=>((e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&0==~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSucess(e):t.onFail(e))(e,g))};return function(e,t){return Promise.all(t.map(t=>e.get(t,()=>Promise.resolve(a(t))))).then(e=>{const n=e.filter(e=>l(e)),r=e.filter(e=>s(e)),i=[...n,...r];return{getTimeout:(e,t)=>(0===r.length&&0===e?1:r.length+3+e)*t,statelessHosts:i.length>0?i.map(e=>c(e)):t}})}(e.hostsCache,t).then(e=>C([...e.statelessHosts].reverse(),e.getTimeout))}function d(e){const{hostsCache:t,logger:n,requester:r,requestsCache:u,responsesCache:a,timeouts:l,userAgent:s,hosts:d,queryParameters:p,headers:h}=e,v={hostsCache:t,logger:n,requester:r,requestsCache:u,responsesCache:a,timeouts:l,userAgent:s,headers:h,queryParameters:p,hosts:d.map(e=>c(e)),read(e,t){const n=i(t,v.timeouts.read),r=()=>f(v,v.hosts.filter(e=>0!=(e.accept&o.Read)),e,n);if(!0!==(void 0!==n.cacheable?n.cacheable:e.cacheable))return r();const u={request:e,mappedRequestOptions:n,transporter:{queryParameters:v.queryParameters,headers:v.headers}};return v.responsesCache.get(u,()=>v.requestsCache.get(u,()=>v.requestsCache.set(u,r()).then(e=>Promise.all([v.requestsCache.delete(u),e]),e=>Promise.all([v.requestsCache.delete(u),Promise.reject(e)])).then(([e,t])=>t)),{miss:e=>v.responsesCache.set(u,e)})},write:(e,t)=>f(v,v.hosts.filter(e=>0!=(e.accept&o.Write)),e,i(t,v.timeouts.write))};return v}function p(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const n=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(n)&&(t.value=`${t.value}${n}`),t}};return t}function h(e){try{return JSON.parse(e.content)}catch(t){throw D(t.message,e)}}function v({content:e,status:t},n){let r=e;try{r=JSON.parse(e).message}catch(e){}return E(r,t,n)}function m(e,t,n){const r=g(n);let i=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return r.length&&(i+="?"+r),i}function g(e){return Object.keys(e).map(t=>{return function(e,...t){let n=0;return e.replace(/%s/g,()=>encodeURIComponent(t[n++]))}("%s=%s",t,(n=e[t],"[object Object]"===Object.prototype.toString.call(n)||"[object Array]"===Object.prototype.toString.call(n)?JSON.stringify(e[t]):e[t]));var n}).join("&")}function y(e,t){if(e.method===r.N.Get||void 0===e.data&&void 0===t.data)return;const n=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(n)}function _(e,t){const n={...e.headers,...t.headers},r={};return Object.keys(n).forEach(e=>{const t=n[e];r[e.toLowerCase()]=t}),r}function b(e){return e.map(e=>w(e))}function w(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function E(e,t,n){return{name:"ApiError",message:e,status:t,transporterStackTrace:n}}function D(e,t){return{name:"DeserializationError",message:e,response:t}}function S(e){return{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:e}}},8774:(e,t,n)=>{"use strict";var r=n(469),i=n(6712),o=n(2223),u=n(1757),a=n(103),l=n(6586),s=n(8045),c=n(9178),f=n(7858);function d(e,t,n){const d={appId:e,apiKey:t,timeouts:{connect:2,read:5,write:30},requester:c.createNodeHttpRequester(),logger:s.createNullLogger(),responsesCache:r.createNullCache(),requestsCache:r.createNullCache(),hostsCache:i.createInMemoryCache(),userAgent:f.createUserAgent(u.version).add({segment:"Node.js",version:process.versions.node})};return l.createSearchClient({...d,...n,methods:{search:l.multipleQueries,searchForFacetValues:l.multipleSearchForFacetValues,multipleBatch:l.multipleBatch,multipleGetObjects:l.multipleGetObjects,multipleQueries:l.multipleQueries,copyIndex:l.copyIndex,copySettings:l.copySettings,copyRules:l.copyRules,copySynonyms:l.copySynonyms,moveIndex:l.moveIndex,listIndices:l.listIndices,getLogs:l.getLogs,listClusters:l.listClusters,multipleSearchForFacetValues:l.multipleSearchForFacetValues,getApiKey:l.getApiKey,addApiKey:l.addApiKey,listApiKeys:l.listApiKeys,updateApiKey:l.updateApiKey,deleteApiKey:l.deleteApiKey,restoreApiKey:l.restoreApiKey,assignUserID:l.assignUserID,assignUserIDs:l.assignUserIDs,getUserID:l.getUserID,searchUserIDs:l.searchUserIDs,listUserIDs:l.listUserIDs,getTopUserIDs:l.getTopUserIDs,removeUserID:l.removeUserID,hasPendingMappings:l.hasPendingMappings,generateSecuredApiKey:l.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:l.getSecuredApiKeyRemainingValidity,destroy:u.destroy,initIndex:e=>t=>l.initIndex(e)(t,{methods:{batch:l.batch,delete:l.deleteIndex,getObject:l.getObject,getObjects:l.getObjects,saveObject:l.saveObject,saveObjects:l.saveObjects,search:l.search,searchForFacetValues:l.searchForFacetValues,waitTask:l.waitTask,setSettings:l.setSettings,getSettings:l.getSettings,partialUpdateObject:l.partialUpdateObject,partialUpdateObjects:l.partialUpdateObjects,deleteObject:l.deleteObject,deleteObjects:l.deleteObjects,deleteBy:l.deleteBy,clearObjects:l.clearObjects,browseObjects:l.browseObjects,getObjectPosition:l.getObjectPosition,findObject:l.findObject,exists:l.exists,saveSynonym:l.saveSynonym,saveSynonyms:l.saveSynonyms,getSynonym:l.getSynonym,searchSynonyms:l.searchSynonyms,browseSynonyms:l.browseSynonyms,deleteSynonym:l.deleteSynonym,clearSynonyms:l.clearSynonyms,replaceAllObjects:l.replaceAllObjects,replaceAllSynonyms:l.replaceAllSynonyms,searchRules:l.searchRules,getRule:l.getRule,deleteRule:l.deleteRule,saveRule:l.saveRule,saveRules:l.saveRules,replaceAllRules:l.replaceAllRules,browseRules:l.browseRules,clearRules:l.clearRules}}),initAnalytics:()=>e=>o.createAnalyticsClient({...d,...e,methods:{addABTest:o.addABTest,getABTest:o.getABTest,getABTests:o.getABTests,stopABTest:o.stopABTest,deleteABTest:o.deleteABTest}}),initRecommendation:()=>e=>a.createRecommendationClient({...d,...e,methods:{getPersonalizationStrategy:a.getPersonalizationStrategy,setPersonalizationStrategy:a.setPersonalizationStrategy}})}})}d.version=u.version,e.exports=d},4410:(e,t,n)=>{const r=n(8774);e.exports=r,e.exports.default=r},7589:e=>{"use strict";const t=e.exports;e.exports.default=t;const n="[",r="]",i="",o=";",u="Apple_Terminal"===process.env.TERM_PROGRAM;t.cursorTo=(e,t)=>{if("number"!=typeof e)throw new TypeError("The `x` argument is required");return"number"!=typeof t?n+(e+1)+"G":n+(t+1)+";"+(e+1)+"H"},t.cursorMove=(e,t)=>{if("number"!=typeof e)throw new TypeError("The `x` argument is required");let r="";return e<0?r+=n+-e+"D":e>0&&(r+=n+e+"C"),t<0?r+=n+-t+"A":t>0&&(r+=n+t+"B"),r},t.cursorUp=(e=1)=>n+e+"A",t.cursorDown=(e=1)=>n+e+"B",t.cursorForward=(e=1)=>n+e+"C",t.cursorBackward=(e=1)=>n+e+"D",t.cursorLeft="",t.cursorSavePosition=u?"7":"",t.cursorRestorePosition=u?"8":"",t.cursorGetPosition="",t.cursorNextLine="",t.cursorPrevLine="",t.cursorHide="[?25l",t.cursorShow="[?25h",t.eraseLines=e=>{let n="";for(let r=0;r[r,"8",o,o,t,i,e,r,"8",o,o,i].join(""),t.image=(e,t={})=>{let n=r+"1337;File=inline=1";return t.width&&(n+=";width="+t.width),t.height&&(n+=";height="+t.height),!1===t.preserveAspectRatio&&(n+=";preserveAspectRatio=0"),n+":"+e.toString("base64")+i},t.iTerm={setCwd:(e=process.cwd())=>`${r}50;CurrentDir=${e}${i}`,annotation:(e,t={})=>{let n=r+"1337;";const o=void 0!==t.x,u=void 0!==t.y;if((o||u)&&(!o||!u||void 0===t.length))throw new Error("`x`, `y` and `length` must be defined when `x` or `y` is defined");return e=e.replace(/\|/g,""),n+=t.isHidden?"AddHiddenAnnotation=":"AddAnnotation=",t.length>0?n+=(o?[e,t.length,t.x,t.y]:[t.length,e]).join("|"):n+=e,n+i}}},5378:e=>{"use strict";e.exports=e=>{e=Object.assign({onlyFirst:!1},e);const t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e.onlyFirst?void 0:"g")}},1337:e=>{"use strict";e.exports=({onlyFirst:e=!1}={})=>{const t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}},8483:(e,t,n)=>{"use strict";e=n.nmd(e);const r=(e,t)=>(...n)=>`[${e(...n)+t}m`,i=(e,t)=>(...n)=>{const r=e(...n);return`[${38+t};5;${r}m`},o=(e,t)=>(...n)=>{const r=e(...n);return`[${38+t};2;${r[0]};${r[1]};${r[2]}m`},u=e=>e,a=(e,t,n)=>[e,t,n],l=(e,t,n)=>{Object.defineProperty(e,t,{get:()=>{const r=n();return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0}),r},enumerable:!0,configurable:!0})};let s;const c=(e,t,r,i)=>{void 0===s&&(s=n(2744));const o=i?10:0,u={};for(const[n,i]of Object.entries(s)){const a="ansi16"===n?"ansi":n;n===t?u[a]=e(r,o):"object"==typeof i&&(u[a]=e(i[t],o))}return u};Object.defineProperty(e,"exports",{enumerable:!0,get:function(){const e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(const[n,r]of Object.entries(t)){for(const[n,i]of Object.entries(r))t[n]={open:`[${i[0]}m`,close:`[${i[1]}m`},r[n]=t[n],e.set(i[0],i[1]);Object.defineProperty(t,n,{value:r,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="",t.bgColor.close="",l(t.color,"ansi",()=>c(r,"ansi16",u,!1)),l(t.color,"ansi256",()=>c(i,"ansi256",u,!1)),l(t.color,"ansi16m",()=>c(o,"rgb",a,!1)),l(t.bgColor,"ansi",()=>c(r,"ansi16",u,!0)),l(t.bgColor,"ansi256",()=>c(i,"ansi256",u,!0)),l(t.bgColor,"ansi16m",()=>c(o,"rgb",a,!0)),t}})},5640:e=>{"use strict";e.exports=e=>e&&e.exact?new RegExp("^[\ud800-\udbff][\udc00-\udfff]$"):new RegExp("[\ud800-\udbff][\udc00-\udfff]","g")},409:e=>{"use strict";e.exports=e=>e&&e.exact?new RegExp("^[\ud800-\udbff][\udc00-\udfff]$"):new RegExp("[\ud800-\udbff][\udc00-\udfff]","g")},2633:e=>{"use strict";e.exports=(e,{include:t,exclude:n}={})=>{const r=e=>{const r=t=>"string"==typeof t?e===t:t.test(e);return t?t.some(r):!n||!n.some(r)};for(const[t,n]of(e=>{const t=new Set;do{for(const n of Reflect.ownKeys(e))t.add([e,n])}while((e=Reflect.getPrototypeOf(e))&&e!==Object.prototype);return t})(e.constructor.prototype)){if("constructor"===n||!r(n))continue;const i=Reflect.getOwnPropertyDescriptor(t,n);i&&"function"==typeof i.value&&(e[n]=e[n].bind(e))}return e}},5882:(e,t,n)=>{"use strict";const r=n(8483),{stdout:i,stderr:o}=n(9428),{stringReplaceAll:u,stringEncaseCRLFWithFirstIndex:a}=n(3327),l=["ansi","ansi","ansi256","ansi16m"],s=Object.create(null);class c{constructor(e){return f(e)}}const f=e=>{const t={};return((e,t={})=>{if(t.level>3||t.level<0)throw new Error("The `level` option should be an integer from 0 to 3");const n=i?i.level:0;e.level=void 0===t.level?n:t.level})(t,e),t.template=(...e)=>_(t.template,...e),Object.setPrototypeOf(t,d.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=c,t.template};function d(e){return f(e)}for(const[e,t]of Object.entries(r))s[e]={get(){const n=m(this,v(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:n}),n}};s.visible={get(){const e=m(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};const p=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(const e of p)s[e]={get(){const{level:t}=this;return function(...n){const i=v(r.color[l[t]][e](...n),r.color.close,this._styler);return m(this,i,this._isEmpty)}}};for(const e of p){s["bg"+e[0].toUpperCase()+e.slice(1)]={get(){const{level:t}=this;return function(...n){const i=v(r.bgColor[l[t]][e](...n),r.bgColor.close,this._styler);return m(this,i,this._isEmpty)}}}}const h=Object.defineProperties(()=>{},{...s,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),v=(e,t,n)=>{let r,i;return void 0===n?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},m=(e,t,n)=>{const r=(...e)=>g(r,1===e.length?""+e[0]:e.join(" "));return r.__proto__=h,r._generator=e,r._styler=t,r._isEmpty=n,r},g=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let n=e._styler;if(void 0===n)return t;const{openAll:r,closeAll:i}=n;if(-1!==t.indexOf(""))for(;void 0!==n;)t=u(t,n.close,n.open),n=n.parent;const o=t.indexOf("\n");return-1!==o&&(t=a(t,i,r,o)),r+t+i};let y;const _=(e,...t)=>{const[r]=t;if(!Array.isArray(r))return t.join(" ");const i=t.slice(1),o=[r.raw[0]];for(let e=1;e{"use strict";const t=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,n=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,r=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,i=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,o=new Map([["n","\n"],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a",""]]);function u(e){const t="u"===e[0],n="{"===e[1];return t&&!n&&5===e.length||"x"===e[0]&&3===e.length?String.fromCharCode(parseInt(e.slice(1),16)):t&&n?String.fromCodePoint(parseInt(e.slice(2,-1),16)):o.get(e)||e}function a(e,t){const n=[],o=t.trim().split(/\s*,\s*/g);let a;for(const t of o){const o=Number(t);if(Number.isNaN(o)){if(!(a=t.match(r)))throw new Error(`Invalid Chalk template style argument: ${t} (in style '${e}')`);n.push(a[2].replace(i,(e,t,n)=>t?u(t):n))}else n.push(o)}return n}function l(e){n.lastIndex=0;const t=[];let r;for(;null!==(r=n.exec(e));){const e=r[1];if(r[2]){const n=a(e,r[2]);t.push([e].concat(n))}else t.push([e])}return t}function s(e,t){const n={};for(const e of t)for(const t of e.styles)n[t[0]]=e.inverse?null:t.slice(1);let r=e;for(const[e,t]of Object.entries(n))if(Array.isArray(t)){if(!(e in r))throw new Error("Unknown Chalk style: "+e);r=t.length>0?r[e](...t):r[e]}return r}e.exports=(e,n)=>{const r=[],i=[];let o=[];if(n.replace(t,(t,n,a,c,f,d)=>{if(n)o.push(u(n));else if(c){const t=o.join("");o=[],i.push(0===r.length?t:s(e,r)(t)),r.push({inverse:a,styles:l(c)})}else if(f){if(0===r.length)throw new Error("Found extraneous } in Chalk template literal");i.push(s(e,r)(o.join(""))),o=[],r.pop()}else o.push(d)}),i.push(o.join("")),r.length>0){const e=`Chalk template literal is missing ${r.length} closing bracket${1===r.length?"":"s"} (\`}\`)`;throw new Error(e)}return i.join("")}},3327:e=>{"use strict";e.exports={stringReplaceAll:(e,t,n)=>{let r=e.indexOf(t);if(-1===r)return e;const i=t.length;let o=0,u="";do{u+=e.substr(o,r-o)+t+n,o=r+i,r=e.indexOf(t,o)}while(-1!==r);return u+=e.substr(o),u},stringEncaseCRLFWithFirstIndex:(e,t,n,r)=>{let i=0,o="";do{const u="\r"===e[r-1];o+=e.substr(i,(u?r-1:r)-i)+t+(u?"\r\n":"\n")+n,i=r+1,r=e.indexOf("\n",i)}while(-1!==r);return o+=e.substr(i),o}}},1525:(e,t,n)=>{"use strict";const r=n(8483),{stdout:i,stderr:o}=n(9428),{stringReplaceAll:u,stringEncaseCRLFWithFirstIndex:a}=n(6539),{isArray:l}=Array,s=["ansi","ansi","ansi256","ansi16m"],c=Object.create(null);class f{constructor(e){return d(e)}}const d=e=>{const t={};return((e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");const n=i?i.level:0;e.level=void 0===t.level?n:t.level})(t,e),t.template=(...e)=>b(t.template,...e),Object.setPrototypeOf(t,p.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=f,t.template};function p(e){return d(e)}for(const[e,t]of Object.entries(r))c[e]={get(){const n=g(this,m(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:n}),n}};c.visible={get(){const e=g(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};const h=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(const e of h)c[e]={get(){const{level:t}=this;return function(...n){const i=m(r.color[s[t]][e](...n),r.color.close,this._styler);return g(this,i,this._isEmpty)}}};for(const e of h){c["bg"+e[0].toUpperCase()+e.slice(1)]={get(){const{level:t}=this;return function(...n){const i=m(r.bgColor[s[t]][e](...n),r.bgColor.close,this._styler);return g(this,i,this._isEmpty)}}}}const v=Object.defineProperties(()=>{},{...c,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),m=(e,t,n)=>{let r,i;return void 0===n?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},g=(e,t,n)=>{const r=(...e)=>l(e[0])&&l(e[0].raw)?y(r,b(r,...e)):y(r,1===e.length?""+e[0]:e.join(" "));return Object.setPrototypeOf(r,v),r._generator=e,r._styler=t,r._isEmpty=n,r},y=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let n=e._styler;if(void 0===n)return t;const{openAll:r,closeAll:i}=n;if(-1!==t.indexOf(""))for(;void 0!==n;)t=u(t,n.close,n.open),n=n.parent;const o=t.indexOf("\n");return-1!==o&&(t=a(t,i,r,o)),r+t+i};let _;const b=(e,...t)=>{const[r]=t;if(!l(r)||!l(r.raw))return t.join(" ");const i=t.slice(1),o=[r.raw[0]];for(let e=1;e{"use strict";const t=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,n=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,r=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,i=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,o=new Map([["n","\n"],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a",""]]);function u(e){const t="u"===e[0],n="{"===e[1];return t&&!n&&5===e.length||"x"===e[0]&&3===e.length?String.fromCharCode(parseInt(e.slice(1),16)):t&&n?String.fromCodePoint(parseInt(e.slice(2,-1),16)):o.get(e)||e}function a(e,t){const n=[],o=t.trim().split(/\s*,\s*/g);let a;for(const t of o){const o=Number(t);if(Number.isNaN(o)){if(!(a=t.match(r)))throw new Error(`Invalid Chalk template style argument: ${t} (in style '${e}')`);n.push(a[2].replace(i,(e,t,n)=>t?u(t):n))}else n.push(o)}return n}function l(e){n.lastIndex=0;const t=[];let r;for(;null!==(r=n.exec(e));){const e=r[1];if(r[2]){const n=a(e,r[2]);t.push([e].concat(n))}else t.push([e])}return t}function s(e,t){const n={};for(const e of t)for(const t of e.styles)n[t[0]]=e.inverse?null:t.slice(1);let r=e;for(const[e,t]of Object.entries(n))if(Array.isArray(t)){if(!(e in r))throw new Error("Unknown Chalk style: "+e);r=t.length>0?r[e](...t):r[e]}return r}e.exports=(e,n)=>{const r=[],i=[];let o=[];if(n.replace(t,(t,n,a,c,f,d)=>{if(n)o.push(u(n));else if(c){const t=o.join("");o=[],i.push(0===r.length?t:s(e,r)(t)),r.push({inverse:a,styles:l(c)})}else if(f){if(0===r.length)throw new Error("Found extraneous } in Chalk template literal");i.push(s(e,r)(o.join(""))),o=[],r.pop()}else o.push(d)}),i.push(o.join("")),r.length>0){const e=`Chalk template literal is missing ${r.length} closing bracket${1===r.length?"":"s"} (\`}\`)`;throw new Error(e)}return i.join("")}},6539:e=>{"use strict";e.exports={stringReplaceAll:(e,t,n)=>{let r=e.indexOf(t);if(-1===r)return e;const i=t.length;let o=0,u="";do{u+=e.substr(o,r-o)+t+n,o=r+i,r=e.indexOf(t,o)}while(-1!==r);return u+=e.substr(o),u},stringEncaseCRLFWithFirstIndex:(e,t,n,r)=>{let i=0,o="";do{const u="\r"===e[r-1];o+=e.substr(i,(u?r-1:r)-i)+t+(u?"\r\n":"\n")+n,i=r+1,r=e.indexOf("\n",i)}while(-1!==r);return o+=e.substr(i),o}}},5864:(e,t,n)=>{"use strict";var r=n(5832),i=process.env;function o(e){return"string"==typeof e?!!i[e]:Object.keys(e).every((function(t){return i[t]===e[t]}))}Object.defineProperty(t,"_vendors",{value:r.map((function(e){return e.constant}))}),t.name=null,t.isPR=null,r.forEach((function(e){var n=(Array.isArray(e.env)?e.env:[e.env]).every((function(e){return o(e)}));if(t[e.constant]=n,n)switch(t.name=e.name,typeof e.pr){case"string":t.isPR=!!i[e.pr];break;case"object":"env"in e.pr?t.isPR=e.pr.env in i&&i[e.pr.env]!==e.pr.ne:"any"in e.pr?t.isPR=e.pr.any.some((function(e){return!!i[e]})):t.isPR=o(e.pr);break;default:t.isPR=null}})),t.isCI=!!(i.CI||i.CONTINUOUS_INTEGRATION||i.BUILD_NUMBER||i.RUN_ID||t.name)},5832:e=>{"use strict";e.exports=JSON.parse('[{"name":"AppVeyor","constant":"APPVEYOR","env":"APPVEYOR","pr":"APPVEYOR_PULL_REQUEST_NUMBER"},{"name":"Azure Pipelines","constant":"AZURE_PIPELINES","env":"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI","pr":"SYSTEM_PULLREQUEST_PULLREQUESTID"},{"name":"Bamboo","constant":"BAMBOO","env":"bamboo_planKey"},{"name":"Bitbucket Pipelines","constant":"BITBUCKET","env":"BITBUCKET_COMMIT","pr":"BITBUCKET_PR_ID"},{"name":"Bitrise","constant":"BITRISE","env":"BITRISE_IO","pr":"BITRISE_PULL_REQUEST"},{"name":"Buddy","constant":"BUDDY","env":"BUDDY_WORKSPACE_ID","pr":"BUDDY_EXECUTION_PULL_REQUEST_ID"},{"name":"Buildkite","constant":"BUILDKITE","env":"BUILDKITE","pr":{"env":"BUILDKITE_PULL_REQUEST","ne":"false"}},{"name":"CircleCI","constant":"CIRCLE","env":"CIRCLECI","pr":"CIRCLE_PULL_REQUEST"},{"name":"Cirrus CI","constant":"CIRRUS","env":"CIRRUS_CI","pr":"CIRRUS_PR"},{"name":"AWS CodeBuild","constant":"CODEBUILD","env":"CODEBUILD_BUILD_ARN"},{"name":"Codeship","constant":"CODESHIP","env":{"CI_NAME":"codeship"}},{"name":"Drone","constant":"DRONE","env":"DRONE","pr":{"DRONE_BUILD_EVENT":"pull_request"}},{"name":"dsari","constant":"DSARI","env":"DSARI"},{"name":"GitLab CI","constant":"GITLAB","env":"GITLAB_CI"},{"name":"GoCD","constant":"GOCD","env":"GO_PIPELINE_LABEL"},{"name":"Hudson","constant":"HUDSON","env":"HUDSON_URL"},{"name":"Jenkins","constant":"JENKINS","env":["JENKINS_URL","BUILD_ID"],"pr":{"any":["ghprbPullId","CHANGE_ID"]}},{"name":"Magnum CI","constant":"MAGNUM","env":"MAGNUM"},{"name":"Netlify CI","constant":"NETLIFY","env":"NETLIFY_BUILD_BASE","pr":{"env":"PULL_REQUEST","ne":"false"}},{"name":"Sail CI","constant":"SAIL","env":"SAILCI","pr":"SAIL_PULL_REQUEST_NUMBER"},{"name":"Semaphore","constant":"SEMAPHORE","env":"SEMAPHORE","pr":"PULL_REQUEST_NUMBER"},{"name":"Shippable","constant":"SHIPPABLE","env":"SHIPPABLE","pr":{"IS_PULL_REQUEST":"true"}},{"name":"Solano CI","constant":"SOLANO","env":"TDDIUM","pr":"TDDIUM_PR_ID"},{"name":"Strider CD","constant":"STRIDER","env":"STRIDER"},{"name":"TaskCluster","constant":"TASKCLUSTER","env":["TASK_ID","RUN_ID"]},{"name":"TeamCity","constant":"TEAMCITY","env":"TEAMCITY_VERSION"},{"name":"Travis CI","constant":"TRAVIS","env":"TRAVIS","pr":{"env":"TRAVIS_PULL_REQUEST","ne":"false"}}]')},4163:e=>{"use strict";e.exports=JSON.parse('{"single":{"topLeft":"┌","topRight":"┐","bottomRight":"┘","bottomLeft":"└","vertical":"│","horizontal":"─"},"double":{"topLeft":"╔","topRight":"╗","bottomRight":"╝","bottomLeft":"╚","vertical":"║","horizontal":"═"},"round":{"topLeft":"╭","topRight":"╮","bottomRight":"╯","bottomLeft":"╰","vertical":"│","horizontal":"─"},"bold":{"topLeft":"┏","topRight":"┓","bottomRight":"┛","bottomLeft":"┗","vertical":"┃","horizontal":"━"},"singleDouble":{"topLeft":"╓","topRight":"╖","bottomRight":"╜","bottomLeft":"╙","vertical":"║","horizontal":"─"},"doubleSingle":{"topLeft":"╒","topRight":"╕","bottomRight":"╛","bottomLeft":"╘","vertical":"│","horizontal":"═"},"classic":{"topLeft":"+","topRight":"+","bottomRight":"+","bottomLeft":"+","vertical":"|","horizontal":"-"}}')},4097:(e,t,n)=>{"use strict";const r=n(4163);e.exports=r,e.exports.default=r},1696:(e,t,n)=>{"use strict";const r=n(3390);let i=!1;t.show=(e=process.stderr)=>{e.isTTY&&(i=!1,e.write("[?25h"))},t.hide=(e=process.stderr)=>{e.isTTY&&(r(),i=!0,e.write("[?25l"))},t.toggle=(e,n)=>{void 0!==e&&(i=e),i?t.show(n):t.hide(n)}},5301:(e,t,n)=>{"use strict";const r=n(1566),i=n(5043);function o(e,t,n){if(" "===e.charAt(t))return t;for(let r=1;r<=3;r++)if(n){if(" "===e.charAt(t+r))return t+r}else if(" "===e.charAt(t-r))return t-r;return t}e.exports=(e,t,n)=>{n={position:"end",preferTruncationOnSpace:!1,...n};const{position:u,space:a,preferTruncationOnSpace:l}=n;let s="…",c=1;if("string"!=typeof e)throw new TypeError("Expected `input` to be a string, got "+typeof e);if("number"!=typeof t)throw new TypeError("Expected `columns` to be a number, got "+typeof t);if(t<1)return"";if(1===t)return s;const f=i(e);if(f<=t)return e;if("start"===u){if(l){const n=o(e,f-t+1,!0);return s+r(e,n,f).trim()}return!0===a&&(s+=" ",c=2),s+r(e,f-t+c,f)}if("middle"===u){!0===a&&(s=" "+s+" ",c=3);const n=Math.floor(t/2);if(l){const i=o(e,n),u=o(e,f-(t-n)+1,!0);return r(e,0,i)+s+r(e,u,f).trim()}return r(e,0,n)+s+r(e,f-(t-n)+c,f)}if("end"===u){if(l){const n=o(e,t-1);return r(e,0,n)+s}return!0===a&&(s=" "+s,c=2),r(e,0,t-c)+s}throw new Error("Expected `options.position` to be either `start`, `middle` or `end`, got "+u)}},9908:(e,t,n)=>{"use strict";const r=n(3287);e.exports=(e,t,n)=>{if("string"!=typeof e)throw new TypeError("Source code is missing.");if(!t||t<1)throw new TypeError("Line number must start from `1`.");if(!(t>(e=r(e).split(/\r?\n/)).length))return((e,t)=>{const n=[],r=e+t;for(let i=e-t;i<=r;i++)n.push(i);return n})(t,(n={around:3,...n}).around).filter(t=>void 0!==e[t-1]).map(t=>({line:t,value:e[t-1]}))}},5311:(e,t,n)=>{const r=n(3300),i={};for(const e of Object.keys(r))i[r[e]]=e;const o={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=o;for(const e of Object.keys(o)){if(!("channels"in o[e]))throw new Error("missing channels property: "+e);if(!("labels"in o[e]))throw new Error("missing channel labels property: "+e);if(o[e].labels.length!==o[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:n}=o[e];delete o[e].channels,delete o[e].labels,Object.defineProperty(o[e],"channels",{value:t}),Object.defineProperty(o[e],"labels",{value:n})}o.rgb.hsl=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(t,n,r),o=Math.max(t,n,r),u=o-i;let a,l;o===i?a=0:t===o?a=(n-r)/u:n===o?a=2+(r-t)/u:r===o&&(a=4+(t-n)/u),a=Math.min(60*a,360),a<0&&(a+=360);const s=(i+o)/2;return l=o===i?0:s<=.5?u/(o+i):u/(2-o-i),[a,100*l,100*s]},o.rgb.hsv=function(e){let t,n,r,i,o;const u=e[0]/255,a=e[1]/255,l=e[2]/255,s=Math.max(u,a,l),c=s-Math.min(u,a,l),f=function(e){return(s-e)/6/c+.5};return 0===c?(i=0,o=0):(o=c/s,t=f(u),n=f(a),r=f(l),u===s?i=r-n:a===s?i=1/3+t-r:l===s&&(i=2/3+n-t),i<0?i+=1:i>1&&(i-=1)),[360*i,100*o,100*s]},o.rgb.hwb=function(e){const t=e[0],n=e[1];let r=e[2];const i=o.rgb.hsl(e)[0],u=1/255*Math.min(t,Math.min(n,r));return r=1-1/255*Math.max(t,Math.max(n,r)),[i,100*u,100*r]},o.rgb.cmyk=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.min(1-t,1-n,1-r);return[100*((1-t-i)/(1-i)||0),100*((1-n-i)/(1-i)||0),100*((1-r-i)/(1-i)||0),100*i]},o.rgb.keyword=function(e){const t=i[e];if(t)return t;let n,o=1/0;for(const t of Object.keys(r)){const i=r[t],l=(a=i,((u=e)[0]-a[0])**2+(u[1]-a[1])**2+(u[2]-a[2])**2);l.04045?((t+.055)/1.055)**2.4:t/12.92,n=n>.04045?((n+.055)/1.055)**2.4:n/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;return[100*(.4124*t+.3576*n+.1805*r),100*(.2126*t+.7152*n+.0722*r),100*(.0193*t+.1192*n+.9505*r)]},o.rgb.lab=function(e){const t=o.rgb.xyz(e);let n=t[0],r=t[1],i=t[2];n/=95.047,r/=100,i/=108.883,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,i=i>.008856?i**(1/3):7.787*i+16/116;return[116*r-16,500*(n-r),200*(r-i)]},o.hsl.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;let i,o,u;if(0===n)return u=255*r,[u,u,u];i=r<.5?r*(1+n):r+n-r*n;const a=2*r-i,l=[0,0,0];for(let e=0;e<3;e++)o=t+1/3*-(e-1),o<0&&o++,o>1&&o--,u=6*o<1?a+6*(i-a)*o:2*o<1?i:3*o<2?a+(i-a)*(2/3-o)*6:a,l[e]=255*u;return l},o.hsl.hsv=function(e){const t=e[0];let n=e[1]/100,r=e[2]/100,i=n;const o=Math.max(r,.01);r*=2,n*=r<=1?r:2-r,i*=o<=1?o:2-o;return[t,100*(0===r?2*i/(o+i):2*n/(r+n)),100*((r+n)/2)]},o.hsv.rgb=function(e){const t=e[0]/60,n=e[1]/100;let r=e[2]/100;const i=Math.floor(t)%6,o=t-Math.floor(t),u=255*r*(1-n),a=255*r*(1-n*o),l=255*r*(1-n*(1-o));switch(r*=255,i){case 0:return[r,l,u];case 1:return[a,r,u];case 2:return[u,r,l];case 3:return[u,a,r];case 4:return[l,u,r];case 5:return[r,u,a]}},o.hsv.hsl=function(e){const t=e[0],n=e[1]/100,r=e[2]/100,i=Math.max(r,.01);let o,u;u=(2-n)*r;const a=(2-n)*i;return o=n*i,o/=a<=1?a:2-a,o=o||0,u/=2,[t,100*o,100*u]},o.hwb.rgb=function(e){const t=e[0]/360;let n=e[1]/100,r=e[2]/100;const i=n+r;let o;i>1&&(n/=i,r/=i);const u=Math.floor(6*t),a=1-r;o=6*t-u,0!=(1&u)&&(o=1-o);const l=n+o*(a-n);let s,c,f;switch(u){default:case 6:case 0:s=a,c=l,f=n;break;case 1:s=l,c=a,f=n;break;case 2:s=n,c=a,f=l;break;case 3:s=n,c=l,f=a;break;case 4:s=l,c=n,f=a;break;case 5:s=a,c=n,f=l}return[255*s,255*c,255*f]},o.cmyk.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100,i=e[3]/100;return[255*(1-Math.min(1,t*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i)),255*(1-Math.min(1,r*(1-i)+i))]},o.xyz.rgb=function(e){const t=e[0]/100,n=e[1]/100,r=e[2]/100;let i,o,u;return i=3.2406*t+-1.5372*n+-.4986*r,o=-.9689*t+1.8758*n+.0415*r,u=.0557*t+-.204*n+1.057*r,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,u=u>.0031308?1.055*u**(1/2.4)-.055:12.92*u,i=Math.min(Math.max(0,i),1),o=Math.min(Math.max(0,o),1),u=Math.min(Math.max(0,u),1),[255*i,255*o,255*u]},o.xyz.lab=function(e){let t=e[0],n=e[1],r=e[2];t/=95.047,n/=100,r/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,n=n>.008856?n**(1/3):7.787*n+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;return[116*n-16,500*(t-n),200*(n-r)]},o.lab.xyz=function(e){let t,n,r;n=(e[0]+16)/116,t=e[1]/500+n,r=n-e[2]/200;const i=n**3,o=t**3,u=r**3;return n=i>.008856?i:(n-16/116)/7.787,t=o>.008856?o:(t-16/116)/7.787,r=u>.008856?u:(r-16/116)/7.787,t*=95.047,n*=100,r*=108.883,[t,n,r]},o.lab.lch=function(e){const t=e[0],n=e[1],r=e[2];let i;i=360*Math.atan2(r,n)/2/Math.PI,i<0&&(i+=360);return[t,Math.sqrt(n*n+r*r),i]},o.lch.lab=function(e){const t=e[0],n=e[1],r=e[2]/360*2*Math.PI;return[t,n*Math.cos(r),n*Math.sin(r)]},o.rgb.ansi16=function(e,t=null){const[n,r,i]=e;let u=null===t?o.rgb.hsv(e)[2]:t;if(u=Math.round(u/50),0===u)return 30;let a=30+(Math.round(i/255)<<2|Math.round(r/255)<<1|Math.round(n/255));return 2===u&&(a+=60),a},o.hsv.ansi16=function(e){return o.rgb.ansi16(o.hsv.rgb(e),e[2])},o.rgb.ansi256=function(e){const t=e[0],n=e[1],r=e[2];if(t===n&&n===r)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},o.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const n=.5*(1+~~(e>50));return[(1&t)*n*255,(t>>1&1)*n*255,(t>>2&1)*n*255]},o.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},o.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},o.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let n=t[0];3===t[0].length&&(n=n.split("").map(e=>e+e).join(""));const r=parseInt(n,16);return[r>>16&255,r>>8&255,255&r]},o.rgb.hcg=function(e){const t=e[0]/255,n=e[1]/255,r=e[2]/255,i=Math.max(Math.max(t,n),r),o=Math.min(Math.min(t,n),r),u=i-o;let a,l;return a=u<1?o/(1-u):0,l=u<=0?0:i===t?(n-r)/u%6:i===n?2+(r-t)/u:4+(t-n)/u,l/=6,l%=1,[360*l,100*u,100*a]},o.hsl.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=n<.5?2*t*n:2*t*(1-n);let i=0;return r<1&&(i=(n-.5*r)/(1-r)),[e[0],100*r,100*i]},o.hsv.hcg=function(e){const t=e[1]/100,n=e[2]/100,r=t*n;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},o.hcg.rgb=function(e){const t=e[0]/360,n=e[1]/100,r=e[2]/100;if(0===n)return[255*r,255*r,255*r];const i=[0,0,0],o=t%1*6,u=o%1,a=1-u;let l=0;switch(Math.floor(o)){case 0:i[0]=1,i[1]=u,i[2]=0;break;case 1:i[0]=a,i[1]=1,i[2]=0;break;case 2:i[0]=0,i[1]=1,i[2]=u;break;case 3:i[0]=0,i[1]=a,i[2]=1;break;case 4:i[0]=u,i[1]=0,i[2]=1;break;default:i[0]=1,i[1]=0,i[2]=a}return l=(1-n)*r,[255*(n*i[0]+l),255*(n*i[1]+l),255*(n*i[2]+l)]},o.hcg.hsv=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);let r=0;return n>0&&(r=t/n),[e[0],100*r,100*n]},o.hcg.hsl=function(e){const t=e[1]/100,n=e[2]/100*(1-t)+.5*t;let r=0;return n>0&&n<.5?r=t/(2*n):n>=.5&&n<1&&(r=t/(2*(1-n))),[e[0],100*r,100*n]},o.hcg.hwb=function(e){const t=e[1]/100,n=t+e[2]/100*(1-t);return[e[0],100*(n-t),100*(1-n)]},o.hwb.hcg=function(e){const t=e[1]/100,n=1-e[2]/100,r=n-t;let i=0;return r<1&&(i=(n-r)/(1-r)),[e[0],100*r,100*i]},o.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},o.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},o.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},o.gray.hsl=function(e){return[0,0,e[0]]},o.gray.hsv=o.gray.hsl,o.gray.hwb=function(e){return[0,100,e[0]]},o.gray.cmyk=function(e){return[0,0,0,e[0]]},o.gray.lab=function(e){return[e[0],0,0]},o.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),n=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(n.length)+n},o.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},2744:(e,t,n)=>{const r=n(5311),i=n(8577),o={};Object.keys(r).forEach(e=>{o[e]={},Object.defineProperty(o[e],"channels",{value:r[e].channels}),Object.defineProperty(o[e],"labels",{value:r[e].labels});const t=i(e);Object.keys(t).forEach(n=>{const r=t[n];o[e][n]=function(e){const t=function(...t){const n=t[0];if(null==n)return n;n.length>1&&(t=n);const r=e(t);if("object"==typeof r)for(let e=r.length,t=0;t1&&(t=n),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(r)})}),e.exports=o},8577:(e,t,n)=>{const r=n(5311);function i(e){const t=function(){const e={},t=Object.keys(r);for(let n=t.length,r=0;r{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},3287:e=>{"use strict";e.exports=(e,t)=>e.replace(/^\t+/gm,e=>" ".repeat(e.length*(t||2)))},1013:e=>{"use strict";e.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}},8759:e=>{"use strict";const t=/[|\\{}()[\]^$+*?.-]/g;e.exports=e=>{if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(t,"\\$&")}},2918:e=>{"use strict";e.exports=(e,t=process.argv)=>{const n=e.startsWith("-")?"":1===e.length?"-":"--",r=t.indexOf(n+e),i=t.indexOf("--");return-1!==r&&(-1===i||r{"use strict";e.exports=(e,t=1,n)=>{if(n={indent:" ",includeEmptyLines:!1,...n},"string"!=typeof e)throw new TypeError(`Expected \`input\` to be a \`string\`, got \`${typeof e}\``);if("number"!=typeof t)throw new TypeError(`Expected \`count\` to be a \`number\`, got \`${typeof t}\``);if("string"!=typeof n.indent)throw new TypeError(`Expected \`options.indent\` to be a \`string\`, got \`${typeof n.indent}\``);if(0===t)return e;const r=n.includeEmptyLines?/^/gm:/^(?!\s*$)/gm;return e.replace(r,n.indent.repeat(t))}},2738:(e,t,n)=>{"use strict";e.exports=n(5864).isCI},7347:e=>{"use strict";const t=e=>!Number.isNaN(e)&&(e>=4352&&(e<=4447||9001===e||9002===e||11904<=e&&e<=12871&&12351!==e||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141));e.exports=t,e.exports.default=t},464:function(e,t,n){var r; +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */e=n.nmd(e),function(){var i="Expected a function",o="__lodash_placeholder__",u=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]],a="[object Arguments]",l="[object Array]",s="[object Boolean]",c="[object Date]",f="[object Error]",d="[object Function]",p="[object GeneratorFunction]",h="[object Map]",v="[object Number]",m="[object Object]",g="[object RegExp]",y="[object Set]",_="[object String]",b="[object Symbol]",w="[object WeakMap]",E="[object ArrayBuffer]",D="[object DataView]",S="[object Float32Array]",C="[object Float64Array]",k="[object Int8Array]",T="[object Int16Array]",x="[object Int32Array]",A="[object Uint8Array]",O="[object Uint16Array]",P="[object Uint32Array]",I=/\b__p \+= '';/g,N=/\b(__p \+=) '' \+/g,M=/(__e\(.*?\)|\b__t\)) \+\n'';/g,R=/&(?:amp|lt|gt|quot|#39);/g,F=/[&<>"']/g,L=RegExp(R.source),B=RegExp(F.source),j=/<%-([\s\S]+?)%>/g,U=/<%([\s\S]+?)%>/g,z=/<%=([\s\S]+?)%>/g,W=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,H=/^\w*$/,V=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,q=/[\\^$.*+?()[\]{}|]/g,G=RegExp(q.source),$=/^\s+|\s+$/g,Y=/^\s+/,K=/\s+$/,X=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Q=/\{\n\/\* \[wrapped with (.+)\] \*/,J=/,? & /,Z=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ee=/\\(\\)?/g,te=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ne=/\w*$/,re=/^[-+]0x[0-9a-f]+$/i,ie=/^0b[01]+$/i,oe=/^\[object .+?Constructor\]$/,ue=/^0o[0-7]+$/i,ae=/^(?:0|[1-9]\d*)$/,le=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,se=/($^)/,ce=/['\n\r\u2028\u2029\\]/g,fe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",de="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",pe="[\\ud800-\\udfff]",he="["+de+"]",ve="["+fe+"]",me="\\d+",ge="[\\u2700-\\u27bf]",ye="[a-z\\xdf-\\xf6\\xf8-\\xff]",_e="[^\\ud800-\\udfff"+de+me+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",be="\\ud83c[\\udffb-\\udfff]",we="[^\\ud800-\\udfff]",Ee="(?:\\ud83c[\\udde6-\\uddff]){2}",De="[\\ud800-\\udbff][\\udc00-\\udfff]",Se="[A-Z\\xc0-\\xd6\\xd8-\\xde]",Ce="(?:"+ye+"|"+_e+")",ke="(?:"+Se+"|"+_e+")",Te="(?:"+ve+"|"+be+")"+"?",xe="[\\ufe0e\\ufe0f]?"+Te+("(?:\\u200d(?:"+[we,Ee,De].join("|")+")[\\ufe0e\\ufe0f]?"+Te+")*"),Ae="(?:"+[ge,Ee,De].join("|")+")"+xe,Oe="(?:"+[we+ve+"?",ve,Ee,De,pe].join("|")+")",Pe=RegExp("['’]","g"),Ie=RegExp(ve,"g"),Ne=RegExp(be+"(?="+be+")|"+Oe+xe,"g"),Me=RegExp([Se+"?"+ye+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[he,Se,"$"].join("|")+")",ke+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[he,Se+Ce,"$"].join("|")+")",Se+"?"+Ce+"+(?:['’](?:d|ll|m|re|s|t|ve))?",Se+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",me,Ae].join("|"),"g"),Re=RegExp("[\\u200d\\ud800-\\udfff"+fe+"\\ufe0e\\ufe0f]"),Fe=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Le=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Be=-1,je={};je[S]=je[C]=je[k]=je[T]=je[x]=je[A]=je["[object Uint8ClampedArray]"]=je[O]=je[P]=!0,je[a]=je[l]=je[E]=je[s]=je[D]=je[c]=je[f]=je[d]=je[h]=je[v]=je[m]=je[g]=je[y]=je[_]=je[w]=!1;var Ue={};Ue[a]=Ue[l]=Ue[E]=Ue[D]=Ue[s]=Ue[c]=Ue[S]=Ue[C]=Ue[k]=Ue[T]=Ue[x]=Ue[h]=Ue[v]=Ue[m]=Ue[g]=Ue[y]=Ue[_]=Ue[b]=Ue[A]=Ue["[object Uint8ClampedArray]"]=Ue[O]=Ue[P]=!0,Ue[f]=Ue[d]=Ue[w]=!1;var ze={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},We=parseFloat,He=parseInt,Ve="object"==typeof global&&global&&global.Object===Object&&global,qe="object"==typeof self&&self&&self.Object===Object&&self,Ge=Ve||qe||Function("return this")(),$e=t&&!t.nodeType&&t,Ye=$e&&e&&!e.nodeType&&e,Ke=Ye&&Ye.exports===$e,Xe=Ke&&Ve.process,Qe=function(){try{var e=Ye&&Ye.require&&Ye.require("util").types;return e||Xe&&Xe.binding&&Xe.binding("util")}catch(e){}}(),Je=Qe&&Qe.isArrayBuffer,Ze=Qe&&Qe.isDate,et=Qe&&Qe.isMap,tt=Qe&&Qe.isRegExp,nt=Qe&&Qe.isSet,rt=Qe&&Qe.isTypedArray;function it(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function ot(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function ft(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function Nt(e,t){for(var n=e.length;n--&&bt(t,e[n],0)>-1;);return n}function Mt(e,t){for(var n=e.length,r=0;n--;)e[n]===t&&++r;return r}var Rt=Ct({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),Ft=Ct({"&":"&","<":"<",">":">",'"':""","'":"'"});function Lt(e){return"\\"+ze[e]}function Bt(e){return Re.test(e)}function jt(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function Ut(e,t){return function(n){return e(t(n))}}function zt(e,t){for(var n=-1,r=e.length,i=0,u=[];++n",""":'"',"'":"'"});var $t=function e(t){var n,r=(t=null==t?Ge:$t.defaults(Ge.Object(),t,$t.pick(Ge,Le))).Array,fe=t.Date,de=t.Error,pe=t.Function,he=t.Math,ve=t.Object,me=t.RegExp,ge=t.String,ye=t.TypeError,_e=r.prototype,be=pe.prototype,we=ve.prototype,Ee=t["__core-js_shared__"],De=be.toString,Se=we.hasOwnProperty,Ce=0,ke=(n=/[^.]+$/.exec(Ee&&Ee.keys&&Ee.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Te=we.toString,xe=De.call(ve),Ae=Ge._,Oe=me("^"+De.call(Se).replace(q,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ne=Ke?t.Buffer:void 0,Re=t.Symbol,ze=t.Uint8Array,Ve=Ne?Ne.allocUnsafe:void 0,qe=Ut(ve.getPrototypeOf,ve),$e=ve.create,Ye=we.propertyIsEnumerable,Xe=_e.splice,Qe=Re?Re.isConcatSpreadable:void 0,gt=Re?Re.iterator:void 0,Ct=Re?Re.toStringTag:void 0,Yt=function(){try{var e=Zi(ve,"defineProperty");return e({},"",{}),e}catch(e){}}(),Kt=t.clearTimeout!==Ge.clearTimeout&&t.clearTimeout,Xt=fe&&fe.now!==Ge.Date.now&&fe.now,Qt=t.setTimeout!==Ge.setTimeout&&t.setTimeout,Jt=he.ceil,Zt=he.floor,en=ve.getOwnPropertySymbols,tn=Ne?Ne.isBuffer:void 0,nn=t.isFinite,rn=_e.join,on=Ut(ve.keys,ve),un=he.max,an=he.min,ln=fe.now,sn=t.parseInt,cn=he.random,fn=_e.reverse,dn=Zi(t,"DataView"),pn=Zi(t,"Map"),hn=Zi(t,"Promise"),vn=Zi(t,"Set"),mn=Zi(t,"WeakMap"),gn=Zi(ve,"create"),yn=mn&&new mn,_n={},bn=To(dn),wn=To(pn),En=To(hn),Dn=To(vn),Sn=To(mn),Cn=Re?Re.prototype:void 0,kn=Cn?Cn.valueOf:void 0,Tn=Cn?Cn.toString:void 0;function xn(e){if(Vu(e)&&!Nu(e)&&!(e instanceof In)){if(e instanceof Pn)return e;if(Se.call(e,"__wrapped__"))return xo(e)}return new Pn(e)}var An=function(){function e(){}return function(t){if(!Hu(t))return{};if($e)return $e(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function On(){}function Pn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=void 0}function In(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Nn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Xn(e,t,n,r,i,o){var u,l=1&t,f=2&t,w=4&t;if(n&&(u=i?n(e,r,i,o):n(e)),void 0!==u)return u;if(!Hu(e))return e;var I=Nu(e);if(I){if(u=function(e){var t=e.length,n=new e.constructor(t);t&&"string"==typeof e[0]&&Se.call(e,"index")&&(n.index=e.index,n.input=e.input);return n}(e),!l)return gi(e,u)}else{var N=no(e),M=N==d||N==p;if(Lu(e))return fi(e,l);if(N==m||N==a||M&&!i){if(u=f||M?{}:io(e),!l)return f?function(e,t){return yi(e,to(e),t)}(e,function(e,t){return e&&yi(t,wa(t),e)}(u,e)):function(e,t){return yi(e,eo(e),t)}(e,Gn(u,e))}else{if(!Ue[N])return i?e:{};u=function(e,t,n){var r=e.constructor;switch(t){case E:return di(e);case s:case c:return new r(+e);case D:return function(e,t){var n=t?di(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case S:case C:case k:case T:case x:case A:case"[object Uint8ClampedArray]":case O:case P:return pi(e,n);case h:return new r;case v:case _:return new r(e);case g:return function(e){var t=new e.constructor(e.source,ne.exec(e));return t.lastIndex=e.lastIndex,t}(e);case y:return new r;case b:return i=e,kn?ve(kn.call(i)):{}}var i}(e,N,l)}}o||(o=new Ln);var R=o.get(e);if(R)return R;o.set(e,u),Ku(e)?e.forEach((function(r){u.add(Xn(r,t,n,r,e,o))})):qu(e)&&e.forEach((function(r,i){u.set(i,Xn(r,t,n,i,e,o))}));var F=I?void 0:(w?f?Gi:qi:f?wa:ba)(e);return ut(F||e,(function(r,i){F&&(r=e[i=r]),Hn(u,i,Xn(r,t,n,i,e,o))})),u}function Qn(e,t,n){var r=n.length;if(null==e)return!r;for(e=ve(e);r--;){var i=n[r],o=t[i],u=e[i];if(void 0===u&&!(i in e)||!o(u))return!1}return!0}function Jn(e,t,n){if("function"!=typeof e)throw new ye(i);return bo((function(){e.apply(void 0,n)}),t)}function Zn(e,t,n,r){var i=-1,o=ct,u=!0,a=e.length,l=[],s=t.length;if(!a)return l;n&&(t=dt(t,At(n))),r?(o=ft,u=!1):t.length>=200&&(o=Pt,u=!1,t=new Fn(t));e:for(;++i-1},Mn.prototype.set=function(e,t){var n=this.__data__,r=Vn(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Rn.prototype.clear=function(){this.size=0,this.__data__={hash:new Nn,map:new(pn||Mn),string:new Nn}},Rn.prototype.delete=function(e){var t=Qi(this,e).delete(e);return this.size-=t?1:0,t},Rn.prototype.get=function(e){return Qi(this,e).get(e)},Rn.prototype.has=function(e){return Qi(this,e).has(e)},Rn.prototype.set=function(e,t){var n=Qi(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},Fn.prototype.add=Fn.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},Fn.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.clear=function(){this.__data__=new Mn,this.size=0},Ln.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Ln.prototype.get=function(e){return this.__data__.get(e)},Ln.prototype.has=function(e){return this.__data__.has(e)},Ln.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Mn){var r=n.__data__;if(!pn||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Rn(r)}return n.set(e,t),this.size=n.size,this};var er=wi(lr),tr=wi(sr,!0);function nr(e,t){var n=!0;return er(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function rr(e,t,n){for(var r=-1,i=e.length;++r0&&n(a)?t>1?or(a,t-1,n,r,i):pt(i,a):r||(i[i.length]=a)}return i}var ur=Ei(),ar=Ei(!0);function lr(e,t){return e&&ur(e,t,ba)}function sr(e,t){return e&&ar(e,t,ba)}function cr(e,t){return st(t,(function(t){return Uu(e[t])}))}function fr(e,t){for(var n=0,r=(t=ai(t,e)).length;null!=e&&nt}function vr(e,t){return null!=e&&Se.call(e,t)}function mr(e,t){return null!=e&&t in ve(e)}function gr(e,t,n){for(var i=n?ft:ct,o=e[0].length,u=e.length,a=u,l=r(u),s=1/0,c=[];a--;){var f=e[a];a&&t&&(f=dt(f,At(t))),s=an(f.length,s),l[a]=!n&&(t||o>=120&&f.length>=120)?new Fn(a&&f):void 0}f=e[0];var d=-1,p=l[0];e:for(;++d=a)return l;var s=n[r];return l*("desc"==s?-1:1)}}return e.index-t.index}(e,t,n)}))}function Nr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)a!==e&&Xe.call(a,l,1),Xe.call(e,l,1);return e}function Rr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;uo(i)?Xe.call(e,i,1):Zr(e,i)}}return e}function Fr(e,t){return e+Zt(cn()*(t-e+1))}function Lr(e,t){var n="";if(!e||t<1||t>9007199254740991)return n;do{t%2&&(n+=e),(t=Zt(t/2))&&(e+=e)}while(t);return n}function Br(e,t){return wo(vo(e,t,Ga),e+"")}function jr(e){return jn(Aa(e))}function Ur(e,t){var n=Aa(e);return So(n,Kn(t,0,n.length))}function zr(e,t,n,r){if(!Hu(e))return e;for(var i=-1,o=(t=ai(t,e)).length,u=o-1,a=e;null!=a&&++io?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var u=r(o);++i>>1,u=e[o];null!==u&&!Qu(u)&&(n?u<=t:u=200){var s=t?null:Li(e);if(s)return Wt(s);u=!1,i=Pt,l=new Fn}else l=t?[]:a;e:for(;++r=r?e:qr(e,t,n)}var ci=Kt||function(e){return Ge.clearTimeout(e)};function fi(e,t){if(t)return e.slice();var n=e.length,r=Ve?Ve(n):new e.constructor(n);return e.copy(r),r}function di(e){var t=new e.constructor(e.byteLength);return new ze(t).set(new ze(e)),t}function pi(e,t){var n=t?di(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function hi(e,t){if(e!==t){var n=void 0!==e,r=null===e,i=e==e,o=Qu(e),u=void 0!==t,a=null===t,l=t==t,s=Qu(t);if(!a&&!s&&!o&&e>t||o&&u&&l&&!a&&!s||r&&u&&l||!n&&l||!i)return 1;if(!r&&!o&&!s&&e1?n[i-1]:void 0,u=i>2?n[2]:void 0;for(o=e.length>3&&"function"==typeof o?(i--,o):void 0,u&&ao(n[0],n[1],u)&&(o=i<3?void 0:o,i=1),t=ve(t);++r-1?i[o?t[u]:u]:void 0}}function Ti(e){return Vi((function(t){var n=t.length,r=n,o=Pn.prototype.thru;for(e&&t.reverse();r--;){var u=t[r];if("function"!=typeof u)throw new ye(i);if(o&&!a&&"wrapper"==Yi(u))var a=new Pn([],!0)}for(r=a?r:n;++r1&&_.reverse(),f&&sa))return!1;var s=o.get(e),c=o.get(t);if(s&&c)return s==t&&c==e;var f=-1,d=!0,p=2&n?new Fn:void 0;for(o.set(e,t),o.set(t,e);++f-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(X,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return ut(u,(function(n){var r="_."+n[0];t&n[1]&&!ct(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(Q);return t?t[1].split(J):[]}(r),n)))}function Do(e){var t=0,n=0;return function(){var r=ln(),i=16-(r-n);if(n=r,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function So(e,t){var n=-1,r=e.length,i=r-1;for(t=void 0===t?r:t;++n1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Yo(e,n)}));function tu(e){var t=xn(e);return t.__chain__=!0,t}function nu(e,t){return t(e)}var ru=Vi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,i=function(t){return Yn(t,e)};return!(t>1||this.__actions__.length)&&r instanceof In&&uo(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:nu,args:[i],thisArg:void 0}),new Pn(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(i)}));var iu=_i((function(e,t,n){Se.call(e,n)?++e[n]:$n(e,n,1)}));var ou=ki(Io),uu=ki(No);function au(e,t){return(Nu(e)?ut:er)(e,Xi(t,3))}function lu(e,t){return(Nu(e)?at:tr)(e,Xi(t,3))}var su=_i((function(e,t,n){Se.call(e,n)?e[n].push(t):$n(e,n,[t])}));var cu=Br((function(e,t,n){var i=-1,o="function"==typeof t,u=Ru(e)?r(e.length):[];return er(e,(function(e){u[++i]=o?it(t,e,n):yr(e,t,n)})),u})),fu=_i((function(e,t,n){$n(e,n,t)}));function du(e,t){return(Nu(e)?dt:Tr)(e,Xi(t,3))}var pu=_i((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var hu=Br((function(e,t){if(null==e)return[];var n=t.length;return n>1&&ao(e,t[0],t[1])?t=[]:n>2&&ao(t[0],t[1],t[2])&&(t=[t[0]]),Ir(e,or(t,1),[])})),vu=Xt||function(){return Ge.Date.now()};function mu(e,t,n){return t=n?void 0:t,ji(e,128,void 0,void 0,void 0,void 0,t=e&&null==t?e.length:t)}function gu(e,t){var n;if("function"!=typeof t)throw new ye(i);return e=ra(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var yu=Br((function(e,t,n){var r=1;if(n.length){var i=zt(n,Ki(yu));r|=32}return ji(e,r,t,n,i)})),_u=Br((function(e,t,n){var r=3;if(n.length){var i=zt(n,Ki(_u));r|=32}return ji(t,r,e,n,i)}));function bu(e,t,n){var r,o,u,a,l,s,c=0,f=!1,d=!1,p=!0;if("function"!=typeof e)throw new ye(i);function h(t){var n=r,i=o;return r=o=void 0,c=t,a=e.apply(i,n)}function v(e){return c=e,l=bo(g,t),f?h(e):a}function m(e){var n=e-s;return void 0===s||n>=t||n<0||d&&e-c>=u}function g(){var e=vu();if(m(e))return y(e);l=bo(g,function(e){var n=t-(e-s);return d?an(n,u-(e-c)):n}(e))}function y(e){return l=void 0,p&&r?h(e):(r=o=void 0,a)}function _(){var e=vu(),n=m(e);if(r=arguments,o=this,s=e,n){if(void 0===l)return v(s);if(d)return ci(l),l=bo(g,t),h(s)}return void 0===l&&(l=bo(g,t)),a}return t=oa(t)||0,Hu(n)&&(f=!!n.leading,u=(d="maxWait"in n)?un(oa(n.maxWait)||0,t):u,p="trailing"in n?!!n.trailing:p),_.cancel=function(){void 0!==l&&ci(l),c=0,r=s=o=l=void 0},_.flush=function(){return void 0===l?a:y(vu())},_}var wu=Br((function(e,t){return Jn(e,1,t)})),Eu=Br((function(e,t,n){return Jn(e,oa(t)||0,n)}));function Du(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ye(i);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var u=e.apply(this,r);return n.cache=o.set(i,u)||o,u};return n.cache=new(Du.Cache||Rn),n}function Su(e){if("function"!=typeof e)throw new ye(i);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Du.Cache=Rn;var Cu=li((function(e,t){var n=(t=1==t.length&&Nu(t[0])?dt(t[0],At(Xi())):dt(or(t,1),At(Xi()))).length;return Br((function(r){for(var i=-1,o=an(r.length,n);++i=t})),Iu=_r(function(){return arguments}())?_r:function(e){return Vu(e)&&Se.call(e,"callee")&&!Ye.call(e,"callee")},Nu=r.isArray,Mu=Je?At(Je):function(e){return Vu(e)&&pr(e)==E};function Ru(e){return null!=e&&Wu(e.length)&&!Uu(e)}function Fu(e){return Vu(e)&&Ru(e)}var Lu=tn||ol,Bu=Ze?At(Ze):function(e){return Vu(e)&&pr(e)==c};function ju(e){if(!Vu(e))return!1;var t=pr(e);return t==f||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!$u(e)}function Uu(e){if(!Hu(e))return!1;var t=pr(e);return t==d||t==p||"[object AsyncFunction]"==t||"[object Proxy]"==t}function zu(e){return"number"==typeof e&&e==ra(e)}function Wu(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}function Hu(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Vu(e){return null!=e&&"object"==typeof e}var qu=et?At(et):function(e){return Vu(e)&&no(e)==h};function Gu(e){return"number"==typeof e||Vu(e)&&pr(e)==v}function $u(e){if(!Vu(e)||pr(e)!=m)return!1;var t=qe(e);if(null===t)return!0;var n=Se.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&De.call(n)==xe}var Yu=tt?At(tt):function(e){return Vu(e)&&pr(e)==g};var Ku=nt?At(nt):function(e){return Vu(e)&&no(e)==y};function Xu(e){return"string"==typeof e||!Nu(e)&&Vu(e)&&pr(e)==_}function Qu(e){return"symbol"==typeof e||Vu(e)&&pr(e)==b}var Ju=rt?At(rt):function(e){return Vu(e)&&Wu(e.length)&&!!je[pr(e)]};var Zu=Mi(kr),ea=Mi((function(e,t){return e<=t}));function ta(e){if(!e)return[];if(Ru(e))return Xu(e)?qt(e):gi(e);if(gt&&e[gt])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[gt]());var t=no(e);return(t==h?jt:t==y?Wt:Aa)(e)}function na(e){return e?(e=oa(e))===1/0||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ra(e){var t=na(e),n=t%1;return t==t?n?t-n:t:0}function ia(e){return e?Kn(ra(e),0,4294967295):0}function oa(e){if("number"==typeof e)return e;if(Qu(e))return NaN;if(Hu(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Hu(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace($,"");var n=ie.test(e);return n||ue.test(e)?He(e.slice(2),n?2:8):re.test(e)?NaN:+e}function ua(e){return yi(e,wa(e))}function aa(e){return null==e?"":Qr(e)}var la=bi((function(e,t){if(fo(t)||Ru(t))yi(t,ba(t),e);else for(var n in t)Se.call(t,n)&&Hn(e,n,t[n])})),sa=bi((function(e,t){yi(t,wa(t),e)})),ca=bi((function(e,t,n,r){yi(t,wa(t),e,r)})),fa=bi((function(e,t,n,r){yi(t,ba(t),e,r)})),da=Vi(Yn);var pa=Br((function(e,t){e=ve(e);var n=-1,r=t.length,i=r>2?t[2]:void 0;for(i&&ao(t[0],t[1],i)&&(r=1);++n1),t})),yi(e,Gi(e),n),r&&(n=Xn(n,7,Wi));for(var i=t.length;i--;)Zr(n,t[i]);return n}));var Ca=Vi((function(e,t){return null==e?{}:function(e,t){return Nr(e,t,(function(t,n){return ma(e,n)}))}(e,t)}));function ka(e,t){if(null==e)return{};var n=dt(Gi(e),(function(e){return[e]}));return t=Xi(t),Nr(e,n,(function(e,n){return t(e,n[0])}))}var Ta=Bi(ba),xa=Bi(wa);function Aa(e){return null==e?[]:Ot(e,ba(e))}var Oa=Si((function(e,t,n){return t=t.toLowerCase(),e+(n?Pa(t):t)}));function Pa(e){return ja(aa(e).toLowerCase())}function Ia(e){return(e=aa(e))&&e.replace(le,Rt).replace(Ie,"")}var Na=Si((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Ma=Si((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ra=Di("toLowerCase");var Fa=Si((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()}));var La=Si((function(e,t,n){return e+(n?" ":"")+ja(t)}));var Ba=Si((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),ja=Di("toUpperCase");function Ua(e,t,n){return e=aa(e),void 0===(t=n?void 0:t)?function(e){return Fe.test(e)}(e)?function(e){return e.match(Me)||[]}(e):function(e){return e.match(Z)||[]}(e):e.match(t)||[]}var za=Br((function(e,t){try{return it(e,void 0,t)}catch(e){return ju(e)?e:new de(e)}})),Wa=Vi((function(e,t){return ut(t,(function(t){t=ko(t),$n(e,t,yu(e[t],e))})),e}));function Ha(e){return function(){return e}}var Va=Ti(),qa=Ti(!0);function Ga(e){return e}function $a(e){return Dr("function"==typeof e?e:Xn(e,1))}var Ya=Br((function(e,t){return function(n){return yr(n,e,t)}})),Ka=Br((function(e,t){return function(n){return yr(e,n,t)}}));function Xa(e,t,n){var r=ba(t),i=cr(t,r);null!=n||Hu(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=cr(t,ba(t)));var o=!(Hu(n)&&"chain"in n&&!n.chain),u=Uu(e);return ut(i,(function(n){var r=t[n];e[n]=r,u&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__),i=n.__actions__=gi(this.__actions__);return i.push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,pt([this.value()],arguments))})})),e}function Qa(){}var Ja=Pi(dt),Za=Pi(lt),el=Pi(mt);function tl(e){return lo(e)?St(ko(e)):function(e){return function(t){return fr(t,e)}}(e)}var nl=Ni(),rl=Ni(!0);function il(){return[]}function ol(){return!1}var ul=Oi((function(e,t){return e+t}),0),al=Fi("ceil"),ll=Oi((function(e,t){return e/t}),1),sl=Fi("floor");var cl,fl=Oi((function(e,t){return e*t}),1),dl=Fi("round"),pl=Oi((function(e,t){return e-t}),0);return xn.after=function(e,t){if("function"!=typeof t)throw new ye(i);return e=ra(e),function(){if(--e<1)return t.apply(this,arguments)}},xn.ary=mu,xn.assign=la,xn.assignIn=sa,xn.assignInWith=ca,xn.assignWith=fa,xn.at=da,xn.before=gu,xn.bind=yu,xn.bindAll=Wa,xn.bindKey=_u,xn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Nu(e)?e:[e]},xn.chain=tu,xn.chunk=function(e,t,n){t=(n?ao(e,t,n):void 0===t)?1:un(ra(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,u=0,a=r(Jt(i/t));oi?0:i+n),(r=void 0===r||r>i?i:ra(r))<0&&(r+=i),r=n>r?0:ia(r);n>>0)?(e=aa(e))&&("string"==typeof t||null!=t&&!Yu(t))&&!(t=Qr(t))&&Bt(e)?si(qt(e),0,n):e.split(t,n):[]},xn.spread=function(e,t){if("function"!=typeof e)throw new ye(i);return t=null==t?0:un(ra(t),0),Br((function(n){var r=n[t],i=si(n,0,t);return r&&pt(i,r),it(e,this,i)}))},xn.tail=function(e){var t=null==e?0:e.length;return t?qr(e,1,t):[]},xn.take=function(e,t,n){return e&&e.length?qr(e,0,(t=n||void 0===t?1:ra(t))<0?0:t):[]},xn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?qr(e,(t=r-(t=n||void 0===t?1:ra(t)))<0?0:t,r):[]},xn.takeRightWhile=function(e,t){return e&&e.length?ti(e,Xi(t,3),!1,!0):[]},xn.takeWhile=function(e,t){return e&&e.length?ti(e,Xi(t,3)):[]},xn.tap=function(e,t){return t(e),e},xn.throttle=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new ye(i);return Hu(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),bu(e,t,{leading:r,maxWait:t,trailing:o})},xn.thru=nu,xn.toArray=ta,xn.toPairs=Ta,xn.toPairsIn=xa,xn.toPath=function(e){return Nu(e)?dt(e,ko):Qu(e)?[e]:gi(Co(aa(e)))},xn.toPlainObject=ua,xn.transform=function(e,t,n){var r=Nu(e),i=r||Lu(e)||Ju(e);if(t=Xi(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Hu(e)&&Uu(o)?An(qe(e)):{}}return(i?ut:lr)(e,(function(e,r,i){return t(n,e,r,i)})),n},xn.unary=function(e){return mu(e,1)},xn.union=Vo,xn.unionBy=qo,xn.unionWith=Go,xn.uniq=function(e){return e&&e.length?Jr(e):[]},xn.uniqBy=function(e,t){return e&&e.length?Jr(e,Xi(t,2)):[]},xn.uniqWith=function(e,t){return t="function"==typeof t?t:void 0,e&&e.length?Jr(e,void 0,t):[]},xn.unset=function(e,t){return null==e||Zr(e,t)},xn.unzip=$o,xn.unzipWith=Yo,xn.update=function(e,t,n){return null==e?e:ei(e,t,ui(n))},xn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:void 0,null==e?e:ei(e,t,ui(n),r)},xn.values=Aa,xn.valuesIn=function(e){return null==e?[]:Ot(e,wa(e))},xn.without=Ko,xn.words=Ua,xn.wrap=function(e,t){return ku(ui(t),e)},xn.xor=Xo,xn.xorBy=Qo,xn.xorWith=Jo,xn.zip=Zo,xn.zipObject=function(e,t){return ii(e||[],t||[],Hn)},xn.zipObjectDeep=function(e,t){return ii(e||[],t||[],zr)},xn.zipWith=eu,xn.entries=Ta,xn.entriesIn=xa,xn.extend=sa,xn.extendWith=ca,Xa(xn,xn),xn.add=ul,xn.attempt=za,xn.camelCase=Oa,xn.capitalize=Pa,xn.ceil=al,xn.clamp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=oa(n))==n?n:0),void 0!==t&&(t=(t=oa(t))==t?t:0),Kn(oa(e),t,n)},xn.clone=function(e){return Xn(e,4)},xn.cloneDeep=function(e){return Xn(e,5)},xn.cloneDeepWith=function(e,t){return Xn(e,5,t="function"==typeof t?t:void 0)},xn.cloneWith=function(e,t){return Xn(e,4,t="function"==typeof t?t:void 0)},xn.conformsTo=function(e,t){return null==t||Qn(e,t,ba(t))},xn.deburr=Ia,xn.defaultTo=function(e,t){return null==e||e!=e?t:e},xn.divide=ll,xn.endsWith=function(e,t,n){e=aa(e),t=Qr(t);var r=e.length,i=n=void 0===n?r:Kn(ra(n),0,r);return(n-=t.length)>=0&&e.slice(n,i)==t},xn.eq=Au,xn.escape=function(e){return(e=aa(e))&&B.test(e)?e.replace(F,Ft):e},xn.escapeRegExp=function(e){return(e=aa(e))&&G.test(e)?e.replace(q,"\\$&"):e},xn.every=function(e,t,n){var r=Nu(e)?lt:nr;return n&&ao(e,t,n)&&(t=void 0),r(e,Xi(t,3))},xn.find=ou,xn.findIndex=Io,xn.findKey=function(e,t){return yt(e,Xi(t,3),lr)},xn.findLast=uu,xn.findLastIndex=No,xn.findLastKey=function(e,t){return yt(e,Xi(t,3),sr)},xn.floor=sl,xn.forEach=au,xn.forEachRight=lu,xn.forIn=function(e,t){return null==e?e:ur(e,Xi(t,3),wa)},xn.forInRight=function(e,t){return null==e?e:ar(e,Xi(t,3),wa)},xn.forOwn=function(e,t){return e&&lr(e,Xi(t,3))},xn.forOwnRight=function(e,t){return e&&sr(e,Xi(t,3))},xn.get=va,xn.gt=Ou,xn.gte=Pu,xn.has=function(e,t){return null!=e&&ro(e,t,vr)},xn.hasIn=ma,xn.head=Ro,xn.identity=Ga,xn.includes=function(e,t,n,r){e=Ru(e)?e:Aa(e),n=n&&!r?ra(n):0;var i=e.length;return n<0&&(n=un(i+n,0)),Xu(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&bt(e,t,n)>-1},xn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:ra(n);return i<0&&(i=un(r+i,0)),bt(e,t,i)},xn.inRange=function(e,t,n){return t=na(t),void 0===n?(n=t,t=0):n=na(n),function(e,t,n){return e>=an(t,n)&&e=-9007199254740991&&e<=9007199254740991},xn.isSet=Ku,xn.isString=Xu,xn.isSymbol=Qu,xn.isTypedArray=Ju,xn.isUndefined=function(e){return void 0===e},xn.isWeakMap=function(e){return Vu(e)&&no(e)==w},xn.isWeakSet=function(e){return Vu(e)&&"[object WeakSet]"==pr(e)},xn.join=function(e,t){return null==e?"":rn.call(e,t)},xn.kebabCase=Na,xn.last=jo,xn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r;return void 0!==n&&(i=(i=ra(n))<0?un(r+i,0):an(i,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,i):_t(e,Et,i,!0)},xn.lowerCase=Ma,xn.lowerFirst=Ra,xn.lt=Zu,xn.lte=ea,xn.max=function(e){return e&&e.length?rr(e,Ga,hr):void 0},xn.maxBy=function(e,t){return e&&e.length?rr(e,Xi(t,2),hr):void 0},xn.mean=function(e){return Dt(e,Ga)},xn.meanBy=function(e,t){return Dt(e,Xi(t,2))},xn.min=function(e){return e&&e.length?rr(e,Ga,kr):void 0},xn.minBy=function(e,t){return e&&e.length?rr(e,Xi(t,2),kr):void 0},xn.stubArray=il,xn.stubFalse=ol,xn.stubObject=function(){return{}},xn.stubString=function(){return""},xn.stubTrue=function(){return!0},xn.multiply=fl,xn.nth=function(e,t){return e&&e.length?Pr(e,ra(t)):void 0},xn.noConflict=function(){return Ge._===this&&(Ge._=Ae),this},xn.noop=Qa,xn.now=vu,xn.pad=function(e,t,n){e=aa(e);var r=(t=ra(t))?Vt(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Ii(Zt(i),n)+e+Ii(Jt(i),n)},xn.padEnd=function(e,t,n){e=aa(e);var r=(t=ra(t))?Vt(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var i=cn();return an(e+i*(t-e+We("1e-"+((i+"").length-1))),t)}return Fr(e,t)},xn.reduce=function(e,t,n){var r=Nu(e)?ht:kt,i=arguments.length<3;return r(e,Xi(t,4),n,i,er)},xn.reduceRight=function(e,t,n){var r=Nu(e)?vt:kt,i=arguments.length<3;return r(e,Xi(t,4),n,i,tr)},xn.repeat=function(e,t,n){return t=(n?ao(e,t,n):void 0===t)?1:ra(t),Lr(aa(e),t)},xn.replace=function(){var e=arguments,t=aa(e[0]);return e.length<3?t:t.replace(e[1],e[2])},xn.result=function(e,t,n){var r=-1,i=(t=ai(t,e)).length;for(i||(i=1,e=void 0);++r9007199254740991)return[];var n=4294967295,r=an(e,4294967295);e-=4294967295;for(var i=xt(r,t=Xi(t));++n=o)return e;var a=n-Vt(r);if(a<1)return r;var l=u?si(u,0,a).join(""):e.slice(0,a);if(void 0===i)return l+r;if(u&&(a+=l.length-a),Yu(i)){if(e.slice(a).search(i)){var s,c=l;for(i.global||(i=me(i.source,aa(ne.exec(i))+"g")),i.lastIndex=0;s=i.exec(c);)var f=s.index;l=l.slice(0,void 0===f?a:f)}}else if(e.indexOf(Qr(i),a)!=a){var d=l.lastIndexOf(i);d>-1&&(l=l.slice(0,d))}return l+r},xn.unescape=function(e){return(e=aa(e))&&L.test(e)?e.replace(R,Gt):e},xn.uniqueId=function(e){var t=++Ce;return aa(e)+t},xn.upperCase=Ba,xn.upperFirst=ja,xn.each=au,xn.eachRight=lu,xn.first=Ro,Xa(xn,(cl={},lr(xn,(function(e,t){Se.call(xn.prototype,t)||(cl[t]=e)})),cl),{chain:!1}),xn.VERSION="4.17.20",ut(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){xn[e].placeholder=xn})),ut(["drop","take"],(function(e,t){In.prototype[e]=function(n){n=void 0===n?1:un(ra(n),0);var r=this.__filtered__&&!t?new In(this):this.clone();return r.__filtered__?r.__takeCount__=an(n,r.__takeCount__):r.__views__.push({size:an(n,4294967295),type:e+(r.__dir__<0?"Right":"")}),r},In.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),ut(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;In.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Xi(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),ut(["head","last"],(function(e,t){var n="take"+(t?"Right":"");In.prototype[e]=function(){return this[n](1).value()[0]}})),ut(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");In.prototype[e]=function(){return this.__filtered__?new In(this):this[n](1)}})),In.prototype.compact=function(){return this.filter(Ga)},In.prototype.find=function(e){return this.filter(e).head()},In.prototype.findLast=function(e){return this.reverse().find(e)},In.prototype.invokeMap=Br((function(e,t){return"function"==typeof e?new In(this):this.map((function(n){return yr(n,e,t)}))})),In.prototype.reject=function(e){return this.filter(Su(Xi(e)))},In.prototype.slice=function(e,t){e=ra(e);var n=this;return n.__filtered__&&(e>0||t<0)?new In(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=ra(t))<0?n.dropRight(-t):n.take(t-e)),n)},In.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},In.prototype.toArray=function(){return this.take(4294967295)},lr(In.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),i=xn[r?"take"+("last"==t?"Right":""):t],o=r||/^find/.test(t);i&&(xn.prototype[t]=function(){var t=this.__wrapped__,u=r?[1]:arguments,a=t instanceof In,l=u[0],s=a||Nu(t),c=function(e){var t=i.apply(xn,pt([e],u));return r&&f?t[0]:t};s&&n&&"function"==typeof l&&1!=l.length&&(a=s=!1);var f=this.__chain__,d=!!this.__actions__.length,p=o&&!f,h=a&&!d;if(!o&&s){t=h?t:new In(this);var v=e.apply(t,u);return v.__actions__.push({func:nu,args:[c],thisArg:void 0}),new Pn(v,f)}return p&&h?e.apply(this,u):(v=this.thru(c),p?r?v.value()[0]:v.value():v)})})),ut(["pop","push","shift","sort","splice","unshift"],(function(e){var t=_e[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);xn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Nu(i)?i:[],e)}return this[n]((function(n){return t.apply(Nu(n)?n:[],e)}))}})),lr(In.prototype,(function(e,t){var n=xn[t];if(n){var r=n.name+"";Se.call(_n,r)||(_n[r]=[]),_n[r].push({name:t,func:n})}})),_n[xi(void 0,2).name]=[{name:"wrapper",func:void 0}],In.prototype.clone=function(){var e=new In(this.__wrapped__);return e.__actions__=gi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=gi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=gi(this.__views__),e},In.prototype.reverse=function(){if(this.__filtered__){var e=new In(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},In.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Nu(e),r=t<0,i=n?e.length:0,o=function(e,t,n){var r=-1,i=n.length;for(;++r=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},xn.prototype.plant=function(e){for(var t,n=this;n instanceof On;){var r=xo(n);r.__index__=0,r.__values__=void 0,t?i.__wrapped__=r:t=r;var i=r;n=n.__wrapped__}return i.__wrapped__=e,t},xn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof In){var t=e;return this.__actions__.length&&(t=new In(this)),(t=t.reverse()).__actions__.push({func:nu,args:[Ho],thisArg:void 0}),new Pn(t,this.__chain__)}return this.thru(Ho)},xn.prototype.toJSON=xn.prototype.valueOf=xn.prototype.value=function(){return ni(this.__wrapped__,this.__actions__)},xn.prototype.first=xn.prototype.head,gt&&(xn.prototype[gt]=function(){return this}),xn}();Ge._=$t,void 0===(r=function(){return $t}.call(t,n,t,e))||(e.exports=r)}.call(this)},1573:e=>{"use strict";const t=(e,t)=>{for(const n of Reflect.ownKeys(t))Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n));return e};e.exports=t,e.exports.default=t},9381:e=>{"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function i(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var u,a,l=i(e),s=1;s{"use strict";const r=n(1573),i=new WeakMap,o=(e,t={})=>{if("function"!=typeof e)throw new TypeError("Expected a function");let n,o=!1,u=0;const a=e.displayName||e.name||"",l=function(...r){if(i.set(l,++u),o){if(!0===t.throw)throw new Error(`Function \`${a}\` can only be called once`);return n}return o=!0,n=e.apply(this,r),e=null,n};return r(l,e),i.set(l,u),l};e.exports=o,e.exports.default=o,e.exports.callCount=e=>{if(!i.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return i.get(e)}},8070:(e,t,n)=>{"use strict";const r=n(2413),i=["assert","count","countReset","debug","dir","dirxml","error","group","groupCollapsed","groupEnd","info","log","table","time","timeEnd","timeLog","trace","warn"];let o={};e.exports=e=>{const t=new r.PassThrough,n=new r.PassThrough;t.write=t=>e("stdout",t),n.write=t=>e("stderr",t);const u=new console.Console(t,n);for(const e of i)o[e]=console[e],console[e]=u[e];return()=>{for(const e of i)console[e]=o[e];o={}}}},5187:e=>{window,e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=20)}([function(e,t,n){"use strict";e.exports=n(12)},function(e,t,n){"use strict"; +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/var r=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable;function u(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,t){for(var n,a,l=u(e),s=1;s=t||n<0||f&&e-s>=o}function w(){var e=h();if(b(e))return E(e);a=setTimeout(w,function(e){var n=t-(e-l);return f?p(n,o-(e-s)):n}(e))}function E(e){return a=void 0,m&&r?y(e):(r=i=void 0,u)}function D(){var e=h(),n=b(e);if(r=arguments,i=this,l=e,n){if(void 0===a)return _(l);if(f)return a=setTimeout(w,t),y(l)}return void 0===a&&(a=setTimeout(w,t)),u}return t=g(t)||0,v(n)&&(c=!!n.leading,o=(f="maxWait"in n)?d(g(n.maxWait)||0,t):o,m="trailing"in n?!!n.trailing:m),D.cancel=function(){void 0!==a&&clearTimeout(a),s=0,r=l=i=a=void 0},D.flush=function(){return void 0===a?u:E(h())},D}(e,t,{leading:r,maxWait:t,trailing:i})}}).call(this,n(4))},function(e,t,n){(function(n){function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var i;t=e.exports=p,i="object"===(void 0===n?"undefined":r(n))&&n.env&&n.env.NODE_DEBUG&&/\bsemver\b/i.test(n.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var o=Number.MAX_SAFE_INTEGER||9007199254740991,u=t.re=[],a=t.src=[],l=t.tokens={},s=0;function c(e){l[e]=s++}c("NUMERICIDENTIFIER"),a[l.NUMERICIDENTIFIER]="0|[1-9]\\d*",c("NUMERICIDENTIFIERLOOSE"),a[l.NUMERICIDENTIFIERLOOSE]="[0-9]+",c("NONNUMERICIDENTIFIER"),a[l.NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-][a-zA-Z0-9-]*",c("MAINVERSION"),a[l.MAINVERSION]="("+a[l.NUMERICIDENTIFIER]+")\\.("+a[l.NUMERICIDENTIFIER]+")\\.("+a[l.NUMERICIDENTIFIER]+")",c("MAINVERSIONLOOSE"),a[l.MAINVERSIONLOOSE]="("+a[l.NUMERICIDENTIFIERLOOSE]+")\\.("+a[l.NUMERICIDENTIFIERLOOSE]+")\\.("+a[l.NUMERICIDENTIFIERLOOSE]+")",c("PRERELEASEIDENTIFIER"),a[l.PRERELEASEIDENTIFIER]="(?:"+a[l.NUMERICIDENTIFIER]+"|"+a[l.NONNUMERICIDENTIFIER]+")",c("PRERELEASEIDENTIFIERLOOSE"),a[l.PRERELEASEIDENTIFIERLOOSE]="(?:"+a[l.NUMERICIDENTIFIERLOOSE]+"|"+a[l.NONNUMERICIDENTIFIER]+")",c("PRERELEASE"),a[l.PRERELEASE]="(?:-("+a[l.PRERELEASEIDENTIFIER]+"(?:\\."+a[l.PRERELEASEIDENTIFIER]+")*))",c("PRERELEASELOOSE"),a[l.PRERELEASELOOSE]="(?:-?("+a[l.PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+a[l.PRERELEASEIDENTIFIERLOOSE]+")*))",c("BUILDIDENTIFIER"),a[l.BUILDIDENTIFIER]="[0-9A-Za-z-]+",c("BUILD"),a[l.BUILD]="(?:\\+("+a[l.BUILDIDENTIFIER]+"(?:\\."+a[l.BUILDIDENTIFIER]+")*))",c("FULL"),c("FULLPLAIN"),a[l.FULLPLAIN]="v?"+a[l.MAINVERSION]+a[l.PRERELEASE]+"?"+a[l.BUILD]+"?",a[l.FULL]="^"+a[l.FULLPLAIN]+"$",c("LOOSEPLAIN"),a[l.LOOSEPLAIN]="[v=\\s]*"+a[l.MAINVERSIONLOOSE]+a[l.PRERELEASELOOSE]+"?"+a[l.BUILD]+"?",c("LOOSE"),a[l.LOOSE]="^"+a[l.LOOSEPLAIN]+"$",c("GTLT"),a[l.GTLT]="((?:<|>)?=?)",c("XRANGEIDENTIFIERLOOSE"),a[l.XRANGEIDENTIFIERLOOSE]=a[l.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*",c("XRANGEIDENTIFIER"),a[l.XRANGEIDENTIFIER]=a[l.NUMERICIDENTIFIER]+"|x|X|\\*",c("XRANGEPLAIN"),a[l.XRANGEPLAIN]="[v=\\s]*("+a[l.XRANGEIDENTIFIER]+")(?:\\.("+a[l.XRANGEIDENTIFIER]+")(?:\\.("+a[l.XRANGEIDENTIFIER]+")(?:"+a[l.PRERELEASE]+")?"+a[l.BUILD]+"?)?)?",c("XRANGEPLAINLOOSE"),a[l.XRANGEPLAINLOOSE]="[v=\\s]*("+a[l.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+a[l.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+a[l.XRANGEIDENTIFIERLOOSE]+")(?:"+a[l.PRERELEASELOOSE]+")?"+a[l.BUILD]+"?)?)?",c("XRANGE"),a[l.XRANGE]="^"+a[l.GTLT]+"\\s*"+a[l.XRANGEPLAIN]+"$",c("XRANGELOOSE"),a[l.XRANGELOOSE]="^"+a[l.GTLT]+"\\s*"+a[l.XRANGEPLAINLOOSE]+"$",c("COERCE"),a[l.COERCE]="(^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])",c("COERCERTL"),u[l.COERCERTL]=new RegExp(a[l.COERCE],"g"),c("LONETILDE"),a[l.LONETILDE]="(?:~>?)",c("TILDETRIM"),a[l.TILDETRIM]="(\\s*)"+a[l.LONETILDE]+"\\s+",u[l.TILDETRIM]=new RegExp(a[l.TILDETRIM],"g"),c("TILDE"),a[l.TILDE]="^"+a[l.LONETILDE]+a[l.XRANGEPLAIN]+"$",c("TILDELOOSE"),a[l.TILDELOOSE]="^"+a[l.LONETILDE]+a[l.XRANGEPLAINLOOSE]+"$",c("LONECARET"),a[l.LONECARET]="(?:\\^)",c("CARETTRIM"),a[l.CARETTRIM]="(\\s*)"+a[l.LONECARET]+"\\s+",u[l.CARETTRIM]=new RegExp(a[l.CARETTRIM],"g"),c("CARET"),a[l.CARET]="^"+a[l.LONECARET]+a[l.XRANGEPLAIN]+"$",c("CARETLOOSE"),a[l.CARETLOOSE]="^"+a[l.LONECARET]+a[l.XRANGEPLAINLOOSE]+"$",c("COMPARATORLOOSE"),a[l.COMPARATORLOOSE]="^"+a[l.GTLT]+"\\s*("+a[l.LOOSEPLAIN]+")$|^$",c("COMPARATOR"),a[l.COMPARATOR]="^"+a[l.GTLT]+"\\s*("+a[l.FULLPLAIN]+")$|^$",c("COMPARATORTRIM"),a[l.COMPARATORTRIM]="(\\s*)"+a[l.GTLT]+"\\s*("+a[l.LOOSEPLAIN]+"|"+a[l.XRANGEPLAIN]+")",u[l.COMPARATORTRIM]=new RegExp(a[l.COMPARATORTRIM],"g"),c("HYPHENRANGE"),a[l.HYPHENRANGE]="^\\s*("+a[l.XRANGEPLAIN]+")\\s+-\\s+("+a[l.XRANGEPLAIN]+")\\s*$",c("HYPHENRANGELOOSE"),a[l.HYPHENRANGELOOSE]="^\\s*("+a[l.XRANGEPLAINLOOSE]+")\\s+-\\s+("+a[l.XRANGEPLAINLOOSE]+")\\s*$",c("STAR"),a[l.STAR]="(<|>)?=?\\s*\\*";for(var f=0;f256)return null;if(!(t.loose?u[l.LOOSE]:u[l.FULL]).test(e))return null;try{return new p(e,t)}catch(e){return null}}function p(e,t){if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof p){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>256)throw new TypeError("version is longer than 256 characters");if(!(this instanceof p))return new p(e,t);i("SemVer",e,t),this.options=t,this.loose=!!t.loose;var n=e.trim().match(t.loose?u[l.LOOSE]:u[l.FULL]);if(!n)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);-1===n&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,n,r){"string"==typeof n&&(r=n,n=void 0);try{return new p(e,n).inc(t,r).version}catch(e){return null}},t.diff=function(e,t){if(_(e,t))return null;var n=d(e),r=d(t),i="";if(n.prerelease.length||r.prerelease.length){i="pre";var o="prerelease"}for(var u in n)if(("major"===u||"minor"===u||"patch"===u)&&n[u]!==r[u])return i+u;return o},t.compareIdentifiers=v;var h=/^[0-9]+$/;function v(e,t){var n=h.test(e),r=h.test(t);return n&&r&&(e=+e,t=+t),e===t?0:n&&!r?-1:r&&!n?1:e0}function y(e,t,n){return m(e,t,n)<0}function _(e,t,n){return 0===m(e,t,n)}function b(e,t,n){return 0!==m(e,t,n)}function w(e,t,n){return m(e,t,n)>=0}function E(e,t,n){return m(e,t,n)<=0}function D(e,t,n,i){switch(t){case"===":return"object"===r(e)&&(e=e.version),"object"===r(n)&&(n=n.version),e===n;case"!==":return"object"===r(e)&&(e=e.version),"object"===r(n)&&(n=n.version),e!==n;case"":case"=":case"==":return _(e,n,i);case"!=":return b(e,n,i);case">":return g(e,n,i);case">=":return w(e,n,i);case"<":return y(e,n,i);case"<=":return E(e,n,i);default:throw new TypeError("Invalid operator: "+t)}}function S(e,t){if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof S){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof S))return new S(e,t);i("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===C?this.value="":this.value=this.operator+this.semver.version,i("comp",this)}t.rcompareIdentifiers=function(e,t){return v(t,e)},t.major=function(e,t){return new p(e,t).major},t.minor=function(e,t){return new p(e,t).minor},t.patch=function(e,t){return new p(e,t).patch},t.compare=m,t.compareLoose=function(e,t){return m(e,t,!0)},t.compareBuild=function(e,t,n){var r=new p(e,n),i=new p(t,n);return r.compare(i)||r.compareBuild(i)},t.rcompare=function(e,t,n){return m(t,e,n)},t.sort=function(e,n){return e.sort((function(e,r){return t.compareBuild(e,r,n)}))},t.rsort=function(e,n){return e.sort((function(e,r){return t.compareBuild(r,e,n)}))},t.gt=g,t.lt=y,t.eq=_,t.neq=b,t.gte=w,t.lte=E,t.cmp=D,t.Comparator=S;var C={};function k(e,t){if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof k)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new k(e.raw,t);if(e instanceof S)return new k(e.value,t);if(!(this instanceof k))return new k(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function T(e,t){for(var n=!0,r=e.slice(),i=r.pop();n&&r.length;)n=r.every((function(e){return i.intersects(e,t)})),i=r.pop();return n}function x(e){return!e||"x"===e.toLowerCase()||"*"===e}function A(e,t,n,r,i,o,u,a,l,s,c,f,d){return((t=x(n)?"":x(r)?">="+n+".0.0":x(i)?">="+n+"."+r+".0":">="+t)+" "+(a=x(l)?"":x(s)?"<"+(+l+1)+".0.0":x(c)?"<"+l+"."+(+s+1)+".0":f?"<="+l+"."+s+"."+c+"-"+f:"<="+a)).trim()}function O(e,t,n){for(var r=0;r0){var o=e[r].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}function P(e,t,n){try{t=new k(t,n)}catch(e){return!1}return t.test(e)}function I(e,t,n,r){var i,o,u,a,l;switch(e=new p(e,r),t=new k(t,r),n){case">":i=g,o=E,u=y,a=">",l=">=";break;case"<":i=y,o=w,u=g,a="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(P(e,t,r))return!1;for(var s=0;s=0.0.0")),f=f||e,d=d||e,i(e.semver,f.semver,r)?f=e:u(e.semver,d.semver,r)&&(d=e)})),f.operator===a||f.operator===l)return!1;if((!d.operator||d.operator===a)&&o(e,d.semver))return!1;if(d.operator===l&&u(e,d.semver))return!1}return!0}S.prototype.parse=function(e){var t=this.options.loose?u[l.COMPARATORLOOSE]:u[l.COMPARATOR],n=e.match(t);if(!n)throw new TypeError("Invalid comparator: "+e);this.operator=void 0!==n[1]?n[1]:"","="===this.operator&&(this.operator=""),n[2]?this.semver=new p(n[2],this.options.loose):this.semver=C},S.prototype.toString=function(){return this.value},S.prototype.test=function(e){if(i("Comparator.test",e,this.options.loose),this.semver===C||e===C)return!0;if("string"==typeof e)try{e=new p(e,this.options)}catch(e){return!1}return D(e,this.operator,this.semver,this.options)},S.prototype.intersects=function(e,t){if(!(e instanceof S))throw new TypeError("a Comparator is required");var n;if(t&&"object"===r(t)||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return""===this.value||(n=new k(e.value,t),P(this.value,n,t));if(""===e.operator)return""===e.value||(n=new k(this.value,t),P(e.semver,n,t));var i=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),o=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),u=this.semver.version===e.semver.version,a=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),l=D(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),s=D(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return i||o||u&&a||l||s},t.Range=k,k.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},k.prototype.toString=function(){return this.range},k.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var n=t?u[l.HYPHENRANGELOOSE]:u[l.HYPHENRANGE];e=e.replace(n,A),i("hyphen replace",e),e=e.replace(u[l.COMPARATORTRIM],"$1$2$3"),i("comparator trim",e,u[l.COMPARATORTRIM]),e=(e=(e=e.replace(u[l.TILDETRIM],"$1~")).replace(u[l.CARETTRIM],"$1^")).split(/\s+/).join(" ");var r=t?u[l.COMPARATORLOOSE]:u[l.COMPARATOR],o=e.split(" ").map((function(e){return function(e,t){return i("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){i("caret",e,t);var n=t.loose?u[l.CARETLOOSE]:u[l.CARET];return e.replace(n,(function(t,n,r,o,u){var a;return i("caret",e,t,n,r,o,u),x(n)?a="":x(r)?a=">="+n+".0.0 <"+(+n+1)+".0.0":x(o)?a="0"===n?">="+n+"."+r+".0 <"+n+"."+(+r+1)+".0":">="+n+"."+r+".0 <"+(+n+1)+".0.0":u?(i("replaceCaret pr",u),a="0"===n?"0"===r?">="+n+"."+r+"."+o+"-"+u+" <"+n+"."+r+"."+(+o+1):">="+n+"."+r+"."+o+"-"+u+" <"+n+"."+(+r+1)+".0":">="+n+"."+r+"."+o+"-"+u+" <"+(+n+1)+".0.0"):(i("no pr"),a="0"===n?"0"===r?">="+n+"."+r+"."+o+" <"+n+"."+r+"."+(+o+1):">="+n+"."+r+"."+o+" <"+n+"."+(+r+1)+".0":">="+n+"."+r+"."+o+" <"+(+n+1)+".0.0"),i("caret return",a),a}))}(e,t)})).join(" ")}(e,t),i("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var n=t.loose?u[l.TILDELOOSE]:u[l.TILDE];return e.replace(n,(function(t,n,r,o,u){var a;return i("tilde",e,t,n,r,o,u),x(n)?a="":x(r)?a=">="+n+".0.0 <"+(+n+1)+".0.0":x(o)?a=">="+n+"."+r+".0 <"+n+"."+(+r+1)+".0":u?(i("replaceTilde pr",u),a=">="+n+"."+r+"."+o+"-"+u+" <"+n+"."+(+r+1)+".0"):a=">="+n+"."+r+"."+o+" <"+n+"."+(+r+1)+".0",i("tilde return",a),a}))}(e,t)})).join(" ")}(e,t),i("tildes",e),e=function(e,t){return i("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var n=t.loose?u[l.XRANGELOOSE]:u[l.XRANGE];return e.replace(n,(function(n,r,o,u,a,l){i("xRange",e,n,r,o,u,a,l);var s=x(o),c=s||x(u),f=c||x(a),d=f;return"="===r&&d&&(r=""),l=t.includePrerelease?"-0":"",s?n=">"===r||"<"===r?"<0.0.0-0":"*":r&&d?(c&&(u=0),a=0,">"===r?(r=">=",c?(o=+o+1,u=0,a=0):(u=+u+1,a=0)):"<="===r&&(r="<",c?o=+o+1:u=+u+1),n=r+o+"."+u+"."+a+l):c?n=">="+o+".0.0"+l+" <"+(+o+1)+".0.0"+l:f&&(n=">="+o+"."+u+".0"+l+" <"+o+"."+(+u+1)+".0"+l),i("xRange return",n),n}))}(e,t)})).join(" ")}(e,t),i("xrange",e),e=function(e,t){return i("replaceStars",e,t),e.trim().replace(u[l.STAR],"")}(e,t),i("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(o=o.filter((function(e){return!!e.match(r)}))),o.map((function(e){return new S(e,this.options)}),this)},k.prototype.intersects=function(e,t){if(!(e instanceof k))throw new TypeError("a Range is required");return this.set.some((function(n){return T(n,t)&&e.set.some((function(e){return T(e,t)&&n.every((function(n){return e.every((function(e){return n.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new k(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},k.prototype.test=function(e){if(!e)return!1;if("string"==typeof e)try{e=new p(e,this.options)}catch(e){return!1}for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":n&&!g(n,t)||(n=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}));return n&&e.test(n)?n:null},t.validRange=function(e,t){try{return new k(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,n){return I(e,t,"<",n)},t.gtr=function(e,t,n){return I(e,t,">",n)},t.outside=I,t.prerelease=function(e,t){var n=d(e,t);return n&&n.prerelease.length?n.prerelease:null},t.intersects=function(e,t,n){return e=new k(e,n),t=new k(t,n),e.intersects(t)},t.coerce=function(e,t){if(e instanceof p)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;var n=null;if((t=t||{}).rtl){for(var r;(r=u[l.COERCERTL].exec(e))&&(!n||n.index+n[0].length!==e.length);)n&&r.index+r[0].length===n.index+n[0].length||(n=r),u[l.COERCERTL].lastIndex=r.index+r[1].length+r[2].length;u[l.COERCERTL].lastIndex=-1}else n=e.match(u[l.COERCE]);return null===n?null:d(n[2]+"."+(n[3]||"0")+"."+(n[4]||"0"),t)}}).call(this,n(5))},function(e,t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":n(window))&&(r=window)}e.exports=r},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function u(){throw new Error("clearTimeout has not been defined")}function a(e){if(n===setTimeout)return setTimeout(e,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:u}catch(e){r=u}}();var l,s=[],c=!1,f=-1;function d(){c&&l&&(c=!1,l.length?s=l.concat(s):f=-1,s.length&&p())}function p(){if(!c){var e=a(d);c=!0;for(var t=s.length;t;){for(l=s,s=[];++f1)for(var n=1;nthis[u])return w(this,this[h].get(e)),!1;var o=this[h].get(e).value;return this[f]&&(this[d]||this[f](e,o.value)),o.now=r,o.maxAge=n,o.value=t,this[a]+=i-o.length,o.length=i,this.get(e),b(this),!0}var s=new E(e,t,i,r,n);return s.length>this[u]?(this[f]&&this[f](e,t),!1):(this[a]+=s.length,this[p].unshift(s),this[h].set(e,this[p].head),b(this),!0)}},{key:"has",value:function(e){if(!this[h].has(e))return!1;var t=this[h].get(e).value;return!_(this,t)}},{key:"get",value:function(e){return y(this,e,!0)}},{key:"peek",value:function(e){return y(this,e,!1)}},{key:"pop",value:function(){var e=this[p].tail;return e?(w(this,e),e.value):null}},{key:"del",value:function(e){w(this,this[h].get(e))}},{key:"load",value:function(e){this.reset();for(var t=Date.now(),n=e.length-1;n>=0;n--){var r=e[n],i=r.e||0;if(0===i)this.set(r.k,r.v);else{var o=i-t;o>0&&this.set(r.k,r.v,o)}}}},{key:"prune",value:function(){var e=this;this[h].forEach((function(t,n){return y(e,n,!1)}))}},{key:"max",set:function(e){if("number"!=typeof e||e<0)throw new TypeError("max must be a non-negative number");this[u]=e||1/0,b(this)},get:function(){return this[u]}},{key:"allowStale",set:function(e){this[s]=!!e},get:function(){return this[s]}},{key:"maxAge",set:function(e){if("number"!=typeof e)throw new TypeError("maxAge must be a non-negative number");this[c]=e,b(this)},get:function(){return this[c]}},{key:"lengthCalculator",set:function(e){var t=this;"function"!=typeof e&&(e=m),e!==this[l]&&(this[l]=e,this[a]=0,this[p].forEach((function(e){e.length=t[l](e.value,e.key),t[a]+=e.length}))),b(this)},get:function(){return this[l]}},{key:"length",get:function(){return this[a]}},{key:"itemCount",get:function(){return this[p].length}}])&&i(t.prototype,n),e}(),y=function(e,t,n){var r=e[h].get(t);if(r){var i=r.value;if(_(e,i)){if(w(e,r),!e[s])return}else n&&(e[v]&&(r.value.now=Date.now()),e[p].unshiftNode(r));return i.value}},_=function(e,t){if(!t||!t.maxAge&&!e[c])return!1;var n=Date.now()-t.now;return t.maxAge?n>t.maxAge:e[c]&&n>e[c]},b=function(e){if(e[a]>e[u])for(var t=e[p].tail;e[a]>e[u]&&null!==t;){var n=t.prev;w(e,t),t=n}},w=function(e,t){if(t){var n=t.value;e[f]&&e[f](n.key,n.value),e[a]-=n.length,e[h].delete(n.key),e[p].removeNode(t)}},E=function e(t,n,i,o,u){r(this,e),this.key=t,this.value=n,this.length=i,this.now=o,this.maxAge=u||0},D=function(e,t,n,r){var i=n.value;_(e,i)&&(w(e,n),e[s]||(i=void 0)),i&&t.call(r,i.value,i.key,e)};e.exports=g},function(e,t,n){(function(t){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}e.exports=function(){if("undefined"==typeof document||!document.addEventListener)return null;var r,i,o,u={};return u.copy=function(){var e=!1,t=null,n=!1;function r(){e=!1,t=null,n&&window.getSelection().removeAllRanges(),n=!1}return document.addEventListener("copy",(function(n){if(e){for(var r in t)n.clipboardData.setData(r,t[r]);n.preventDefault()}})),function(i){return new Promise((function(o,u){e=!0,"string"==typeof i?t={"text/plain":i}:i instanceof Node?t={"text/html":(new XMLSerializer).serializeToString(i)}:i instanceof Object?t=i:u("Invalid data type. Must be string, DOM node, or an object mapping MIME types to strings."),function e(t){try{if(document.execCommand("copy"))r(),o();else{if(t)throw r(),new Error("Unable to copy. Perhaps it's not available in your browser?");!function(){var e=document.getSelection();if(!document.queryCommandEnabled("copy")&&e.isCollapsed){var t=document.createRange();t.selectNodeContents(document.body),e.removeAllRanges(),e.addRange(t),n=!0}}(),e(!0)}}catch(e){r(),u(e)}}(!1)}))}}(),u.paste=(o=!1,document.addEventListener("paste",(function(e){if(o){o=!1,e.preventDefault();var t=r;r=null,t(e.clipboardData.getData(i))}})),function(e){return new Promise((function(t,n){o=!0,r=t,i=e||"text/plain";try{document.execCommand("paste")||(o=!1,n(new Error("Unable to paste. Pasting only works in Internet Explorer at the moment.")))}catch(e){o=!1,n(new Error(e))}}))}),"undefined"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData&&( +/*! promise-polyfill 2.0.1 */ +function(r){function i(e,t){return function(){e.apply(t,arguments)}}function o(e){if("object"!=n(this))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],f(e,i(a,this),i(l,this))}function u(e){var t=this;return null===this._state?void this._deferreds.push(e):void d((function(){var n=t._state?e.onFulfilled:e.onRejected;if(null!==n){var r;try{r=n(t._value)}catch(t){return void e.reject(t)}e.resolve(r)}else(t._state?e.resolve:e.reject)(t._value)}))}function a(e){try{if(e===this)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==n(e)||"function"==typeof e)){var t=e.then;if("function"==typeof t)return void f(i(t,e),i(a,this),i(l,this))}this._state=!0,this._value=e,s.call(this)}catch(e){l.call(this,e)}}function l(e){this._state=!1,this._value=e,s.call(this)}function s(){for(var e=0,t=this._deferreds.length;t>e;e++)u.call(this,this._deferreds[e]);this._deferreds=null}function c(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function f(e,t,n){var r=!1;try{e((function(e){r||(r=!0,t(e))}),(function(e){r||(r=!0,n(e))}))}catch(e){if(r)return;r=!0,n(e)}}var d=o.immediateFn||"function"==typeof t&&t||function(e){setTimeout(e,1)},p=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var n=this;return new o((function(r,i){u.call(n,new c(e,t,r,i))}))},o.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&p(arguments[0])?arguments[0]:arguments);return new o((function(t,r){function i(u,a){try{if(a&&("object"==n(a)||"function"==typeof a)){var l=a.then;if("function"==typeof l)return void l.call(a,(function(e){i(u,e)}),r)}e[u]=a,0==--o&&t(e)}catch(e){r(e)}}if(0===e.length)return t([]);for(var o=e.length,u=0;ur;r++)e[r].then(t,n)}))},e.exports?e.exports=o:r.Promise||(r.Promise=o)}(this),u.copy=function(e){return new Promise((function(t,n){if("string"!=typeof e&&!("text/plain"in e))throw new Error("You must provide a text/plain type.");var r="string"==typeof e?e:e["text/plain"];window.clipboardData.setData("Text",r)?t():n(new Error("Copying was rejected."))}))},u.paste=function(){return new Promise((function(e,t){var n=window.clipboardData.getData("Text");n?e(n):t(new Error("Pasting was rejected."))}))}),u}()}).call(this,n(13).setImmediate)},function(e,t,n){"use strict";e.exports=n(15)},function(e,t,n){"use strict";n.r(t),t.default=":root {\n /**\n * IMPORTANT: When new theme variables are added below– also add them to SettingsContext updateThemeVariables()\n */\n\n /* Light theme */\n --light-color-attribute-name: #ef6632;\n --light-color-attribute-name-not-editable: #23272f;\n --light-color-attribute-name-inverted: rgba(255, 255, 255, 0.7);\n --light-color-attribute-value: #1a1aa6;\n --light-color-attribute-value-inverted: #ffffff;\n --light-color-attribute-editable-value: #1a1aa6;\n --light-color-background: #ffffff;\n --light-color-background-hover: rgba(0, 136, 250, 0.1);\n --light-color-background-inactive: #e5e5e5;\n --light-color-background-invalid: #fff0f0;\n --light-color-background-selected: #0088fa;\n --light-color-button-background: #ffffff;\n --light-color-button-background-focus: #ededed;\n --light-color-button: #5f6673;\n --light-color-button-disabled: #cfd1d5;\n --light-color-button-active: #0088fa;\n --light-color-button-focus: #23272f;\n --light-color-button-hover: #23272f;\n --light-color-border: #eeeeee;\n --light-color-commit-did-not-render-fill: #cfd1d5;\n --light-color-commit-did-not-render-fill-text: #000000;\n --light-color-commit-did-not-render-pattern: #cfd1d5;\n --light-color-commit-did-not-render-pattern-text: #333333;\n --light-color-commit-gradient-0: #37afa9;\n --light-color-commit-gradient-1: #63b19e;\n --light-color-commit-gradient-2: #80b393;\n --light-color-commit-gradient-3: #97b488;\n --light-color-commit-gradient-4: #abb67d;\n --light-color-commit-gradient-5: #beb771;\n --light-color-commit-gradient-6: #cfb965;\n --light-color-commit-gradient-7: #dfba57;\n --light-color-commit-gradient-8: #efbb49;\n --light-color-commit-gradient-9: #febc38;\n --light-color-commit-gradient-text: #000000;\n --light-color-component-name: #6a51b2;\n --light-color-component-name-inverted: #ffffff;\n --light-color-component-badge-background: rgba(0, 0, 0, 0.1);\n --light-color-component-badge-background-inverted: rgba(255, 255, 255, 0.25);\n --light-color-component-badge-count: #777d88;\n --light-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\n --light-color-context-background: rgba(0,0,0,.9);\n --light-color-context-background-hover: rgba(255, 255, 255, 0.1);\n --light-color-context-background-selected: #178fb9;\n --light-color-context-border: #3d424a;\n --light-color-context-text: #ffffff;\n --light-color-context-text-selected: #ffffff;\n --light-color-dim: #777d88;\n --light-color-dimmer: #cfd1d5;\n --light-color-dimmest: #eff0f1;\n --light-color-error-background: hsl(0, 100%, 97%);\n --light-color-error-border: hsl(0, 100%, 92%);\n --light-color-error-text: #ff0000;\n --light-color-expand-collapse-toggle: #777d88;\n --light-color-link: #0000ff;\n --light-color-modal-background: rgba(255, 255, 255, 0.75);\n --light-color-record-active: #fc3a4b;\n --light-color-record-hover: #3578e5;\n --light-color-record-inactive: #0088fa;\n --light-color-scroll-thumb: #c2c2c2;\n --light-color-scroll-track: #fafafa;\n --light-color-search-match: yellow;\n --light-color-search-match-current: #f7923b;\n --light-color-selected-tree-highlight-active: rgba(0, 136, 250, 0.1);\n --light-color-selected-tree-highlight-inactive: rgba(0, 0, 0, 0.05);\n --light-color-shadow: rgba(0, 0, 0, 0.25);\n --light-color-tab-selected-border: #0088fa;\n --light-color-text: #000000;\n --light-color-text-invalid: #ff0000;\n --light-color-text-selected: #ffffff;\n --light-color-toggle-background-invalid: #fc3a4b;\n --light-color-toggle-background-on: #0088fa;\n --light-color-toggle-background-off: #cfd1d5;\n --light-color-toggle-text: #ffffff;\n --light-color-tooltip-background: rgba(0, 0, 0, 0.9);\n --light-color-tooltip-text: #ffffff;\n\n /* Dark theme */\n --dark-color-attribute-name: #9d87d2;\n --dark-color-attribute-name-not-editable: #ededed;\n --dark-color-attribute-name-inverted: #282828;\n --dark-color-attribute-value: #cedae0;\n --dark-color-attribute-value-inverted: #ffffff;\n --dark-color-attribute-editable-value: yellow;\n --dark-color-background: #282c34;\n --dark-color-background-hover: rgba(255, 255, 255, 0.1);\n --dark-color-background-inactive: #3d424a;\n --dark-color-background-invalid: #5c0000;\n --dark-color-background-selected: #178fb9;\n --dark-color-button-background: #282c34;\n --dark-color-button-background-focus: #3d424a;\n --dark-color-button: #afb3b9;\n --dark-color-button-active: #61dafb;\n --dark-color-button-disabled: #4f5766;\n --dark-color-button-focus: #a2e9fc;\n --dark-color-button-hover: #ededed;\n --dark-color-border: #3d424a;\n --dark-color-commit-did-not-render-fill: #777d88;\n --dark-color-commit-did-not-render-fill-text: #000000;\n --dark-color-commit-did-not-render-pattern: #666c77;\n --dark-color-commit-did-not-render-pattern-text: #ffffff;\n --dark-color-commit-gradient-0: #37afa9;\n --dark-color-commit-gradient-1: #63b19e;\n --dark-color-commit-gradient-2: #80b393;\n --dark-color-commit-gradient-3: #97b488;\n --dark-color-commit-gradient-4: #abb67d;\n --dark-color-commit-gradient-5: #beb771;\n --dark-color-commit-gradient-6: #cfb965;\n --dark-color-commit-gradient-7: #dfba57;\n --dark-color-commit-gradient-8: #efbb49;\n --dark-color-commit-gradient-9: #febc38;\n --dark-color-commit-gradient-text: #000000;\n --dark-color-component-name: #61dafb;\n --dark-color-component-name-inverted: #282828;\n --dark-color-component-badge-background: rgba(255, 255, 255, 0.25);\n --dark-color-component-badge-background-inverted: rgba(0, 0, 0, 0.25);\n --dark-color-component-badge-count: #8f949d;\n --dark-color-component-badge-count-inverted: rgba(255, 255, 255, 0.7);\n --dark-color-context-background: rgba(255,255,255,.9);\n --dark-color-context-background-hover: rgba(0, 136, 250, 0.1);\n --dark-color-context-background-selected: #0088fa;\n --dark-color-context-border: #eeeeee;\n --dark-color-context-text: #000000;\n --dark-color-context-text-selected: #ffffff;\n --dark-color-dim: #8f949d;\n --dark-color-dimmer: #777d88;\n --dark-color-dimmest: #4f5766;\n --dark-color-error-background: #200;\n --dark-color-error-border: #900;\n --dark-color-error-text: #f55;\n --dark-color-expand-collapse-toggle: #8f949d;\n --dark-color-link: #61dafb;\n --dark-color-modal-background: rgba(0, 0, 0, 0.75);\n --dark-color-record-active: #fc3a4b;\n --dark-color-record-hover: #a2e9fc;\n --dark-color-record-inactive: #61dafb;\n --dark-color-scroll-thumb: #afb3b9;\n --dark-color-scroll-track: #313640;\n --dark-color-search-match: yellow;\n --dark-color-search-match-current: #f7923b;\n --dark-color-selected-tree-highlight-active: rgba(23, 143, 185, 0.15);\n --dark-color-selected-tree-highlight-inactive: rgba(255, 255, 255, 0.05);\n --dark-color-shadow: rgba(0, 0, 0, 0.5);\n --dark-color-tab-selected-border: #178fb9;\n --dark-color-text: #ffffff;\n --dark-color-text-invalid: #ff8080;\n --dark-color-text-selected: #ffffff;\n --dark-color-toggle-background-invalid: #fc3a4b;\n --dark-color-toggle-background-on: #178fb9;\n --dark-color-toggle-background-off: #777d88;\n --dark-color-toggle-text: #ffffff;\n --dark-color-tooltip-background: rgba(255, 255, 255, 0.9);\n --dark-color-tooltip-text: #000000;\n\n /* Font smoothing */\n --light-font-smoothing: auto;\n --dark-font-smoothing: antialiased;\n --font-smoothing: auto;\n\n /* Compact density */\n --compact-font-size-monospace-small: 9px;\n --compact-font-size-monospace-normal: 11px;\n --compact-font-size-monospace-large: 15px;\n --compact-font-size-sans-small: 10px;\n --compact-font-size-sans-normal: 12px;\n --compact-font-size-sans-large: 14px;\n --compact-line-height-data: 18px;\n --compact-root-font-size: 16px;\n\n /* Comfortable density */\n --comfortable-font-size-monospace-small: 10px;\n --comfortable-font-size-monospace-normal: 13px;\n --comfortable-font-size-monospace-large: 17px;\n --comfortable-font-size-sans-small: 12px;\n --comfortable-font-size-sans-normal: 14px;\n --comfortable-font-size-sans-large: 16px;\n --comfortable-line-height-data: 22px;\n --comfortable-root-font-size: 20px;\n\n /* GitHub.com system fonts */\n --font-family-monospace: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo,\n Courier, monospace;\n --font-family-sans: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica,\n Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;\n\n /* Constant values shared between JS and CSS */\n --interaction-commit-size: 10px;\n --interaction-label-width: 200px;\n}\n"},function(e,t,n){"use strict";function r(e){var t=this;if(t instanceof r||(t=new r),t.tail=null,t.head=null,t.length=0,e&&"function"==typeof e.forEach)e.forEach((function(e){t.push(e)}));else if(arguments.length>0)for(var n=0,i=arguments.length;n1)n=t;else{if(!this.head)throw new TypeError("Reduce of empty list with no initial value");r=this.head.next,n=this.head.value}for(var i=0;null!==r;i++)n=e(n,r.value,i),r=r.next;return n},r.prototype.reduceReverse=function(e,t){var n,r=this.tail;if(arguments.length>1)n=t;else{if(!this.tail)throw new TypeError("Reduce of empty list with no initial value");r=this.tail.prev,n=this.tail.value}for(var i=this.length-1;null!==r;i--)n=e(n,r.value,i),r=r.prev;return n},r.prototype.toArray=function(){for(var e=new Array(this.length),t=0,n=this.head;null!==n;t++)e[t]=n.value,n=n.next;return e},r.prototype.toArrayReverse=function(){for(var e=new Array(this.length),t=0,n=this.tail;null!==n;t++)e[t]=n.value,n=n.prev;return e},r.prototype.slice=function(e,t){(t=t||this.length)<0&&(t+=this.length),(e=e||0)<0&&(e+=this.length);var n=new r;if(tthis.length&&(t=this.length);for(var i=0,o=this.head;null!==o&&ithis.length&&(t=this.length);for(var i=this.length,o=this.tail;null!==o&&i>t;i--)o=o.prev;for(;null!==o&&i>e;i--,o=o.prev)n.push(o.value);return n},r.prototype.splice=function(e,t){e>this.length&&(e=this.length-1),e<0&&(e=this.length+e);for(var n=0,r=this.head;null!==r&&n=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},n(14),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(4))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var r,i,o,u,a,l=1,s={},c=!1,f=e.document,d=Object.getPrototypeOf&&Object.getPrototypeOf(e);d=d&&d.setTimeout?d:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){h(e)}))}:function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?(u="setImmediate$"+Math.random()+"$",a=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(u)&&h(+t.data.slice(u.length))},e.addEventListener?e.addEventListener("message",a,!1):e.attachEvent("onmessage",a),r=function(t){e.postMessage(u+t,"*")}):e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){h(e.data)},r=function(e){o.port2.postMessage(e)}):f&&"onreadystatechange"in f.createElement("script")?(i=f.documentElement,r=function(e){var t=f.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):r=function(e){setTimeout(h,0,e)},d.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;nv;v++)if(-1!==(h=g(p,c,v))){m=v,c=h;break e}c=-1}}e:{if(p=f,void 0!==(h=d().get(s.primitive)))for(v=0;vc-p?null:f.slice(p,c-1))){if(c=0,null!==r){for(;cc;r--)i=a.pop()}for(r=f.length-c-1;1<=r;r--)c=[],i.push({id:null,isStateEditable:!1,name:_(f[r-1].functionName),value:void 0,subHooks:c}),a.push(i),i=c;r=f}c="Context"===(f=s.primitive)||"DebugValue"===f?null:u++,i.push({id:c,isStateEditable:"Reducer"===f||"State"===f,name:f,value:s.value,subHooks:[]})}return function e(t,n){for(var r=[],i=0;i-1&&(t=t.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(\),.*$)/g,""));var n=t.replace(/^\s+/,"").replace(/\(eval code/g,"("),r=n.match(/ (\((.+):(\d+):(\d+)\)$)/),i=(n=r?n.replace(r[0],""):n).split(/\s+/).slice(1),o=this.extractLocation(r?r[1]:i.pop()),u=i.join(" ")||void 0,a=["eval",""].indexOf(o[0])>-1?void 0:o[0];return new e({functionName:u,fileName:a,lineNumber:o[1],columnNumber:o[2],source:t})}),this)},parseFFOrSafari:function(t){return t.stack.split("\n").filter((function(e){return!e.match(r)}),this).map((function(t){if(t.indexOf(" > eval")>-1&&(t=t.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===t.indexOf("@")&&-1===t.indexOf(":"))return new e({functionName:t});var n=/((.*".+"[^@]*)?[^@]*)(?:@)/,r=t.match(n),i=r&&r[1]?r[1]:void 0,o=this.extractLocation(t.replace(n,""));return new e({functionName:i,fileName:o[0],lineNumber:o[1],columnNumber:o[2],source:t})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(t){for(var n=/Line (\d+).*script (?:in )?(\S+)/i,r=t.message.split("\n"),i=[],o=2,u=r.length;o/,"$2").replace(/\([^)]*\)/g,"")||void 0;o.match(/\(([^)]*)\)/)&&(n=o.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var a=void 0===n||"[arguments not available]"===n?void 0:n.split(",");return new e({functionName:u,args:a,fileName:i[0],lineNumber:i[1],columnNumber:i[2],source:t})}),this)}}})?r.apply(t,i):r)||(e.exports=o)}()},function(e,t,n){var r,i,o;!function(n,u){"use strict";i=[],void 0===(o="function"==typeof(r=function(){function e(e){return e.charAt(0).toUpperCase()+e.substring(1)}function t(e){return function(){return this[e]}}var n=["isConstructor","isEval","isNative","isToplevel"],r=["columnNumber","lineNumber"],i=["fileName","functionName","source"],o=n.concat(r,i,["args"]);function u(t){if(t)for(var n=0;n1?n-1:0),i=1;i=0&&n.splice(r,1)}}}])&&r(t.prototype,n),e}(),o=n(2),u=n.n(o);try{var a=n(9).default,l=function(e){var t=new RegExp("".concat(e,": ([0-9]+)")),n=a.match(t);return parseInt(n[1],10)};l("comfortable-line-height-data"),l("compact-line-height-data")}catch(e){}function s(e){try{return sessionStorage.getItem(e)}catch(e){return null}}function c(e){try{sessionStorage.removeItem(e)}catch(e){}}function f(e,t){try{return sessionStorage.setItem(e,t)}catch(e){}}var d=function(e,t){return e===t},p=n(1),h=n.n(p);function v(e){return e.ownerDocument?e.ownerDocument.defaultView:null}function m(e){var t=v(e);return t?t.frameElement:null}function g(e){var t=b(e);return y([e.getBoundingClientRect(),{top:t.borderTop,left:t.borderLeft,bottom:t.borderBottom,right:t.borderRight,width:0,height:0}])}function y(e){return e.reduce((function(e,t){return null==e?t:{top:e.top+t.top,left:e.left+t.left,width:e.width,height:e.height,bottom:e.bottom+t.bottom,right:e.right+t.right}}))}function _(e,t){var n=m(e);if(n&&n!==t){for(var r=[e.getBoundingClientRect()],i=n,o=!1;i;){var u=g(i);if(r.push(u),i=m(i),o)break;i&&v(i)===t&&(o=!0)}return y(r)}return e.getBoundingClientRect()}function b(e){var t=window.getComputedStyle(e);return{borderLeft:parseInt(t.borderLeftWidth,10),borderRight:parseInt(t.borderRightWidth,10),borderTop:parseInt(t.borderTopWidth,10),borderBottom:parseInt(t.borderBottomWidth,10),marginLeft:parseInt(t.marginLeft,10),marginRight:parseInt(t.marginRight,10),marginTop:parseInt(t.marginTop,10),marginBottom:parseInt(t.marginBottom,10),paddingLeft:parseInt(t.paddingLeft,10),paddingRight:parseInt(t.paddingRight,10),paddingTop:parseInt(t.paddingTop,10),paddingBottom:parseInt(t.paddingBottom,10)}}function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt.left+t.width&&(u=t.left+t.width-o-5),{style:{top:r+="px",left:u+="px"}}}(e,t,{width:n.width,height:n.height});h()(this.tip.style,r.style)}}]),e}(),T=function(){function e(){E(this,e);var t=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.window=t;var n=window.__REACT_DEVTOOLS_TARGET_WINDOW__||window;this.tipBoundsWindow=n;var r=t.document;this.container=r.createElement("div"),this.container.style.zIndex="10000000",this.tip=new k(r,this.container),this.rects=[],r.body.appendChild(this.container)}return S(e,[{key:"remove",value:function(){this.tip.remove(),this.rects.forEach((function(e){e.remove()})),this.rects.length=0,this.container.parentNode&&this.container.parentNode.removeChild(this.container)}},{key:"inspect",value:function(e,t){for(var n=this,r=e.filter((function(e){return e.nodeType===Node.ELEMENT_NODE}));this.rects.length>r.length;)this.rects.pop().remove();if(0!==r.length){for(;this.rects.length=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw o}}}}(u.rendererInterfaces.values());try{for(s.s();!(a=s.n()).done;){var c=a.value,f=c.getFiberIDForNative(o,!0);if(null!==f){l=c.getDisplayNameForFiberID(f,!0);break}}}catch(e){s.e(e)}finally{s.f()}l&&(t+=" (in "+l+")")}}this.tip.updateText(t,i.right-i.left,i.bottom-i.top);var d=_(this.tipBoundsWindow.document.documentElement,this.window);this.tip.updatePosition({top:i.top,left:i.left,height:i.bottom-i.top,width:i.right-i.left},{top:d.top+this.tipBoundsWindow.scrollY,left:d.left+this.tipBoundsWindow.scrollX,height:this.tipBoundsWindow.innerHeight,width:this.tipBoundsWindow.innerWidth})}}}]),e}();function x(e,t,n){h()(n.style,{borderTopWidth:e[t+"Top"]+"px",borderLeftWidth:e[t+"Left"]+"px",borderRightWidth:e[t+"Right"]+"px",borderBottomWidth:e[t+"Bottom"]+"px",borderStyle:"solid"})}var A={background:"rgba(120, 170, 210, 0.7)",padding:"rgba(77, 200, 0, 0.3)",margin:"rgba(255, 155, 0, 0.3)",border:"rgba(255, 200, 50, 0.3)"},O=null,P=null;function I(){O=null,null!==P&&(P.remove(),P=null)}function N(e,t,n){null!=window.document&&(null!==O&&clearTimeout(O),null!=e&&(null===P&&(P=new T),P.inspect(e,t),n&&(O=setTimeout(I,2e3))))}var M=new Set,R=["#37afa9","#63b19e","#80b393","#97b488","#abb67d","#beb771","#cfb965","#dfba57","#efbb49","#febc38"],F=null;function L(e){return(L="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var B="object"===("undefined"==typeof performance?"undefined":L(performance))&&"function"==typeof performance.now?function(){return performance.now()}:function(){return Date.now()},j=new Map,U=null,z=!1,W=null;function H(e){z&&(e.forEach((function(e){var t=j.get(e),n=B(),r=null!=t?t.lastMeasuredAt:0,i=null!=t?t.rect:null;(null===i||r+2505&&void 0!==arguments[5]?arguments[5]:0,a=me(e);switch(a){case"html_element":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.tagName,type:a};case"function":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:"function"!=typeof e.name&&e.name?e.name:"function",type:a};case"string":return e.length<=500?e:e.slice(0,500)+"...";case"bigint":case"symbol":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.toString(),type:a};case"react_element":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:ge(e)||"Unknown",type:a};case"array_buffer":case"data_view":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:"data_view"===a?"DataView":"ArrayBuffer",size:e.byteLength,type:a};case"array":return o=i(r),u>=2&&!o?Z(a,!0,e,t,r):e.map((function(e,a){return ee(e,t,n,r.concat([a]),i,o?1:u+1)}));case"html_all_collection":case"typed_array":case"iterator":if(o=i(r),u>=2&&!o)return Z(a,!0,e,t,r);var l={unserializable:!0,type:a,readonly:!0,size:"typed_array"===a?e.length:void 0,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.constructor&&"Object"!==e.constructor.name?e.constructor.name:""};return Q(e[Symbol.iterator])&&Array.from(e).forEach((function(e,a){return l[a]=ee(e,t,n,r.concat([a]),i,o?1:u+1)})),n.push(r),l;case"opaque_iterator":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e[Symbol.toStringTag],type:a};case"date":case"regexp":return t.push(r),{inspectable:!1,preview_short:_e(e,!1),preview_long:_e(e,!0),name:e.toString(),type:a};case"object":if(o=i(r),u>=2&&!o)return Z(a,!0,e,t,r);var s={};return ae(e).forEach((function(a){var l=a.toString();s[l]=ee(e[a],t,n,r.concat([l]),i,o?1:u+1)})),s;case"infinity":case"nan":case"undefined":return t.push(r),{type:a};default:return e}}function te(e){return(te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ne(e){return function(e){if(Array.isArray(e))return re(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return re(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?re(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function re(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nt.toString()?1:t.toString()>e.toString()?-1:0}function ae(e){for(var t=[],n=e,r=function(){var e=[].concat(ne(Object.keys(n)),ne(Object.getOwnPropertySymbols(n))),r=Object.getOwnPropertyDescriptors(n);e.forEach((function(e){r[e].enumerable&&t.push(e)})),n=Object.getPrototypeOf(n)};null!=n;)r();return t}function le(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Anonymous",n=ie.get(e);if(null!=n)return n;var r=t;return"string"==typeof e.displayName?r=e.displayName:"string"==typeof e.name&&""!==e.name&&(r=e.name),ie.set(e,r),r}var se=0;function ce(){return++se}function fe(e){var t=oe.get(e);if(void 0!==t)return t;for(var n=new Array(e.length),r=0;r1&&void 0!==arguments[1]?arguments[1]:50;return e.length>t?e.substr(0,t)+"…":e}function _e(e,t){if(null!=e&&hasOwnProperty.call(e,J.type))return t?e[J.preview_long]:e[J.preview_short];switch(me(e)){case"html_element":return"<".concat(ye(e.tagName.toLowerCase())," />");case"function":return ye("ƒ ".concat("function"==typeof e.name?"":e.name,"() {}"));case"string":return'"'.concat(e,'"');case"bigint":return ye(e.toString()+"n");case"regexp":case"symbol":return ye(e.toString());case"react_element":return"<".concat(ye(ge(e)||"Unknown")," />");case"array_buffer":return"ArrayBuffer(".concat(e.byteLength,")");case"data_view":return"DataView(".concat(e.buffer.byteLength,")");case"array":if(t){for(var n="",r=0;r0&&(n+=", "),!((n+=_e(e[r],!1)).length>50));r++);return"[".concat(ye(n),"]")}var i=hasOwnProperty.call(e,J.size)?e[J.size]:e.length;return"Array(".concat(i,")");case"typed_array":var o="".concat(e.constructor.name,"(").concat(e.length,")");if(t){for(var u="",a=0;a0&&(u+=", "),!((u+=e[a]).length>50));a++);return"".concat(o," [").concat(ye(u),"]")}return o;case"iterator":var l=e.constructor.name;if(t){for(var s=Array.from(e),c="",f=0;f0&&(c+=", "),Array.isArray(d)){var p=_e(d[0],!0),h=_e(d[1],!1);c+="".concat(p," => ").concat(h)}else c+=_e(d,!1);if(c.length>50)break}return"".concat(l,"(").concat(e.size,") {").concat(ye(c),"}")}return"".concat(l,"(").concat(e.size,")");case"opaque_iterator":return e[Symbol.toStringTag];case"date":return e.toString();case"object":if(t){for(var v=ae(e).sort(ue),m="",g=0;g0&&(m+=", "),(m+="".concat(y.toString(),": ").concat(_e(e[y],!1))).length>50)break}return"{".concat(ye(m),"}")}return"{…}";case"boolean":case"number":case"infinity":case"nan":case"null":case"undefined":return e;default:try{return ye(""+e)}catch(e){return"unserializable"}}}var be=n(7);function we(e){return(we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function De(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:[];if(null!==e){var r=[],i=[],o=ee(e,r,i,n,t);return{data:o,cleaned:r,unserializable:i}}return null}function ke(e){var t,n,r=(t=e,n=new Set,JSON.stringify(t,(function(e,t){if("object"===we(t)&&null!==t){if(n.has(t))return;n.add(t)}return"bigint"==typeof t?t.toString()+"n":t}))),i=void 0===r?"undefined":r,o=window.__REACT_DEVTOOLS_GLOBAL_HOOK__.clipboardCopyText;"function"==typeof o?o(i).catch((function(e){})):Object(be.copy)(i)}function Te(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=t[n],i=Array.isArray(e)?e.slice():De({},e);return n+1===t.length?Array.isArray(i)?i.splice(r,1):delete i[r]:i[r]=Te(e[r],t,n+1),i}function xe(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i=t[r],o=Array.isArray(e)?e.slice():De({},e);if(r+1===t.length){var u=n[r];o[u]=o[i],Array.isArray(o)?o.splice(i,1):delete o[i]}else o[i]=xe(e[i],t,n,r+1);return o}function Ae(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if(r>=t.length)return n;var i=t[r],o=Array.isArray(e)?e.slice():De({},e);return o[i]=Ae(e[i],t,n,r+1),o}var Oe=n(8);function Pe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ie(e){for(var t=1;t=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw o}}}}function Le(e,t){if(e){if("string"==typeof e)return Be(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Be(e,t):void 0}}function Be(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0){var a=o(e);if(null!=a){var l,s=Fe(Y);try{for(s.s();!(l=s.n()).done;)if(l.value.test(a))return!0}catch(e){s.e(e)}finally{s.f()}}}if(null!=t&&K.size>0){var c,f=t.fileName,d=Fe(K);try{for(d.s();!(c=d.n()).done;)if(c.value.test(f))return!0}catch(e){d.e(e)}finally{d.f()}}return!1}function te(e){var t=e.type;switch(e.tag){case v:case S:return 1;case h:case C:return 5;case _:return 6;case b:return 11;case E:return 7;case w:case D:case y:return 9;case k:case x:return 8;case A:return 12;case O:return 13;default:switch(u(t)){case 60111:case"Symbol(react.concurrent_mode)":case"Symbol(react.async_mode)":return 9;case 60109:case"Symbol(react.provider)":return 2;case 60110:case"Symbol(react.context)":return 2;case 60108:case"Symbol(react.strict_mode)":return 9;case 60114:case"Symbol(react.profiler)":return 10;default:return 9}}}function ne(e){if(oe.has(e))return e;var t=e.alternate;return null!=t&&oe.has(t)?t:(oe.add(e),e)}null!=window.__REACT_DEVTOOLS_COMPONENT_FILTERS__?Z(window.__REACT_DEVTOOLS_COMPONENT_FILTERS__):Z([{type:1,value:7,isEnabled:!0}]);var re=new Map,ie=new Map,oe=new Set,ue=new Map,ae=new Map,le=-1;function se(e){if(!re.has(e)){var t=ce();re.set(e,t),ie.set(t,e)}return re.get(e)}function me(e){switch(te(e)){case 1:if(null!==dt){var t=se(ne(e)),n=ye(e);null!==n&&dt.set(t,n)}}}var ge={};function ye(e){switch(te(e)){case 1:var t=e.stateNode,n=ge,r=ge;return null!=t&&(t.constructor&&null!=t.constructor.contextType?r=t.context:(n=t.context)&&0===Object.keys(n).length&&(n=ge)),[n,r];default:return null}}function _e(e){switch(te(e)){case 1:if(null!==dt){var t=se(ne(e)),n=dt.has(t)?dt.get(t):null,r=ye(e);if(null==n||null==r)return null;var i=Re(n,2),o=i[0],u=i[1],a=Re(r,2),l=a[0],s=a[1];if(l!==ge)return we(o,l);if(s!==ge)return u!==s}}return null}function be(e,t){if(null==e||null==t)return!1;if(t.hasOwnProperty("baseState")&&t.hasOwnProperty("memoizedState")&&t.hasOwnProperty("next")&&t.hasOwnProperty("queue"))for(;null!==t;){if(t.memoizedState!==e.memoizedState)return!0;t=t.next,e=e.next}return!1}function we(e,t){if(null==e||null==t)return null;if(t.hasOwnProperty("baseState")&&t.hasOwnProperty("memoizedState")&&t.hasOwnProperty("next")&&t.hasOwnProperty("queue"))return null;var n,r=[],i=Fe(new Set([].concat(Me(Object.keys(e)),Me(Object.keys(t)))));try{for(i.s();!(n=i.n()).done;){var o=n.value;e[o]!==t[o]&&r.push(o)}}catch(e){i.e(e)}finally{i.f()}return r}function Ee(e,t){switch(t.tag){case v:case h:case m:case k:case x:return(Ue(t)&d)===d;default:return e.memoizedProps!==t.memoizedProps||e.memoizedState!==t.memoizedState||e.ref!==t.ref}}var De=[],Se=[],Pe=[],Ne=[],Le=new Map,Be=0,je=null;function ze(e){De.push(e)}function Ve(n){if(0!==De.length||0!==Se.length||0!==Pe.length||null!==je||vt){var r=Se.length+Pe.length+(null===je?0:1),i=new Array(3+Be+(r>0?2+r:0)+De.length),o=0;if(i[o++]=t,i[o++]=le,i[o++]=Be,Le.forEach((function(e,t){i[o++]=t.length;for(var n=fe(t),r=0;r0){i[o++]=2,i[o++]=r;for(var u=Se.length-1;u>=0;u--)i[o++]=Se[u];for(var a=0;a0?n.forEach((function(t){e.emit("operations",t)})):(null!==Dt&&(kt=!0),e.getFiberRoots(t).forEach((function(e){Ot(le=se(ne(e.current)),e.current),vt&&null!=e.memoizedInteractions&&(st={changeDescriptions:gt?new Map:null,durations:[],commitTime:We()-mt,interactions:Array.from(e.memoizedInteractions).map((function(e){return Ie(Ie({},e),{},{timestamp:e.timestamp-mt})})),maxActualDuration:0,priorityLevel:null}),$e(e.current,null,!1,!1),Ve(),le=-1})))},getBestMatchForTrackedPath:function(){if(null===Dt)return null;if(null===St)return null;for(var e=St;null!==e&&ee(e);)e=e.return;return null===e?null:{id:se(ne(e)),isFullMatch:Ct===Dt.length-1}},getDisplayNameForFiberID:function(e){var t=ie.get(e);return null!=t?o(t):null},getFiberIDForNative:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=n.findFiberByHostInstance(e);if(null!=r){if(t)for(;null!==r&&ee(r);)r=r.return;return se(ne(r))}return null},getInstanceAndStyle:function(e){var t=null,n=null,r=et(e);return null!==r&&(t=r.stateNode,null!==r.memoizedProps&&(n=r.memoizedProps.style)),{instance:t,style:n}},getOwnersList:function(e){var t=et(e);if(null==t)return null;var n=t._debugOwner,r=[{displayName:o(t)||"Anonymous",id:e,type:te(t)}];if(n)for(var i=n;null!==i;)r.unshift({displayName:o(i)||"Anonymous",id:se(ne(i)),type:te(i)}),i=i._debugOwner||null;return r},getPathForElement:function(e){var t=ie.get(e);if(null==t)return null;for(var n=[];null!==t;)n.push(It(t)),t=t.return;return n.reverse(),n},getProfilingData:function(){var e=[];if(null===yt)throw Error("getProfilingData() called before any profiling data was recorded");return yt.forEach((function(t,n){var r=[],i=[],o=new Map,u=new Map,a=null!==ft&&ft.get(n)||"Unknown";null!=pt&&pt.forEach((function(e,t){null!=ht&&ht.get(t)===n&&i.push([t,e])})),t.forEach((function(e,t){var n=e.changeDescriptions,i=e.durations,a=e.interactions,l=e.maxActualDuration,s=e.priorityLevel,c=e.commitTime,f=[];a.forEach((function(e){o.has(e.id)||o.set(e.id,e),f.push(e.id);var n=u.get(e.id);null!=n?n.push(t):u.set(e.id,[t])}));for(var d=[],p=[],h=0;h1?At.set(n,r-1):At.delete(n),xt.delete(e)}(le),Ge(r,!1))}else Ot(le,r),$e(r,null,!1,!1);if(vt&&o){var l=yt.get(le);null!=l?l.push(st):yt.set(le,[st])}Ve(),Q&&e.emit("traceUpdates",J),le=-1},handleCommitFiberUnmount:function(e){Ge(e,!1)},inspectElement:function(e,t){if(ot(e)){if(null!=t){ut(t);var n=null;return"hooks"===t[0]&&(n="hooks"),{id:e,type:"hydrated-path",path:t,value:Ce(de(nt,t),at(null,n),t)}}return{id:e,type:"no-change"}}if(rt=!1,null!==nt&&nt.id===e||(it={}),null===(nt=tt(e)))return{id:e,type:"not-found"};null!=t&&ut(t),function(e){var t=e.hooks,n=e.id,i=e.props,o=ie.get(n);if(null!=o){var u=o.elementType,a=o.stateNode,l=o.tag,s=o.type;switch(l){case v:case S:case C:r.$r=a;break;case h:r.$r={hooks:t,props:i,type:s};break;case _:r.$r={props:i,type:s.render};break;case k:case x:r.$r={props:i,type:null!=u&&null!=u.type?u.type:s};break;default:r.$r=null}}else console.warn('Could not find Fiber with id "'.concat(n,'"'))}(nt);var i=Ie({},nt);return i.context=Ce(i.context,at("context",null)),i.hooks=Ce(i.hooks,at("hooks","hooks")),i.props=Ce(i.props,at("props",null)),i.state=Ce(i.state,at("state",null)),{id:e,type:"full-data",value:i}},logElementToConsole:function(e){var t=ot(e)?nt:tt(e);if(null!==t){var n="function"==typeof console.groupCollapsed;n&&console.groupCollapsed("[Click to expand] %c<".concat(t.displayName||"Component"," />"),"color: var(--dom-tag-name-color); font-weight: normal;"),null!==t.props&&console.log("Props:",t.props),null!==t.state&&console.log("State:",t.state),null!==t.hooks&&console.log("Hooks:",t.hooks);var r=Je(e);null!==r&&console.log("Nodes:",r),null!==t.source&&console.log("Location:",t.source),(window.chrome||/firefox/i.test(navigator.userAgent))&&console.log("Right-click any value to save it as a global variable for further inspection."),n&&console.groupEnd()}else console.warn('Could not find Fiber with id "'.concat(e,'"'))},prepareViewAttributeSource:function(e,t){ot(e)&&(window.$attribute=de(nt,t))},prepareViewElementSource:function(e){var t=ie.get(e);if(null!=t){var n=t.elementType,i=t.tag,o=t.type;switch(i){case v:case S:case C:case h:r.$type=o;break;case _:r.$type=o.render;break;case k:case x:r.$type=null!=n&&null!=n.type?n.type:o;break;default:r.$type=null}}else console.warn('Could not find Fiber with id "'.concat(e,'"'))},overrideSuspense:function(e,t){if("function"!=typeof H||"function"!=typeof V)throw new Error("Expected overrideSuspense() to not get called for earlier React versions.");t?(wt.add(e),1===wt.size&&H(Et)):(wt.delete(e),0===wt.size&&H(bt));var n=ie.get(e);null!=n&&V(n)},overrideValueAtPath:function(e,t,n,r,i){var o=et(t);if(null!==o){var u=o.stateNode;switch(e){case"context":switch(r=r.slice(1),o.tag){case v:0===r.length?u.context=i:ve(u.context,r,i),u.forceUpdate()}break;case"hooks":"function"==typeof L&&L(o,n,r,i);break;case"props":switch(o.tag){case v:o.pendingProps=Ae(u.props,r,i),u.forceUpdate();break;default:"function"==typeof U&&U(o,r,i)}break;case"state":switch(o.tag){case v:ve(u.state,r,i),u.forceUpdate()}}}},renamePath:function(e,t,n,r,i){var o=et(t);if(null!==o){var u=o.stateNode;switch(e){case"context":switch(r=r.slice(1),i=i.slice(1),o.tag){case v:0===r.length||he(u.context,r,i),u.forceUpdate()}break;case"hooks":"function"==typeof j&&j(o,n,r,i);break;case"props":null===u?"function"==typeof W&&W(o,r,i):(o.pendingProps=xe(u.props,r,i),u.forceUpdate());break;case"state":he(u.state,r,i),u.forceUpdate()}}},renderer:n,setTraceUpdatesEnabled:function(e){Q=e},setTrackedPath:Tt,startProfiling:_t,stopProfiling:function(){vt=!1,gt=!1},storeAsGlobal:function(e,t,n){if(ot(e)){var r=de(nt,t),i="$reactTemp".concat(n);window[i]=r,console.log(i),console.log(r)}},updateComponentFilters:function(n){if(vt)throw Error("Cannot modify filter preferences while profiling");e.getFiberRoots(t).forEach((function(e){le=se(ne(e.current)),Ye(e.current),Ge(e.current,!1),le=-1})),Z(n),At.clear(),e.getFiberRoots(t).forEach((function(e){Ot(le=se(ne(e.current)),e.current),$e(e.current,null,!1,!1),Ve(),le=-1}))}}}function qe(e){return(qe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function Ge(e,t,n){if(void 0===ze)try{throw Error()}catch(e){var r=e.stack.trim().match(/\n( *(at )?)/);ze=r&&r[1]||""}return"\n"+ze+e}var $e=!1;function Ye(e,t,n){if(!e||$e)return"";var r,i=Error.prepareStackTrace;Error.prepareStackTrace=void 0,$e=!0;var o=n.current;n.current=null;try{if(t){var u=function(){throw Error()};if(Object.defineProperty(u.prototype,"props",{set:function(){throw Error()}}),"object"===("undefined"==typeof Reflect?"undefined":qe(Reflect))&&Reflect.construct){try{Reflect.construct(u,[])}catch(e){r=e}Reflect.construct(e,[],u)}else{try{u.call()}catch(e){r=e}e.call(u.prototype)}}else{try{throw Error()}catch(e){r=e}e()}}catch(e){if(e&&r&&"string"==typeof e.stack){for(var a=e.stack.split("\n"),l=r.stack.split("\n"),s=a.length-1,c=l.length-1;s>=1&&c>=0&&a[s]!==l[c];)c--;for(;s>=1&&c>=0;s--,c--)if(a[s]!==l[c]){if(1!==s||1!==c)do{if(s--,--c<0||a[s]!==l[c])return"\n"+a[s].replace(" at new "," at ")}while(s>=1&&c>=0);break}}}finally{$e=!1,Error.prepareStackTrace=i,n.current=o}var f=e?e.displayName||e.name:"";return f?Ge(f):""}function Ke(e,t,n,r){return Ye(e,!1,r)}function Xe(e,t,n){var r=e.HostComponent,i=e.LazyComponent,o=e.SuspenseComponent,u=e.SuspenseListComponent,a=e.FunctionComponent,l=e.IndeterminateComponent,s=e.SimpleMemoComponent,c=e.ForwardRef,f=e.Block,d=e.ClassComponent;switch(t.tag){case r:return Ge(t.type);case i:return Ge("Lazy");case o:return Ge("Suspense");case u:return Ge("SuspenseList");case a:case l:case s:return Ke(t.type,0,0,n);case c:return Ke(t.type.render,0,0,n);case f:return Ke(t.type._render,0,0,n);case d:return function(e,t,n,r){return Ye(e,!0,r)}(t.type,0,0,n);default:return""}}function Qe(e,t,n){try{var r="",i=t;do{r+=Xe(e,i,n),i=i.return}while(i);return r}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function Je(e,t){var n;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ze(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ze(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,i=function(){};return{s:i,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,u=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,o=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw o}}}}function Ze(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0?r[r.length-1]:null,u=null!==o&&(tt.test(o)||nt.test(o));if(!u){var a,l=Je(rt.values());try{for(l.s();!(a=l.n()).done;){var s=a.value,c=s.currentDispatcherRef,f=s.getCurrentFiber,d=s.workTagMap,p=f();if(null!=p){var h=Qe(d,p,c);""!==h&&r.push(h);break}}}catch(e){l.e(e)}finally{l.f()}}}catch(e){}t.apply(void 0,r)};n.__REACT_DEVTOOLS_ORIGINAL_METHOD__=t,it[e]=n}catch(e){}}))}}function ft(e){return(ft="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function dt(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:d,n=void 0,r=[],i=void 0,o=!1,u=function(e,n){return t(e,r[n])},a=function(){for(var t=arguments.length,a=Array(t),l=0;le.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?t-1:0),r=1;r0?"development":"production";var t=Function.prototype.toString;if(e.Mount&&e.Mount._renderNewRootComponent){var n=t.call(e.Mount._renderNewRootComponent);return 0!==n.indexOf("function")?"production":-1!==n.indexOf("storedMeasure")?"development":-1!==n.indexOf("should be a pure function")?-1!==n.indexOf("NODE_ENV")||-1!==n.indexOf("development")||-1!==n.indexOf("true")?"development":-1!==n.indexOf("nextElement")||-1!==n.indexOf("nextComponent")?"unminified":"development":-1!==n.indexOf("nextElement")||-1!==n.indexOf("nextComponent")?"unminified":"outdated"}}catch(e){}return"production"}(r);try{var l=!1!==window.__REACT_DEVTOOLS_APPEND_COMPONENT_STACK__,s=!0===window.__REACT_DEVTOOLS_BREAK_ON_CONSOLE_ERRORS__;(l||s)&&(lt(r),ct({appendComponentStack:l,breakOnConsoleErrors:s}))}catch(e){}var c=e.__REACT_DEVTOOLS_ATTACH__;if("function"==typeof c){var f=c(a,i,r,e);a.rendererInterfaces.set(i,f)}return a.emit("renderer",{id:i,renderer:r,reactBuildType:o}),i},on:function(e,t){o[e]||(o[e]=[]),o[e].push(t)},off:function(e,t){if(o[e]){var n=o[e].indexOf(t);-1!==n&&o[e].splice(n,1),o[e].length||delete o[e]}},sub:function(e,t){return a.on(e,t),function(){return a.off(e,t)}},supportsFiber:!0,checkDCE:function(e){try{Function.prototype.toString.call(e).indexOf("^_^")>-1&&(n=!0,setTimeout((function(){throw new Error("React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build")})))}catch(e){}},onCommitFiberUnmount:function(e,t){var n=i.get(e);null!=n&&n.handleCommitFiberUnmount(t)},onCommitFiberRoot:function(e,t,n){var r=a.getFiberRoots(e),o=t.current,u=r.has(t),l=null==o.memoizedState||null==o.memoizedState.element;u||l?u&&l&&r.delete(t):r.add(t);var s=i.get(e);null!=s&&s.handleCommitFiberRoot(t,n)}};Object.defineProperty(e,"__REACT_DEVTOOLS_GLOBAL_HOOK__",{configurable:!1,enumerable:!1,get:function(){return a}})}(window);var $t=window.__REACT_DEVTOOLS_GLOBAL_HOOK__,Yt=[{type:1,value:7,isEnabled:!0}];function Kt(e){if(null!=$t){var t=e||{},n=t.host,r=void 0===n?"localhost":n,i=t.nativeStyleEditorValidAttributes,o=t.useHttps,u=void 0!==o&&o,a=t.port,l=void 0===a?8097:a,s=t.websocket,c=t.resolveRNStyle,f=void 0===c?null:c,d=t.isAppActive,p=u?"wss":"ws",h=null;if((void 0===d?function(){return!0}:d)()){var v=null,m=[],g=p+"://"+r+":"+l,y=s||new window.WebSocket(g);y.onclose=function(){null!==v&&v.emit("shutdown"),_()},y.onerror=function(){_()},y.onmessage=function(e){var t;try{if("string"!=typeof e.data)throw Error();t=JSON.parse(e.data)}catch(t){return void console.error("[React DevTools] Failed to parse JSON: "+e.data)}m.forEach((function(e){try{e(t)}catch(e){throw console.log("[React DevTools] Error calling listener",t),console.log("error:",e),e}}))},y.onopen=function(){(v=new xt({listen:function(e){return m.push(e),function(){var t=m.indexOf(e);t>=0&&m.splice(t,1)}},send:function(e,t,n){y.readyState===y.OPEN?y.send(JSON.stringify({event:e,payload:t})):(null!==v&&v.shutdown(),_())}})).addListener("inspectElement",(function(t){var n=t.id,r=t.rendererID,i=e.rendererInterfaces[r];if(null!=i){var o=i.findNativeNodesForFiberID(n);null!=o&&null!=o[0]&&e.emit("showNativeHighlight",o[0])}})),v.addListener("updateComponentFilters",(function(e){Yt=e})),null==window.__REACT_DEVTOOLS_COMPONENT_FILTERS__&&v.send("overrideComponentFilters",Yt);var e=new yt(v);if(e.addListener("shutdown",(function(){$t.emit("shutdown")})),function(e,t,n){if(null==e)return function(){};var r=[e.sub("renderer-attached",(function(e){var n=e.id,r=(e.renderer,e.rendererInterface);t.setRendererInterface(n,r),r.flushInitialOperations()})),e.sub("unsupported-renderer-version",(function(e){t.onUnsupportedRenderer(e)})),e.sub("operations",t.onHookOperations),e.sub("traceUpdates",t.onTraceUpdates)],i=function(t,r){var i=e.rendererInterfaces.get(t);null==i&&("function"==typeof r.findFiberByHostInstance?i=Ve(e,t,r,n):r.ComponentTree&&(i=function(e,t,n,r){var i,o=new Map,u=new WeakMap,a=new WeakMap,l=null;function s(e){if("object"!==Rt(e)||null===e)throw new Error("Invalid internal instance: "+e);if(!u.has(e)){var t=ce();u.set(e,t),o.set(t,e)}return u.get(e)}function c(e,t){if(e.length!==t.length)return!1;for(var n=0;n0?f[f.length-1]:0),f.push(i),a.set(n,s(r._topLevelWrapper));try{var o=e.apply(this,t);return f.pop(),o}catch(e){throw f=[],e}finally{if(0===f.length){var u=a.get(n);if(void 0===u)throw new Error("Expected to find root ID.");w(u)}}},performUpdateIfNecessary:function(e,t){var n=t[0];if(9===Lt(n))return e.apply(this,t);var r=s(n);f.push(r);var i=Bt(n);try{var o=e.apply(this,t),u=Bt(n);return c(i,u)||h(0,r,u),f.pop(),o}catch(e){throw f=[],e}finally{if(0===f.length){var l=a.get(n);if(void 0===l)throw new Error("Expected to find root ID.");w(l)}}},receiveComponent:function(e,t){var n=t[0];if(9===Lt(n))return e.apply(this,t);var r=s(n);f.push(r);var i=Bt(n);try{var o=e.apply(this,t),u=Bt(n);return c(i,u)||h(0,r,u),f.pop(),o}catch(e){throw f=[],e}finally{if(0===f.length){var l=a.get(n);if(void 0===l)throw new Error("Expected to find root ID.");w(l)}}},unmountComponent:function(e,t){var n=t[0];if(9===Lt(n))return e.apply(this,t);var r=s(n);f.push(r);try{var i=e.apply(this,t);return f.pop(),function(e,t){y.push(t),o.delete(t)}(0,r),i}catch(e){throw f=[],e}finally{if(0===f.length){var u=a.get(n);if(void 0===u)throw new Error("Expected to find root ID.");w(u)}}}}));var m=[],g=new Map,y=[],_=0,b=null;function w(n){if(0!==m.length||0!==y.length||null!==b){var r=y.length+(null===b?0:1),i=new Array(3+_+(r>0?2+r:0)+m.length),o=0;if(i[o++]=t,i[o++]=n,i[o++]=_,g.forEach((function(e,t){i[o++]=t.length;for(var n=fe(t),r=0;r0){i[o++]=2,i[o++]=r;for(var u=0;u"),"color: var(--dom-tag-name-color); font-weight: normal;"),null!==t.props&&console.log("Props:",t.props),null!==t.state&&console.log("State:",t.state),null!==t.context&&console.log("Context:",t.context);var r=i(e);null!==r&&console.log("Node:",r),(window.chrome||/firefox/i.test(navigator.userAgent))&&console.log("Right-click any value to save it as a global variable for further inspection."),n&&console.groupEnd()}else console.warn('Could not find element with id "'.concat(e,'"'))},overrideSuspense:function(){throw new Error("overrideSuspense not supported by this renderer")},overrideValueAtPath:function(e,t,n,r,i){var u=o.get(t);if(null!=u){var a=u._instance;if(null!=a)switch(e){case"context":ve(a.context,r,i),Pt(a);break;case"hooks":throw new Error("Hooks not supported by this renderer");case"props":var l=u._currentElement;u._currentElement=Nt(Nt({},l),{},{props:Ae(l.props,r,i)}),Pt(a);break;case"state":ve(a.state,r,i),Pt(a)}}},renamePath:function(e,t,n,r,i){var u=o.get(t);if(null!=u){var a=u._instance;if(null!=a)switch(e){case"context":he(a.context,r,i),Pt(a);break;case"hooks":throw new Error("Hooks not supported by this renderer");case"props":var l=u._currentElement;u._currentElement=Nt(Nt({},l),{},{props:xe(l.props,r,i)}),Pt(a);break;case"state":he(a.state,r,i),Pt(a)}}},prepareViewAttributeSource:function(e,t){var n=T(e);null!==n&&(window.$attribute=de(n,t))},prepareViewElementSource:function(e){var t=o.get(e);if(null!=t){var n=t._currentElement;null!=n?r.$type=n.type:console.warn('Could not find element with id "'.concat(e,'"'))}else console.warn('Could not find instance with id "'.concat(e,'"'))},renderer:n,setTraceUpdatesEnabled:function(e){},setTrackedPath:function(e){},startProfiling:function(){},stopProfiling:function(){},storeAsGlobal:function(e,t,n){var r=T(e);if(null!==r){var i=de(r,t),o="$reactTemp".concat(n);window[o]=i,console.log(o),console.log(i)}},updateComponentFilters:function(e){}}}(e,t,r,n)),null!=i&&e.rendererInterfaces.set(t,i)),null!=i?e.emit("renderer-attached",{id:t,renderer:r,rendererInterface:i}):e.emit("unsupported-renderer-version",t)};e.renderers.forEach((function(e,t){i(t,e)})),r.push(e.sub("renderer",(function(e){var t=e.id,n=e.renderer;i(t,n)}))),e.emit("react-devtools",t),e.reactDevtoolsAgent=t;var o=function(){r.forEach((function(e){return e()})),e.rendererInterfaces.forEach((function(e){e.cleanup()})),e.reactDevtoolsAgent=null};t.addListener("shutdown",o),r.push((function(){t.removeListener("shutdown",o)}))}($t,e,window),null!=f||null!=$t.resolveRNStyle)Wt(v,e,f||$t.resolveRNStyle,i||$t.nativeStyleEditorValidAttributes||null);else{var t,n,r=function(){null!==v&&Wt(v,e,t,n)};$t.hasOwnProperty("resolveRNStyle")||Object.defineProperty($t,"resolveRNStyle",{enumerable:!1,get:function(){return t},set:function(e){t=e,r()}}),$t.hasOwnProperty("nativeStyleEditorValidAttributes")||Object.defineProperty($t,"nativeStyleEditorValidAttributes",{enumerable:!1,get:function(){return n},set:function(e){n=e,r()}})}}}else _()}function _(){null===h&&(h=setTimeout((function(){return Kt(e)}),2e3))}}}])},6099:(e,t,n)=>{"use strict"; +/** @license React v16.13.1 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var r=n(9381),i="function"==typeof Symbol&&Symbol.for,o=i?Symbol.for("react.element"):60103,u=i?Symbol.for("react.portal"):60106,a=i?Symbol.for("react.fragment"):60107,l=i?Symbol.for("react.strict_mode"):60108,s=i?Symbol.for("react.profiler"):60114,c=i?Symbol.for("react.provider"):60109,f=i?Symbol.for("react.context"):60110,d=i?Symbol.for("react.forward_ref"):60112,p=i?Symbol.for("react.suspense"):60113,h=i?Symbol.for("react.memo"):60115,v=i?Symbol.for("react.lazy"):60116,m="function"==typeof Symbol&&Symbol.iterator;function g(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nO.length&&O.push(e)}function N(e,t,n){return null==e?0:function e(t,n,r,i){var a=typeof t;"undefined"!==a&&"boolean"!==a||(t=null);var l=!1;if(null===t)l=!0;else switch(a){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case o:case u:l=!0}}if(l)return r(i,t,""===n?"."+M(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s{"use strict";e.exports=n(6099)},3390:(e,t,n)=>{"use strict";const r=n(834),i=n(6458);e.exports=r(()=>{i(()=>{process.stderr.write("[?25h")},{alwaysLast:!0})})},706:(e,t)=>{"use strict"; +/** @license React v0.18.0 + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var n,r,i,o,u;if(Object.defineProperty(t,"__esModule",{value:!0}),"undefined"==typeof window||"function"!=typeof MessageChannel){var a=null,l=null,s=function(){if(null!==a)try{var e=t.unstable_now();a(!0,e),a=null}catch(e){throw setTimeout(s,0),e}},c=Date.now();t.unstable_now=function(){return Date.now()-c},n=function(e){null!==a?setTimeout(n,0,e):(a=e,setTimeout(s,0))},r=function(e,t){l=setTimeout(e,t)},i=function(){clearTimeout(l)},o=function(){return!1},u=t.unstable_forceFrameRate=function(){}}else{var f=window.performance,d=window.Date,p=window.setTimeout,h=window.clearTimeout;if("undefined"!=typeof console){var v=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof v&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof f&&"function"==typeof f.now)t.unstable_now=function(){return f.now()};else{var m=d.now();t.unstable_now=function(){return d.now()-m}}var g=!1,y=null,_=-1,b=5,w=0;o=function(){return t.unstable_now()>=w},u=function(){},t.unstable_forceFrameRate=function(e){0>e||125T(u,n))void 0!==l&&0>T(l,u)?(e[r]=l,e[a]=n,r=a):(e[r]=u,e[o]=n,r=o);else{if(!(void 0!==l&&0>T(l,n)))break e;e[r]=l,e[a]=n,r=a}}}return t}return null}function T(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var x=[],A=[],O=1,P=null,I=3,N=!1,M=!1,R=!1;function F(e){for(var t=C(A);null!==t;){if(null===t.callback)k(A);else{if(!(t.startTime<=e))break;k(A),t.sortIndex=t.expirationTime,S(x,t)}t=C(A)}}function L(e){if(R=!1,F(e),!M)if(null!==C(x))M=!0,n(B);else{var t=C(A);null!==t&&r(L,t.startTime-e)}}function B(e,n){M=!1,R&&(R=!1,i()),N=!0;var u=I;try{for(F(n),P=C(x);null!==P&&(!(P.expirationTime>n)||e&&!o());){var a=P.callback;if(null!==a){P.callback=null,I=P.priorityLevel;var l=a(P.expirationTime<=n);n=t.unstable_now(),"function"==typeof l?P.callback=l:P===C(x)&&k(x),F(n)}else k(x);P=C(x)}if(null!==P)var s=!0;else{var c=C(A);null!==c&&r(L,c.startTime-n),s=!1}return s}finally{P=null,I=u,N=!1}}function j(e){switch(e){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var U=u;t.unstable_ImmediatePriority=1,t.unstable_UserBlockingPriority=2,t.unstable_NormalPriority=3,t.unstable_IdlePriority=5,t.unstable_LowPriority=4,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=I;I=e;try{return t()}finally{I=n}},t.unstable_next=function(e){switch(I){case 1:case 2:case 3:var t=3;break;default:t=I}var n=I;I=t;try{return e()}finally{I=n}},t.unstable_scheduleCallback=function(e,o,u){var a=t.unstable_now();if("object"==typeof u&&null!==u){var l=u.delay;l="number"==typeof l&&0a?(e.sortIndex=l,S(A,e),null===C(x)&&e===C(A)&&(R?i():R=!0,r(L,l-a))):(e.sortIndex=u,S(x,e),M||N||(M=!0,n(B))),e},t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_wrapCallback=function(e){var t=I;return function(){var n=I;I=t;try{return e.apply(this,arguments)}finally{I=n}}},t.unstable_getCurrentPriorityLevel=function(){return I},t.unstable_shouldYield=function(){var e=t.unstable_now();F(e);var n=C(x);return n!==P&&null!==P&&null!==n&&null!==n.callback&&n.startTime<=e&&n.expirationTime{"use strict";e.exports=n(706)},6458:(e,t,n)=>{var r,i=n(2357),o=n(8082),u=n(8614);function a(){c&&(c=!1,o.forEach((function(e){try{process.removeListener(e,s[e])}catch(e){}})),process.emit=h,process.reallyExit=d,r.count-=1)}function l(e,t,n){r.emitted[e]||(r.emitted[e]=!0,r.emit(e,t,n))}"function"!=typeof u&&(u=u.EventEmitter),process.__signal_exit_emitter__?r=process.__signal_exit_emitter__:((r=process.__signal_exit_emitter__=new u).count=0,r.emitted={}),r.infinite||(r.setMaxListeners(1/0),r.infinite=!0),e.exports=function(e,t){i.equal(typeof e,"function","a callback must be provided for exit handler"),!1===c&&f();var n="exit";t&&t.alwaysLast&&(n="afterexit");return r.on(n,e),function(){r.removeListener(n,e),0===r.listeners("exit").length&&0===r.listeners("afterexit").length&&a()}},e.exports.unload=a;var s={};o.forEach((function(e){s[e]=function(){process.listeners(e).length===r.count&&(a(),l("exit",null,e),l("afterexit",null,e),process.kill(process.pid,e))}})),e.exports.signals=function(){return o},e.exports.load=f;var c=!1;function f(){c||(c=!0,r.count+=1,o=o.filter((function(e){try{return process.on(e,s[e]),!0}catch(e){return!1}})),process.emit=v,process.reallyExit=p)}var d=process.reallyExit;function p(e){process.exitCode=e||0,l("exit",process.exitCode,null),l("afterexit",process.exitCode,null),d.call(process,process.exitCode)}var h=process.emit;function v(e,t){if("exit"===e){void 0!==t&&(process.exitCode=t);var n=h.apply(this,arguments);return l("exit",process.exitCode,null),l("afterexit",process.exitCode,null),n}return h.apply(this,arguments)}},8082:e=>{e.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"],"win32"!==process.platform&&e.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),"linux"===process.platform&&e.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")},1566:(e,t,n)=>{"use strict";const r=n(7347),i=n(409),o=n(8483),u=["","›"],a=e=>`${u[0]}[${e}m`,l=(e,t,n)=>{let r=[];e=[...e];for(let n of e){const i=n;n.match(";")&&(n=n.split(";")[0][0]+"0");const u=o.codes.get(parseInt(n,10));if(u){const n=e.indexOf(u.toString());n>=0?e.splice(n,1):r.push(a(t?u:i))}else{if(t){r.push(a(0));break}r.push(a(i))}}if(t&&(r=r.filter((e,t)=>r.indexOf(e)===t),void 0!==n)){const e=a(o.codes.get(parseInt(n,10)));r=r.reduce((t,n)=>n===e?[n,...t]:[...t,n],[])}return r.join("")};e.exports=(e,t,n)=>{const o=[...e.normalize()],a=[];n="number"==typeof n?n:o.length;let s,c=!1,f=0,d="";for(const[p,h]of o.entries()){let o=!1;if(u.includes(h)){const t=/\d[^m]*/.exec(e.slice(p,p+18));s=t&&t.length>0?t[0]:void 0,ft&&f<=n)d+=h;else if(f!==t||c||void 0===s){if(f>=n){d+=l(a,!0,s);break}}else d=l(a)}return d}},9796:(e,t,n)=>{"use strict";const r=n(8759),i=[].concat(n(2282).builtinModules,"bootstrap_node","node").map(e=>new RegExp(`(?:\\(${e}\\.js:\\d+:\\d+\\)$|^\\s*at ${e}\\.js:\\d+:\\d+$)`));i.push(/\(internal\/[^:]+:\d+:\d+\)$/,/\s*at internal\/[^:]+:\d+:\d+$/,/\/\.node-spawn-wrap-\w+-\w+\/node:\d+:\d+\)?$/);class o{constructor(e){"internals"in(e={ignoredPackages:[],...e})==!1&&(e.internals=o.nodeInternals()),"cwd"in e==!1&&(e.cwd=process.cwd()),this._cwd=e.cwd.replace(/\\/g,"/"),this._internals=[].concat(e.internals,function(e){if(0===e.length)return[];const t=e.map(e=>r(e));return new RegExp(`[/\\\\]node_modules[/\\\\](?:${t.join("|")})[/\\\\][^:]+:\\d+:\\d+`)}(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...i]}clean(e,t=0){t=" ".repeat(t),Array.isArray(e)||(e=e.split("\n")),!/^\s*at /.test(e[0])&&/^\s*at /.test(e[1])&&(e=e.slice(1));let n=!1,r=null;const i=[];return e.forEach(e=>{if(e=e.replace(/\\/g,"/"),this._internals.some(t=>t.test(e)))return;const t=/^\s*at /.test(e);n?e=e.trimEnd().replace(/^(\s+)at /,"$1"):(e=e.trim(),t&&(e=e.slice(3))),(e=e.replace(this._cwd+"/",""))&&(t?(r&&(i.push(r),r=null),i.push(e)):(n=!0,r=e))}),i.map(e=>`${t}${e}\n`).join("")}captureString(e,t=this.captureString){"function"==typeof e&&(t=e,e=1/0);const{stackTraceLimit:n}=Error;e&&(Error.stackTraceLimit=e);const r={};Error.captureStackTrace(r,t);const{stack:i}=r;return Error.stackTraceLimit=n,this.clean(i)}capture(e,t=this.capture){"function"==typeof e&&(t=e,e=1/0);const{prepareStackTrace:n,stackTraceLimit:r}=Error;Error.prepareStackTrace=(e,t)=>this._wrapCallSite?t.map(this._wrapCallSite):t,e&&(Error.stackTraceLimit=e);const i={};Error.captureStackTrace(i,t);const{stack:o}=i;return Object.assign(Error,{prepareStackTrace:n,stackTraceLimit:r}),o}at(e=this.at){const[t]=this.capture(1,e);if(!t)return{};const n={line:t.getLineNumber(),column:t.getColumnNumber()};let r;u(n,t.getFileName(),this._cwd),t.isConstructor()&&(n.constructor=!0),t.isEval()&&(n.evalOrigin=t.getEvalOrigin()),t.isNative()&&(n.native=!0);try{r=t.getTypeName()}catch(e){}r&&"Object"!==r&&"[object Object]"!==r&&(n.type=r);const i=t.getFunctionName();i&&(n.function=i);const o=t.getMethodName();return o&&i!==o&&(n.method=o),n}parseLine(e){const t=e&&e.match(a);if(!t)return null;const n="new"===t[1];let r=t[2];const i=t[3],o=t[4],s=Number(t[5]),c=Number(t[6]);let f=t[7];const d=t[8],p=t[9],h="native"===t[10],v=")"===t[11];let m;const g={};if(d&&(g.line=Number(d)),p&&(g.column=Number(p)),v&&f){let e=0;for(let t=f.length-1;t>0;t--)if(")"===f.charAt(t))e++;else if("("===f.charAt(t)&&" "===f.charAt(t-1)&&(e--,-1===e&&" "===f.charAt(t-1))){const e=f.slice(0,t-1),n=f.slice(t+1);f=n,r+=" ("+e;break}}if(r){const e=r.match(l);e&&(r=e[1],m=e[2])}return u(g,f,this._cwd),n&&(g.constructor=!0),i&&(g.evalOrigin=i,g.evalLine=s,g.evalColumn=c,g.evalFile=o&&o.replace(/\\/g,"/")),h&&(g.native=!0),r&&(g.function=r),m&&r!==m&&(g.method=m),g}}function u(e,t,n){t&&((t=t.replace(/\\/g,"/")).startsWith(n+"/")&&(t=t.slice(n.length+1)),e.file=t)}const a=new RegExp("^(?:\\s*at )?(?:(new) )?(?:(.*?) \\()?(?:eval at ([^ ]+) \\((.+?):(\\d+):(\\d+)\\), )?(?:(.+?):(\\d+):(\\d+)|(native))(\\)?)$"),l=/^(.*?) \[as (.*?)\]$/;e.exports=o},3262:(e,t,n)=>{"use strict";const r=n(7402),i=n(5640),o=e=>r(e).replace(i()," ").length;e.exports=o,e.exports.default=o},5043:(e,t,n)=>{"use strict";const r=n(7915),i=n(7347),o=n(1013),u=e=>{if("string"!=typeof(e=e.replace(o()," "))||0===e.length)return 0;e=r(e);let t=0;for(let n=0;n=127&&r<=159||(r>=768&&r<=879||(r>65535&&n++,t+=i(r)?2:1))}return t};e.exports=u,e.exports.default=u},7402:(e,t,n)=>{"use strict";const r=n(5378),i=e=>"string"==typeof e?e.replace(r(),""):e;e.exports=i,e.exports.default=i},7915:(e,t,n)=>{"use strict";const r=n(1337);e.exports=e=>"string"==typeof e?e.replace(r(),""):e},9428:(e,t,n)=>{"use strict";const r=n(2087),i=n(3867),o=n(2918),{env:u}=process;let a;function l(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function s(e,t){if(0===a)return 0;if(o("color=16m")||o("color=full")||o("color=truecolor"))return 3;if(o("color=256"))return 2;if(e&&!t&&void 0===a)return 0;const n=a||0;if("dumb"===u.TERM)return n;if("win32"===process.platform){const e=r.release().split(".");return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in u)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(e=>e in u)||"codeship"===u.CI_NAME?1:n;if("TEAMCITY_VERSION"in u)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(u.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in u)return 1;if("truecolor"===u.COLORTERM)return 3;if("TERM_PROGRAM"in u){const e=parseInt((u.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(u.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(u.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(u.TERM)||"COLORTERM"in u?1:n}o("no-color")||o("no-colors")||o("color=false")||o("color=never")?a=0:(o("color")||o("colors")||o("color=true")||o("color=always"))&&(a=1),"FORCE_COLOR"in u&&(a="true"===u.FORCE_COLOR?1:"false"===u.FORCE_COLOR?0:0===u.FORCE_COLOR.length?1:Math.min(parseInt(u.FORCE_COLOR,10),3)),e.exports={supportsColor:function(e){return l(s(e,e&&e.isTTY))},stdout:l(s(!0,i.isatty(1))),stderr:l(s(!0,i.isatty(2)))}},8949:(e,t,n)=>{"use strict";const r=n(5043),i=e=>{let t=0;for(const n of e.split("\n"))t=Math.max(t,r(n));return t};e.exports=i,e.exports.default=i},4332:(e,t,n)=>{"use strict";const r=n(5043),i=n(7915),o=n(8483),u=new Set(["","›"]),a=e=>`${u.values().next().value}[${e}m`,l=(e,t,n)=>{const o=[...t];let a=!1,l=r(i(e[e.length-1]));for(const[t,i]of o.entries()){const s=r(i);if(l+s<=n?e[e.length-1]+=i:(e.push(i),l=0),u.has(i))a=!0;else if(a&&"m"===i){a=!1;continue}a||(l+=s,l===n&&t0&&e.length>1&&(e[e.length-2]+=e.pop())},s=e=>{const t=e.split(" ");let n=t.length;for(;n>0&&!(r(t[n-1])>0);)n--;return n===t.length?e:t.slice(0,n).join(" ")+t.slice(n).join("")},c=(e,t,n={})=>{if(!1!==n.trim&&""===e.trim())return"";let i,c="",f="";const d=(e=>e.split(" ").map(e=>r(e)))(e);let p=[""];for(const[i,o]of e.split(" ").entries()){!1!==n.trim&&(p[p.length-1]=p[p.length-1].trimLeft());let e=r(p[p.length-1]);if(0!==i&&(e>=t&&(!1===n.wordWrap||!1===n.trim)&&(p.push(""),e=0),(e>0||!1===n.trim)&&(p[p.length-1]+=" ",e++)),n.hard&&d[i]>t){const n=t-e,r=1+Math.floor((d[i]-n-1)/t);Math.floor((d[i]-1)/t)t&&e>0&&d[i]>0){if(!1===n.wordWrap&&et&&!1===n.wordWrap?l(p,o,t):p[p.length-1]+=o}}!1!==n.trim&&(p=p.map(s)),c=p.join("\n");for(const[e,t]of[...c].entries()){if(f+=t,u.has(t)){const t=parseFloat(/\d[^m]*/.exec(c.slice(e,e+4)));i=39===t?null:t}const n=o.codes.get(Number(i));i&&n&&("\n"===c[e+1]?f+=a(n):"\n"===t&&(f+=a(i)))}return f};e.exports=(e,t,n)=>String(e).normalize().replace(/\r\n/g,"\n").split("\n").map(e=>c(e,t,n)).join("\n")},3354:function(module,exports){var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__,wrapper;wrapper=function(Module,cb){var Module;"function"==typeof Module&&(cb=Module,Module={}),Module.onRuntimeInitialized=function(e,t){return function(){e&&e.apply(this,arguments);try{Module.ccall("nbind_init")}catch(e){return void t(e)}t(null,{bind:Module._nbind_value,reflect:Module.NBind.reflect,queryType:Module.NBind.queryType,toggleLightGC:Module.toggleLightGC,lib:Module})}}(Module.onRuntimeInitialized,cb),Module||(Module=(void 0!==Module?Module:null)||{});var moduleOverrides={};for(var key in Module)Module.hasOwnProperty(key)&&(moduleOverrides[key]=Module[key]);var ENVIRONMENT_IS_WEB=!1,ENVIRONMENT_IS_WORKER=!1,ENVIRONMENT_IS_NODE=!1,ENVIRONMENT_IS_SHELL=!1,nodeFS,nodePath;if(Module.ENVIRONMENT)if("WEB"===Module.ENVIRONMENT)ENVIRONMENT_IS_WEB=!0;else if("WORKER"===Module.ENVIRONMENT)ENVIRONMENT_IS_WORKER=!0;else if("NODE"===Module.ENVIRONMENT)ENVIRONMENT_IS_NODE=!0;else{if("SHELL"!==Module.ENVIRONMENT)throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.");ENVIRONMENT_IS_SHELL=!0}else ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE)Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn),Module.read=function(e,t){nodeFS||(nodeFS={}("")),nodePath||(nodePath={}("")),e=nodePath.normalize(e);var n=nodeFS.readFileSync(e);return t?n:n.toString()},Module.readBinary=function(e){var t=Module.read(e,!0);return t.buffer||(t=new Uint8Array(t)),assert(t.buffer),t},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\/g,"/"):Module.thisProgram="unknown-program"),Module.arguments=process.argv.slice(2),module.exports=Module,Module.inspect=function(){return"[Emscripten Module object]"};else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),"undefined"!=typeof printErr&&(Module.printErr=printErr),"undefined"!=typeof read?Module.read=read:Module.read=function(){throw"no read() available"},Module.readBinary=function(e){if("function"==typeof readbuffer)return new Uint8Array(readbuffer(e));var t=read(e,"binary");return assert("object"==typeof t),t},"undefined"!=typeof scriptArgs?Module.arguments=scriptArgs:void 0!==arguments&&(Module.arguments=arguments),"function"==typeof quit&&(Module.quit=function(e,t){quit(e)});else{if(!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER)throw"Unknown runtime environment. Where are we?";if(Module.read=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),Module.readAsync=function(e,t,n){var r=new XMLHttpRequest;r.open("GET",e,!0),r.responseType="arraybuffer",r.onload=function(){200==r.status||0==r.status&&r.response?t(r.response):n()},r.onerror=n,r.send(null)},void 0!==arguments&&(Module.arguments=arguments),"undefined"!=typeof console)Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&"undefined"!=typeof dump?function(e){dump(e)}:function(e){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),void 0===Module.setWindowTitle&&(Module.setWindowTitle=function(e){document.title=e})}function globalEval(e){eval.call(null,e)}for(var key in!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram="./this.program"),Module.quit||(Module.quit=function(e,t){throw t}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[],moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(e){return tempRet0=e,e},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(e){STACKTOP=e},getNativeTypeSize:function(e){switch(e){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:if("*"===e[e.length-1])return Runtime.QUANTUM_SIZE;if("i"===e[0]){var t=parseInt(e.substr(1));return assert(t%8==0),t/8}return 0}},getNativeFieldSize:function(e){return Math.max(Runtime.getNativeTypeSize(e),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(e,t){return"double"===t||"i64"===t?7&e&&(assert(4==(7&e)),e+=4):assert(0==(3&e)),e},getAlignSize:function(e,t,n){return n||"i64"!=e&&"double"!=e?e?Math.min(t||(e?Runtime.getNativeFieldSize(e):0),Runtime.QUANTUM_SIZE):Math.min(t,8):8},dynCall:function(e,t,n){return n&&n.length?Module["dynCall_"+e].apply(null,[t].concat(n)):Module["dynCall_"+e].call(null,t)},functionPointers:[],addFunction:function(e){for(var t=0;t>2],n=-16&(t+e+15|0);return HEAP32[DYNAMICTOP_PTR>>2]=n,n>=TOTAL_MEMORY&&!enlargeMemory()?(HEAP32[DYNAMICTOP_PTR>>2]=t,0):t},alignMemory:function(e,t){return e=Math.ceil(e/(t||16))*(t||16)},makeBigInt:function(e,t,n){return n?+(e>>>0)+4294967296*+(t>>>0):+(e>>>0)+4294967296*+(0|t)},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0,cwrap,ccall;function assert(e,t){e||abort("Assertion failed: "+t)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}function setValue(e,t,n,r){switch("*"===(n=n||"i8").charAt(n.length-1)&&(n="i32"),n){case"i1":case"i8":HEAP8[e>>0]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":tempI64=[t>>>0,(tempDouble=t,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;default:abort("invalid type for setValue: "+n)}}function getValue(e,t,n){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+t)}return null}!function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(e){var t=Runtime.stackAlloc(e.length);return writeArrayToMemory(e,t),t},stringToC:function(e){var t=0;if(null!=e&&0!==e){var n=1+(e.length<<2);stringToUTF8(e,t=Runtime.stackAlloc(n),n)}return t}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,t,n,r,i){var o=getCFunc(e),u=[],a=0;if(r)for(var l=0;l>2]=0;for(l=u+o;r>0]=0;return u}if("i8"===a)return e.subarray||e.slice?HEAPU8.set(e,u):HEAPU8.set(new Uint8Array(e),u),u;for(var s,c,f,d=0;d>0],(0!=n||t)&&(i++,!t||i!=t););t||(t=i);var o="";if(r<128){for(var u;t>0;)u=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(t,1024))),o=o?o+u:u,e+=1024,t-=1024;return o}return Module.UTF8ToString(e)}function AsciiToString(e){for(var t="";;){var n=HEAP8[e++>>0];if(!n)return t;t+=String.fromCharCode(n)}}function stringToAscii(e,t){return writeAsciiToMemory(e,t,!1)}Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE,Module.allocate=allocate,Module.getMemory=getMemory,Module.Pointer_stringify=Pointer_stringify,Module.AsciiToString=AsciiToString,Module.stringToAscii=stringToAscii;var UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(e,t){for(var n=t;e[n];)++n;if(n-t>16&&e.subarray&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,n));for(var r,i,o,u,a,l="";;){if(!(r=e[t++]))return l;if(128&r)if(i=63&e[t++],192!=(224&r))if(o=63&e[t++],224==(240&r)?r=(15&r)<<12|i<<6|o:(u=63&e[t++],240==(248&r)?r=(7&r)<<18|i<<12|o<<6|u:(a=63&e[t++],r=248==(252&r)?(3&r)<<24|i<<18|o<<12|u<<6|a:(1&r)<<30|i<<24|o<<18|u<<12|a<<6|63&e[t++])),r<65536)l+=String.fromCharCode(r);else{var s=r-65536;l+=String.fromCharCode(55296|s>>10,56320|1023&s)}else l+=String.fromCharCode((31&r)<<6|i);else l+=String.fromCharCode(r)}}function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}function stringToUTF8Array(e,t,n,r){if(!(r>0))return 0;for(var i=n,o=n+r-1,u=0;u=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++u)),a<=127){if(n>=o)break;t[n++]=a}else if(a<=2047){if(n+1>=o)break;t[n++]=192|a>>6,t[n++]=128|63&a}else if(a<=65535){if(n+2>=o)break;t[n++]=224|a>>12,t[n++]=128|a>>6&63,t[n++]=128|63&a}else if(a<=2097151){if(n+3>=o)break;t[n++]=240|a>>18,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|63&a}else if(a<=67108863){if(n+4>=o)break;t[n++]=248|a>>24,t[n++]=128|a>>18&63,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|63&a}else{if(n+5>=o)break;t[n++]=252|a>>30,t[n++]=128|a>>24&63,t[n++]=128|a>>18&63,t[n++]=128|a>>12&63,t[n++]=128|a>>6&63,t[n++]=128|63&a}}return t[n]=0,n-i}function stringToUTF8(e,t,n){return stringToUTF8Array(e,HEAPU8,t,n)}function lengthBytesUTF8(e){for(var t=0,n=0;n=55296&&r<=57343&&(r=65536+((1023&r)<<10)|1023&e.charCodeAt(++n)),r<=127?++t:t+=r<=2047?2:r<=65535?3:r<=2097151?4:r<=67108863?5:6}return t}Module.UTF8ArrayToString=UTF8ArrayToString,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8Array=stringToUTF8Array,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0,HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;function demangle(e){var t=Module.___cxa_demangle||Module.__cxa_demangle;if(t){try{var n=e.substr(1),r=lengthBytesUTF8(n)+1,i=_malloc(r);stringToUTF8(n,i,r);var o=_malloc(4),u=t(i,0,0,o);if(0===getValue(o,"i32")&&u)return Pointer_stringify(u)}catch(e){}finally{i&&_free(i),o&&_free(o),u&&_free(u)}return e}return Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),e}function demangleAll(e){return e.replace(/__Z[\w\d_]+/g,(function(e){var t=demangle(e);return e===t?e:e+" ["+t+"]"}))}function jsStackTrace(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}function stackTrace(){var e=jsStackTrace();return Module.extraStackTrace&&(e+="\n"+Module.extraStackTrace()),demangleAll(e)}function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}function enlargeMemory(){abortOnCannotGrowMemory()}Module.stackTrace=stackTrace,STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;function getTotalMemory(){return TOTAL_MEMORY}if(TOTAL_MEMORY0;){var t=e.shift();if("function"!=typeof t){var n=t.func;"number"==typeof n?void 0===t.arg?Module.dynCall_v(n):Module.dynCall_vi(n,t.arg):n(void 0===t.arg?null:t.arg)}else t()}}Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPreMain(e){__ATMAIN__.unshift(e)}function addOnExit(e){__ATEXIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}function intArrayFromString(e,t,n){var r=n>0?n:lengthBytesUTF8(e)+1,i=new Array(r),o=stringToUTF8Array(e,i,0,i.length);return t&&(i.length=o),i}function intArrayToString(e){for(var t=[],n=0;n255&&(r&=255),t.push(String.fromCharCode(r))}return t.join("")}function writeStringToMemory(e,t,n){var r,i;Runtime.warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"),n&&(i=t+lengthBytesUTF8(e),r=HEAP8[i]),stringToUTF8(e,t,1/0),n&&(HEAP8[i]=r)}function writeArrayToMemory(e,t){HEAP8.set(e,t)}function writeAsciiToMemory(e,t,n){for(var r=0;r>0]=e.charCodeAt(r);n||(HEAP8[t>>0]=0)}if(Module.addOnPreRun=addOnPreRun,Module.addOnInit=addOnInit,Module.addOnPreMain=addOnPreMain,Module.addOnExit=addOnExit,Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,t){var n=65535&e,r=65535&t;return n*r+((e>>>16)*r+n*(t>>>16)<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(e){return froundBuffer[0]=e,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var t=0;t<32;t++)if(e&1<<31-t)return t;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(e){return e<0?Math.ceil(e):Math.floor(e)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(e,t,n,r,i,o,u,a){return _nbind.callbackSignatureList[e].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(e,t,n,r,i,o,u,a){return ASM_CONSTS[e](t,n,r,i,o,u,a)}function _emscripten_asm_const_iiiii(e,t,n,r,i){return ASM_CONSTS[e](t,n,r,i)}function _emscripten_asm_const_iiidddddd(e,t,n,r,i,o,u,a,l){return ASM_CONSTS[e](t,n,r,i,o,u,a,l)}function _emscripten_asm_const_iiididi(e,t,n,r,i,o,u){return ASM_CONSTS[e](t,n,r,i,o,u)}function _emscripten_asm_const_iiii(e,t,n,r){return ASM_CONSTS[e](t,n,r)}function _emscripten_asm_const_iiiid(e,t,n,r,i){return ASM_CONSTS[e](t,n,r,i)}function _emscripten_asm_const_iiiiii(e,t,n,r,i,o){return ASM_CONSTS[e](t,n,r,i,o)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;function _atexit(e,t){__ATEXIT__.unshift({func:e,arg:t})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr("missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj"),abort(-1)}function __decorate(e,t,n,r){var i,o=arguments.length,u=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)u=Reflect.decorate(e,t,n,r);else for(var a=e.length-1;a>=0;a--)(i=e[a])&&(u=(o<3?i(u):o>3?i(t,n,u):i(t,n))||u);return o>3&&u&&Object.defineProperty(t,n,u),u}function _defineHidden(e){return function(t,n){Object.defineProperty(t,n,{configurable:!1,enumerable:!1,value:e,writable:!0})}}STATICTOP+=16;var _nbind={};function __nbind_free_external(e){_nbind.externalList[e].dereference(e)}function __nbind_reference_external(e){_nbind.externalList[e].reference()}function _llvm_stackrestore(e){var t=_llvm_stacksave,n=t.LLVM_SAVEDSTACKS[e];t.LLVM_SAVEDSTACKS.splice(e,1),Runtime.stackRestore(n)}function __nbind_register_pool(e,t,n,r){_nbind.Pool.pageSize=e,_nbind.Pool.usedPtr=t/4,_nbind.Pool.rootPtr=n,_nbind.Pool.pagePtr=r/4,HEAP32[t/4]=16909060,1==HEAP8[t]&&(_nbind.bigEndian=!0),HEAP32[t/4]=0,_nbind.makeTypeKindTbl=((i={})[1024]=_nbind.PrimitiveType,i[64]=_nbind.Int64Type,i[2048]=_nbind.BindClass,i[3072]=_nbind.BindClassPtr,i[4096]=_nbind.SharedClassPtr,i[5120]=_nbind.ArrayType,i[6144]=_nbind.ArrayType,i[7168]=_nbind.CStringType,i[9216]=_nbind.CallbackType,i[10240]=_nbind.BindType,i),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,"cbFunction &":_nbind.CallbackType,"const cbFunction &":_nbind.CallbackType,"const std::string &":_nbind.StringType,"std::string":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var i,o=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:""});o.proto=Module,_nbind.BindClass.list.push(o)}function _emscripten_set_main_loop_timing(e,t){if(Browser.mainLoop.timingMode=e,Browser.mainLoop.timingValue=t,!Browser.mainLoop.func)return 1;if(0==e)Browser.mainLoop.scheduler=function(){var e=0|Math.max(0,Browser.mainLoop.tickStartTime+t-_emscripten_get_now());setTimeout(Browser.mainLoop.runner,e)},Browser.mainLoop.method="timeout";else if(1==e)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method="rAF";else if(2==e){if(!window.setImmediate){var n=[];window.addEventListener("message",(function(e){e.source===window&&"setimmediate"===e.data&&(e.stopPropagation(),n.shift()())}),!0),window.setImmediate=function(e){n.push(e),ENVIRONMENT_IS_WORKER?(void 0===Module.setImmediates&&(Module.setImmediates=[]),Module.setImmediates.push(e),window.postMessage({target:"setimmediate"})):window.postMessage("setimmediate","*")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method="immediate"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(e,t,n,r,i){var o;Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters."),Browser.mainLoop.func=e,Browser.mainLoop.arg=r,o=void 0!==r?function(){Module.dynCall_vi(e,r)}:function(){Module.dynCall_v(e)};var u=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT)if(Browser.mainLoop.queue.length>0){var e=Date.now(),t=Browser.mainLoop.queue.shift();if(t.func(t.arg),Browser.mainLoop.remainingBlockers){var n=Browser.mainLoop.remainingBlockers,r=n%1==0?n-1:Math.floor(n);t.counted?Browser.mainLoop.remainingBlockers=r:(r+=.5,Browser.mainLoop.remainingBlockers=(8*n+r)/9)}if(console.log('main loop blocker "'+t.name+'" took '+(Date.now()-e)+" ms"),Browser.mainLoop.updateStatus(),u1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0?Browser.mainLoop.scheduler():(0==Browser.mainLoop.timingMode&&(Browser.mainLoop.tickStartTime=_emscripten_get_now()),"timeout"===Browser.mainLoop.method&&Module.ctx&&(Module.printErr("Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!"),Browser.mainLoop.method=""),Browser.mainLoop.runIter(o),u0?_emscripten_set_main_loop_timing(0,1e3/t):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),n)throw"SimulateInfiniteLoop"}var Browser={mainLoop:{scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var e=Browser.mainLoop.timingMode,t=Browser.mainLoop.timingValue,n=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(n,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(e,t),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var e=Module.statusMessage||"Please wait...",t=Browser.mainLoop.remainingBlockers,n=Browser.mainLoop.expectedBlockers;t?t=6;){var u=r>>i-6&63;i-=6,n+=t[u]}return 2==i?(n+=t[(3&r)<<4],n+="=="):4==i&&(n+=t[(15&r)<<2],n+="="),n}(e),o(s))},s.src=l,Browser.safeSetTimeout((function(){o(s)}),1e4)}};Module.preloadPlugins.push(t);var n=Module.canvas;n&&(n.requestPointerLock=n.requestPointerLock||n.mozRequestPointerLock||n.webkitRequestPointerLock||n.msRequestPointerLock||function(){},n.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},n.exitPointerLock=n.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",r,!1),document.addEventListener("mozpointerlockchange",r,!1),document.addEventListener("webkitpointerlockchange",r,!1),document.addEventListener("mspointerlockchange",r,!1),Module.elementPointerLock&&n.addEventListener("click",(function(e){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),e.preventDefault())}),!1))}function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}},createContext:function(e,t,n,r){if(t&&Module.ctx&&e==Module.canvas)return Module.ctx;var i,o;if(t){var u={antialias:!1,alpha:!1};if(r)for(var a in r)u[a]=r[a];(o=GL.createContext(e,u))&&(i=GL.getContext(o).GLctx)}else i=e.getContext("2d");return i?(n&&(t||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=i,t&&GL.makeContextCurrent(o),Module.useWebGL=t,Browser.moduleContextCreatedCallbacks.forEach((function(e){e()})),Browser.init()),i):null},destroyContext:function(e,t,n){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(e,t,n){Browser.lockPointer=e,Browser.resizeCanvas=t,Browser.vrDevice=n,void 0===Browser.lockPointer&&(Browser.lockPointer=!0),void 0===Browser.resizeCanvas&&(Browser.resizeCanvas=!1),void 0===Browser.vrDevice&&(Browser.vrDevice=null);var r=Module.canvas;function i(){Browser.isFullscreen=!1;var e=r.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===e?(r.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},r.exitFullscreen=r.exitFullscreen.bind(document),Browser.lockPointer&&r.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(e.parentNode.insertBefore(r,e),e.parentNode.removeChild(e),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(r)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",i,!1),document.addEventListener("mozfullscreenchange",i,!1),document.addEventListener("webkitfullscreenchange",i,!1),document.addEventListener("MSFullscreenChange",i,!1));var o=document.createElement("div");r.parentNode.insertBefore(o,r),o.appendChild(r),o.requestFullscreen=o.requestFullscreen||o.mozRequestFullScreen||o.msRequestFullscreen||(o.webkitRequestFullscreen?function(){o.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(o.webkitRequestFullScreen?function(){o.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),n?o.requestFullscreen({vrDisplay:n}):o.requestFullscreen()},requestFullScreen:function(e,t,n){return Module.printErr("Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead."),Browser.requestFullScreen=function(e,t,n){return Browser.requestFullscreen(e,t,n)},Browser.requestFullscreen(e,t,n)},nextRAF:0,fakeRequestAnimationFrame:function(e){var t=Date.now();if(0===Browser.nextRAF)Browser.nextRAF=t+1e3/60;else for(;t+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var n=Math.max(Browser.nextRAF-t,0);setTimeout(e,n)},requestAnimationFrame:function(e){"undefined"==typeof window?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(e){return function(){if(!ABORT)return e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach((function(e){e()}))}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame((function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))}))},safeSetTimeout:function(e,t){return Module.noExitRuntime=!0,setTimeout((function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser.queuedAsyncCallbacks.push(e))}),t)},safeSetInterval:function(e,t){return Module.noExitRuntime=!0,setInterval((function(){ABORT||Browser.allowAsyncCallbacks&&e()}),t)},getMimetype:function(e){return{jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",bmp:"image/bmp",ogg:"audio/ogg",wav:"audio/wav",mp3:"audio/mpeg"}[e.substr(e.lastIndexOf(".")+1)]},getUserMedia:function(e){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(e)},getMovementX:function(e){return e.movementX||e.mozMovementX||e.webkitMovementX||0},getMovementY:function(e){return e.movementY||e.mozMovementY||e.webkitMovementY||0},getMouseWheelDelta:function(e){var t=0;switch(e.type){case"DOMMouseScroll":t=e.detail;break;case"mousewheel":t=e.wheelDelta;break;case"wheel":t=e.deltaY;break;default:throw"unrecognized mouse wheel event: "+e.type}return t},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(e){if(Browser.pointerLock)"mousemove"!=e.type&&"mozMovementX"in e?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(e),Browser.mouseMovementY=Browser.getMovementY(e)),"undefined"!=typeof SDL?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var t=Module.canvas.getBoundingClientRect(),n=Module.canvas.width,r=Module.canvas.height,i=void 0!==window.scrollX?window.scrollX:window.pageXOffset,o=void 0!==window.scrollY?window.scrollY:window.pageYOffset;if("touchstart"===e.type||"touchend"===e.type||"touchmove"===e.type){var u=e.touch;if(void 0===u)return;var a=u.pageX-(i+t.left),l=u.pageY-(o+t.top),s={x:a*=n/t.width,y:l*=r/t.height};if("touchstart"===e.type)Browser.lastTouches[u.identifier]=s,Browser.touches[u.identifier]=s;else if("touchend"===e.type||"touchmove"===e.type){var c=Browser.touches[u.identifier];c||(c=s),Browser.lastTouches[u.identifier]=c,Browser.touches[u.identifier]=s}return}var f=e.pageX-(i+t.left),d=e.pageY-(o+t.top);f*=n/t.width,d*=r/t.height,Browser.mouseMovementX=f-Browser.mouseX,Browser.mouseMovementY=d-Browser.mouseY,Browser.mouseX=f,Browser.mouseY=d}},asyncLoad:function(e,t,n,r){var i=r?"":getUniqueRunDependency("al "+e);Module.readAsync(e,(function(n){assert(n,'Loading data file "'+e+'" failed (no arrayBuffer).'),t(new Uint8Array(n)),i&&removeRunDependency(i)}),(function(t){if(!n)throw'Loading data file "'+e+'" failed.';n()})),i&&addRunDependency(i)},resizeListeners:[],updateResizeListeners:function(){var e=Module.canvas;Browser.resizeListeners.forEach((function(t){t(e.width,e.height)}))},setCanvasSize:function(e,t,n){var r=Module.canvas;Browser.updateCanvasDimensions(r,e,t),n||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if("undefined"!=typeof SDL){var e=HEAPU32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2];e|=8388608,HEAP32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2]=e}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if("undefined"!=typeof SDL){var e=HEAPU32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2];e&=-8388609,HEAP32[SDL.screen+0*Runtime.QUANTUM_SIZE>>2]=e}Browser.updateResizeListeners()},updateCanvasDimensions:function(e,t,n){t&&n?(e.widthNative=t,e.heightNative=n):(t=e.widthNative,n=e.heightNative);var r=t,i=n;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(r/i>2]},getStr:function(){return Pointer_stringify(SYSCALLS.get())},get64:function(){var e=SYSCALLS.get(),t=SYSCALLS.get();return assert(e>=0?0===t:-1===t),e},getZero:function(){assert(0===SYSCALLS.get())}};function ___syscall6(e,t){SYSCALLS.varargs=t;try{var n=SYSCALLS.getStreamFromFD();return FS.close(n),0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall54(e,t){SYSCALLS.varargs=t;try{return 0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function _typeModule(e){var t=[[0,1,"X"],[1,1,"const X"],[128,1,"X *"],[256,1,"X &"],[384,1,"X &&"],[512,1,"std::shared_ptr"],[640,1,"std::unique_ptr"],[5120,1,"std::vector"],[6144,2,"std::array"],[9216,-1,"std::function"]];function n(e,t,n,r,i,o){if(1==t){var u=896&r;128!=u&&256!=u&&384!=u||(e="X const")}return(o?n.replace("X",e).replace("Y",i):e.replace("X",n).replace("Y",i)).replace(/([*&]) (?=[*&])/g,"$1")}function r(e,t){var n=t.flags,r=896&n,i=15360&n;return t.name||1024!=i||(1==t.ptrSize?t.name=(16&n?"":(8&n?"un":"")+"signed ")+"char":t.name=(8&n?"u":"")+(32&n?"float":"int")+8*t.ptrSize+"_t"),8!=t.ptrSize||32&n||(i=64),2048==i&&(512==r||640==r?i=4096:r&&(i=3072)),e(i,t)}var i={Type:function(){function e(e){this.id=e.id,this.name=e.name,this.flags=e.flags,this.spec=e}return e.prototype.toString=function(){return this.name},e}(),getComplexType:function e(i,o,u,a,l,s,c,f){void 0===s&&(s="X"),void 0===f&&(f=1);var d=u(i);if(d)return d;var p,h=a(i),v=h.placeholderFlag,m=t[v];c&&m&&(s=n(c[2],c[0],s,m[0],"?",!0)),0==v&&(p="Unbound"),v>=10&&(p="Corrupt"),f>20&&(p="Deeply nested"),p&&function(e,t,n,r,i){throw new Error(e+" type "+n.replace("X",t+"?")+(r?" with flag "+r:"")+" in "+i)}(p,i,s,v,l||"?");var g,y=e(h.paramList[0],o,u,a,l,s,m,f+1),_={flags:m[0],id:i,name:"",paramList:[y]},b=[],w="?";switch(h.placeholderFlag){case 1:g=y.spec;break;case 2:if(1024==(15360&y.flags)&&1==y.spec.ptrSize){_.flags=7168;break}case 3:case 6:case 5:g=y.spec,y.flags;break;case 8:w=""+h.paramList[1],_.paramList.push(h.paramList[1]);break;case 9:for(var E=0,D=h.paramList[1];E>2]=e),e}function _llvm_stacksave(){var e=_llvm_stacksave;return e.LLVM_SAVEDSTACKS||(e.LLVM_SAVEDSTACKS=[]),e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),e.LLVM_SAVEDSTACKS.length-1}function ___syscall140(e,t){SYSCALLS.varargs=t;try{var n=SYSCALLS.getStreamFromFD(),r=(SYSCALLS.get(),SYSCALLS.get()),i=SYSCALLS.get(),o=SYSCALLS.get(),u=r;return FS.llseek(n,u,o),HEAP32[i>>2]=n.position,n.getdents&&0===u&&0===o&&(n.getdents=null),0}catch(e){return"undefined"!=typeof FS&&e instanceof FS.ErrnoError||abort(e),-e.errno}}function ___syscall146(e,t){SYSCALLS.varargs=t;try{var n=SYSCALLS.get(),r=SYSCALLS.get(),i=SYSCALLS.get(),o=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(e,t){var n=___syscall146.buffers[e];assert(n),0===t||10===t?((1===e?Module.print:Module.printErr)(UTF8ArrayToString(n,0)),n.length=0):n.push(t)});for(var u=0;u>2],l=HEAP32[r+(8*u+4)>>2],s=0;se.pageSize/2||t>e.pageSize-n?_nbind.typeNameTbl.NBind.proto.lalloc(t):(HEAPU32[e.usedPtr]=n+t,e.rootPtr+n)},e.lreset=function(t,n){HEAPU32[e.pagePtr]?_nbind.typeNameTbl.NBind.proto.lreset(t,n):HEAPU32[e.usedPtr]=t},e}();function constructType(e,t){var n=new(10240==e?_nbind.makeTypeNameTbl[t.name]||_nbind.BindType:_nbind.makeTypeKindTbl[e])(t);return typeIdTbl[t.id]=n,_nbind.typeNameTbl[t.name]=n,n}function getType(e){return typeIdTbl[e]}function queryType(e){var t=HEAPU8[e],n=_nbind.structureList[t][1];e/=4,n<0&&(++e,n=HEAPU32[e]+1);var r=Array.prototype.slice.call(HEAPU32.subarray(e+1,e+1+n));return 9==t&&(r=[r[0],r.slice(1)]),{paramList:r,placeholderFlag:t}}function getTypes(e,t){return e.map((function(e){return"number"==typeof e?_nbind.getComplexType(e,constructType,getType,queryType,t):_nbind.typeNameTbl[e]}))}function readTypeIdList(e,t){return Array.prototype.slice.call(HEAPU32,e/4,e/4+t)}function readAsciiString(e){for(var t=e;HEAPU8[t++];);return String.fromCharCode.apply("",HEAPU8.subarray(e,t-1))}function readPolicyList(e){var t={};if(e)for(;;){var n=HEAPU32[e/4];if(!n)break;t[readAsciiString(n)]=!0,e+=4}return t}function getDynCall(e,t){var n={float32_t:"d",float64_t:"d",int64_t:"d",uint64_t:"d",void:"v"},r=e.map((function(e){return n[e.name]||"i"})).join(""),i=Module["dynCall_"+r];if(!i)throw new Error("dynCall_"+r+" not found for "+t+"("+e.map((function(e){return e.name})).join(", ")+")");return i}function addMethod(e,t,n,r){var i=e[t];e.hasOwnProperty(t)&&i?((i.arity||0===i.arity)&&(i=_nbind.makeOverloader(i,i.arity),e[t]=i),i.addMethod(n,r)):(n.arity=r,e[t]=n)}function throwError(e){throw new Error(e)}_nbind.Pool=Pool,_nbind.constructType=constructType,_nbind.getType=getType,_nbind.queryType=queryType,_nbind.getTypes=getTypes,_nbind.readTypeIdList=readTypeIdList,_nbind.readAsciiString=readAsciiString,_nbind.readPolicyList=readPolicyList,_nbind.getDynCall=getDynCall,_nbind.addMethod=addMethod,_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.heap=HEAPU32,t.ptrSize=4,t}return __extends(t,e),t.prototype.needsWireRead=function(e){return!!this.wireRead||!!this.makeWireRead},t.prototype.needsWireWrite=function(e){return!!this.wireWrite||!!this.makeWireWrite},t}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(e){function t(t){var n=e.call(this,t)||this,r=32&t.flags?{32:HEAPF32,64:HEAPF64}:8&t.flags?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return n.heap=r[8*t.ptrSize],n.ptrSize=t.ptrSize,n}return __extends(t,e),t.prototype.needsWireWrite=function(e){return!!e&&!!e.Strict},t.prototype.makeWireWrite=function(e,t){return t&&t.Strict&&function(e){if("number"==typeof e)return e;throw new Error("Type mismatch")}},t}(BindType);function pushCString(e,t){if(null==e){if(t&&t.Nullable)return 0;throw new Error("Type mismatch")}if(t&&t.Strict){if("string"!=typeof e)throw new Error("Type mismatch")}else e=e.toString();var n=Module.lengthBytesUTF8(e)+1,r=_nbind.Pool.lalloc(n);return Module.stringToUTF8Array(e,HEAPU8,r,n),r}function popCString(e){return 0===e?null:Module.Pointer_stringify(e)}_nbind.PrimitiveType=PrimitiveType,_nbind.pushCString=pushCString,_nbind.popCString=popCString;var CStringType=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.wireRead=popCString,t.wireWrite=pushCString,t.readResources=[_nbind.resources.pool],t.writeResources=[_nbind.resources.pool],t}return __extends(t,e),t.prototype.makeWireWrite=function(e,t){return function(e){return pushCString(e,t)}},t}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.wireRead=function(e){return!!e},t}return __extends(t,e),t.prototype.needsWireWrite=function(e){return!!e&&!!e.Strict},t.prototype.makeWireRead=function(e){return"!!("+e+")"},t.prototype.makeWireWrite=function(e,t){return t&&t.Strict&&function(e){if("boolean"==typeof e)return e;throw new Error("Type mismatch")}||e},t}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function e(){}return e.prototype.persist=function(){this.__nbindState|=1},e}();function makeBound(e,t){var n=function(e){function n(t,r,i,o){var u=e.call(this)||this;if(!(u instanceof n))return new(Function.prototype.bind.apply(n,Array.prototype.concat.apply([null],arguments)));var a=r,l=i,s=o;if(t!==_nbind.ptrMarker){var c=u.__nbindConstructor.apply(u,arguments);a=4608,s=HEAPU32[c/4],l=HEAPU32[c/4+1]}var f={configurable:!0,enumerable:!1,value:null,writable:!1},d={__nbindFlags:a,__nbindPtr:l};s&&(d.__nbindShared=s,_nbind.mark(u));for(var p=0,h=Object.keys(d);p>=1;var n=_nbind.valueList[e];return _nbind.valueList[e]=firstFreeValue,firstFreeValue=e,n}if(t)return _nbind.popShared(e,t);throw new Error("Invalid value slot "+e)}_nbind.pushValue=pushValue,_nbind.popValue=popValue;var valueBase=0x10000000000000000;function push64(e){return"number"==typeof e?e:4096*pushValue(e)+valueBase}function pop64(e){return e=3?Buffer.from(o):new Buffer(o)).copy(r):getBuffer(r).set(o)}}_nbind.BufferType=BufferType,_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var e=0,t=dirtyList;e>2]=DYNAMIC_BASE,staticSealed=!0,Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(e,t,n){"use asm";var r=new e.Int8Array(n);var i=new e.Int16Array(n);var o=new e.Int32Array(n);var u=new e.Uint8Array(n);var a=new e.Uint16Array(n);var l=new e.Uint32Array(n);var s=new e.Float32Array(n);var c=new e.Float64Array(n);var f=t.DYNAMICTOP_PTR|0;var d=t.tempDoublePtr|0;var p=t.ABORT|0;var h=t.STACKTOP|0;var v=t.STACK_MAX|0;var m=t.cttz_i8|0;var g=t.___dso_handle|0;var y=0;var _=0;var b=0;var w=0;var E=e.NaN,D=e.Infinity;var S=0,C=0,k=0,T=0,x=0.0;var A=0;var O=e.Math.floor;var P=e.Math.abs;var I=e.Math.sqrt;var N=e.Math.pow;var M=e.Math.cos;var R=e.Math.sin;var F=e.Math.tan;var L=e.Math.acos;var B=e.Math.asin;var j=e.Math.atan;var U=e.Math.atan2;var z=e.Math.exp;var W=e.Math.log;var H=e.Math.ceil;var V=e.Math.imul;var q=e.Math.min;var G=e.Math.max;var $=e.Math.clz32;var Y=e.Math.fround;var K=t.abort;var X=t.assert;var Q=t.enlargeMemory;var J=t.getTotalMemory;var Z=t.abortOnCannotGrowMemory;var ee=t.invoke_viiiii;var te=t.invoke_vif;var ne=t.invoke_vid;var re=t.invoke_fiff;var ie=t.invoke_vi;var oe=t.invoke_vii;var ue=t.invoke_ii;var ae=t.invoke_viddi;var le=t.invoke_vidd;var se=t.invoke_iiii;var ce=t.invoke_diii;var fe=t.invoke_di;var de=t.invoke_iid;var pe=t.invoke_iii;var he=t.invoke_viiddi;var ve=t.invoke_viiiiii;var me=t.invoke_dii;var ge=t.invoke_i;var ye=t.invoke_iiiiii;var _e=t.invoke_viiid;var be=t.invoke_viififi;var we=t.invoke_viii;var Ee=t.invoke_v;var De=t.invoke_viid;var Se=t.invoke_idd;var Ce=t.invoke_viiii;var ke=t._emscripten_asm_const_iiiii;var Te=t._emscripten_asm_const_iiidddddd;var xe=t._emscripten_asm_const_iiiid;var Ae=t.__nbind_reference_external;var Oe=t._emscripten_asm_const_iiiiiiii;var Pe=t._removeAccessorPrefix;var Ie=t._typeModule;var Ne=t.__nbind_register_pool;var Me=t.__decorate;var Re=t._llvm_stackrestore;var Fe=t.___cxa_atexit;var Le=t.__extends;var Be=t.__nbind_get_value_object;var je=t.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj;var Ue=t._emscripten_set_main_loop_timing;var ze=t.__nbind_register_primitive;var We=t.__nbind_register_type;var He=t._emscripten_memcpy_big;var Ve=t.__nbind_register_function;var qe=t.___setErrNo;var Ge=t.__nbind_register_class;var $e=t.__nbind_finish;var Ye=t._abort;var Ke=t._nbind_value;var Xe=t._llvm_stacksave;var Qe=t.___syscall54;var Je=t._defineHidden;var Ze=t._emscripten_set_main_loop;var et=t._emscripten_get_now;var tt=t.__nbind_register_callback_signature;var nt=t._emscripten_asm_const_iiiiii;var rt=t.__nbind_free_external;var it=t._emscripten_asm_const_iiii;var ot=t._emscripten_asm_const_iiididi;var ut=t.___syscall6;var at=t._atexit;var lt=t.___syscall140;var st=t.___syscall146;var ct=Y(0);const ft=Y(0);function dt(e){e=e|0;var t=0;t=h;h=h+e|0;h=h+15&-16;return t|0}function pt(){return h|0}function ht(e){e=e|0;h=e}function vt(e,t){e=e|0;t=t|0;h=e;v=t}function mt(e,t){e=e|0;t=t|0;if(!y){y=e;_=t}}function gt(e){e=e|0;A=e}function yt(){return A|0}function _t(){var e=0,t=0;ix(8104,8,400)|0;ix(8504,408,540)|0;e=9044;t=e+44|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));r[9088]=0;r[9089]=1;o[2273]=0;o[2274]=948;o[2275]=948;Fe(17,8104,g|0)|0;return}function bt(e){e=e|0;qt(e+948|0);return}function wt(e){e=Y(e);return((Ii(e)|0)&2147483647)>>>0>2139095040|0}function Et(e,t,n){e=e|0;t=t|0;n=n|0;e:do{if(!(o[e+(t<<3)+4>>2]|0)){if((t|2|0)==3?o[e+60>>2]|0:0){e=e+56|0;break}switch(t|0){case 0:case 2:case 4:case 5:{if(o[e+52>>2]|0){e=e+48|0;break e}break}default:{}}if(!(o[e+68>>2]|0)){e=(t|1|0)==5?948:n;break}else{e=e+64|0;break}}else e=e+(t<<3)|0}while(0);return e|0}function Dt(e){e=e|0;var t=0;t=qk(1e3)|0;St(e,(t|0)!=0,2456);o[2276]=(o[2276]|0)+1;ix(t|0,8104,1e3)|0;if(r[e+2>>0]|0){o[t+4>>2]=2;o[t+12>>2]=4}o[t+976>>2]=e;return t|0}function St(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!t){o[r>>2]=n;Lr(e,5,3197,r)}h=i;return}function Ct(){return Dt(956)|0}function kt(e){e=e|0;var t=0;t=$T(1e3)|0;Tt(t,e);St(o[e+976>>2]|0,1,2456);o[2276]=(o[2276]|0)+1;o[t+944>>2]=0;return t|0}function Tt(e,t){e=e|0;t=t|0;var n=0;ix(e|0,t|0,948)|0;Ur(e+948|0,t+948|0);n=e+960|0;e=t+960|0;t=n+40|0;do{o[n>>2]=o[e>>2];n=n+4|0;e=e+4|0}while((n|0)<(t|0));return}function xt(e){e=e|0;var t=0,n=0,r=0,i=0;t=e+944|0;n=o[t>>2]|0;if(n|0){At(n+948|0,e)|0;o[t>>2]=0}n=Ot(e)|0;if(n|0){t=0;do{o[(Pt(e,t)|0)+944>>2]=0;t=t+1|0}while((t|0)!=(n|0))}n=e+948|0;r=o[n>>2]|0;i=e+952|0;t=o[i>>2]|0;if((t|0)!=(r|0))o[i>>2]=t+(~((t+-4-r|0)>>>2)<<2);It(n);Gk(e);o[2276]=(o[2276]|0)+-1;return}function At(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0;r=o[e>>2]|0;l=e+4|0;n=o[l>>2]|0;u=n;e:do{if((r|0)==(n|0)){i=r;a=4}else{e=r;while(1){if((o[e>>2]|0)==(t|0)){i=e;a=4;break e}e=e+4|0;if((e|0)==(n|0)){e=0;break}}}}while(0);if((a|0)==4)if((i|0)!=(n|0)){r=i+4|0;e=u-r|0;t=e>>2;if(t){sx(i|0,r|0,e|0)|0;n=o[l>>2]|0}e=i+(t<<2)|0;if((n|0)==(e|0))e=1;else{o[l>>2]=n+(~((n+-4-e|0)>>>2)<<2);e=1}}else e=0;return e|0}function Ot(e){e=e|0;return(o[e+952>>2]|0)-(o[e+948>>2]|0)>>2|0}function Pt(e,t){e=e|0;t=t|0;var n=0;n=o[e+948>>2]|0;if((o[e+952>>2]|0)-n>>2>>>0>t>>>0)e=o[n+(t<<2)>>2]|0;else e=0;return e|0}function It(e){e=e|0;var t=0,n=0,r=0,i=0;r=h;h=h+32|0;t=r;i=o[e>>2]|0;n=(o[e+4>>2]|0)-i|0;if(((o[e+8>>2]|0)-i|0)>>>0>n>>>0){i=n>>2;Ni(t,i,i,e+8|0);Mi(e,t);Ri(t)}h=r;return}function Nt(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0;c=Ot(e)|0;do{if(c|0){if((o[(Pt(e,0)|0)+944>>2]|0)==(e|0)){if(!(At(e+948|0,t)|0))break;ix(t+400|0,8504,540)|0;o[t+944>>2]=0;Vt(e);break}a=o[(o[e+976>>2]|0)+12>>2]|0;l=e+948|0;s=(a|0)==0;n=0;u=0;do{r=o[(o[l>>2]|0)+(u<<2)>>2]|0;if((r|0)==(t|0))Vt(e);else{i=kt(r)|0;o[(o[l>>2]|0)+(n<<2)>>2]=i;o[i+944>>2]=e;if(!s)RA[a&15](r,i,e,n);n=n+1|0}u=u+1|0}while((u|0)!=(c|0));if(n>>>0>>0){s=e+948|0;l=e+952|0;a=n;n=o[l>>2]|0;do{u=(o[s>>2]|0)+(a<<2)|0;r=u+4|0;i=n-r|0;t=i>>2;if(!t)i=n;else{sx(u|0,r|0,i|0)|0;n=o[l>>2]|0;i=n}r=u+(t<<2)|0;if((i|0)!=(r|0)){n=i+(~((i+-4-r|0)>>>2)<<2)|0;o[l>>2]=n}a=a+1|0}while((a|0)!=(c|0))}}}while(0);return}function Mt(e){e=e|0;var t=0,n=0,i=0,u=0;Rt(e,(Ot(e)|0)==0,2491);Rt(e,(o[e+944>>2]|0)==0,2545);t=e+948|0;n=o[t>>2]|0;i=e+952|0;u=o[i>>2]|0;if((u|0)!=(n|0))o[i>>2]=u+(~((u+-4-n|0)>>>2)<<2);It(t);t=e+976|0;n=o[t>>2]|0;ix(e|0,8104,1e3)|0;if(r[n+2>>0]|0){o[e+4>>2]=2;o[e+12>>2]=4}o[t>>2]=n;return}function Rt(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;i=h;h=h+16|0;r=i;if(!t){o[r>>2]=n;Cr(e,5,3197,r)}h=i;return}function Ft(){return o[2276]|0}function Lt(){var e=0;e=qk(20)|0;Bt((e|0)!=0,2592);o[2277]=(o[2277]|0)+1;o[e>>2]=o[239];o[e+4>>2]=o[240];o[e+8>>2]=o[241];o[e+12>>2]=o[242];o[e+16>>2]=o[243];return e|0}function Bt(e,t){e=e|0;t=t|0;var n=0,r=0;r=h;h=h+16|0;n=r;if(!e){o[n>>2]=t;Cr(0,5,3197,n)}h=r;return}function jt(e){e=e|0;Gk(e);o[2277]=(o[2277]|0)+-1;return}function Ut(e,t){e=e|0;t=t|0;var n=0;if(!t){n=0;t=0}else{Rt(e,(Ot(e)|0)==0,2629);n=1}o[e+964>>2]=t;o[e+988>>2]=n;return}function zt(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;u=r+8|0;i=r+4|0;a=r;o[i>>2]=t;Rt(e,(o[t+944>>2]|0)==0,2709);Rt(e,(o[e+964>>2]|0)==0,2763);Wt(e);t=e+948|0;o[a>>2]=(o[t>>2]|0)+(n<<2);o[u>>2]=o[a>>2];Ht(t,u,i)|0;o[(o[i>>2]|0)+944>>2]=e;Vt(e);h=r;return}function Wt(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=Ot(e)|0;if(n|0?(o[(Pt(e,0)|0)+944>>2]|0)!=(e|0):0){r=o[(o[e+976>>2]|0)+12>>2]|0;i=e+948|0;u=(r|0)==0;t=0;do{a=o[(o[i>>2]|0)+(t<<2)>>2]|0;l=kt(a)|0;o[(o[i>>2]|0)+(t<<2)>>2]=l;o[l+944>>2]=e;if(!u)RA[r&15](a,l,e,t);t=t+1|0}while((t|0)!=(n|0))}return}function Ht(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0;y=h;h=h+64|0;d=y+52|0;l=y+48|0;p=y+28|0;v=y+24|0;m=y+20|0;g=y;r=o[e>>2]|0;u=r;t=r+((o[t>>2]|0)-u>>2<<2)|0;r=e+4|0;i=o[r>>2]|0;a=e+8|0;do{if(i>>>0<(o[a>>2]|0)>>>0){if((t|0)==(i|0)){o[t>>2]=o[n>>2];o[r>>2]=(o[r>>2]|0)+4;break}Fi(e,t,i,t+4|0);if(t>>>0<=n>>>0)n=(o[r>>2]|0)>>>0>n>>>0?n+4|0:n;o[t>>2]=o[n>>2]}else{r=(i-u>>2)+1|0;i=Hr(e)|0;if(i>>>0>>0)UT(e);f=o[e>>2]|0;c=(o[a>>2]|0)-f|0;u=c>>1;Ni(g,c>>2>>>0>>1>>>0?u>>>0>>0?r:u:i,t-f>>2,e+8|0);f=g+8|0;r=o[f>>2]|0;u=g+12|0;c=o[u>>2]|0;a=c;s=r;do{if((r|0)==(c|0)){c=g+4|0;r=o[c>>2]|0;_=o[g>>2]|0;i=_;if(r>>>0<=_>>>0){r=a-i>>1;r=(r|0)==0?1:r;Ni(p,r,r>>>2,o[g+16>>2]|0);o[v>>2]=o[c>>2];o[m>>2]=o[f>>2];o[l>>2]=o[v>>2];o[d>>2]=o[m>>2];Bi(p,l,d);r=o[g>>2]|0;o[g>>2]=o[p>>2];o[p>>2]=r;r=p+4|0;_=o[c>>2]|0;o[c>>2]=o[r>>2];o[r>>2]=_;r=p+8|0;_=o[f>>2]|0;o[f>>2]=o[r>>2];o[r>>2]=_;r=p+12|0;_=o[u>>2]|0;o[u>>2]=o[r>>2];o[r>>2]=_;Ri(p);r=o[f>>2]|0;break}u=r;a=((u-i>>2)+1|0)/-2|0;l=r+(a<<2)|0;i=s-u|0;u=i>>2;if(u){sx(l|0,r|0,i|0)|0;r=o[c>>2]|0}_=l+(u<<2)|0;o[f>>2]=_;o[c>>2]=r+(a<<2);r=_}}while(0);o[r>>2]=o[n>>2];o[f>>2]=(o[f>>2]|0)+4;t=Li(e,g,t)|0;Ri(g)}}while(0);h=y;return t|0}function Vt(e){e=e|0;var t=0;do{t=e+984|0;if(r[t>>0]|0)break;r[t>>0]=1;s[e+504>>2]=Y(E);e=o[e+944>>2]|0}while((e|0)!=0);return}function qt(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-4-r|0)>>>2)<<2);KT(n)}return}function Gt(e){e=e|0;return o[e+944>>2]|0}function $t(e){e=e|0;Rt(e,(o[e+964>>2]|0)!=0,2832);Vt(e);return}function Yt(e){e=e|0;return(r[e+984>>0]|0)!=0|0}function Kt(e,t){e=e|0;t=t|0;if(iT(e,t,400)|0){ix(e|0,t|0,400)|0;Vt(e)}return}function Xt(e){e=e|0;var t=ft;t=Y(s[e+44>>2]);e=wt(t)|0;return Y(e?Y(0.0):t)}function Qt(e){e=e|0;var t=ft;t=Y(s[e+48>>2]);if(wt(t)|0)t=r[(o[e+976>>2]|0)+2>>0]|0?Y(1.0):Y(0.0);return Y(t)}function Jt(e,t){e=e|0;t=t|0;o[e+980>>2]=t;return}function Zt(e){e=e|0;return o[e+980>>2]|0}function en(e,t){e=e|0;t=t|0;var n=0;n=e+4|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function tn(e){e=e|0;return o[e+4>>2]|0}function nn(e,t){e=e|0;t=t|0;var n=0;n=e+8|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function rn(e){e=e|0;return o[e+8>>2]|0}function on(e,t){e=e|0;t=t|0;var n=0;n=e+12|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function un(e){e=e|0;return o[e+12>>2]|0}function an(e,t){e=e|0;t=t|0;var n=0;n=e+16|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function ln(e){e=e|0;return o[e+16>>2]|0}function sn(e,t){e=e|0;t=t|0;var n=0;n=e+20|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function cn(e){e=e|0;return o[e+20>>2]|0}function fn(e,t){e=e|0;t=t|0;var n=0;n=e+24|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function dn(e){e=e|0;return o[e+24>>2]|0}function pn(e,t){e=e|0;t=t|0;var n=0;n=e+28|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function hn(e){e=e|0;return o[e+28>>2]|0}function vn(e,t){e=e|0;t=t|0;var n=0;n=e+32|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function mn(e){e=e|0;return o[e+32>>2]|0}function gn(e,t){e=e|0;t=t|0;var n=0;n=e+36|0;if((o[n>>2]|0)!=(t|0)){o[n>>2]=t;Vt(e)}return}function yn(e){e=e|0;return o[e+36>>2]|0}function _n(e,t){e=e|0;t=Y(t);var n=0;n=e+40|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function bn(e,t){e=e|0;t=Y(t);var n=0;n=e+44|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function wn(e,t){e=e|0;t=Y(t);var n=0;n=e+48|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function En(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+52|0;i=e+56|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Dn(e,t){e=e|0;t=Y(t);var n=0,r=0;r=e+52|0;n=e+56|0;if(!(!(Y(s[r>>2])!=t)?(o[n>>2]|0)==2:0)){s[r>>2]=t;r=wt(t)|0;o[n>>2]=r?3:2;Vt(e)}return}function Sn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+52|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function Cn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+132+(t<<3)|0;t=e+132+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function kn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=u?0:2;i=e+132+(t<<3)|0;t=e+132+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Tn(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=t+132+(n<<3)|0;t=o[r+4>>2]|0;n=e;o[n>>2]=o[r>>2];o[n+4>>2]=t;return}function xn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+60+(t<<3)|0;t=e+60+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function An(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=u?0:2;i=e+60+(t<<3)|0;t=e+60+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function On(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=t+60+(n<<3)|0;t=o[r+4>>2]|0;n=e;o[n>>2]=o[r>>2];o[n+4>>2]=t;return}function Pn(e,t){e=e|0;t=t|0;var n=0;n=e+60+(t<<3)+4|0;if((o[n>>2]|0)!=3){s[e+60+(t<<3)>>2]=Y(E);o[n>>2]=3;Vt(e)}return}function In(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+204+(t<<3)|0;t=e+204+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Nn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=u?0:2;i=e+204+(t<<3)|0;t=e+204+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Mn(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=t+204+(n<<3)|0;t=o[r+4>>2]|0;n=e;o[n>>2]=o[r>>2];o[n+4>>2]=t;return}function Rn(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0,u=0;u=wt(n)|0;r=(u^1)&1;i=e+276+(t<<3)|0;t=e+276+(t<<3)+4|0;if(!(u|Y(s[i>>2])==n?(o[t>>2]|0)==(r|0):0)){s[i>>2]=n;o[t>>2]=r;Vt(e)}return}function Fn(e,t){e=e|0;t=t|0;return Y(s[e+276+(t<<3)>>2])}function Ln(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+348|0;i=e+352|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Bn(e,t){e=e|0;t=Y(t);var n=0,r=0;r=e+348|0;n=e+352|0;if(!(!(Y(s[r>>2])!=t)?(o[n>>2]|0)==2:0)){s[r>>2]=t;r=wt(t)|0;o[n>>2]=r?3:2;Vt(e)}return}function jn(e){e=e|0;var t=0;t=e+352|0;if((o[t>>2]|0)!=3){s[e+348>>2]=Y(E);o[t>>2]=3;Vt(e)}return}function Un(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+348|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function zn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+356|0;i=e+360|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Wn(e,t){e=e|0;t=Y(t);var n=0,r=0;r=e+356|0;n=e+360|0;if(!(!(Y(s[r>>2])!=t)?(o[n>>2]|0)==2:0)){s[r>>2]=t;r=wt(t)|0;o[n>>2]=r?3:2;Vt(e)}return}function Hn(e){e=e|0;var t=0;t=e+360|0;if((o[t>>2]|0)!=3){s[e+356>>2]=Y(E);o[t>>2]=3;Vt(e)}return}function Vn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+356|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function qn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+364|0;i=e+368|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Gn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+364|0;i=e+368|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function $n(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+364|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function Yn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+372|0;i=e+376|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Kn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+372|0;i=e+376|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Xn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+372|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function Qn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+380|0;i=e+384|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Jn(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+380|0;i=e+384|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function Zn(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+380|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function er(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=(u^1)&1;r=e+388|0;i=e+392|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function tr(e,t){e=e|0;t=Y(t);var n=0,r=0,i=0,u=0;u=wt(t)|0;n=u?0:2;r=e+388|0;i=e+392|0;if(!(u|Y(s[r>>2])==t?(o[i>>2]|0)==(n|0):0)){s[r>>2]=t;o[i>>2]=n;Vt(e)}return}function nr(e,t){e=e|0;t=t|0;var n=0,r=0;r=t+388|0;n=o[r+4>>2]|0;t=e;o[t>>2]=o[r>>2];o[t+4>>2]=n;return}function rr(e,t){e=e|0;t=Y(t);var n=0;n=e+396|0;if(Y(s[n>>2])!=t){s[n>>2]=t;Vt(e)}return}function ir(e){e=e|0;return Y(s[e+396>>2])}function or(e){e=e|0;return Y(s[e+400>>2])}function ur(e){e=e|0;return Y(s[e+404>>2])}function ar(e){e=e|0;return Y(s[e+408>>2])}function lr(e){e=e|0;return Y(s[e+412>>2])}function sr(e){e=e|0;return Y(s[e+416>>2])}function cr(e){e=e|0;return Y(s[e+420>>2])}function fr(e,t){e=e|0;t=t|0;Rt(e,(t|0)<6,2918);switch(t|0){case 0:{t=(o[e+496>>2]|0)==2?5:4;break}case 2:{t=(o[e+496>>2]|0)==2?4:5;break}default:{}}return Y(s[e+424+(t<<2)>>2])}function dr(e,t){e=e|0;t=t|0;Rt(e,(t|0)<6,2918);switch(t|0){case 0:{t=(o[e+496>>2]|0)==2?5:4;break}case 2:{t=(o[e+496>>2]|0)==2?4:5;break}default:{}}return Y(s[e+448+(t<<2)>>2])}function pr(e,t){e=e|0;t=t|0;Rt(e,(t|0)<6,2918);switch(t|0){case 0:{t=(o[e+496>>2]|0)==2?5:4;break}case 2:{t=(o[e+496>>2]|0)==2?4:5;break}default:{}}return Y(s[e+472+(t<<2)>>2])}function hr(e,t){e=e|0;t=t|0;var n=0,r=ft;n=o[e+4>>2]|0;if((n|0)==(o[t+4>>2]|0)){if(!n)e=1;else{r=Y(s[e>>2]);e=Y(P(Y(r-Y(s[t>>2]))))>2]=0;o[i+4>>2]=0;o[i+8>>2]=0;je(i|0,e|0,t|0,0);Cr(e,3,(r[i+11>>0]|0)<0?o[i>>2]|0:i,n);XT(i);h=n;return}function yr(e,t,n,r){e=Y(e);t=Y(t);n=n|0;r=r|0;var i=ft;e=Y(e*t);i=Y(LT(e,Y(1.0)));do{if(!(vr(i,Y(0.0))|0)){e=Y(e-i);if(vr(i,Y(1.0))|0){e=Y(e+Y(1.0));break}if(n){e=Y(e+Y(1.0));break}if(!r){if(i>Y(.5))i=Y(1.0);else{r=vr(i,Y(.5))|0;i=r?Y(1.0):Y(0.0)}e=Y(e+i)}}else e=Y(e-i)}while(0);return Y(e/t)}function _r(e,t,n,r,i,o,u,a,l,c,f,d,p){e=e|0;t=Y(t);n=n|0;r=Y(r);i=i|0;o=Y(o);u=u|0;a=Y(a);l=Y(l);c=Y(c);f=Y(f);d=Y(d);p=p|0;var h=0,v=ft,m=ft,g=ft,y=ft,_=ft,b=ft;if(l>2]),v!=Y(0.0)):0){g=Y(yr(t,v,0,0));y=Y(yr(r,v,0,0));m=Y(yr(o,v,0,0));v=Y(yr(a,v,0,0))}else{m=o;g=t;v=a;y=r}if((i|0)==(e|0))h=vr(m,g)|0;else h=0;if((u|0)==(n|0))p=vr(v,y)|0;else p=0;if((!h?(_=Y(t-f),!(br(e,_,l)|0)):0)?!(wr(e,_,i,l)|0):0)h=Er(e,_,i,o,l)|0;else h=1;if((!p?(b=Y(r-d),!(br(n,b,c)|0)):0)?!(wr(n,b,u,c)|0):0)p=Er(n,b,u,a,c)|0;else p=1;p=h&p}return p|0}function br(e,t,n){e=e|0;t=Y(t);n=Y(n);if((e|0)==1)e=vr(t,n)|0;else e=0;return e|0}function wr(e,t,n,r){e=e|0;t=Y(t);n=n|0;r=Y(r);if((e|0)==2&(n|0)==0){if(!(t>=r))e=vr(t,r)|0;else e=1}else e=0;return e|0}function Er(e,t,n,r,i){e=e|0;t=Y(t);n=n|0;r=Y(r);i=Y(i);if((e|0)==2&(n|0)==2&r>t){if(!(i<=t))e=vr(t,i)|0;else e=1}else e=0;return e|0}function Dr(e,t,n,i,u,a,l,f,d,p,v){e=e|0;t=Y(t);n=Y(n);i=i|0;u=u|0;a=a|0;l=Y(l);f=Y(f);d=d|0;p=p|0;v=v|0;var m=0,g=0,y=0,_=0,b=ft,w=ft,E=0,D=0,S=0,C=0,k=0,T=0,x=0,A=0,O=0,P=0,I=0,N=ft,M=ft,R=ft,F=0.0,L=0.0;I=h;h=h+160|0;A=I+152|0;x=I+120|0;T=I+104|0;S=I+72|0;_=I+56|0;k=I+8|0;D=I;C=(o[2279]|0)+1|0;o[2279]=C;O=e+984|0;if((r[O>>0]|0)!=0?(o[e+512>>2]|0)!=(o[2278]|0):0)E=4;else if((o[e+516>>2]|0)==(i|0))P=0;else E=4;if((E|0)==4){o[e+520>>2]=0;o[e+924>>2]=-1;o[e+928>>2]=-1;s[e+932>>2]=Y(-1.0);s[e+936>>2]=Y(-1.0);P=1}e:do{if(!(o[e+964>>2]|0)){if(d){m=e+916|0;if(!(vr(Y(s[m>>2]),t)|0)){E=21;break}if(!(vr(Y(s[e+920>>2]),n)|0)){E=21;break}if((o[e+924>>2]|0)!=(u|0)){E=21;break}m=(o[e+928>>2]|0)==(a|0)?m:0;E=22;break}y=o[e+520>>2]|0;if(!y)E=21;else{g=0;while(1){m=e+524+(g*24|0)|0;if(((vr(Y(s[m>>2]),t)|0?vr(Y(s[e+524+(g*24|0)+4>>2]),n)|0:0)?(o[e+524+(g*24|0)+8>>2]|0)==(u|0):0)?(o[e+524+(g*24|0)+12>>2]|0)==(a|0):0){E=22;break e}g=g+1|0;if(g>>>0>=y>>>0){E=21;break}}}}else{b=Y(Sr(e,2,l));w=Y(Sr(e,0,l));m=e+916|0;R=Y(s[m>>2]);M=Y(s[e+920>>2]);N=Y(s[e+932>>2]);if(!(_r(u,t,a,n,o[e+924>>2]|0,R,o[e+928>>2]|0,M,N,Y(s[e+936>>2]),b,w,v)|0)){y=o[e+520>>2]|0;if(!y)E=21;else{g=0;while(1){m=e+524+(g*24|0)|0;N=Y(s[m>>2]);M=Y(s[e+524+(g*24|0)+4>>2]);R=Y(s[e+524+(g*24|0)+16>>2]);if(_r(u,t,a,n,o[e+524+(g*24|0)+8>>2]|0,N,o[e+524+(g*24|0)+12>>2]|0,M,R,Y(s[e+524+(g*24|0)+20>>2]),b,w,v)|0){E=22;break e}g=g+1|0;if(g>>>0>=y>>>0){E=21;break}}}}else E=22}}while(0);do{if((E|0)==21){if(!(r[11697]|0)){m=0;E=31}else{m=0;E=28}}else if((E|0)==22){g=(r[11697]|0)!=0;if(!((m|0)!=0&(P^1)))if(g){E=28;break}else{E=31;break}_=m+16|0;o[e+908>>2]=o[_>>2];y=m+20|0;o[e+912>>2]=o[y>>2];if(!((r[11698]|0)==0|g^1)){o[D>>2]=kr(C)|0;o[D+4>>2]=C;Cr(e,4,2972,D);g=o[e+972>>2]|0;if(g|0)hA[g&127](e);u=Tr(u,d)|0;a=Tr(a,d)|0;L=+Y(s[_>>2]);F=+Y(s[y>>2]);o[k>>2]=u;o[k+4>>2]=a;c[k+8>>3]=+t;c[k+16>>3]=+n;c[k+24>>3]=L;c[k+32>>3]=F;o[k+40>>2]=p;Cr(e,4,2989,k)}}}while(0);if((E|0)==28){g=kr(C)|0;o[_>>2]=g;o[_+4>>2]=C;o[_+8>>2]=P?3047:11699;Cr(e,4,3038,_);g=o[e+972>>2]|0;if(g|0)hA[g&127](e);k=Tr(u,d)|0;E=Tr(a,d)|0;o[S>>2]=k;o[S+4>>2]=E;c[S+8>>3]=+t;c[S+16>>3]=+n;o[S+24>>2]=p;Cr(e,4,3049,S);E=31}if((E|0)==31){xr(e,t,n,i,u,a,l,f,d,v);if(r[11697]|0){g=o[2279]|0;k=kr(g)|0;o[T>>2]=k;o[T+4>>2]=g;o[T+8>>2]=P?3047:11699;Cr(e,4,3083,T);g=o[e+972>>2]|0;if(g|0)hA[g&127](e);k=Tr(u,d)|0;T=Tr(a,d)|0;F=+Y(s[e+908>>2]);L=+Y(s[e+912>>2]);o[x>>2]=k;o[x+4>>2]=T;c[x+8>>3]=F;c[x+16>>3]=L;o[x+24>>2]=p;Cr(e,4,3092,x)}o[e+516>>2]=i;if(!m){g=e+520|0;m=o[g>>2]|0;if((m|0)==16){if(r[11697]|0)Cr(e,4,3124,A);o[g>>2]=0;m=0}if(d)m=e+916|0;else{o[g>>2]=m+1;m=e+524+(m*24|0)|0}s[m>>2]=t;s[m+4>>2]=n;o[m+8>>2]=u;o[m+12>>2]=a;o[m+16>>2]=o[e+908>>2];o[m+20>>2]=o[e+912>>2];m=0}}if(d){o[e+416>>2]=o[e+908>>2];o[e+420>>2]=o[e+912>>2];r[e+985>>0]=1;r[O>>0]=0}o[2279]=(o[2279]|0)+-1;o[e+512>>2]=o[2278];h=I;return P|(m|0)==0|0}function Sr(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;r=Y(Vr(e,t,n));return Y(r+Y(qr(e,t,n)))}function Cr(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=h;h=h+16|0;i=u;o[i>>2]=r;if(!e)r=0;else r=o[e+976>>2]|0;Br(r,e,t,n,i);h=u;return}function kr(e){e=e|0;return(e>>>0>60?3201:3201+(60-e)|0)|0}function Tr(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+32|0;n=i+12|0;r=i;o[n>>2]=o[254];o[n+4>>2]=o[255];o[n+8>>2]=o[256];o[r>>2]=o[257];o[r+4>>2]=o[258];o[r+8>>2]=o[259];if((e|0)>2)e=11699;else e=o[(t?r:n)+(e<<2)>>2]|0;h=i;return e|0}function xr(e,t,n,i,a,l,c,f,p,v){e=e|0;t=Y(t);n=Y(n);i=i|0;a=a|0;l=l|0;c=Y(c);f=Y(f);p=p|0;v=v|0;var m=0,g=0,y=0,_=0,b=ft,w=ft,E=ft,D=ft,S=ft,C=ft,k=ft,T=0,x=0,A=0,O=ft,P=ft,I=0,N=ft,M=0,R=0,F=0,L=0,B=0,j=0,U=0,z=0,W=0,H=0,V=0,q=0,G=0,$=0,K=0,X=0,Q=0,J=0,Z=ft,ee=ft,te=ft,ne=ft,re=ft,ie=0,oe=0,ue=0,ae=0,le=0,se=ft,ce=ft,fe=ft,de=ft,pe=ft,he=ft,ve=0,me=ft,ge=ft,ye=ft,_e=ft,be=ft,we=ft,Ee=0,De=0,Se=ft,Ce=ft,ke=0,Te=0,xe=0,Ae=0,Oe=ft,Pe=0,Ie=0,Ne=0,Me=0,Re=0,Fe=0,Le=0,Be=ft,je=0,Ue=0;Le=h;h=h+16|0;ie=Le+12|0;oe=Le+8|0;ue=Le+4|0;ae=Le;Rt(e,(a|0)==0|(wt(t)|0)^1,3326);Rt(e,(l|0)==0|(wt(n)|0)^1,3406);Ie=Yr(e,i)|0;o[e+496>>2]=Ie;Re=Kr(2,Ie)|0;Fe=Kr(0,Ie)|0;s[e+440>>2]=Y(Vr(e,Re,c));s[e+444>>2]=Y(qr(e,Re,c));s[e+428>>2]=Y(Vr(e,Fe,c));s[e+436>>2]=Y(qr(e,Fe,c));s[e+464>>2]=Y(Xr(e,Re));s[e+468>>2]=Y(Qr(e,Re));s[e+452>>2]=Y(Xr(e,Fe));s[e+460>>2]=Y(Qr(e,Fe));s[e+488>>2]=Y(Jr(e,Re,c));s[e+492>>2]=Y(Zr(e,Re,c));s[e+476>>2]=Y(Jr(e,Fe,c));s[e+484>>2]=Y(Zr(e,Fe,c));do{if(!(o[e+964>>2]|0)){Ne=e+948|0;Me=(o[e+952>>2]|0)-(o[Ne>>2]|0)>>2;if(!Me){ti(e,t,n,a,l,c,f);break}if(!p?ni(e,t,n,a,l,c,f)|0:0)break;Wt(e);X=e+508|0;r[X>>0]=0;Re=Kr(o[e+4>>2]|0,Ie)|0;Fe=ri(Re,Ie)|0;Pe=Gr(Re)|0;Q=o[e+8>>2]|0;Te=e+28|0;J=(o[Te>>2]|0)!=0;be=Pe?c:f;Se=Pe?f:c;Z=Y(ii(e,Re,c));ee=Y(oi(e,Re,c));b=Y(ii(e,Fe,c));we=Y(ui(e,Re,c));Ce=Y(ui(e,Fe,c));A=Pe?a:l;ke=Pe?l:a;Oe=Pe?we:Ce;S=Pe?Ce:we;_e=Y(Sr(e,2,c));D=Y(Sr(e,0,c));w=Y(Y(Nr(e+364|0,c))-Oe);E=Y(Y(Nr(e+380|0,c))-Oe);C=Y(Y(Nr(e+372|0,f))-S);k=Y(Y(Nr(e+388|0,f))-S);te=Pe?w:C;ne=Pe?E:k;_e=Y(t-_e);t=Y(_e-Oe);if(wt(t)|0)Oe=t;else Oe=Y(NT(Y(RT(t,E)),w));ge=Y(n-D);t=Y(ge-S);if(wt(t)|0)ye=t;else ye=Y(NT(Y(RT(t,k)),C));w=Pe?Oe:ye;me=Pe?ye:Oe;e:do{if((A|0)==1){i=0;g=0;while(1){m=Pt(e,g)|0;if(!i){if(Y(li(m))>Y(0.0)?Y(si(m))>Y(0.0):0)i=m;else i=0}else if(ai(m)|0){_=0;break e}g=g+1|0;if(g>>>0>=Me>>>0){_=i;break}}}else _=0}while(0);T=_+500|0;x=_+504|0;i=0;m=0;t=Y(0.0);y=0;do{g=o[(o[Ne>>2]|0)+(y<<2)>>2]|0;if((o[g+36>>2]|0)==1){ci(g);r[g+985>>0]=1;r[g+984>>0]=0}else{Pr(g);if(p)Mr(g,Yr(g,Ie)|0,w,me,Oe);do{if((o[g+24>>2]|0)!=1){if((g|0)==(_|0)){o[T>>2]=o[2278];s[x>>2]=Y(0.0);break}else{fi(e,g,Oe,a,ye,Oe,ye,l,Ie,v);break}}else{if(m|0)o[m+960>>2]=g;o[g+960>>2]=0;m=g;i=(i|0)==0?g:i}}while(0);he=Y(s[g+504>>2]);t=Y(t+Y(he+Y(Sr(g,Re,Oe))))}y=y+1|0}while((y|0)!=(Me|0));F=t>w;ve=J&((A|0)==2&F)?1:A;M=(ke|0)==1;B=M&(p^1);j=(ve|0)==1;U=(ve|0)==2;z=976+(Re<<2)|0;W=(ke|2|0)==2;$=M&(J^1);H=1040+(Fe<<2)|0;V=1040+(Re<<2)|0;q=976+(Fe<<2)|0;G=(ke|0)!=1;F=J&((A|0)!=0&F);R=e+976|0;M=M^1;t=w;I=0;L=0;he=Y(0.0);re=Y(0.0);while(1){e:do{if(I>>>0>>0){x=o[Ne>>2]|0;y=0;k=Y(0.0);C=Y(0.0);E=Y(0.0);w=Y(0.0);g=0;m=0;_=I;while(1){T=o[x+(_<<2)>>2]|0;if((o[T+36>>2]|0)!=1?(o[T+940>>2]=L,(o[T+24>>2]|0)!=1):0){D=Y(Sr(T,Re,Oe));K=o[z>>2]|0;n=Y(Nr(T+380+(K<<3)|0,be));S=Y(s[T+504>>2]);n=Y(RT(n,S));n=Y(NT(Y(Nr(T+364+(K<<3)|0,be)),n));if(J&(y|0)!=0&Y(D+Y(C+n))>t){l=y;D=k;A=_;break e}D=Y(D+n);n=Y(C+D);D=Y(k+D);if(ai(T)|0){E=Y(E+Y(li(T)));w=Y(w-Y(S*Y(si(T))))}if(m|0)o[m+960>>2]=T;o[T+960>>2]=0;y=y+1|0;m=T;g=(g|0)==0?T:g}else{D=k;n=C}_=_+1|0;if(_>>>0>>0){k=D;C=n}else{l=y;A=_;break}}}else{l=0;D=Y(0.0);E=Y(0.0);w=Y(0.0);g=0;A=I}}while(0);K=E>Y(0.0)&EY(0.0)&wne&((wt(ne)|0)^1))){if(!(r[(o[R>>2]|0)+3>>0]|0)){if(!(O==Y(0.0))?!(Y(li(e))==Y(0.0)):0){K=53;break}t=D;K=53}else K=51}else{t=ne;K=51}}else{t=te;K=51}}else K=51}while(0);if((K|0)==51){K=0;if(wt(t)|0)K=53;else{P=Y(t-D);N=t}}if((K|0)==53){K=0;if(D>2]|0;_=PY(0.0);C=Y(P/O);E=Y(0.0);D=Y(0.0);t=Y(0.0);m=g;do{n=Y(Nr(m+380+(y<<3)|0,be));w=Y(Nr(m+364+(y<<3)|0,be));w=Y(RT(n,Y(NT(w,Y(s[m+504>>2])))));if(_){n=Y(w*Y(si(m)));if(n!=Y(-0.0)?(Be=Y(w-Y(S*n)),se=Y(di(m,Re,Be,N,Oe)),Be!=se):0){E=Y(E-Y(se-w));t=Y(t+n)}}else if((T?(ce=Y(li(m)),ce!=Y(0.0)):0)?(Be=Y(w+Y(C*ce)),fe=Y(di(m,Re,Be,N,Oe)),Be!=fe):0){E=Y(E-Y(fe-w));D=Y(D-ce)}m=o[m+960>>2]|0}while((m|0)!=0);t=Y(k+t);w=Y(P+E);if(!le){S=Y(O+D);_=o[z>>2]|0;T=wY(0.0);S=Y(w/S);t=Y(0.0);do{Be=Y(Nr(g+380+(_<<3)|0,be));E=Y(Nr(g+364+(_<<3)|0,be));E=Y(RT(Be,Y(NT(E,Y(s[g+504>>2])))));if(T){Be=Y(E*Y(si(g)));w=Y(-Be);if(Be!=Y(-0.0)){Be=Y(C*w);w=Y(di(g,Re,Y(E+(x?w:Be)),N,Oe))}else w=E}else if(y?(de=Y(li(g)),de!=Y(0.0)):0)w=Y(di(g,Re,Y(E+Y(S*de)),N,Oe));else w=E;t=Y(t-Y(w-E));D=Y(Sr(g,Re,Oe));n=Y(Sr(g,Fe,Oe));w=Y(w+D);s[oe>>2]=w;o[ae>>2]=1;E=Y(s[g+396>>2]);e:do{if(wt(E)|0){m=wt(me)|0;do{if(!m){if(F|(Ir(g,Fe,me)|0|M))break;if((pi(e,g)|0)!=4)break;if((o[(hi(g,Fe)|0)+4>>2]|0)==3)break;if((o[(vi(g,Fe)|0)+4>>2]|0)==3)break;s[ie>>2]=me;o[ue>>2]=1;break e}}while(0);if(Ir(g,Fe,me)|0){m=o[g+992+(o[q>>2]<<2)>>2]|0;Be=Y(n+Y(Nr(m,me)));s[ie>>2]=Be;m=G&(o[m+4>>2]|0)==2;o[ue>>2]=((wt(Be)|0|m)^1)&1;break}else{s[ie>>2]=me;o[ue>>2]=m?0:2;break}}else{Be=Y(w-D);O=Y(Be/E);Be=Y(E*Be);o[ue>>2]=1;s[ie>>2]=Y(n+(Pe?O:Be))}}while(0);mi(g,Re,N,Oe,ae,oe);mi(g,Fe,me,Oe,ue,ie);do{if(!(Ir(g,Fe,me)|0)?(pi(e,g)|0)==4:0){if((o[(hi(g,Fe)|0)+4>>2]|0)==3){m=0;break}m=(o[(vi(g,Fe)|0)+4>>2]|0)!=3}else m=0}while(0);Be=Y(s[oe>>2]);O=Y(s[ie>>2]);je=o[ae>>2]|0;Ue=o[ue>>2]|0;Dr(g,Pe?Be:O,Pe?O:Be,Ie,Pe?je:Ue,Pe?Ue:je,Oe,ye,p&(m^1),3488,v)|0;r[X>>0]=r[X>>0]|r[g+508>>0];g=o[g+960>>2]|0}while((g|0)!=0)}else t=Y(0.0)}else t=Y(0.0);t=Y(P+t);Ue=t>0]=Ue|u[X>>0];if(U&t>Y(0.0)){m=o[z>>2]|0;if((o[e+364+(m<<3)+4>>2]|0)!=0?(pe=Y(Nr(e+364+(m<<3)|0,be)),pe>=Y(0.0)):0)w=Y(NT(Y(0.0),Y(pe-Y(N-t))));else w=Y(0.0)}else w=t;T=I>>>0>>0;if(T){_=o[Ne>>2]|0;y=I;m=0;do{g=o[_+(y<<2)>>2]|0;if(!(o[g+24>>2]|0)){m=((o[(hi(g,Re)|0)+4>>2]|0)==3&1)+m|0;m=m+((o[(vi(g,Re)|0)+4>>2]|0)==3&1)|0}y=y+1|0}while((y|0)!=(A|0));if(m){D=Y(0.0);n=Y(0.0)}else K=101}else K=101;e:do{if((K|0)==101){K=0;switch(Q|0){case 1:{m=0;D=Y(w*Y(.5));n=Y(0.0);break e}case 2:{m=0;D=w;n=Y(0.0);break e}case 3:{if(l>>>0<=1){m=0;D=Y(0.0);n=Y(0.0);break e}n=Y((l+-1|0)>>>0);m=0;D=Y(0.0);n=Y(Y(NT(w,Y(0.0)))/n);break e}case 5:{n=Y(w/Y((l+1|0)>>>0));m=0;D=n;break e}case 4:{n=Y(w/Y(l>>>0));m=0;D=Y(n*Y(.5));break e}default:{m=0;D=Y(0.0);n=Y(0.0);break e}}}}while(0);t=Y(Z+D);if(T){E=Y(w/Y(m|0));y=o[Ne>>2]|0;g=I;w=Y(0.0);do{m=o[y+(g<<2)>>2]|0;e:do{if((o[m+36>>2]|0)!=1){switch(o[m+24>>2]|0){case 1:{if(gi(m,Re)|0){if(!p)break e;Be=Y(yi(m,Re,N));Be=Y(Be+Y(Xr(e,Re)));Be=Y(Be+Y(Vr(m,Re,Oe)));s[m+400+(o[V>>2]<<2)>>2]=Be;break e}break}case 0:{Ue=(o[(hi(m,Re)|0)+4>>2]|0)==3;Be=Y(E+t);t=Ue?Be:t;if(p){Ue=m+400+(o[V>>2]<<2)|0;s[Ue>>2]=Y(t+Y(s[Ue>>2]))}Ue=(o[(vi(m,Re)|0)+4>>2]|0)==3;Be=Y(E+t);t=Ue?Be:t;if(B){Be=Y(n+Y(Sr(m,Re,Oe)));w=me;t=Y(t+Y(Be+Y(s[m+504>>2])));break e}else{t=Y(t+Y(n+Y(_i(m,Re,Oe))));w=Y(NT(w,Y(_i(m,Fe,Oe))));break e}}default:{}}if(p){Be=Y(D+Y(Xr(e,Re)));Ue=m+400+(o[V>>2]<<2)|0;s[Ue>>2]=Y(Be+Y(s[Ue>>2]))}}}while(0);g=g+1|0}while((g|0)!=(A|0))}else w=Y(0.0);n=Y(ee+t);if(W)D=Y(Y(di(e,Fe,Y(Ce+w),Se,c))-Ce);else D=me;E=Y(Y(di(e,Fe,Y(Ce+($?me:w)),Se,c))-Ce);if(T&p){g=I;do{y=o[(o[Ne>>2]|0)+(g<<2)>>2]|0;do{if((o[y+36>>2]|0)!=1){if((o[y+24>>2]|0)==1){if(gi(y,Fe)|0){Be=Y(yi(y,Fe,me));Be=Y(Be+Y(Xr(e,Fe)));Be=Y(Be+Y(Vr(y,Fe,Oe)));m=o[H>>2]|0;s[y+400+(m<<2)>>2]=Be;if(!(wt(Be)|0))break}else m=o[H>>2]|0;Be=Y(Xr(e,Fe));s[y+400+(m<<2)>>2]=Y(Be+Y(Vr(y,Fe,Oe)));break}m=pi(e,y)|0;do{if((m|0)==4){if((o[(hi(y,Fe)|0)+4>>2]|0)==3){K=139;break}if((o[(vi(y,Fe)|0)+4>>2]|0)==3){K=139;break}if(Ir(y,Fe,me)|0){t=b;break}je=o[y+908+(o[z>>2]<<2)>>2]|0;o[ie>>2]=je;t=Y(s[y+396>>2]);Ue=wt(t)|0;w=(o[d>>2]=je,Y(s[d>>2]));if(Ue)t=E;else{P=Y(Sr(y,Fe,Oe));Be=Y(w/t);t=Y(t*w);t=Y(P+(Pe?Be:t))}s[oe>>2]=t;s[ie>>2]=Y(Y(Sr(y,Re,Oe))+w);o[ue>>2]=1;o[ae>>2]=1;mi(y,Re,N,Oe,ue,ie);mi(y,Fe,me,Oe,ae,oe);t=Y(s[ie>>2]);P=Y(s[oe>>2]);Be=Pe?t:P;t=Pe?P:t;Ue=((wt(Be)|0)^1)&1;Dr(y,Be,t,Ie,Ue,((wt(t)|0)^1)&1,Oe,ye,1,3493,v)|0;t=b}else K=139}while(0);e:do{if((K|0)==139){K=0;t=Y(D-Y(_i(y,Fe,Oe)));do{if((o[(hi(y,Fe)|0)+4>>2]|0)==3){if((o[(vi(y,Fe)|0)+4>>2]|0)!=3)break;t=Y(b+Y(NT(Y(0.0),Y(t*Y(.5)))));break e}}while(0);if((o[(vi(y,Fe)|0)+4>>2]|0)==3){t=b;break}if((o[(hi(y,Fe)|0)+4>>2]|0)==3){t=Y(b+Y(NT(Y(0.0),t)));break}switch(m|0){case 1:{t=b;break e}case 2:{t=Y(b+Y(t*Y(.5)));break e}default:{t=Y(b+t);break e}}}}while(0);Be=Y(he+t);Ue=y+400+(o[H>>2]<<2)|0;s[Ue>>2]=Y(Be+Y(s[Ue>>2]))}}while(0);g=g+1|0}while((g|0)!=(A|0))}he=Y(he+E);re=Y(NT(re,n));l=L+1|0;if(A>>>0>=Me>>>0)break;else{t=N;I=A;L=l}}do{if(p){m=l>>>0>1;if(!m?!(bi(e)|0):0)break;if(!(wt(me)|0)){t=Y(me-he);e:do{switch(o[e+12>>2]|0){case 3:{b=Y(b+t);C=Y(0.0);break}case 2:{b=Y(b+Y(t*Y(.5)));C=Y(0.0);break}case 4:{if(me>he)C=Y(t/Y(l>>>0));else C=Y(0.0);break}case 7:if(me>he){b=Y(b+Y(t/Y(l<<1>>>0)));C=Y(t/Y(l>>>0));C=m?C:Y(0.0);break e}else{b=Y(b+Y(t*Y(.5)));C=Y(0.0);break e}case 6:{C=Y(t/Y(L>>>0));C=me>he&m?C:Y(0.0);break}default:C=Y(0.0)}}while(0);if(l|0){T=1040+(Fe<<2)|0;x=976+(Fe<<2)|0;_=0;g=0;while(1){e:do{if(g>>>0>>0){w=Y(0.0);E=Y(0.0);t=Y(0.0);y=g;while(1){m=o[(o[Ne>>2]|0)+(y<<2)>>2]|0;do{if((o[m+36>>2]|0)!=1?(o[m+24>>2]|0)==0:0){if((o[m+940>>2]|0)!=(_|0))break e;if(wi(m,Fe)|0){Be=Y(s[m+908+(o[x>>2]<<2)>>2]);t=Y(NT(t,Y(Be+Y(Sr(m,Fe,Oe)))))}if((pi(e,m)|0)!=5)break;pe=Y(Ei(m));pe=Y(pe+Y(Vr(m,0,Oe)));Be=Y(s[m+912>>2]);Be=Y(Y(Be+Y(Sr(m,0,Oe)))-pe);pe=Y(NT(E,pe));Be=Y(NT(w,Be));w=Be;E=pe;t=Y(NT(t,Y(pe+Be)))}}while(0);m=y+1|0;if(m>>>0>>0)y=m;else{y=m;break}}}else{E=Y(0.0);t=Y(0.0);y=g}}while(0);S=Y(C+t);n=b;b=Y(b+S);if(g>>>0>>0){D=Y(n+E);m=g;do{g=o[(o[Ne>>2]|0)+(m<<2)>>2]|0;e:do{if((o[g+36>>2]|0)!=1?(o[g+24>>2]|0)==0:0)switch(pi(e,g)|0){case 1:{Be=Y(n+Y(Vr(g,Fe,Oe)));s[g+400+(o[T>>2]<<2)>>2]=Be;break e}case 3:{Be=Y(Y(b-Y(qr(g,Fe,Oe)))-Y(s[g+908+(o[x>>2]<<2)>>2]));s[g+400+(o[T>>2]<<2)>>2]=Be;break e}case 2:{Be=Y(n+Y(Y(S-Y(s[g+908+(o[x>>2]<<2)>>2]))*Y(.5)));s[g+400+(o[T>>2]<<2)>>2]=Be;break e}case 4:{Be=Y(n+Y(Vr(g,Fe,Oe)));s[g+400+(o[T>>2]<<2)>>2]=Be;if(Ir(g,Fe,me)|0)break e;if(Pe){w=Y(s[g+908>>2]);t=Y(w+Y(Sr(g,Re,Oe)));E=S}else{E=Y(s[g+912>>2]);E=Y(E+Y(Sr(g,Fe,Oe)));t=S;w=Y(s[g+908>>2])}if(vr(t,w)|0?vr(E,Y(s[g+912>>2]))|0:0)break e;Dr(g,t,E,Ie,1,1,Oe,ye,1,3501,v)|0;break e}case 5:{s[g+404>>2]=Y(Y(D-Y(Ei(g)))+Y(yi(g,0,me)));break e}default:break e}}while(0);m=m+1|0}while((m|0)!=(y|0))}_=_+1|0;if((_|0)==(l|0))break;else g=y}}}}}while(0);s[e+908>>2]=Y(di(e,2,_e,c,c));s[e+912>>2]=Y(di(e,0,ge,f,c));if((ve|0)!=0?(Ee=o[e+32>>2]|0,De=(ve|0)==2,!(De&(Ee|0)!=2)):0){if(De&(Ee|0)==2){t=Y(we+N);t=Y(NT(Y(RT(t,Y(Di(e,Re,re,be)))),we));K=198}}else{t=Y(di(e,Re,re,be,c));K=198}if((K|0)==198)s[e+908+(o[976+(Re<<2)>>2]<<2)>>2]=t;if((ke|0)!=0?(xe=o[e+32>>2]|0,Ae=(ke|0)==2,!(Ae&(xe|0)!=2)):0){if(Ae&(xe|0)==2){t=Y(Ce+me);t=Y(NT(Y(RT(t,Y(Di(e,Fe,Y(Ce+he),Se)))),Ce));K=204}}else{t=Y(di(e,Fe,Y(Ce+he),Se,c));K=204}if((K|0)==204)s[e+908+(o[976+(Fe<<2)>>2]<<2)>>2]=t;if(p){if((o[Te>>2]|0)==2){g=976+(Fe<<2)|0;y=1040+(Fe<<2)|0;m=0;do{_=Pt(e,m)|0;if(!(o[_+24>>2]|0)){je=o[g>>2]|0;Be=Y(s[e+908+(je<<2)>>2]);Ue=_+400+(o[y>>2]<<2)|0;Be=Y(Be-Y(s[Ue>>2]));s[Ue>>2]=Y(Be-Y(s[_+908+(je<<2)>>2]))}m=m+1|0}while((m|0)!=(Me|0))}if(i|0){m=Pe?ve:a;do{Si(e,i,Oe,m,ye,Ie,v);i=o[i+960>>2]|0}while((i|0)!=0)}m=(Re|2|0)==3;g=(Fe|2|0)==3;if(m|g){i=0;do{y=o[(o[Ne>>2]|0)+(i<<2)>>2]|0;if((o[y+36>>2]|0)!=1){if(m)Ci(e,y,Re);if(g)Ci(e,y,Fe)}i=i+1|0}while((i|0)!=(Me|0))}}}else ei(e,t,n,a,l,c,f)}while(0);h=Le;return}function Ar(e,t){e=e|0;t=Y(t);var n=0;St(e,t>=Y(0.0),3147);n=t==Y(0.0);s[e+4>>2]=n?Y(0.0):t;return}function Or(e,t,n,i){e=e|0;t=Y(t);n=Y(n);i=i|0;var u=ft,a=ft,l=0,c=0,f=0;o[2278]=(o[2278]|0)+1;Pr(e);if(!(Ir(e,2,t)|0)){u=Y(Nr(e+380|0,t));if(!(u>=Y(0.0))){f=((wt(t)|0)^1)&1;u=t}else f=2}else{u=Y(Nr(o[e+992>>2]|0,t));f=1;u=Y(u+Y(Sr(e,2,t)))}if(!(Ir(e,0,n)|0)){a=Y(Nr(e+388|0,n));if(!(a>=Y(0.0))){c=((wt(n)|0)^1)&1;a=n}else c=2}else{a=Y(Nr(o[e+996>>2]|0,n));c=1;a=Y(a+Y(Sr(e,0,t)))}l=e+976|0;if(Dr(e,u,a,i,f,c,t,n,1,3189,o[l>>2]|0)|0?(Mr(e,o[e+496>>2]|0,t,n,t),Rr(e,Y(s[(o[l>>2]|0)+4>>2]),Y(0.0),Y(0.0)),r[11696]|0):0)mr(e,7);return}function Pr(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;a=l+24|0;u=l+16|0;r=l+8|0;i=l;n=0;do{t=e+380+(n<<3)|0;if(!((o[e+380+(n<<3)+4>>2]|0)!=0?(s=t,c=o[s+4>>2]|0,f=r,o[f>>2]=o[s>>2],o[f+4>>2]=c,f=e+364+(n<<3)|0,c=o[f+4>>2]|0,s=i,o[s>>2]=o[f>>2],o[s+4>>2]=c,o[u>>2]=o[r>>2],o[u+4>>2]=o[r+4>>2],o[a>>2]=o[i>>2],o[a+4>>2]=o[i+4>>2],hr(u,a)|0):0))t=e+348+(n<<3)|0;o[e+992+(n<<2)>>2]=t;n=n+1|0}while((n|0)!=2);h=l;return}function Ir(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0;e=o[e+992+(o[976+(t<<2)>>2]<<2)>>2]|0;switch(o[e+4>>2]|0){case 0:case 3:{e=0;break}case 1:{if(Y(s[e>>2])>2])>2]|0){case 2:{t=Y(Y(Y(s[e>>2])*t)/Y(100.0));break}case 1:{t=Y(s[e>>2]);break}default:t=Y(E)}return Y(t)}function Mr(e,t,n,r,i){e=e|0;t=t|0;n=Y(n);r=Y(r);i=Y(i);var u=0,a=ft;t=o[e+944>>2]|0?t:1;u=Kr(o[e+4>>2]|0,t)|0;t=ri(u,t)|0;n=Y(Pi(e,u,n));r=Y(Pi(e,t,r));a=Y(n+Y(Vr(e,u,i)));s[e+400+(o[1040+(u<<2)>>2]<<2)>>2]=a;n=Y(n+Y(qr(e,u,i)));s[e+400+(o[1e3+(u<<2)>>2]<<2)>>2]=n;n=Y(r+Y(Vr(e,t,i)));s[e+400+(o[1040+(t<<2)>>2]<<2)>>2]=n;i=Y(r+Y(qr(e,t,i)));s[e+400+(o[1e3+(t<<2)>>2]<<2)>>2]=i;return}function Rr(e,t,n,r){e=e|0;t=Y(t);n=Y(n);r=Y(r);var i=0,u=0,a=ft,l=ft,c=0,f=0,d=ft,p=0,h=ft,v=ft,m=ft,g=ft;if(!(t==Y(0.0))){i=e+400|0;g=Y(s[i>>2]);u=e+404|0;m=Y(s[u>>2]);p=e+416|0;v=Y(s[p>>2]);f=e+420|0;a=Y(s[f>>2]);h=Y(g+n);d=Y(m+r);r=Y(h+v);l=Y(d+a);c=(o[e+988>>2]|0)==1;s[i>>2]=Y(yr(g,t,0,c));s[u>>2]=Y(yr(m,t,0,c));n=Y(LT(Y(v*t),Y(1.0)));if(vr(n,Y(0.0))|0)u=0;else u=(vr(n,Y(1.0))|0)^1;n=Y(LT(Y(a*t),Y(1.0)));if(vr(n,Y(0.0))|0)i=0;else i=(vr(n,Y(1.0))|0)^1;g=Y(yr(r,t,c&u,c&(u^1)));s[p>>2]=Y(g-Y(yr(h,t,0,c)));g=Y(yr(l,t,c&i,c&(i^1)));s[f>>2]=Y(g-Y(yr(d,t,0,c)));u=(o[e+952>>2]|0)-(o[e+948>>2]|0)>>2;if(u|0){i=0;do{Rr(Pt(e,i)|0,t,h,d);i=i+1|0}while((i|0)!=(u|0))}}return}function Fr(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;switch(n|0){case 5:case 0:{e=oT(o[489]|0,r,i)|0;break}default:e=jT(r,i)|0}return e|0}function Lr(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;i=h;h=h+16|0;u=i;o[u>>2]=r;Br(e,0,t,n,u);h=i;return}function Br(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;e=e|0?e:956;xA[o[e+8>>2]&1](e,t,n,r,i)|0;if((n|0)==5)Ye();else return}function jr(e,t,n){e=e|0;t=t|0;n=n|0;r[e+t>>0]=n&1;return}function Ur(e,t){e=e|0;t=t|0;var n=0,r=0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;n=t+4|0;r=(o[n>>2]|0)-(o[t>>2]|0)>>2;if(r|0){zr(e,r);Wr(e,o[t>>2]|0,o[n>>2]|0,r)}return}function zr(e,t){e=e|0;t=t|0;var n=0;if((Hr(e)|0)>>>0>>0)UT(e);if(t>>>0>1073741823)Ye();else{n=$T(t<<2)|0;o[e+4>>2]=n;o[e>>2]=n;o[e+8>>2]=n+(t<<2);return}}function Wr(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=e+4|0;e=n-t|0;if((e|0)>0){ix(o[r>>2]|0,t|0,e|0)|0;o[r>>2]=(o[r>>2]|0)+(e>>>2<<2)}return}function Hr(e){e=e|0;return 1073741823}function Vr(e,t,n){e=e|0;t=t|0;n=Y(n);if(Gr(t)|0?(o[e+96>>2]|0)!=0:0)e=e+92|0;else e=Et(e+60|0,o[1040+(t<<2)>>2]|0,992)|0;return Y($r(e,n))}function qr(e,t,n){e=e|0;t=t|0;n=Y(n);if(Gr(t)|0?(o[e+104>>2]|0)!=0:0)e=e+100|0;else e=Et(e+60|0,o[1e3+(t<<2)>>2]|0,992)|0;return Y($r(e,n))}function Gr(e){e=e|0;return(e|1|0)==3|0}function $r(e,t){e=e|0;t=Y(t);if((o[e+4>>2]|0)==3)t=Y(0.0);else t=Y(Nr(e,t));return Y(t)}function Yr(e,t){e=e|0;t=t|0;e=o[e>>2]|0;return((e|0)==0?(t|0)>1?t:1:e)|0}function Kr(e,t){e=e|0;t=t|0;var n=0;e:do{if((t|0)==2){switch(e|0){case 2:{e=3;break e}case 3:break;default:{n=4;break e}}e=2}else n=4}while(0);return e|0}function Xr(e,t){e=e|0;t=t|0;var n=ft;if(!((Gr(t)|0?(o[e+312>>2]|0)!=0:0)?(n=Y(s[e+308>>2]),n>=Y(0.0)):0))n=Y(NT(Y(s[(Et(e+276|0,o[1040+(t<<2)>>2]|0,992)|0)>>2]),Y(0.0)));return Y(n)}function Qr(e,t){e=e|0;t=t|0;var n=ft;if(!((Gr(t)|0?(o[e+320>>2]|0)!=0:0)?(n=Y(s[e+316>>2]),n>=Y(0.0)):0))n=Y(NT(Y(s[(Et(e+276|0,o[1e3+(t<<2)>>2]|0,992)|0)>>2]),Y(0.0)));return Y(n)}function Jr(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;if(!((Gr(t)|0?(o[e+240>>2]|0)!=0:0)?(r=Y(Nr(e+236|0,n)),r>=Y(0.0)):0))r=Y(NT(Y(Nr(Et(e+204|0,o[1040+(t<<2)>>2]|0,992)|0,n)),Y(0.0)));return Y(r)}function Zr(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;if(!((Gr(t)|0?(o[e+248>>2]|0)!=0:0)?(r=Y(Nr(e+244|0,n)),r>=Y(0.0)):0))r=Y(NT(Y(Nr(Et(e+204|0,o[1e3+(t<<2)>>2]|0,992)|0,n)),Y(0.0)));return Y(r)}function ei(e,t,n,r,i,u,a){e=e|0;t=Y(t);n=Y(n);r=r|0;i=i|0;u=Y(u);a=Y(a);var l=ft,c=ft,f=ft,d=ft,p=ft,v=ft,m=0,g=0,y=0;y=h;h=h+16|0;m=y;g=e+964|0;Rt(e,(o[g>>2]|0)!=0,3519);l=Y(ui(e,2,t));c=Y(ui(e,0,t));f=Y(Sr(e,2,t));d=Y(Sr(e,0,t));if(wt(t)|0)p=t;else p=Y(NT(Y(0.0),Y(Y(t-f)-l)));if(wt(n)|0)v=n;else v=Y(NT(Y(0.0),Y(Y(n-d)-c)));if((r|0)==1&(i|0)==1){s[e+908>>2]=Y(di(e,2,Y(t-f),u,u));t=Y(di(e,0,Y(n-d),a,u))}else{OA[o[g>>2]&1](m,e,p,r,v,i);p=Y(l+Y(s[m>>2]));v=Y(t-f);s[e+908>>2]=Y(di(e,2,(r|2|0)==2?p:v,u,u));v=Y(c+Y(s[m+4>>2]));t=Y(n-d);t=Y(di(e,0,(i|2|0)==2?v:t,a,u))}s[e+912>>2]=t;h=y;return}function ti(e,t,n,r,i,o,u){e=e|0;t=Y(t);n=Y(n);r=r|0;i=i|0;o=Y(o);u=Y(u);var a=ft,l=ft,c=ft,f=ft;c=Y(ui(e,2,o));a=Y(ui(e,0,o));f=Y(Sr(e,2,o));l=Y(Sr(e,0,o));t=Y(t-f);s[e+908>>2]=Y(di(e,2,(r|2|0)==2?c:t,o,o));n=Y(n-l);s[e+912>>2]=Y(di(e,0,(i|2|0)==2?a:n,u,o));return}function ni(e,t,n,r,i,o,u){e=e|0;t=Y(t);n=Y(n);r=r|0;i=i|0;o=Y(o);u=Y(u);var a=0,l=ft,c=ft;a=(r|0)==2;if((!(t<=Y(0.0)&a)?!(n<=Y(0.0)&(i|0)==2):0)?!((r|0)==1&(i|0)==1):0)e=0;else{l=Y(Sr(e,0,o));c=Y(Sr(e,2,o));a=t>2]=Y(di(e,2,a?Y(0.0):t,o,o));t=Y(n-l);a=n>2]=Y(di(e,0,a?Y(0.0):t,u,o));e=1}return e|0}function ri(e,t){e=e|0;t=t|0;if(ki(e)|0)e=Kr(2,t)|0;else e=0;return e|0}function ii(e,t,n){e=e|0;t=t|0;n=Y(n);n=Y(Jr(e,t,n));return Y(n+Y(Xr(e,t)))}function oi(e,t,n){e=e|0;t=t|0;n=Y(n);n=Y(Zr(e,t,n));return Y(n+Y(Qr(e,t)))}function ui(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;r=Y(ii(e,t,n));return Y(r+Y(oi(e,t,n)))}function ai(e){e=e|0;if(!(o[e+24>>2]|0)){if(Y(li(e))!=Y(0.0))e=1;else e=Y(si(e))!=Y(0.0)}else e=0;return e|0}function li(e){e=e|0;var t=ft;if(o[e+944>>2]|0){t=Y(s[e+44>>2]);if(wt(t)|0){t=Y(s[e+40>>2]);e=t>Y(0.0)&((wt(t)|0)^1);return Y(e?t:Y(0.0))}}else t=Y(0.0);return Y(t)}function si(e){e=e|0;var t=ft,n=0,i=ft;do{if(o[e+944>>2]|0){t=Y(s[e+48>>2]);if(wt(t)|0){n=r[(o[e+976>>2]|0)+2>>0]|0;if(n<<24>>24==0?(i=Y(s[e+40>>2]),i>24?Y(1.0):Y(0.0)}}else t=Y(0.0)}while(0);return Y(t)}function ci(e){e=e|0;var t=0,n=0;tx(e+400|0,0,540)|0;r[e+985>>0]=1;Wt(e);n=Ot(e)|0;if(n|0){t=e+948|0;e=0;do{ci(o[(o[t>>2]|0)+(e<<2)>>2]|0);e=e+1|0}while((e|0)!=(n|0))}return}function fi(e,t,n,r,i,u,a,l,c,f){e=e|0;t=t|0;n=Y(n);r=r|0;i=Y(i);u=Y(u);a=Y(a);l=l|0;c=c|0;f=f|0;var d=0,p=ft,v=0,m=0,g=ft,y=ft,_=0,b=ft,w=0,D=ft,S=0,C=0,k=0,T=0,x=0,A=0,O=0,P=0,I=0,N=0;I=h;h=h+16|0;k=I+12|0;T=I+8|0;x=I+4|0;A=I;P=Kr(o[e+4>>2]|0,c)|0;S=Gr(P)|0;p=Y(Nr(Ti(t)|0,S?u:a));C=Ir(t,2,u)|0;O=Ir(t,0,a)|0;do{if(!(wt(p)|0)?!(wt(S?n:i)|0):0){d=t+504|0;if(!(wt(Y(s[d>>2]))|0)){if(!(xi(o[t+976>>2]|0,0)|0))break;if((o[t+500>>2]|0)==(o[2278]|0))break}s[d>>2]=Y(NT(p,Y(ui(t,P,u))))}else v=7}while(0);do{if((v|0)==7){w=S^1;if(!(w|C^1)){a=Y(Nr(o[t+992>>2]|0,u));s[t+504>>2]=Y(NT(a,Y(ui(t,2,u))));break}if(!(S|O^1)){a=Y(Nr(o[t+996>>2]|0,a));s[t+504>>2]=Y(NT(a,Y(ui(t,0,u))));break}s[k>>2]=Y(E);s[T>>2]=Y(E);o[x>>2]=0;o[A>>2]=0;b=Y(Sr(t,2,u));D=Y(Sr(t,0,u));if(C){g=Y(b+Y(Nr(o[t+992>>2]|0,u)));s[k>>2]=g;o[x>>2]=1;m=1}else{m=0;g=Y(E)}if(O){p=Y(D+Y(Nr(o[t+996>>2]|0,a)));s[T>>2]=p;o[A>>2]=1;d=1}else{d=0;p=Y(E)}v=o[e+32>>2]|0;if(!(S&(v|0)==2)){if(wt(g)|0?!(wt(n)|0):0){s[k>>2]=n;o[x>>2]=2;m=2;g=n}}else v=2;if((!((v|0)==2&w)?wt(p)|0:0)?!(wt(i)|0):0){s[T>>2]=i;o[A>>2]=2;d=2;p=i}y=Y(s[t+396>>2]);_=wt(y)|0;do{if(!_){if((m|0)==1&w){s[T>>2]=Y(Y(g-b)/y);o[A>>2]=1;d=1;v=1;break}if(S&(d|0)==1){s[k>>2]=Y(y*Y(p-D));o[x>>2]=1;d=1;v=1}else v=m}else v=m}while(0);N=wt(n)|0;m=(pi(e,t)|0)!=4;if(!(S|C|((r|0)!=1|N)|(m|(v|0)==1))?(s[k>>2]=n,o[x>>2]=1,!_):0){s[T>>2]=Y(Y(n-b)/y);o[A>>2]=1;d=1}if(!(O|w|((l|0)!=1|(wt(i)|0))|(m|(d|0)==1))?(s[T>>2]=i,o[A>>2]=1,!_):0){s[k>>2]=Y(y*Y(i-D));o[x>>2]=1}mi(t,2,u,u,x,k);mi(t,0,a,u,A,T);n=Y(s[k>>2]);i=Y(s[T>>2]);Dr(t,n,i,c,o[x>>2]|0,o[A>>2]|0,u,a,0,3565,f)|0;a=Y(s[t+908+(o[976+(P<<2)>>2]<<2)>>2]);s[t+504>>2]=Y(NT(a,Y(ui(t,P,u))))}}while(0);o[t+500>>2]=o[2278];h=I;return}function di(e,t,n,r,i){e=e|0;t=t|0;n=Y(n);r=Y(r);i=Y(i);r=Y(Di(e,t,n,r));return Y(NT(r,Y(ui(e,t,i))))}function pi(e,t){e=e|0;t=t|0;t=t+20|0;t=o[((o[t>>2]|0)==0?e+16|0:t)>>2]|0;if((t|0)==5?ki(o[e+4>>2]|0)|0:0)t=1;return t|0}function hi(e,t){e=e|0;t=t|0;if(Gr(t)|0?(o[e+96>>2]|0)!=0:0)t=4;else t=o[1040+(t<<2)>>2]|0;return e+60+(t<<3)|0}function vi(e,t){e=e|0;t=t|0;if(Gr(t)|0?(o[e+104>>2]|0)!=0:0)t=5;else t=o[1e3+(t<<2)>>2]|0;return e+60+(t<<3)|0}function mi(e,t,n,r,i,u){e=e|0;t=t|0;n=Y(n);r=Y(r);i=i|0;u=u|0;n=Y(Nr(e+380+(o[976+(t<<2)>>2]<<3)|0,n));n=Y(n+Y(Sr(e,t,r)));switch(o[i>>2]|0){case 2:case 1:{i=wt(n)|0;r=Y(s[u>>2]);s[u>>2]=i|r>2]=2;s[u>>2]=n}break}default:{}}return}function gi(e,t){e=e|0;t=t|0;e=e+132|0;if(Gr(t)|0?(o[(Et(e,4,948)|0)+4>>2]|0)!=0:0)e=1;else e=(o[(Et(e,o[1040+(t<<2)>>2]|0,948)|0)+4>>2]|0)!=0;return e|0}function yi(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0;e=e+132|0;if(Gr(t)|0?(r=Et(e,4,948)|0,(o[r+4>>2]|0)!=0):0)i=4;else{r=Et(e,o[1040+(t<<2)>>2]|0,948)|0;if(!(o[r+4>>2]|0))n=Y(0.0);else i=4}if((i|0)==4)n=Y(Nr(r,n));return Y(n)}function _i(e,t,n){e=e|0;t=t|0;n=Y(n);var r=ft;r=Y(s[e+908+(o[976+(t<<2)>>2]<<2)>>2]);r=Y(r+Y(Vr(e,t,n)));return Y(r+Y(qr(e,t,n)))}function bi(e){e=e|0;var t=0,n=0,r=0;e:do{if(!(ki(o[e+4>>2]|0)|0)){if((o[e+16>>2]|0)!=5){n=Ot(e)|0;if(!n)t=0;else{t=0;while(1){r=Pt(e,t)|0;if((o[r+24>>2]|0)==0?(o[r+20>>2]|0)==5:0){t=1;break e}t=t+1|0;if(t>>>0>=n>>>0){t=0;break}}}}else t=1}else t=0}while(0);return t|0}function wi(e,t){e=e|0;t=t|0;var n=ft;n=Y(s[e+908+(o[976+(t<<2)>>2]<<2)>>2]);return n>=Y(0.0)&((wt(n)|0)^1)|0}function Ei(e){e=e|0;var t=ft,n=0,r=0,i=0,u=0,a=0,l=0,c=ft;n=o[e+968>>2]|0;if(!n){u=Ot(e)|0;do{if(u|0){n=0;i=0;while(1){r=Pt(e,i)|0;if(o[r+940>>2]|0){a=8;break}if((o[r+24>>2]|0)!=1){l=(pi(e,r)|0)==5;if(l){n=r;break}else n=(n|0)==0?r:n}i=i+1|0;if(i>>>0>=u>>>0){a=8;break}}if((a|0)==8)if(!n)break;t=Y(Ei(n));return Y(t+Y(s[n+404>>2]))}}while(0);t=Y(s[e+912>>2])}else{c=Y(s[e+908>>2]);t=Y(s[e+912>>2]);t=Y(pA[n&0](e,c,t));Rt(e,(wt(t)|0)^1,3573)}return Y(t)}function Di(e,t,n,r){e=e|0;t=t|0;n=Y(n);r=Y(r);var i=ft,o=0;if(!(ki(t)|0)){if(Gr(t)|0){t=0;o=3}else{r=Y(E);i=Y(E)}}else{t=1;o=3}if((o|0)==3){i=Y(Nr(e+364+(t<<3)|0,r));r=Y(Nr(e+380+(t<<3)|0,r))}o=r=Y(0.0)&((wt(r)|0)^1));n=o?r:n;o=i>=Y(0.0)&((wt(i)|0)^1)&n>2]|0,u)|0;m=ri(y,u)|0;g=Gr(y)|0;p=Y(Sr(t,2,n));h=Y(Sr(t,0,n));if(!(Ir(t,2,n)|0)){if(gi(t,2)|0?Ai(t,2)|0:0){l=Y(s[e+908>>2]);c=Y(Xr(e,2));c=Y(l-Y(c+Y(Qr(e,2))));l=Y(yi(t,2,n));l=Y(di(t,2,Y(c-Y(l+Y(Oi(t,2,n)))),n,n))}else l=Y(E)}else l=Y(p+Y(Nr(o[t+992>>2]|0,n)));if(!(Ir(t,0,i)|0)){if(gi(t,0)|0?Ai(t,0)|0:0){c=Y(s[e+912>>2]);b=Y(Xr(e,0));b=Y(c-Y(b+Y(Qr(e,0))));c=Y(yi(t,0,i));c=Y(di(t,0,Y(b-Y(c+Y(Oi(t,0,i)))),i,n))}else c=Y(E)}else c=Y(h+Y(Nr(o[t+996>>2]|0,i)));f=wt(l)|0;d=wt(c)|0;do{if(f^d?(v=Y(s[t+396>>2]),!(wt(v)|0)):0)if(f){l=Y(p+Y(Y(c-h)*v));break}else{b=Y(h+Y(Y(l-p)/v));c=d?b:c;break}}while(0);d=wt(l)|0;f=wt(c)|0;if(d|f){w=(d^1)&1;r=n>Y(0.0)&((r|0)!=0&d);l=g?l:r?n:l;Dr(t,l,c,u,g?w:r?2:w,d&(f^1)&1,l,c,0,3623,a)|0;l=Y(s[t+908>>2]);l=Y(l+Y(Sr(t,2,n)));c=Y(s[t+912>>2]);c=Y(c+Y(Sr(t,0,n)))}Dr(t,l,c,u,1,1,l,c,1,3635,a)|0;if(Ai(t,y)|0?!(gi(t,y)|0):0){w=o[976+(y<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));b=Y(b-Y(Qr(e,y)));b=Y(b-Y(qr(t,y,n)));b=Y(b-Y(Oi(t,y,g?n:i)));s[t+400+(o[1040+(y<<2)>>2]<<2)>>2]=b}else _=21;do{if((_|0)==21){if(!(gi(t,y)|0)?(o[e+8>>2]|0)==1:0){w=o[976+(y<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(Y(b-Y(s[t+908+(w<<2)>>2]))*Y(.5));s[t+400+(o[1040+(y<<2)>>2]<<2)>>2]=b;break}if(!(gi(t,y)|0)?(o[e+8>>2]|0)==2:0){w=o[976+(y<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));s[t+400+(o[1040+(y<<2)>>2]<<2)>>2]=b}}}while(0);if(Ai(t,m)|0?!(gi(t,m)|0):0){w=o[976+(m<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));b=Y(b-Y(Qr(e,m)));b=Y(b-Y(qr(t,m,n)));b=Y(b-Y(Oi(t,m,g?i:n)));s[t+400+(o[1040+(m<<2)>>2]<<2)>>2]=b}else _=30;do{if((_|0)==30?!(gi(t,m)|0):0){if((pi(e,t)|0)==2){w=o[976+(m<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(Y(b-Y(s[t+908+(w<<2)>>2]))*Y(.5));s[t+400+(o[1040+(m<<2)>>2]<<2)>>2]=b;break}w=(pi(e,t)|0)==3;if(w^(o[e+28>>2]|0)==2){w=o[976+(m<<2)>>2]|0;b=Y(s[e+908+(w<<2)>>2]);b=Y(b-Y(s[t+908+(w<<2)>>2]));s[t+400+(o[1040+(m<<2)>>2]<<2)>>2]=b}}}while(0);return}function Ci(e,t,n){e=e|0;t=t|0;n=n|0;var r=ft,i=0;i=o[976+(n<<2)>>2]|0;r=Y(s[t+908+(i<<2)>>2]);r=Y(Y(s[e+908+(i<<2)>>2])-r);r=Y(r-Y(s[t+400+(o[1040+(n<<2)>>2]<<2)>>2]));s[t+400+(o[1e3+(n<<2)>>2]<<2)>>2]=r;return}function ki(e){e=e|0;return(e|1|0)==1|0}function Ti(e){e=e|0;var t=ft;switch(o[e+56>>2]|0){case 0:case 3:{t=Y(s[e+40>>2]);if(t>Y(0.0)&((wt(t)|0)^1))e=r[(o[e+976>>2]|0)+2>>0]|0?1056:992;else e=1056;break}default:e=e+52|0}return e|0}function xi(e,t){e=e|0;t=t|0;return(r[e+t>>0]|0)!=0|0}function Ai(e,t){e=e|0;t=t|0;e=e+132|0;if(Gr(t)|0?(o[(Et(e,5,948)|0)+4>>2]|0)!=0:0)e=1;else e=(o[(Et(e,o[1e3+(t<<2)>>2]|0,948)|0)+4>>2]|0)!=0;return e|0}function Oi(e,t,n){e=e|0;t=t|0;n=Y(n);var r=0,i=0;e=e+132|0;if(Gr(t)|0?(r=Et(e,5,948)|0,(o[r+4>>2]|0)!=0):0)i=4;else{r=Et(e,o[1e3+(t<<2)>>2]|0,948)|0;if(!(o[r+4>>2]|0))n=Y(0.0);else i=4}if((i|0)==4)n=Y(Nr(r,n));return Y(n)}function Pi(e,t,n){e=e|0;t=t|0;n=Y(n);if(gi(e,t)|0)n=Y(yi(e,t,n));else n=Y(-Y(Oi(e,t,n)));return Y(n)}function Ii(e){e=Y(e);return(s[d>>2]=e,o[d>>2]|0)|0}function Ni(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>1073741823)Ye();else{i=$T(t<<2)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<2)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<2);return}function Mi(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>2)<<2)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Ri(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-4-t|0)>>>2)<<2);e=o[e>>2]|0;if(e|0)KT(e);return}function Fi(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;a=e+4|0;l=o[a>>2]|0;i=l-r|0;u=i>>2;e=t+(u<<2)|0;if(e>>>0>>0){r=l;do{o[r>>2]=o[e>>2];e=e+4|0;r=(o[a>>2]|0)+4|0;o[a>>2]=r}while(e>>>0>>0)}if(u|0)sx(l+(0-u<<2)|0,t|0,i|0)|0;return}function Li(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0;l=t+4|0;s=o[l>>2]|0;i=o[e>>2]|0;a=n;u=a-i|0;r=s+(0-(u>>2)<<2)|0;o[l>>2]=r;if((u|0)>0)ix(r|0,i|0,u|0)|0;i=e+4|0;u=t+8|0;r=(o[i>>2]|0)-a|0;if((r|0)>0){ix(o[u>>2]|0,n|0,r|0)|0;o[u>>2]=(o[u>>2]|0)+(r>>>2<<2)}a=o[e>>2]|0;o[e>>2]=o[l>>2];o[l>>2]=a;a=o[i>>2]|0;o[i>>2]=o[u>>2];o[u>>2]=a;a=e+8|0;n=t+12|0;e=o[a>>2]|0;o[a>>2]=o[n>>2];o[n>>2]=e;o[t>>2]=o[l>>2];return s|0}function Bi(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;a=o[t>>2]|0;u=o[n>>2]|0;if((a|0)!=(u|0)){i=e+8|0;n=((u+-4-a|0)>>>2)+1|0;e=a;r=o[i>>2]|0;do{o[r>>2]=o[e>>2];r=(o[i>>2]|0)+4|0;o[i>>2]=r;e=e+4|0}while((e|0)!=(u|0));o[t>>2]=a+(n<<2)}return}function ji(){_t();return}function Ui(){var e=0;e=$T(4)|0;zi(e);return e|0}function zi(e){e=e|0;o[e>>2]=Lt()|0;return}function Wi(e){e=e|0;if(e|0){Hi(e);KT(e)}return}function Hi(e){e=e|0;jt(o[e>>2]|0);return}function Vi(e,t,n){e=e|0;t=t|0;n=n|0;jr(o[e>>2]|0,t,n);return}function qi(e,t){e=e|0;t=Y(t);Ar(o[e>>2]|0,t);return}function Gi(e,t){e=e|0;t=t|0;return xi(o[e>>2]|0,t)|0}function $i(){var e=0;e=$T(8)|0;Yi(e,0);return e|0}function Yi(e,t){e=e|0;t=t|0;if(!t)t=Ct()|0;else t=Dt(o[t>>2]|0)|0;o[e>>2]=t;o[e+4>>2]=0;Jt(t,e);return}function Ki(e){e=e|0;var t=0;t=$T(8)|0;Yi(t,e);return t|0}function Xi(e){e=e|0;if(e|0){Qi(e);KT(e)}return}function Qi(e){e=e|0;var t=0;xt(o[e>>2]|0);t=e+4|0;e=o[t>>2]|0;o[t>>2]=0;if(e|0){Ji(e);KT(e)}return}function Ji(e){e=e|0;Zi(e);return}function Zi(e){e=e|0;e=o[e>>2]|0;if(e|0)rt(e|0);return}function eo(e){e=e|0;return Zt(e)|0}function to(e){e=e|0;var t=0,n=0;n=e+4|0;t=o[n>>2]|0;o[n>>2]=0;if(t|0){Ji(t);KT(t)}Mt(o[e>>2]|0);return}function no(e,t){e=e|0;t=t|0;Kt(o[e>>2]|0,o[t>>2]|0);return}function ro(e,t){e=e|0;t=t|0;fn(o[e>>2]|0,t);return}function io(e,t,n){e=e|0;t=t|0;n=+n;Cn(o[e>>2]|0,t,Y(n));return}function oo(e,t,n){e=e|0;t=t|0;n=+n;kn(o[e>>2]|0,t,Y(n));return}function uo(e,t){e=e|0;t=t|0;on(o[e>>2]|0,t);return}function ao(e,t){e=e|0;t=t|0;an(o[e>>2]|0,t);return}function lo(e,t){e=e|0;t=t|0;sn(o[e>>2]|0,t);return}function so(e,t){e=e|0;t=t|0;en(o[e>>2]|0,t);return}function co(e,t){e=e|0;t=t|0;pn(o[e>>2]|0,t);return}function fo(e,t){e=e|0;t=t|0;nn(o[e>>2]|0,t);return}function po(e,t,n){e=e|0;t=t|0;n=+n;xn(o[e>>2]|0,t,Y(n));return}function ho(e,t,n){e=e|0;t=t|0;n=+n;An(o[e>>2]|0,t,Y(n));return}function vo(e,t){e=e|0;t=t|0;Pn(o[e>>2]|0,t);return}function mo(e,t){e=e|0;t=t|0;vn(o[e>>2]|0,t);return}function go(e,t){e=e|0;t=t|0;gn(o[e>>2]|0,t);return}function yo(e,t){e=e|0;t=+t;_n(o[e>>2]|0,Y(t));return}function _o(e,t){e=e|0;t=+t;En(o[e>>2]|0,Y(t));return}function bo(e,t){e=e|0;t=+t;Dn(o[e>>2]|0,Y(t));return}function wo(e,t){e=e|0;t=+t;bn(o[e>>2]|0,Y(t));return}function Eo(e,t){e=e|0;t=+t;wn(o[e>>2]|0,Y(t));return}function Do(e,t){e=e|0;t=+t;Ln(o[e>>2]|0,Y(t));return}function So(e,t){e=e|0;t=+t;Bn(o[e>>2]|0,Y(t));return}function Co(e){e=e|0;jn(o[e>>2]|0);return}function ko(e,t){e=e|0;t=+t;zn(o[e>>2]|0,Y(t));return}function To(e,t){e=e|0;t=+t;Wn(o[e>>2]|0,Y(t));return}function xo(e){e=e|0;Hn(o[e>>2]|0);return}function Ao(e,t){e=e|0;t=+t;qn(o[e>>2]|0,Y(t));return}function Oo(e,t){e=e|0;t=+t;Gn(o[e>>2]|0,Y(t));return}function Po(e,t){e=e|0;t=+t;Yn(o[e>>2]|0,Y(t));return}function Io(e,t){e=e|0;t=+t;Kn(o[e>>2]|0,Y(t));return}function No(e,t){e=e|0;t=+t;Qn(o[e>>2]|0,Y(t));return}function Mo(e,t){e=e|0;t=+t;Jn(o[e>>2]|0,Y(t));return}function Ro(e,t){e=e|0;t=+t;er(o[e>>2]|0,Y(t));return}function Fo(e,t){e=e|0;t=+t;tr(o[e>>2]|0,Y(t));return}function Lo(e,t){e=e|0;t=+t;rr(o[e>>2]|0,Y(t));return}function Bo(e,t,n){e=e|0;t=t|0;n=+n;Rn(o[e>>2]|0,t,Y(n));return}function jo(e,t,n){e=e|0;t=t|0;n=+n;In(o[e>>2]|0,t,Y(n));return}function Uo(e,t,n){e=e|0;t=t|0;n=+n;Nn(o[e>>2]|0,t,Y(n));return}function zo(e){e=e|0;return dn(o[e>>2]|0)|0}function Wo(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;Tn(i,o[t>>2]|0,n);Ho(e,i);h=r;return}function Ho(e,t){e=e|0;t=t|0;Vo(e,o[t+4>>2]|0,+Y(s[t>>2]));return}function Vo(e,t,n){e=e|0;t=t|0;n=+n;o[e>>2]=t;c[e+8>>3]=n;return}function qo(e){e=e|0;return un(o[e>>2]|0)|0}function Go(e){e=e|0;return ln(o[e>>2]|0)|0}function $o(e){e=e|0;return cn(o[e>>2]|0)|0}function Yo(e){e=e|0;return tn(o[e>>2]|0)|0}function Ko(e){e=e|0;return hn(o[e>>2]|0)|0}function Xo(e){e=e|0;return rn(o[e>>2]|0)|0}function Qo(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;On(i,o[t>>2]|0,n);Ho(e,i);h=r;return}function Jo(e){e=e|0;return mn(o[e>>2]|0)|0}function Zo(e){e=e|0;return yn(o[e>>2]|0)|0}function eu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Sn(r,o[t>>2]|0);Ho(e,r);h=n;return}function tu(e){e=e|0;return+ +Y(Xt(o[e>>2]|0))}function nu(e){e=e|0;return+ +Y(Qt(o[e>>2]|0))}function ru(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Un(r,o[t>>2]|0);Ho(e,r);h=n;return}function iu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Vn(r,o[t>>2]|0);Ho(e,r);h=n;return}function ou(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;$n(r,o[t>>2]|0);Ho(e,r);h=n;return}function uu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Xn(r,o[t>>2]|0);Ho(e,r);h=n;return}function au(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Zn(r,o[t>>2]|0);Ho(e,r);h=n;return}function lu(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;nr(r,o[t>>2]|0);Ho(e,r);h=n;return}function su(e){e=e|0;return+ +Y(ir(o[e>>2]|0))}function cu(e,t){e=e|0;t=t|0;return+ +Y(Fn(o[e>>2]|0,t))}function fu(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;Mn(i,o[t>>2]|0,n);Ho(e,i);h=r;return}function du(e,t,n){e=e|0;t=t|0;n=n|0;zt(o[e>>2]|0,o[t>>2]|0,n);return}function pu(e,t){e=e|0;t=t|0;Nt(o[e>>2]|0,o[t>>2]|0);return}function hu(e){e=e|0;return Ot(o[e>>2]|0)|0}function vu(e){e=e|0;e=Gt(o[e>>2]|0)|0;if(!e)e=0;else e=eo(e)|0;return e|0}function mu(e,t){e=e|0;t=t|0;e=Pt(o[e>>2]|0,t)|0;if(!e)e=0;else e=eo(e)|0;return e|0}function gu(e,t){e=e|0;t=t|0;var n=0,r=0;r=$T(4)|0;yu(r,t);n=e+4|0;t=o[n>>2]|0;o[n>>2]=r;if(t|0){Ji(t);KT(t)}Ut(o[e>>2]|0,1);return}function yu(e,t){e=e|0;t=t|0;Bu(e,t);return}function _u(e,t,n,r,i,o){e=e|0;t=t|0;n=Y(n);r=r|0;i=Y(i);o=o|0;var u=0,a=0;u=h;h=h+16|0;a=u;bu(a,Zt(t)|0,+n,r,+i,o);s[e>>2]=Y(+c[a>>3]);s[e+4>>2]=Y(+c[a+8>>3]);h=u;return}function bu(e,t,n,r,i,u){e=e|0;t=t|0;n=+n;r=r|0;i=+i;u=u|0;var a=0,l=0,s=0,f=0,d=0;a=h;h=h+32|0;d=a+8|0;f=a+20|0;s=a;l=a+16|0;c[d>>3]=n;o[f>>2]=r;c[s>>3]=i;o[l>>2]=u;wu(e,o[t+4>>2]|0,d,f,s,l);h=a;return}function wu(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0;a=h;h=h+16|0;l=a;Dk(l);t=Eu(t)|0;Du(e,t,+c[n>>3],o[r>>2]|0,+c[i>>3],o[u>>2]|0);Ck(l);h=a;return}function Eu(e){e=e|0;return o[e>>2]|0}function Du(e,t,n,r,i,o){e=e|0;t=t|0;n=+n;r=r|0;i=+i;o=o|0;var u=0;u=Cu(Su()|0)|0;n=+ku(n);r=Tu(r)|0;i=+ku(i);xu(e,ot(0,u|0,t|0,+n,r|0,+i,Tu(o)|0)|0);return}function Su(){var e=0;if(!(r[7608]|0)){Ru(9120);e=7608;o[e>>2]=1;o[e+4>>2]=0}return 9120}function Cu(e){e=e|0;return o[e+8>>2]|0}function ku(e){e=+e;return+ +Mu(e)}function Tu(e){e=e|0;return Nu(e)|0}function xu(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+32|0;n=i;r=t;if(!(r&1)){o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=o[t+8>>2];o[e+12>>2]=o[t+12>>2]}else{Au(n,0);Be(r|0,n|0)|0;Ou(e,n);Pu(n)}h=i;return}function Au(e,t){e=e|0;t=t|0;Iu(e,t);o[e+8>>2]=0;r[e+24>>0]=0;return}function Ou(e,t){e=e|0;t=t|0;t=t+8|0;o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=o[t+8>>2];o[e+12>>2]=o[t+12>>2];return}function Pu(e){e=e|0;r[e+24>>0]=0;return}function Iu(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function Nu(e){e=e|0;return e|0}function Mu(e){e=+e;return+e}function Ru(e){e=e|0;Lu(e,Fu()|0,4);return}function Fu(){return 1064}function Lu(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;o[e+8>>2]=tt(t|0,n+1|0)|0;return}function Bu(e,t){e=e|0;t=t|0;t=o[t>>2]|0;o[e>>2]=t;Ae(t|0);return}function ju(e){e=e|0;var t=0,n=0;n=e+4|0;t=o[n>>2]|0;o[n>>2]=0;if(t|0){Ji(t);KT(t)}Ut(o[e>>2]|0,0);return}function Uu(e){e=e|0;$t(o[e>>2]|0);return}function zu(e){e=e|0;return Yt(o[e>>2]|0)|0}function Wu(e,t,n,r){e=e|0;t=+t;n=+n;r=r|0;Or(o[e>>2]|0,Y(t),Y(n),r);return}function Hu(e){e=e|0;return+ +Y(or(o[e>>2]|0))}function Vu(e){e=e|0;return+ +Y(ar(o[e>>2]|0))}function qu(e){e=e|0;return+ +Y(ur(o[e>>2]|0))}function Gu(e){e=e|0;return+ +Y(lr(o[e>>2]|0))}function $u(e){e=e|0;return+ +Y(sr(o[e>>2]|0))}function Yu(e){e=e|0;return+ +Y(cr(o[e>>2]|0))}function Ku(e,t){e=e|0;t=t|0;c[e>>3]=+Y(or(o[t>>2]|0));c[e+8>>3]=+Y(ar(o[t>>2]|0));c[e+16>>3]=+Y(ur(o[t>>2]|0));c[e+24>>3]=+Y(lr(o[t>>2]|0));c[e+32>>3]=+Y(sr(o[t>>2]|0));c[e+40>>3]=+Y(cr(o[t>>2]|0));return}function Xu(e,t){e=e|0;t=t|0;return+ +Y(fr(o[e>>2]|0,t))}function Qu(e,t){e=e|0;t=t|0;return+ +Y(dr(o[e>>2]|0,t))}function Ju(e,t){e=e|0;t=t|0;return+ +Y(pr(o[e>>2]|0,t))}function Zu(){return Ft()|0}function ea(){ta();na();ra();ia();oa();ua();return}function ta(){zb(11713,4938,1);return}function na(){tb(10448);return}function ra(){R_(10408);return}function ia(){Jy(10324);return}function oa(){qm(10096);return}function ua(){aa(9132);return}function aa(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0,w=0,E=0,D=0,S=0,C=0,k=0,T=0,x=0,A=0,O=0,P=0,I=0,N=0,M=0,R=0,F=0,L=0,B=0,j=0,U=0,z=0,W=0,H=0,V=0,q=0,G=0,$=0,Y=0,K=0,X=0,Q=0,J=0,Z=0,ee=0,te=0,ne=0,re=0,ie=0,oe=0,ue=0,ae=0,le=0,se=0,ce=0,fe=0,de=0,pe=0,he=0,ve=0,me=0,ge=0,ye=0,_e=0,be=0,we=0,Ee=0,De=0,Se=0,Ce=0,ke=0,Te=0,xe=0,Ae=0,Oe=0,Pe=0,Ie=0;t=h;h=h+672|0;n=t+656|0;Ie=t+648|0;Pe=t+640|0;Oe=t+632|0;Ae=t+624|0;xe=t+616|0;Te=t+608|0;ke=t+600|0;Ce=t+592|0;Se=t+584|0;De=t+576|0;Ee=t+568|0;we=t+560|0;be=t+552|0;_e=t+544|0;ye=t+536|0;ge=t+528|0;me=t+520|0;ve=t+512|0;he=t+504|0;pe=t+496|0;de=t+488|0;fe=t+480|0;ce=t+472|0;se=t+464|0;le=t+456|0;ae=t+448|0;ue=t+440|0;oe=t+432|0;ie=t+424|0;re=t+416|0;ne=t+408|0;te=t+400|0;ee=t+392|0;Z=t+384|0;J=t+376|0;Q=t+368|0;X=t+360|0;K=t+352|0;Y=t+344|0;$=t+336|0;G=t+328|0;q=t+320|0;V=t+312|0;H=t+304|0;W=t+296|0;z=t+288|0;U=t+280|0;j=t+272|0;B=t+264|0;L=t+256|0;F=t+248|0;R=t+240|0;M=t+232|0;N=t+224|0;I=t+216|0;P=t+208|0;O=t+200|0;A=t+192|0;x=t+184|0;T=t+176|0;k=t+168|0;C=t+160|0;S=t+152|0;D=t+144|0;E=t+136|0;w=t+128|0;b=t+120|0;_=t+112|0;y=t+104|0;g=t+96|0;m=t+88|0;v=t+80|0;p=t+72|0;d=t+64|0;f=t+56|0;c=t+48|0;s=t+40|0;l=t+32|0;a=t+24|0;u=t+16|0;i=t+8|0;r=t;la(e,3646);sa(e,3651,2)|0;ca(e,3665,2)|0;fa(e,3682,18)|0;o[Ie>>2]=19;o[Ie+4>>2]=0;o[n>>2]=o[Ie>>2];o[n+4>>2]=o[Ie+4>>2];da(e,3690,n)|0;o[Pe>>2]=1;o[Pe+4>>2]=0;o[n>>2]=o[Pe>>2];o[n+4>>2]=o[Pe+4>>2];pa(e,3696,n)|0;o[Oe>>2]=2;o[Oe+4>>2]=0;o[n>>2]=o[Oe>>2];o[n+4>>2]=o[Oe+4>>2];ha(e,3706,n)|0;o[Ae>>2]=1;o[Ae+4>>2]=0;o[n>>2]=o[Ae>>2];o[n+4>>2]=o[Ae+4>>2];va(e,3722,n)|0;o[xe>>2]=2;o[xe+4>>2]=0;o[n>>2]=o[xe>>2];o[n+4>>2]=o[xe+4>>2];va(e,3734,n)|0;o[Te>>2]=3;o[Te+4>>2]=0;o[n>>2]=o[Te>>2];o[n+4>>2]=o[Te+4>>2];ha(e,3753,n)|0;o[ke>>2]=4;o[ke+4>>2]=0;o[n>>2]=o[ke>>2];o[n+4>>2]=o[ke+4>>2];ha(e,3769,n)|0;o[Ce>>2]=5;o[Ce+4>>2]=0;o[n>>2]=o[Ce>>2];o[n+4>>2]=o[Ce+4>>2];ha(e,3783,n)|0;o[Se>>2]=6;o[Se+4>>2]=0;o[n>>2]=o[Se>>2];o[n+4>>2]=o[Se+4>>2];ha(e,3796,n)|0;o[De>>2]=7;o[De+4>>2]=0;o[n>>2]=o[De>>2];o[n+4>>2]=o[De+4>>2];ha(e,3813,n)|0;o[Ee>>2]=8;o[Ee+4>>2]=0;o[n>>2]=o[Ee>>2];o[n+4>>2]=o[Ee+4>>2];ha(e,3825,n)|0;o[we>>2]=3;o[we+4>>2]=0;o[n>>2]=o[we>>2];o[n+4>>2]=o[we+4>>2];va(e,3843,n)|0;o[be>>2]=4;o[be+4>>2]=0;o[n>>2]=o[be>>2];o[n+4>>2]=o[be+4>>2];va(e,3853,n)|0;o[_e>>2]=9;o[_e+4>>2]=0;o[n>>2]=o[_e>>2];o[n+4>>2]=o[_e+4>>2];ha(e,3870,n)|0;o[ye>>2]=10;o[ye+4>>2]=0;o[n>>2]=o[ye>>2];o[n+4>>2]=o[ye+4>>2];ha(e,3884,n)|0;o[ge>>2]=11;o[ge+4>>2]=0;o[n>>2]=o[ge>>2];o[n+4>>2]=o[ge+4>>2];ha(e,3896,n)|0;o[me>>2]=1;o[me+4>>2]=0;o[n>>2]=o[me>>2];o[n+4>>2]=o[me+4>>2];ma(e,3907,n)|0;o[ve>>2]=2;o[ve+4>>2]=0;o[n>>2]=o[ve>>2];o[n+4>>2]=o[ve+4>>2];ma(e,3915,n)|0;o[he>>2]=3;o[he+4>>2]=0;o[n>>2]=o[he>>2];o[n+4>>2]=o[he+4>>2];ma(e,3928,n)|0;o[pe>>2]=4;o[pe+4>>2]=0;o[n>>2]=o[pe>>2];o[n+4>>2]=o[pe+4>>2];ma(e,3948,n)|0;o[de>>2]=5;o[de+4>>2]=0;o[n>>2]=o[de>>2];o[n+4>>2]=o[de+4>>2];ma(e,3960,n)|0;o[fe>>2]=6;o[fe+4>>2]=0;o[n>>2]=o[fe>>2];o[n+4>>2]=o[fe+4>>2];ma(e,3974,n)|0;o[ce>>2]=7;o[ce+4>>2]=0;o[n>>2]=o[ce>>2];o[n+4>>2]=o[ce+4>>2];ma(e,3983,n)|0;o[se>>2]=20;o[se+4>>2]=0;o[n>>2]=o[se>>2];o[n+4>>2]=o[se+4>>2];da(e,3999,n)|0;o[le>>2]=8;o[le+4>>2]=0;o[n>>2]=o[le>>2];o[n+4>>2]=o[le+4>>2];ma(e,4012,n)|0;o[ae>>2]=9;o[ae+4>>2]=0;o[n>>2]=o[ae>>2];o[n+4>>2]=o[ae+4>>2];ma(e,4022,n)|0;o[ue>>2]=21;o[ue+4>>2]=0;o[n>>2]=o[ue>>2];o[n+4>>2]=o[ue+4>>2];da(e,4039,n)|0;o[oe>>2]=10;o[oe+4>>2]=0;o[n>>2]=o[oe>>2];o[n+4>>2]=o[oe+4>>2];ma(e,4053,n)|0;o[ie>>2]=11;o[ie+4>>2]=0;o[n>>2]=o[ie>>2];o[n+4>>2]=o[ie+4>>2];ma(e,4065,n)|0;o[re>>2]=12;o[re+4>>2]=0;o[n>>2]=o[re>>2];o[n+4>>2]=o[re+4>>2];ma(e,4084,n)|0;o[ne>>2]=13;o[ne+4>>2]=0;o[n>>2]=o[ne>>2];o[n+4>>2]=o[ne+4>>2];ma(e,4097,n)|0;o[te>>2]=14;o[te+4>>2]=0;o[n>>2]=o[te>>2];o[n+4>>2]=o[te+4>>2];ma(e,4117,n)|0;o[ee>>2]=15;o[ee+4>>2]=0;o[n>>2]=o[ee>>2];o[n+4>>2]=o[ee+4>>2];ma(e,4129,n)|0;o[Z>>2]=16;o[Z+4>>2]=0;o[n>>2]=o[Z>>2];o[n+4>>2]=o[Z+4>>2];ma(e,4148,n)|0;o[J>>2]=17;o[J+4>>2]=0;o[n>>2]=o[J>>2];o[n+4>>2]=o[J+4>>2];ma(e,4161,n)|0;o[Q>>2]=18;o[Q+4>>2]=0;o[n>>2]=o[Q>>2];o[n+4>>2]=o[Q+4>>2];ma(e,4181,n)|0;o[X>>2]=5;o[X+4>>2]=0;o[n>>2]=o[X>>2];o[n+4>>2]=o[X+4>>2];va(e,4196,n)|0;o[K>>2]=6;o[K+4>>2]=0;o[n>>2]=o[K>>2];o[n+4>>2]=o[K+4>>2];va(e,4206,n)|0;o[Y>>2]=7;o[Y+4>>2]=0;o[n>>2]=o[Y>>2];o[n+4>>2]=o[Y+4>>2];va(e,4217,n)|0;o[$>>2]=3;o[$+4>>2]=0;o[n>>2]=o[$>>2];o[n+4>>2]=o[$+4>>2];ga(e,4235,n)|0;o[G>>2]=1;o[G+4>>2]=0;o[n>>2]=o[G>>2];o[n+4>>2]=o[G+4>>2];ya(e,4251,n)|0;o[q>>2]=4;o[q+4>>2]=0;o[n>>2]=o[q>>2];o[n+4>>2]=o[q+4>>2];ga(e,4263,n)|0;o[V>>2]=5;o[V+4>>2]=0;o[n>>2]=o[V>>2];o[n+4>>2]=o[V+4>>2];ga(e,4279,n)|0;o[H>>2]=6;o[H+4>>2]=0;o[n>>2]=o[H>>2];o[n+4>>2]=o[H+4>>2];ga(e,4293,n)|0;o[W>>2]=7;o[W+4>>2]=0;o[n>>2]=o[W>>2];o[n+4>>2]=o[W+4>>2];ga(e,4306,n)|0;o[z>>2]=8;o[z+4>>2]=0;o[n>>2]=o[z>>2];o[n+4>>2]=o[z+4>>2];ga(e,4323,n)|0;o[U>>2]=9;o[U+4>>2]=0;o[n>>2]=o[U>>2];o[n+4>>2]=o[U+4>>2];ga(e,4335,n)|0;o[j>>2]=2;o[j+4>>2]=0;o[n>>2]=o[j>>2];o[n+4>>2]=o[j+4>>2];ya(e,4353,n)|0;o[B>>2]=12;o[B+4>>2]=0;o[n>>2]=o[B>>2];o[n+4>>2]=o[B+4>>2];_a(e,4363,n)|0;o[L>>2]=1;o[L+4>>2]=0;o[n>>2]=o[L>>2];o[n+4>>2]=o[L+4>>2];ba(e,4376,n)|0;o[F>>2]=2;o[F+4>>2]=0;o[n>>2]=o[F>>2];o[n+4>>2]=o[F+4>>2];ba(e,4388,n)|0;o[R>>2]=13;o[R+4>>2]=0;o[n>>2]=o[R>>2];o[n+4>>2]=o[R+4>>2];_a(e,4402,n)|0;o[M>>2]=14;o[M+4>>2]=0;o[n>>2]=o[M>>2];o[n+4>>2]=o[M+4>>2];_a(e,4411,n)|0;o[N>>2]=15;o[N+4>>2]=0;o[n>>2]=o[N>>2];o[n+4>>2]=o[N+4>>2];_a(e,4421,n)|0;o[I>>2]=16;o[I+4>>2]=0;o[n>>2]=o[I>>2];o[n+4>>2]=o[I+4>>2];_a(e,4433,n)|0;o[P>>2]=17;o[P+4>>2]=0;o[n>>2]=o[P>>2];o[n+4>>2]=o[P+4>>2];_a(e,4446,n)|0;o[O>>2]=18;o[O+4>>2]=0;o[n>>2]=o[O>>2];o[n+4>>2]=o[O+4>>2];_a(e,4458,n)|0;o[A>>2]=3;o[A+4>>2]=0;o[n>>2]=o[A>>2];o[n+4>>2]=o[A+4>>2];ba(e,4471,n)|0;o[x>>2]=1;o[x+4>>2]=0;o[n>>2]=o[x>>2];o[n+4>>2]=o[x+4>>2];wa(e,4486,n)|0;o[T>>2]=10;o[T+4>>2]=0;o[n>>2]=o[T>>2];o[n+4>>2]=o[T+4>>2];ga(e,4496,n)|0;o[k>>2]=11;o[k+4>>2]=0;o[n>>2]=o[k>>2];o[n+4>>2]=o[k+4>>2];ga(e,4508,n)|0;o[C>>2]=3;o[C+4>>2]=0;o[n>>2]=o[C>>2];o[n+4>>2]=o[C+4>>2];ya(e,4519,n)|0;o[S>>2]=4;o[S+4>>2]=0;o[n>>2]=o[S>>2];o[n+4>>2]=o[S+4>>2];Ea(e,4530,n)|0;o[D>>2]=19;o[D+4>>2]=0;o[n>>2]=o[D>>2];o[n+4>>2]=o[D+4>>2];Da(e,4542,n)|0;o[E>>2]=12;o[E+4>>2]=0;o[n>>2]=o[E>>2];o[n+4>>2]=o[E+4>>2];Sa(e,4554,n)|0;o[w>>2]=13;o[w+4>>2]=0;o[n>>2]=o[w>>2];o[n+4>>2]=o[w+4>>2];Ca(e,4568,n)|0;o[b>>2]=2;o[b+4>>2]=0;o[n>>2]=o[b>>2];o[n+4>>2]=o[b+4>>2];ka(e,4578,n)|0;o[_>>2]=20;o[_+4>>2]=0;o[n>>2]=o[_>>2];o[n+4>>2]=o[_+4>>2];Ta(e,4587,n)|0;o[y>>2]=22;o[y+4>>2]=0;o[n>>2]=o[y>>2];o[n+4>>2]=o[y+4>>2];da(e,4602,n)|0;o[g>>2]=23;o[g+4>>2]=0;o[n>>2]=o[g>>2];o[n+4>>2]=o[g+4>>2];da(e,4619,n)|0;o[m>>2]=14;o[m+4>>2]=0;o[n>>2]=o[m>>2];o[n+4>>2]=o[m+4>>2];xa(e,4629,n)|0;o[v>>2]=1;o[v+4>>2]=0;o[n>>2]=o[v>>2];o[n+4>>2]=o[v+4>>2];Aa(e,4637,n)|0;o[p>>2]=4;o[p+4>>2]=0;o[n>>2]=o[p>>2];o[n+4>>2]=o[p+4>>2];ba(e,4653,n)|0;o[d>>2]=5;o[d+4>>2]=0;o[n>>2]=o[d>>2];o[n+4>>2]=o[d+4>>2];ba(e,4669,n)|0;o[f>>2]=6;o[f+4>>2]=0;o[n>>2]=o[f>>2];o[n+4>>2]=o[f+4>>2];ba(e,4686,n)|0;o[c>>2]=7;o[c+4>>2]=0;o[n>>2]=o[c>>2];o[n+4>>2]=o[c+4>>2];ba(e,4701,n)|0;o[s>>2]=8;o[s+4>>2]=0;o[n>>2]=o[s>>2];o[n+4>>2]=o[s+4>>2];ba(e,4719,n)|0;o[l>>2]=9;o[l+4>>2]=0;o[n>>2]=o[l>>2];o[n+4>>2]=o[l+4>>2];ba(e,4736,n)|0;o[a>>2]=21;o[a+4>>2]=0;o[n>>2]=o[a>>2];o[n+4>>2]=o[a+4>>2];Oa(e,4754,n)|0;o[u>>2]=2;o[u+4>>2]=0;o[n>>2]=o[u>>2];o[n+4>>2]=o[u+4>>2];wa(e,4772,n)|0;o[i>>2]=3;o[i+4>>2]=0;o[n>>2]=o[i>>2];o[n+4>>2]=o[i+4>>2];wa(e,4790,n)|0;o[r>>2]=4;o[r+4>>2]=0;o[n>>2]=o[r>>2];o[n+4>>2]=o[r+4>>2];wa(e,4808,n)|0;h=t;return}function la(e,t){e=e|0;t=t|0;var n=0;n=Mm()|0;o[e>>2]=n;Rm(n,t);cw(o[e>>2]|0);return}function sa(e,t,n){e=e|0;t=t|0;n=n|0;gm(e,Ia(t)|0,n,0);return e|0}function ca(e,t,n){e=e|0;t=t|0;n=n|0;Xv(e,Ia(t)|0,n,0);return e|0}function fa(e,t,n){e=e|0;t=t|0;n=n|0;Nv(e,Ia(t)|0,n,0);return e|0}function da(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];hv(e,t,i);h=r;return e|0}function pa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Gh(e,t,i);h=r;return e|0}function ha(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Th(e,t,i);h=r;return e|0}function va(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];lh(e,t,i);h=r;return e|0}function ma(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Hp(e,t,i);h=r;return e|0}function ga(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Sp(e,t,i);h=r;return e|0}function ya(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];op(e,t,i);h=r;return e|0}function _a(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Cd(e,t,i);h=r;return e|0}function ba(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ud(e,t,i);h=r;return e|0}function wa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];zf(e,t,i);h=r;return e|0}function Ea(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Ef(e,t,i);h=r;return e|0}function Da(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Zc(e,t,i);h=r;return e|0}function Sa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Nc(e,t,i);h=r;return e|0}function Ca(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];hc(e,t,i);h=r;return e|0}function ka(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];qs(e,t,i);h=r;return e|0}function Ta(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ws(e,t,i);h=r;return e|0}function xa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ts(e,t,i);h=r;return e|0}function Aa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Ol(e,t,i);h=r;return e|0}function Oa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Pa(e,t,i);h=r;return e|0}function Pa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Na(e,n,i,1);h=r;return}function Ia(e){e=e|0;return e|0}function Na(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Ma()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Ra(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Fa(u,r)|0,r);h=i;return}function Ma(){var e=0,t=0;if(!(r[7616]|0)){Ya(9136);Fe(24,9136,g|0)|0;t=7616;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9136)|0)){e=9136;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Ya(9136)}return 9136}function Ra(e){e=e|0;return 0}function Fa(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Ma()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Wa(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Ha(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function La(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0;a=h;h=h+32|0;p=a+24|0;d=a+20|0;s=a+16|0;f=a+12|0;c=a+8|0;l=a+4|0;v=a;o[d>>2]=t;o[s>>2]=n;o[f>>2]=r;o[c>>2]=i;o[l>>2]=u;u=e+28|0;o[v>>2]=o[u>>2];o[p>>2]=o[v>>2];Ba(e+24|0,p,d,f,c,s,l)|0;o[u>>2]=o[o[u>>2]>>2];h=a;return}function Ba(e,t,n,r,i,u,a){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;a=a|0;e=ja(t)|0;t=$T(24)|0;Ua(t+4|0,o[n>>2]|0,o[r>>2]|0,o[i>>2]|0,o[u>>2]|0,o[a>>2]|0);o[t>>2]=o[e>>2];o[e>>2]=t;return t|0}function ja(e){e=e|0;return o[e>>2]|0}function Ua(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;o[e>>2]=t;o[e+4>>2]=n;o[e+8>>2]=r;o[e+12>>2]=i;o[e+16>>2]=u;return}function za(e,t){e=e|0;t=t|0;return t|e|0}function Wa(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Ha(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Va(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;qa(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Wa(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Ga(e,l);$a(l);h=c;return}}function Va(e){e=e|0;return 357913941}function qa(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Ga(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function $a(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Ya(e){e=e|0;Ja(e);return}function Ka(e){e=e|0;Qa(e+24|0);return}function Xa(e){e=e|0;return o[e>>2]|0}function Qa(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Ja(e){e=e|0;var t=0;t=Za()|0;nl(e,2,3,t,el()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Za(){return 9228}function el(){return 1140}function tl(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=rl(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=il(t,r)|0;h=n;return t|0}function nl(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;o[e>>2]=t;o[e+4>>2]=n;o[e+8>>2]=r;o[e+12>>2]=i;o[e+16>>2]=u;return}function rl(e){e=e|0;return(o[(Ma()|0)+24>>2]|0)+(e*12|0)|0}function il(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+48|0;r=i;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;vA[n&31](r,e);r=ol(r)|0;h=i;return r|0}function ol(e){e=e|0;var t=0,n=0,r=0,i=0;i=h;h=h+32|0;t=i+12|0;n=i;r=al(ul()|0)|0;if(!r)e=dl(e)|0;else{ll(t,r);sl(n,t);cl(e,n);e=fl(t)|0}h=i;return e|0}function ul(){var e=0;if(!(r[7632]|0)){Dl(9184);Fe(25,9184,g|0)|0;e=7632;o[e>>2]=1;o[e+4>>2]=0}return 9184}function al(e){e=e|0;return o[e+36>>2]|0}function ll(e,t){e=e|0;t=t|0;o[e>>2]=t;o[e+4>>2]=e;o[e+8>>2]=0;return}function sl(e,t){e=e|0;t=t|0;o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=0;return}function cl(e,t){e=e|0;t=t|0;gl(t,e,e+8|0,e+16|0,e+24|0,e+32|0,e+40|0)|0;return}function fl(e){e=e|0;return o[(o[e+4>>2]|0)+8>>2]|0}function dl(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0;s=h;h=h+16|0;n=s+4|0;r=s;i=UD(8)|0;u=i;a=$T(48)|0;l=a;t=l+48|0;do{o[l>>2]=o[e>>2];l=l+4|0;e=e+4|0}while((l|0)<(t|0));t=u+4|0;o[t>>2]=a;l=$T(8)|0;a=o[t>>2]|0;o[r>>2]=0;o[n>>2]=o[r>>2];pl(l,a,n);o[i>>2]=l;h=s;return u|0}function pl(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1092;o[n+12>>2]=t;o[e+4>>2]=n;return}function hl(e){e=e|0;zT(e);KT(e);return}function vl(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function ml(e){e=e|0;KT(e);return}function gl(e,t,n,r,i,u,a){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;a=a|0;u=yl(o[e>>2]|0,t,n,r,i,u,a)|0;a=e+4|0;o[(o[a>>2]|0)+8>>2]=u;return o[(o[a>>2]|0)+8>>2]|0}function yl(e,t,n,r,i,o,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;u=u|0;var a=0,l=0;a=h;h=h+16|0;l=a;Dk(l);e=Eu(e)|0;u=_l(e,+c[t>>3],+c[n>>3],+c[r>>3],+c[i>>3],+c[o>>3],+c[u>>3])|0;Ck(l);h=a;return u|0}function _l(e,t,n,r,i,o,u){e=e|0;t=+t;n=+n;r=+r;i=+i;o=+o;u=+u;var a=0;a=Cu(bl()|0)|0;t=+ku(t);n=+ku(n);r=+ku(r);i=+ku(i);o=+ku(o);return Te(0,a|0,e|0,+t,+n,+r,+i,+o,+ +ku(u))|0}function bl(){var e=0;if(!(r[7624]|0)){wl(9172);e=7624;o[e>>2]=1;o[e+4>>2]=0}return 9172}function wl(e){e=e|0;Lu(e,El()|0,6);return}function El(){return 1112}function Dl(e){e=e|0;Al(e);return}function Sl(e){e=e|0;Cl(e+24|0);kl(e+16|0);return}function Cl(e){e=e|0;xl(e);return}function kl(e){e=e|0;Tl(e);return}function Tl(e){e=e|0;var t=0,n=0;t=o[e>>2]|0;if(t|0)do{n=t;t=o[t>>2]|0;KT(n)}while((t|0)!=0);o[e>>2]=0;return}function xl(e){e=e|0;var t=0,n=0;t=o[e>>2]|0;if(t|0)do{n=t;t=o[t>>2]|0;KT(n)}while((t|0)!=0);o[e>>2]=0;return}function Al(e){e=e|0;var t=0;o[e+16>>2]=0;o[e+20>>2]=0;t=e+24|0;o[t>>2]=0;o[e+28>>2]=t;o[e+36>>2]=0;r[e+40>>0]=0;r[e+41>>0]=0;return}function Ol(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Pl(e,n,i,0);h=r;return}function Pl(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Il()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Nl(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ml(u,r)|0,r);h=i;return}function Il(){var e=0,t=0;if(!(r[7640]|0)){zl(9232);Fe(26,9232,g|0)|0;t=7640;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9232)|0)){e=9232;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));zl(9232)}return 9232}function Nl(e){e=e|0;return 0}function Ml(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Il()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Rl(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Fl(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Rl(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Fl(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Ll(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Bl(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Rl(u,r,n);o[s>>2]=(o[s>>2]|0)+12;jl(e,l);Ul(l);h=c;return}}function Ll(e){e=e|0;return 357913941}function Bl(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function jl(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Ul(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function zl(e){e=e|0;Vl(e);return}function Wl(e){e=e|0;Hl(e+24|0);return}function Hl(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Vl(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,ql()|0,3);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ql(){return 1144}function Gl(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+16|0;a=u+8|0;l=u;s=$l(e)|0;e=o[s+4>>2]|0;o[l>>2]=o[s>>2];o[l+4>>2]=e;o[a>>2]=o[l>>2];o[a+4>>2]=o[l+4>>2];Yl(t,a,n,r,i);h=u;return}function $l(e){e=e|0;return(o[(Il()|0)+24>>2]|0)+(e*12|0)|0}function Yl(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;var u=0,a=0,l=0,s=0,c=0;c=h;h=h+16|0;a=c+2|0;l=c+1|0;s=c;u=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)u=o[(o[e>>2]|0)+u>>2]|0;Kl(a,n);n=+Xl(a,n);Kl(l,r);r=+Xl(l,r);Ql(s,i);s=Jl(s,i)|0;gA[u&1](e,n,r,s);h=c;return}function Kl(e,t){e=e|0;t=+t;return}function Xl(e,t){e=e|0;t=+t;return+ +es(t)}function Ql(e,t){e=e|0;t=t|0;return}function Jl(e,t){e=e|0;t=t|0;return Zl(t)|0}function Zl(e){e=e|0;return e|0}function es(e){e=+e;return+e}function ts(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ns(e,n,i,1);h=r;return}function ns(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=rs()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=is(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,os(u,r)|0,r);h=i;return}function rs(){var e=0,t=0;if(!(r[7648]|0)){ds(9268);Fe(27,9268,g|0)|0;t=7648;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9268)|0)){e=9268;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));ds(9268)}return 9268}function is(e){e=e|0;return 0}function os(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=rs()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];us(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{as(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function us(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function as(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=ls(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;ss(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];us(u,r,n);o[s>>2]=(o[s>>2]|0)+12;cs(e,l);fs(l);h=c;return}}function ls(e){e=e|0;return 357913941}function ss(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function cs(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function fs(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function ds(e){e=e|0;vs(e);return}function ps(e){e=e|0;hs(e+24|0);return}function hs(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function vs(e){e=e|0;var t=0;t=Za()|0;nl(e,2,4,t,ms()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ms(){return 1160}function gs(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=ys(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=_s(t,r)|0;h=n;return t|0}function ys(e){e=e|0;return(o[(rs()|0)+24>>2]|0)+(e*12|0)|0}function _s(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return bs(mA[n&31](e)|0)|0}function bs(e){e=e|0;return e&1|0}function ws(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Es(e,n,i,0);h=r;return}function Es(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Ds()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Ss(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Cs(u,r)|0,r);h=i;return}function Ds(){var e=0,t=0;if(!(r[7656]|0)){Is(9304);Fe(28,9304,g|0)|0;t=7656;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9304)|0)){e=9304;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Is(9304)}return 9304}function Ss(e){e=e|0;return 0}function Cs(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Ds()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];ks(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Ts(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function ks(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Ts(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=xs(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;As(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];ks(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Os(e,l);Ps(l);h=c;return}}function xs(e){e=e|0;return 357913941}function As(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Os(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Ps(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Is(e){e=e|0;Rs(e);return}function Ns(e){e=e|0;Ms(e+24|0);return}function Ms(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Rs(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,Fs()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Fs(){return 1164}function Ls(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Bs(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];js(t,i,n);h=r;return}function Bs(e){e=e|0;return(o[(Ds()|0)+24>>2]|0)+(e*12|0)|0}function js(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Us(i,n);n=zs(i,n)|0;vA[r&31](e,n);Ws(i);h=u;return}function Us(e,t){e=e|0;t=t|0;Hs(e,t);return}function zs(e,t){e=e|0;t=t|0;return e|0}function Ws(e){e=e|0;Ji(e);return}function Hs(e,t){e=e|0;t=t|0;Vs(e,t);return}function Vs(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function qs(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Gs(e,n,i,0);h=r;return}function Gs(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=$s()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Ys(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ks(u,r)|0,r);h=i;return}function $s(){var e=0,t=0;if(!(r[7664]|0)){nc(9340);Fe(29,9340,g|0)|0;t=7664;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9340)|0)){e=9340;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));nc(9340)}return 9340}function Ys(e){e=e|0;return 0}function Ks(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=$s()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Xs(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Qs(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Xs(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Qs(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Js(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Zs(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Xs(u,r,n);o[s>>2]=(o[s>>2]|0)+12;ec(e,l);tc(l);h=c;return}}function Js(e){e=e|0;return 357913941}function Zs(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function ec(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function tc(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function nc(e){e=e|0;oc(e);return}function rc(e){e=e|0;ic(e+24|0);return}function ic(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function oc(e){e=e|0;var t=0;t=Za()|0;nl(e,2,4,t,uc()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function uc(){return 1180}function ac(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=lc(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=sc(t,i,n)|0;h=r;return n|0}function lc(e){e=e|0;return(o[($s()|0)+24>>2]|0)+(e*12|0)|0}function sc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;cc(i,n);i=fc(i,n)|0;i=dc(DA[r&15](e,i)|0)|0;h=u;return i|0}function cc(e,t){e=e|0;t=t|0;return}function fc(e,t){e=e|0;t=t|0;return pc(t)|0}function dc(e){e=e|0;return e|0}function pc(e){e=e|0;return e|0}function hc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];vc(e,n,i,0);h=r;return}function vc(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=mc()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=gc(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,yc(u,r)|0,r);h=i;return}function mc(){var e=0,t=0;if(!(r[7672]|0)){Cc(9376);Fe(30,9376,g|0)|0;t=7672;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9376)|0)){e=9376;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Cc(9376)}return 9376}function gc(e){e=e|0;return 0}function yc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=mc()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];_c(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{bc(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function _c(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function bc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=wc(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Ec(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];_c(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Dc(e,l);Sc(l);h=c;return}}function wc(e){e=e|0;return 357913941}function Ec(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Dc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Sc(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Cc(e){e=e|0;xc(e);return}function kc(e){e=e|0;Tc(e+24|0);return}function Tc(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function xc(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,Ac()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Ac(){return 1196}function Oc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Pc(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Ic(t,r)|0;h=n;return t|0}function Pc(e){e=e|0;return(o[(mc()|0)+24>>2]|0)+(e*12|0)|0}function Ic(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return dc(mA[n&31](e)|0)|0}function Nc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Mc(e,n,i,1);h=r;return}function Mc(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Rc()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Fc(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Lc(u,r)|0,r);h=i;return}function Rc(){var e=0,t=0;if(!(r[7680]|0)){Vc(9412);Fe(31,9412,g|0)|0;t=7680;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9412)|0)){e=9412;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Vc(9412)}return 9412}function Fc(e){e=e|0;return 0}function Lc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Rc()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Bc(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{jc(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Bc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function jc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Uc(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;zc(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Bc(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Wc(e,l);Hc(l);h=c;return}}function Uc(e){e=e|0;return 357913941}function zc(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Wc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Hc(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Vc(e){e=e|0;$c(e);return}function qc(e){e=e|0;Gc(e+24|0);return}function Gc(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function $c(e){e=e|0;var t=0;t=Za()|0;nl(e,2,6,t,Yc()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Yc(){return 1200}function Kc(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Xc(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Qc(t,r)|0;h=n;return t|0}function Xc(e){e=e|0;return(o[(Rc()|0)+24>>2]|0)+(e*12|0)|0}function Qc(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return Jc(mA[n&31](e)|0)|0}function Jc(e){e=e|0;return e|0}function Zc(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ef(e,n,i,0);h=r;return}function ef(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=tf()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=nf(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,rf(u,r)|0,r);h=i;return}function tf(){var e=0,t=0;if(!(r[7688]|0)){ff(9448);Fe(32,9448,g|0)|0;t=7688;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9448)|0)){e=9448;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));ff(9448)}return 9448}function nf(e){e=e|0;return 0}function rf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=tf()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];of(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{uf(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function of(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function uf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=af(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;lf(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];of(u,r,n);o[s>>2]=(o[s>>2]|0)+12;sf(e,l);cf(l);h=c;return}}function af(e){e=e|0;return 357913941}function lf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function sf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function cf(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function ff(e){e=e|0;hf(e);return}function df(e){e=e|0;pf(e+24|0);return}function pf(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function hf(e){e=e|0;var t=0;t=Za()|0;nl(e,2,6,t,vf()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function vf(){return 1204}function mf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=gf(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];yf(t,i,n);h=r;return}function gf(e){e=e|0;return(o[(tf()|0)+24>>2]|0)+(e*12|0)|0}function yf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;_f(i,n);i=bf(i,n)|0;vA[r&31](e,i);h=u;return}function _f(e,t){e=e|0;t=t|0;return}function bf(e,t){e=e|0;t=t|0;return wf(t)|0}function wf(e){e=e|0;return e|0}function Ef(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Df(e,n,i,0);h=r;return}function Df(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Sf()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Cf(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,kf(u,r)|0,r);h=i;return}function Sf(){var e=0,t=0;if(!(r[7696]|0)){Nf(9484);Fe(33,9484,g|0)|0;t=7696;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9484)|0)){e=9484;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Nf(9484)}return 9484}function Cf(e){e=e|0;return 0}function kf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Sf()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Tf(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{xf(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Tf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function xf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Af(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Of(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Tf(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Pf(e,l);If(l);h=c;return}}function Af(e){e=e|0;return 357913941}function Of(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Pf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function If(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Nf(e){e=e|0;Ff(e);return}function Mf(e){e=e|0;Rf(e+24|0);return}function Rf(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Ff(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,Lf()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Lf(){return 1212}function Bf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=jf(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];Uf(t,u,n,r);h=i;return}function jf(e){e=e|0;return(o[(Sf()|0)+24>>2]|0)+(e*12|0)|0}function Uf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;l=h;h=h+16|0;u=l+1|0;a=l;i=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)i=o[(o[e>>2]|0)+i>>2]|0;_f(u,n);u=bf(u,n)|0;cc(a,r);a=fc(a,r)|0;PA[i&15](e,u,a);h=l;return}function zf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Wf(e,n,i,1);h=r;return}function Wf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Hf()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Vf(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,qf(u,r)|0,r);h=i;return}function Hf(){var e=0,t=0;if(!(r[7704]|0)){Jf(9520);Fe(34,9520,g|0)|0;t=7704;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9520)|0)){e=9520;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Jf(9520)}return 9520}function Vf(e){e=e|0;return 0}function qf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Hf()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Gf(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{$f(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Gf(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function $f(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Yf(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Kf(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Gf(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Xf(e,l);Qf(l);h=c;return}}function Yf(e){e=e|0;return 357913941}function Kf(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Xf(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Qf(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Jf(e){e=e|0;td(e);return}function Zf(e){e=e|0;ed(e+24|0);return}function ed(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function td(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,nd()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function nd(){return 1224}function rd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0.0,i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=id(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];r=+od(t,u,n);h=i;return+r}function id(e){e=e|0;return(o[(Hf()|0)+24>>2]|0)+(e*12|0)|0}function od(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0.0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(i,n);i=Jl(i,n)|0;a=+Mu(+kA[r&7](e,i));h=u;return+a}function ud(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ad(e,n,i,1);h=r;return}function ad(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=ld()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=sd(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,cd(u,r)|0,r);h=i;return}function ld(){var e=0,t=0;if(!(r[7712]|0)){gd(9556);Fe(35,9556,g|0)|0;t=7712;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9556)|0)){e=9556;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));gd(9556)}return 9556}function sd(e){e=e|0;return 0}function cd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=ld()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];fd(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{dd(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function fd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function dd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=pd(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;hd(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];fd(u,r,n);o[s>>2]=(o[s>>2]|0)+12;vd(e,l);md(l);h=c;return}}function pd(e){e=e|0;return 357913941}function hd(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function vd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function md(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function gd(e){e=e|0;bd(e);return}function yd(e){e=e|0;_d(e+24|0);return}function _d(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function bd(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,wd()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function wd(){return 1232}function Ed(e,t){e=e|0;t=t|0;var n=0.0,r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Dd(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=+Sd(t,i);h=r;return+n}function Dd(e){e=e|0;return(o[(ld()|0)+24>>2]|0)+(e*12|0)|0}function Sd(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return+ +Mu(+wA[n&15](e))}function Cd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];kd(e,n,i,1);h=r;return}function kd(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Td()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=xd(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ad(u,r)|0,r);h=i;return}function Td(){var e=0,t=0;if(!(r[7720]|0)){Fd(9592);Fe(36,9592,g|0)|0;t=7720;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9592)|0)){e=9592;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Fd(9592)}return 9592}function xd(e){e=e|0;return 0}function Ad(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Td()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Od(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Pd(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Od(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Pd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Id(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Nd(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Od(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Md(e,l);Rd(l);h=c;return}}function Id(e){e=e|0;return 357913941}function Nd(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Md(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Rd(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Fd(e){e=e|0;jd(e);return}function Ld(e){e=e|0;Bd(e+24|0);return}function Bd(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function jd(e){e=e|0;var t=0;t=Za()|0;nl(e,2,7,t,Ud()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Ud(){return 1276}function zd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Wd(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Hd(t,r)|0;h=n;return t|0}function Wd(e){e=e|0;return(o[(Td()|0)+24>>2]|0)+(e*12|0)|0}function Hd(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+16|0;r=i;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;vA[n&31](r,e);r=Vd(r)|0;h=i;return r|0}function Vd(e){e=e|0;var t=0,n=0,r=0,i=0;i=h;h=h+32|0;t=i+12|0;n=i;r=al(qd()|0)|0;if(!r)e=$d(e)|0;else{ll(t,r);sl(n,t);Gd(e,n);e=fl(t)|0}h=i;return e|0}function qd(){var e=0;if(!(r[7736]|0)){ip(9640);Fe(25,9640,g|0)|0;e=7736;o[e>>2]=1;o[e+4>>2]=0}return 9640}function Gd(e,t){e=e|0;t=t|0;Jd(t,e,e+8|0)|0;return}function $d(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=h;h=h+16|0;i=n+4|0;a=n;r=UD(8)|0;t=r;l=$T(16)|0;o[l>>2]=o[e>>2];o[l+4>>2]=o[e+4>>2];o[l+8>>2]=o[e+8>>2];o[l+12>>2]=o[e+12>>2];u=t+4|0;o[u>>2]=l;e=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];Yd(e,u,i);o[r>>2]=e;h=n;return t|0}function Yd(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1244;o[n+12>>2]=t;o[e+4>>2]=n;return}function Kd(e){e=e|0;zT(e);KT(e);return}function Xd(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function Qd(e){e=e|0;KT(e);return}function Jd(e,t,n){e=e|0;t=t|0;n=n|0;t=Zd(o[e>>2]|0,t,n)|0;n=e+4|0;o[(o[n>>2]|0)+8>>2]=t;return o[(o[n>>2]|0)+8>>2]|0}function Zd(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0;r=h;h=h+16|0;i=r;Dk(i);e=Eu(e)|0;n=ep(e,o[t>>2]|0,+c[n>>3])|0;Ck(i);h=r;return n|0}function ep(e,t,n){e=e|0;t=t|0;n=+n;var r=0;r=Cu(tp()|0)|0;t=Tu(t)|0;return xe(0,r|0,e|0,t|0,+ +ku(n))|0}function tp(){var e=0;if(!(r[7728]|0)){np(9628);e=7728;o[e>>2]=1;o[e+4>>2]=0}return 9628}function np(e){e=e|0;Lu(e,rp()|0,2);return}function rp(){return 1264}function ip(e){e=e|0;Al(e);return}function op(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];up(e,n,i,1);h=r;return}function up(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=ap()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=lp(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,sp(u,r)|0,r);h=i;return}function ap(){var e=0,t=0;if(!(r[7744]|0)){mp(9684);Fe(37,9684,g|0)|0;t=7744;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9684)|0)){e=9684;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));mp(9684)}return 9684}function lp(e){e=e|0;return 0}function sp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=ap()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];cp(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{fp(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function cp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function fp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=dp(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;pp(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];cp(u,r,n);o[s>>2]=(o[s>>2]|0)+12;hp(e,l);vp(l);h=c;return}}function dp(e){e=e|0;return 357913941}function pp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function hp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function vp(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function mp(e){e=e|0;_p(e);return}function gp(e){e=e|0;yp(e+24|0);return}function yp(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function _p(e){e=e|0;var t=0;t=Za()|0;nl(e,2,5,t,bp()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function bp(){return 1280}function wp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Ep(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=Dp(t,i,n)|0;h=r;return n|0}function Ep(e){e=e|0;return(o[(ap()|0)+24>>2]|0)+(e*12|0)|0}function Dp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;a=h;h=h+32|0;i=a;u=a+16|0;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(u,n);u=Jl(u,n)|0;PA[r&15](i,e,u);u=Vd(i)|0;h=a;return u|0}function Sp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Cp(e,n,i,1);h=r;return}function Cp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=kp()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Tp(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,xp(u,r)|0,r);h=i;return}function kp(){var e=0,t=0;if(!(r[7752]|0)){Rp(9720);Fe(38,9720,g|0)|0;t=7752;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9720)|0)){e=9720;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Rp(9720)}return 9720}function Tp(e){e=e|0;return 0}function xp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=kp()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Ap(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Op(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Ap(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Op(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Pp(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Ip(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Ap(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Np(e,l);Mp(l);h=c;return}}function Pp(e){e=e|0;return 357913941}function Ip(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Np(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Mp(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Rp(e){e=e|0;Bp(e);return}function Fp(e){e=e|0;Lp(e+24|0);return}function Lp(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Bp(e){e=e|0;var t=0;t=Za()|0;nl(e,2,8,t,jp()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function jp(){return 1288}function Up(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=zp(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];t=Wp(t,r)|0;h=n;return t|0}function zp(e){e=e|0;return(o[(kp()|0)+24>>2]|0)+(e*12|0)|0}function Wp(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;return Nu(mA[n&31](e)|0)|0}function Hp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Vp(e,n,i,0);h=r;return}function Vp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=qp()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Gp(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,$p(u,r)|0,r);h=i;return}function qp(){var e=0,t=0;if(!(r[7760]|0)){eh(9756);Fe(39,9756,g|0)|0;t=7760;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9756)|0)){e=9756;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));eh(9756)}return 9756}function Gp(e){e=e|0;return 0}function $p(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=qp()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Yp(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Kp(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Yp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Kp(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Xp(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Qp(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Yp(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Jp(e,l);Zp(l);h=c;return}}function Xp(e){e=e|0;return 357913941}function Qp(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Jp(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Zp(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function eh(e){e=e|0;rh(e);return}function th(e){e=e|0;nh(e+24|0);return}function nh(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function rh(e){e=e|0;var t=0;t=Za()|0;nl(e,2,8,t,ih()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ih(){return 1292}function oh(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=uh(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];ah(t,i,n);h=r;return}function uh(e){e=e|0;return(o[(qp()|0)+24>>2]|0)+(e*12|0)|0}function ah(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Kl(i,n);n=+Xl(i,n);dA[r&31](e,n);h=u;return}function lh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];sh(e,n,i,0);h=r;return}function sh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=ch()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=fh(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,dh(u,r)|0,r);h=i;return}function ch(){var e=0,t=0;if(!(r[7768]|0)){_h(9792);Fe(40,9792,g|0)|0;t=7768;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9792)|0)){e=9792;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));_h(9792)}return 9792}function fh(e){e=e|0;return 0}function dh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=ch()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];ph(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{hh(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function ph(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function hh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=vh(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;mh(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];ph(u,r,n);o[s>>2]=(o[s>>2]|0)+12;gh(e,l);yh(l);h=c;return}}function vh(e){e=e|0;return 357913941}function mh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function gh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function yh(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function _h(e){e=e|0;Eh(e);return}function bh(e){e=e|0;wh(e+24|0);return}function wh(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Eh(e){e=e|0;var t=0;t=Za()|0;nl(e,2,1,t,Dh()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Dh(){return 1300}function Sh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=Ch(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];kh(t,u,n,r);h=i;return}function Ch(e){e=e|0;return(o[(ch()|0)+24>>2]|0)+(e*12|0)|0}function kh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;var i=0,u=0,a=0,l=0;l=h;h=h+16|0;u=l+1|0;a=l;i=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)i=o[(o[e>>2]|0)+i>>2]|0;Ql(u,n);u=Jl(u,n)|0;Kl(a,r);r=+Xl(a,r);NA[i&15](e,u,r);h=l;return}function Th(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];xh(e,n,i,0);h=r;return}function xh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Ah()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Oh(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Ph(u,r)|0,r);h=i;return}function Ah(){var e=0,t=0;if(!(r[7776]|0)){Bh(9828);Fe(41,9828,g|0)|0;t=7776;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9828)|0)){e=9828;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Bh(9828)}return 9828}function Oh(e){e=e|0;return 0}function Ph(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Ah()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Ih(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Nh(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Ih(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Nh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Mh(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Rh(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Ih(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Fh(e,l);Lh(l);h=c;return}}function Mh(e){e=e|0;return 357913941}function Rh(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Fh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Lh(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Bh(e){e=e|0;zh(e);return}function jh(e){e=e|0;Uh(e+24|0);return}function Uh(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function zh(e){e=e|0;var t=0;t=Za()|0;nl(e,2,7,t,Wh()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Wh(){return 1312}function Hh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Vh(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];qh(t,i,n);h=r;return}function Vh(e){e=e|0;return(o[(Ah()|0)+24>>2]|0)+(e*12|0)|0}function qh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(i,n);i=Jl(i,n)|0;vA[r&31](e,i);h=u;return}function Gh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];$h(e,n,i,0);h=r;return}function $h(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=Yh()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Kh(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Xh(u,r)|0,r);h=i;return}function Yh(){var e=0,t=0;if(!(r[7784]|0)){rv(9864);Fe(42,9864,g|0)|0;t=7784;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9864)|0)){e=9864;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));rv(9864)}return 9864}function Kh(e){e=e|0;return 0}function Xh(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=Yh()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Qh(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Jh(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Qh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Jh(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Zh(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;ev(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Qh(u,r,n);o[s>>2]=(o[s>>2]|0)+12;tv(e,l);nv(l);h=c;return}}function Zh(e){e=e|0;return 357913941}function ev(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function tv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function nv(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function rv(e){e=e|0;uv(e);return}function iv(e){e=e|0;ov(e+24|0);return}function ov(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function uv(e){e=e|0;var t=0;t=Za()|0;nl(e,2,8,t,av()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function av(){return 1320}function lv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=sv(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];cv(t,i,n);h=r;return}function sv(e){e=e|0;return(o[(Yh()|0)+24>>2]|0)+(e*12|0)|0}function cv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;fv(i,n);i=dv(i,n)|0;vA[r&31](e,i);h=u;return}function fv(e,t){e=e|0;t=t|0;return}function dv(e,t){e=e|0;t=t|0;return pv(t)|0}function pv(e){e=e|0;return e|0}function hv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];vv(e,n,i,0);h=r;return}function vv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=mv()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=gv(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,yv(u,r)|0,r);h=i;return}function mv(){var e=0,t=0;if(!(r[7792]|0)){Cv(9900);Fe(43,9900,g|0)|0;t=7792;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9900)|0)){e=9900;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Cv(9900)}return 9900}function gv(e){e=e|0;return 0}function yv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=mv()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];_v(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{bv(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function _v(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function bv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=wv(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Ev(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];_v(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Dv(e,l);Sv(l);h=c;return}}function wv(e){e=e|0;return 357913941}function Ev(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Dv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Sv(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Cv(e){e=e|0;xv(e);return}function kv(e){e=e|0;Tv(e+24|0);return}function Tv(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function xv(e){e=e|0;var t=0;t=Za()|0;nl(e,2,22,t,Av()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Av(){return 1344}function Ov(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0;n=h;h=h+16|0;r=n+8|0;i=n;u=Pv(e)|0;e=o[u+4>>2]|0;o[i>>2]=o[u>>2];o[i+4>>2]=e;o[r>>2]=o[i>>2];o[r+4>>2]=o[i+4>>2];Iv(t,r);h=n;return}function Pv(e){e=e|0;return(o[(mv()|0)+24>>2]|0)+(e*12|0)|0}function Iv(e,t){e=e|0;t=t|0;var n=0;n=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)n=o[(o[e>>2]|0)+n>>2]|0;hA[n&127](e);return}function Nv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=Mv()|0;e=Rv(n)|0;La(u,t,i,e,Fv(n,r)|0,r);return}function Mv(){var e=0,t=0;if(!(r[7800]|0)){Hv(9936);Fe(44,9936,g|0)|0;t=7800;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9936)|0)){e=9936;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Hv(9936)}return 9936}function Rv(e){e=e|0;return e|0}function Fv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=Mv()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){Lv(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Bv(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function Lv(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Bv(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=jv(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;Uv(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;Lv(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;zv(e,i);Wv(i);h=l;return}}function jv(e){e=e|0;return 536870911}function Uv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function zv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Wv(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function Hv(e){e=e|0;Gv(e);return}function Vv(e){e=e|0;qv(e+24|0);return}function qv(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Gv(e){e=e|0;var t=0;t=Za()|0;nl(e,1,23,t,vf()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function $v(e,t){e=e|0;t=t|0;Kv(o[(Yv(e)|0)>>2]|0,t);return}function Yv(e){e=e|0;return(o[(Mv()|0)+24>>2]|0)+(e<<3)|0}function Kv(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;_f(r,t);t=bf(r,t)|0;hA[e&127](t);h=n;return}function Xv(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=Qv()|0;e=Jv(n)|0;La(u,t,i,e,Zv(n,r)|0,r);return}function Qv(){var e=0,t=0;if(!(r[7808]|0)){um(9972);Fe(45,9972,g|0)|0;t=7808;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(9972)|0)){e=9972;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));um(9972)}return 9972}function Jv(e){e=e|0;return e|0}function Zv(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=Qv()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){em(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{tm(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function em(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function tm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=nm(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;rm(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;em(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;im(e,i);om(i);h=l;return}}function nm(e){e=e|0;return 536870911}function rm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function im(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function om(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function um(e){e=e|0;sm(e);return}function am(e){e=e|0;lm(e+24|0);return}function lm(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function sm(e){e=e|0;var t=0;t=Za()|0;nl(e,1,9,t,cm()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function cm(){return 1348}function fm(e,t){e=e|0;t=t|0;return pm(o[(dm(e)|0)>>2]|0,t)|0}function dm(e){e=e|0;return(o[(Qv()|0)+24>>2]|0)+(e<<3)|0}function pm(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;hm(r,t);t=vm(r,t)|0;t=dc(mA[e&31](t)|0)|0;h=n;return t|0}function hm(e,t){e=e|0;t=t|0;return}function vm(e,t){e=e|0;t=t|0;return mm(t)|0}function mm(e){e=e|0;return e|0}function gm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=ym()|0;e=_m(n)|0;La(u,t,i,e,bm(n,r)|0,r);return}function ym(){var e=0,t=0;if(!(r[7816]|0)){Tm(10008);Fe(46,10008,g|0)|0;t=7816;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10008)|0)){e=10008;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Tm(10008)}return 10008}function _m(e){e=e|0;return e|0}function bm(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=ym()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){wm(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Em(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function wm(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Em(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=Dm(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;Sm(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;wm(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;Cm(e,i);km(i);h=l;return}}function Dm(e){e=e|0;return 536870911}function Sm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function Cm(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function km(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function Tm(e){e=e|0;Om(e);return}function xm(e){e=e|0;Am(e+24|0);return}function Am(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Om(e){e=e|0;var t=0;t=Za()|0;nl(e,1,15,t,Ac()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Pm(e){e=e|0;return Nm(o[(Im(e)|0)>>2]|0)|0}function Im(e){e=e|0;return(o[(ym()|0)+24>>2]|0)+(e<<3)|0}function Nm(e){e=e|0;return dc(TA[e&7]()|0)|0}function Mm(){var e=0;if(!(r[7832]|0)){Vm(10052);Fe(25,10052,g|0)|0;e=7832;o[e>>2]=1;o[e+4>>2]=0}return 10052}function Rm(e,t){e=e|0;t=t|0;o[e>>2]=Fm()|0;o[e+4>>2]=Lm()|0;o[e+12>>2]=t;o[e+8>>2]=Bm()|0;o[e+32>>2]=2;return}function Fm(){return 11709}function Lm(){return 1188}function Bm(){return Wm()|0}function jm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){zm(n);KT(n)}}else if(t|0){Qi(t);KT(t)}return}function Um(e,t){e=e|0;t=t|0;return t&e|0}function zm(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function Wm(){var e=0;if(!(r[7824]|0)){o[2511]=Hm()|0;o[2512]=0;e=7824;o[e>>2]=1;o[e+4>>2]=0}return 10044}function Hm(){return 0}function Vm(e){e=e|0;Al(e);return}function qm(e){e=e|0;var t=0,n=0,r=0,i=0,u=0;t=h;h=h+32|0;n=t+24|0;u=t+16|0;i=t+8|0;r=t;Gm(e,4827);$m(e,4834,3)|0;Ym(e,3682,47)|0;o[u>>2]=9;o[u+4>>2]=0;o[n>>2]=o[u>>2];o[n+4>>2]=o[u+4>>2];Km(e,4841,n)|0;o[i>>2]=1;o[i+4>>2]=0;o[n>>2]=o[i>>2];o[n+4>>2]=o[i+4>>2];Xm(e,4871,n)|0;o[r>>2]=10;o[r+4>>2]=0;o[n>>2]=o[r>>2];o[n+4>>2]=o[r+4>>2];Qm(e,4891,n)|0;h=t;return}function Gm(e,t){e=e|0;t=t|0;var n=0;n=Vy()|0;o[e>>2]=n;qy(n,t);cw(o[e>>2]|0);return}function $m(e,t,n){e=e|0;t=t|0;n=n|0;Cy(e,Ia(t)|0,n,0);return e|0}function Ym(e,t,n){e=e|0;t=t|0;n=n|0;ay(e,Ia(t)|0,n,0);return e|0}function Km(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];jg(e,t,i);h=r;return e|0}function Xm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];gg(e,t,i);h=r;return e|0}function Qm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=o[n+4>>2]|0;o[u>>2]=o[n>>2];o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Jm(e,t,i);h=r;return e|0}function Jm(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Zm(e,n,i,1);h=r;return}function Zm(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=eg()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=tg(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,ng(u,r)|0,r);h=i;return}function eg(){var e=0,t=0;if(!(r[7840]|0)){sg(10100);Fe(48,10100,g|0)|0;t=7840;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10100)|0)){e=10100;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));sg(10100)}return 10100}function tg(e){e=e|0;return 0}function ng(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=eg()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];rg(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{ig(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function rg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function ig(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=og(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;ug(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];rg(u,r,n);o[s>>2]=(o[s>>2]|0)+12;ag(e,l);lg(l);h=c;return}}function og(e){e=e|0;return 357913941}function ug(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function ag(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function lg(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function sg(e){e=e|0;dg(e);return}function cg(e){e=e|0;fg(e+24|0);return}function fg(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function dg(e){e=e|0;var t=0;t=Za()|0;nl(e,2,6,t,pg()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function pg(){return 1364}function hg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=vg(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];n=mg(t,i,n)|0;h=r;return n|0}function vg(e){e=e|0;return(o[(eg()|0)+24>>2]|0)+(e*12|0)|0}function mg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Ql(i,n);i=Jl(i,n)|0;i=bs(DA[r&15](e,i)|0)|0;h=u;return i|0}function gg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];yg(e,n,i,0);h=r;return}function yg(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=_g()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=bg(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,wg(u,r)|0,r);h=i;return}function _g(){var e=0,t=0;if(!(r[7848]|0)){xg(10136);Fe(49,10136,g|0)|0;t=7848;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10136)|0)){e=10136;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));xg(10136)}return 10136}function bg(e){e=e|0;return 0}function wg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=_g()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Eg(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{Dg(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Eg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function Dg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Sg(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;Cg(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Eg(u,r,n);o[s>>2]=(o[s>>2]|0)+12;kg(e,l);Tg(l);h=c;return}}function Sg(e){e=e|0;return 357913941}function Cg(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function kg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Tg(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function xg(e){e=e|0;Pg(e);return}function Ag(e){e=e|0;Og(e+24|0);return}function Og(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Pg(e){e=e|0;var t=0;t=Za()|0;nl(e,2,9,t,Ig()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Ig(){return 1372}function Ng(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;i=r+8|0;u=r;a=Mg(e)|0;e=o[a+4>>2]|0;o[u>>2]=o[a>>2];o[u+4>>2]=e;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Rg(t,i,n);h=r;return}function Mg(e){e=e|0;return(o[(_g()|0)+24>>2]|0)+(e*12|0)|0}function Rg(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=ft;u=h;h=h+16|0;i=u;r=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)r=o[(o[e>>2]|0)+r>>2]|0;Fg(i,n);a=Y(Lg(i,n));fA[r&1](e,a);h=u;return}function Fg(e,t){e=e|0;t=+t;return}function Lg(e,t){e=e|0;t=+t;return Y(Bg(t))}function Bg(e){e=+e;return Y(e)}function jg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;i=r+8|0;u=r;l=o[n>>2]|0;a=o[n+4>>2]|0;n=Ia(t)|0;o[u>>2]=l;o[u+4>>2]=a;o[i>>2]=o[u>>2];o[i+4>>2]=o[u+4>>2];Ug(e,n,i,0);h=r;return}function Ug(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0;i=h;h=h+32|0;u=i+16|0;f=i+8|0;l=i;c=o[n>>2]|0;s=o[n+4>>2]|0;a=o[e>>2]|0;e=zg()|0;o[f>>2]=c;o[f+4>>2]=s;o[u>>2]=o[f>>2];o[u+4>>2]=o[f+4>>2];n=Wg(u)|0;o[l>>2]=c;o[l+4>>2]=s;o[u>>2]=o[l>>2];o[u+4>>2]=o[l+4>>2];La(a,t,e,n,Hg(u,r)|0,r);h=i;return}function zg(){var e=0,t=0;if(!(r[7856]|0)){Xg(10172);Fe(50,10172,g|0)|0;t=7856;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10172)|0)){e=10172;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Xg(10172)}return 10172}function Wg(e){e=e|0;return 0}function Hg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0;f=h;h=h+32|0;i=f+24|0;a=f+16|0;l=f;s=f+8|0;u=o[e>>2]|0;r=o[e+4>>2]|0;o[l>>2]=u;o[l+4>>2]=r;d=zg()|0;c=d+24|0;e=za(t,4)|0;o[s>>2]=e;t=d+28|0;n=o[t>>2]|0;if(n>>>0<(o[d+32>>2]|0)>>>0){o[a>>2]=u;o[a+4>>2]=r;o[i>>2]=o[a>>2];o[i+4>>2]=o[a+4>>2];Vg(n,i,e);e=(o[t>>2]|0)+12|0;o[t>>2]=e}else{qg(c,l,s);e=o[t>>2]|0}h=f;return((e-(o[c>>2]|0)|0)/12|0)+-1|0}function Vg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=o[t+4>>2]|0;o[e>>2]=o[t>>2];o[e+4>>2]=r;o[e+8>>2]=n;return}function qg(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0;c=h;h=h+48|0;r=c+32|0;a=c+24|0;l=c;s=e+4|0;i=(((o[s>>2]|0)-(o[e>>2]|0)|0)/12|0)+1|0;u=Gg(e)|0;if(u>>>0>>0)UT(e);else{f=o[e>>2]|0;p=((o[e+8>>2]|0)-f|0)/12|0;d=p<<1;$g(l,p>>>0>>1>>>0?d>>>0>>0?i:d:u,((o[s>>2]|0)-f|0)/12|0,e+8|0);s=l+8|0;u=o[s>>2]|0;i=o[t+4>>2]|0;n=o[n>>2]|0;o[a>>2]=o[t>>2];o[a+4>>2]=i;o[r>>2]=o[a>>2];o[r+4>>2]=o[a+4>>2];Vg(u,r,n);o[s>>2]=(o[s>>2]|0)+12;Yg(e,l);Kg(l);h=c;return}}function Gg(e){e=e|0;return 357913941}function $g(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>357913941)Ye();else{i=$T(t*12|0)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n*12|0)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t*12|0);return}function Yg(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(((i|0)/-12|0)*12|0)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function Kg(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~(((r+-12-t|0)>>>0)/12|0)*12|0);e=o[e>>2]|0;if(e|0)KT(e);return}function Xg(e){e=e|0;Zg(e);return}function Qg(e){e=e|0;Jg(e+24|0);return}function Jg(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~(((t+-12-r|0)>>>0)/12|0)*12|0);KT(n)}return}function Zg(e){e=e|0;var t=0;t=Za()|0;nl(e,2,3,t,ey()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ey(){return 1380}function ty(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+8|0;a=i;l=ny(e)|0;e=o[l+4>>2]|0;o[a>>2]=o[l>>2];o[a+4>>2]=e;o[u>>2]=o[a>>2];o[u+4>>2]=o[a+4>>2];ry(t,u,n,r);h=i;return}function ny(e){e=e|0;return(o[(zg()|0)+24>>2]|0)+(e*12|0)|0}function ry(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;l=h;h=h+16|0;u=l+1|0;a=l;i=o[t>>2]|0;t=o[t+4>>2]|0;e=e+(t>>1)|0;if(t&1)i=o[(o[e>>2]|0)+i>>2]|0;Ql(u,n);u=Jl(u,n)|0;iy(a,r);a=oy(a,r)|0;PA[i&15](e,u,a);h=l;return}function iy(e,t){e=e|0;t=t|0;return}function oy(e,t){e=e|0;t=t|0;return uy(t)|0}function uy(e){e=e|0;return(e|0)!=0|0}function ay(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=ly()|0;e=sy(n)|0;La(u,t,i,e,cy(n,r)|0,r);return}function ly(){var e=0,t=0;if(!(r[7864]|0)){gy(10208);Fe(51,10208,g|0)|0;t=7864;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10208)|0)){e=10208;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));gy(10208)}return 10208}function sy(e){e=e|0;return e|0}function cy(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=ly()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){fy(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{dy(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function fy(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function dy(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=py(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;hy(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;fy(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;vy(e,i);my(i);h=l;return}}function py(e){e=e|0;return 536870911}function hy(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function vy(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function my(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function gy(e){e=e|0;by(e);return}function yy(e){e=e|0;_y(e+24|0);return}function _y(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function by(e){e=e|0;var t=0;t=Za()|0;nl(e,1,24,t,wy()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function wy(){return 1392}function Ey(e,t){e=e|0;t=t|0;Sy(o[(Dy(e)|0)>>2]|0,t);return}function Dy(e){e=e|0;return(o[(ly()|0)+24>>2]|0)+(e<<3)|0}function Sy(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;hm(r,t);t=vm(r,t)|0;hA[e&127](t);h=n;return}function Cy(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=ky()|0;e=Ty(n)|0;La(u,t,i,e,xy(n,r)|0,r);return}function ky(){var e=0,t=0;if(!(r[7872]|0)){Ry(10244);Fe(52,10244,g|0)|0;t=7872;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10244)|0)){e=10244;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));Ry(10244)}return 10244}function Ty(e){e=e|0;return e|0}function xy(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=ky()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){Ay(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Oy(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function Ay(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Oy(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=Py(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;Iy(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;Ay(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;Ny(e,i);My(i);h=l;return}}function Py(e){e=e|0;return 536870911}function Iy(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function Ny(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function My(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function Ry(e){e=e|0;By(e);return}function Fy(e){e=e|0;Ly(e+24|0);return}function Ly(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function By(e){e=e|0;var t=0;t=Za()|0;nl(e,1,16,t,jy()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function jy(){return 1400}function Uy(e){e=e|0;return Wy(o[(zy(e)|0)>>2]|0)|0}function zy(e){e=e|0;return(o[(ky()|0)+24>>2]|0)+(e<<3)|0}function Wy(e){e=e|0;return Hy(TA[e&7]()|0)|0}function Hy(e){e=e|0;return e|0}function Vy(){var e=0;if(!(r[7880]|0)){Qy(10280);Fe(25,10280,g|0)|0;e=7880;o[e>>2]=1;o[e+4>>2]=0}return 10280}function qy(e,t){e=e|0;t=t|0;o[e>>2]=Gy()|0;o[e+4>>2]=$y()|0;o[e+12>>2]=t;o[e+8>>2]=Yy()|0;o[e+32>>2]=4;return}function Gy(){return 11711}function $y(){return 1356}function Yy(){return Wm()|0}function Ky(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){Xy(n);KT(n)}}else if(t|0){Hi(t);KT(t)}return}function Xy(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function Qy(e){e=e|0;Al(e);return}function Jy(e){e=e|0;Zy(e,4920);e_(e)|0;t_(e)|0;return}function Zy(e,t){e=e|0;t=t|0;var n=0;n=qd()|0;o[e>>2]=n;T_(n,t);cw(o[e>>2]|0);return}function e_(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,v_()|0);return e|0}function t_(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,n_()|0);return e|0}function n_(){var e=0;if(!(r[7888]|0)){i_(10328);Fe(53,10328,g|0)|0;e=7888;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10328)|0))i_(10328);return 10328}function r_(e,t){e=e|0;t=t|0;La(e,0,t,0,0,0);return}function i_(e){e=e|0;a_(e);s_(e,10);return}function o_(e){e=e|0;u_(e+24|0);return}function u_(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function a_(e){e=e|0;var t=0;t=Za()|0;nl(e,5,1,t,d_()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function l_(e,t,n){e=e|0;t=t|0;n=+n;c_(e,t,n);return}function s_(e,t){e=e|0;t=t|0;o[e+20>>2]=t;return}function c_(e,t,n){e=e|0;t=t|0;n=+n;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+16|0;u=r+8|0;l=r+13|0;i=r;a=r+12|0;Ql(l,t);o[u>>2]=Jl(l,t)|0;Kl(a,n);c[i>>3]=+Xl(a,n);f_(e,u,i);h=r;return}function f_(e,t,n){e=e|0;t=t|0;n=n|0;Vo(e+8|0,o[t>>2]|0,+c[n>>3]);r[e+24>>0]=1;return}function d_(){return 1404}function p_(e,t){e=e|0;t=+t;return h_(e,t)|0}function h_(e,t){e=e|0;t=+t;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;r=h;h=h+16|0;u=r+4|0;a=r+8|0;l=r;i=UD(8)|0;n=i;s=$T(16)|0;Ql(u,e);e=Jl(u,e)|0;Kl(a,t);Vo(s,e,+Xl(a,t));a=n+4|0;o[a>>2]=s;e=$T(8)|0;a=o[a>>2]|0;o[l>>2]=0;o[u>>2]=o[l>>2];Yd(e,a,u);o[i>>2]=e;h=r;return n|0}function v_(){var e=0;if(!(r[7896]|0)){m_(10364);Fe(54,10364,g|0)|0;e=7896;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10364)|0))m_(10364);return 10364}function m_(e){e=e|0;__(e);s_(e,55);return}function g_(e){e=e|0;y_(e+24|0);return}function y_(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function __(e){e=e|0;var t=0;t=Za()|0;nl(e,5,4,t,S_()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function b_(e){e=e|0;w_(e);return}function w_(e){e=e|0;E_(e);return}function E_(e){e=e|0;D_(e+8|0);r[e+24>>0]=1;return}function D_(e){e=e|0;o[e>>2]=0;c[e+8>>3]=0.0;return}function S_(){return 1424}function C_(){return k_()|0}function k_(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0;t=h;h=h+16|0;i=t+4|0;a=t;n=UD(8)|0;e=n;r=$T(16)|0;D_(r);u=e+4|0;o[u>>2]=r;r=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];Yd(r,u,i);o[n>>2]=r;h=t;return e|0}function T_(e,t){e=e|0;t=t|0;o[e>>2]=x_()|0;o[e+4>>2]=A_()|0;o[e+12>>2]=t;o[e+8>>2]=O_()|0;o[e+32>>2]=5;return}function x_(){return 11710}function A_(){return 1416}function O_(){return N_()|0}function P_(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){I_(n);KT(n)}}else if(t|0)KT(t);return}function I_(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function N_(){var e=0;if(!(r[7904]|0)){o[2600]=M_()|0;o[2601]=0;e=7904;o[e>>2]=1;o[e+4>>2]=0}return 10400}function M_(){return o[357]|0}function R_(e){e=e|0;F_(e,4926);L_(e)|0;return}function F_(e,t){e=e|0;t=t|0;var n=0;n=ul()|0;o[e>>2]=n;K_(n,t);cw(o[e>>2]|0);return}function L_(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,B_()|0);return e|0}function B_(){var e=0;if(!(r[7912]|0)){j_(10412);Fe(56,10412,g|0)|0;e=7912;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10412)|0))j_(10412);return 10412}function j_(e){e=e|0;W_(e);s_(e,57);return}function U_(e){e=e|0;z_(e+24|0);return}function z_(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function W_(e){e=e|0;var t=0;t=Za()|0;nl(e,5,5,t,G_()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function H_(e){e=e|0;V_(e);return}function V_(e){e=e|0;q_(e);return}function q_(e){e=e|0;var t=0,n=0;t=e+8|0;n=t+48|0;do{o[t>>2]=0;t=t+4|0}while((t|0)<(n|0));r[e+56>>0]=1;return}function G_(){return 1432}function $_(){return Y_()|0}function Y_(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0,l=0;a=h;h=h+16|0;e=a+4|0;t=a;n=UD(8)|0;r=n;i=$T(48)|0;u=i;l=u+48|0;do{o[u>>2]=0;u=u+4|0}while((u|0)<(l|0));u=r+4|0;o[u>>2]=i;l=$T(8)|0;u=o[u>>2]|0;o[t>>2]=0;o[e>>2]=o[t>>2];pl(l,u,e);o[n>>2]=l;h=a;return r|0}function K_(e,t){e=e|0;t=t|0;o[e>>2]=X_()|0;o[e+4>>2]=Q_()|0;o[e+12>>2]=t;o[e+8>>2]=J_()|0;o[e+32>>2]=6;return}function X_(){return 11704}function Q_(){return 1436}function J_(){return N_()|0}function Z_(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){eb(n);KT(n)}}else if(t|0)KT(t);return}function eb(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function tb(e){e=e|0;nb(e,4933);rb(e)|0;ib(e)|0;return}function nb(e,t){e=e|0;t=t|0;var n=0;n=Nb()|0;o[e>>2]=n;Mb(n,t);cw(o[e>>2]|0);return}function rb(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,wb()|0);return e|0}function ib(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,ob()|0);return e|0}function ob(){var e=0;if(!(r[7920]|0)){ub(10452);Fe(58,10452,g|0)|0;e=7920;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10452)|0))ub(10452);return 10452}function ub(e){e=e|0;sb(e);s_(e,1);return}function ab(e){e=e|0;lb(e+24|0);return}function lb(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function sb(e){e=e|0;var t=0;t=Za()|0;nl(e,5,1,t,hb()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function cb(e,t,n){e=e|0;t=+t;n=+n;fb(e,t,n);return}function fb(e,t,n){e=e|0;t=+t;n=+n;var r=0,i=0,o=0,u=0,a=0;r=h;h=h+32|0;o=r+8|0;a=r+17|0;i=r;u=r+16|0;Kl(a,t);c[o>>3]=+Xl(a,t);Kl(u,n);c[i>>3]=+Xl(u,n);db(e,o,i);h=r;return}function db(e,t,n){e=e|0;t=t|0;n=n|0;pb(e+8|0,+c[t>>3],+c[n>>3]);r[e+24>>0]=1;return}function pb(e,t,n){e=e|0;t=+t;n=+n;c[e>>3]=t;c[e+8>>3]=n;return}function hb(){return 1472}function vb(e,t){e=+e;t=+t;return mb(e,t)|0}function mb(e,t){e=+e;t=+t;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;r=h;h=h+16|0;a=r+4|0;l=r+8|0;s=r;i=UD(8)|0;n=i;u=$T(16)|0;Kl(a,e);e=+Xl(a,e);Kl(l,t);pb(u,e,+Xl(l,t));l=n+4|0;o[l>>2]=u;u=$T(8)|0;l=o[l>>2]|0;o[s>>2]=0;o[a>>2]=o[s>>2];gb(u,l,a);o[i>>2]=u;h=r;return n|0}function gb(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1452;o[n+12>>2]=t;o[e+4>>2]=n;return}function yb(e){e=e|0;zT(e);KT(e);return}function _b(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function bb(e){e=e|0;KT(e);return}function wb(){var e=0;if(!(r[7928]|0)){Eb(10488);Fe(59,10488,g|0)|0;e=7928;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10488)|0))Eb(10488);return 10488}function Eb(e){e=e|0;Cb(e);s_(e,60);return}function Db(e){e=e|0;Sb(e+24|0);return}function Sb(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Cb(e){e=e|0;var t=0;t=Za()|0;nl(e,5,6,t,Ob()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function kb(e){e=e|0;Tb(e);return}function Tb(e){e=e|0;xb(e);return}function xb(e){e=e|0;Ab(e+8|0);r[e+24>>0]=1;return}function Ab(e){e=e|0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;o[e+12>>2]=0;return}function Ob(){return 1492}function Pb(){return Ib()|0}function Ib(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0;t=h;h=h+16|0;i=t+4|0;a=t;n=UD(8)|0;e=n;r=$T(16)|0;Ab(r);u=e+4|0;o[u>>2]=r;r=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];gb(r,u,i);o[n>>2]=r;h=t;return e|0}function Nb(){var e=0;if(!(r[7936]|0)){Ub(10524);Fe(25,10524,g|0)|0;e=7936;o[e>>2]=1;o[e+4>>2]=0}return 10524}function Mb(e,t){e=e|0;t=t|0;o[e>>2]=Rb()|0;o[e+4>>2]=Fb()|0;o[e+12>>2]=t;o[e+8>>2]=Lb()|0;o[e+32>>2]=7;return}function Rb(){return 11700}function Fb(){return 1484}function Lb(){return N_()|0}function Bb(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){jb(n);KT(n)}}else if(t|0)KT(t);return}function jb(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function Ub(e){e=e|0;Al(e);return}function zb(e,t,n){e=e|0;t=t|0;n=n|0;e=Ia(t)|0;t=Wb(n)|0;n=Hb(n,0)|0;xw(e,t,n,Vb()|0,0);return}function Wb(e){e=e|0;return e|0}function Hb(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=Vb()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){Jb(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{Zb(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function Vb(){var e=0,t=0;if(!(r[7944]|0)){qb(10568);Fe(61,10568,g|0)|0;t=7944;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10568)|0)){e=10568;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));qb(10568)}return 10568}function qb(e){e=e|0;Yb(e);return}function Gb(e){e=e|0;$b(e+24|0);return}function $b(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function Yb(e){e=e|0;var t=0;t=Za()|0;nl(e,1,17,t,Yc()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function Kb(e){e=e|0;return Qb(o[(Xb(e)|0)>>2]|0)|0}function Xb(e){e=e|0;return(o[(Vb()|0)+24>>2]|0)+(e<<3)|0}function Qb(e){e=e|0;return Jc(TA[e&7]()|0)|0}function Jb(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function Zb(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=ew(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;tw(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;Jb(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;nw(e,i);rw(i);h=l;return}}function ew(e){e=e|0;return 536870911}function tw(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function nw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function rw(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function iw(){ow();return}function ow(){uw(10604);return}function uw(e){e=e|0;aw(e,4955);return}function aw(e,t){e=e|0;t=t|0;var n=0;n=lw()|0;o[e>>2]=n;sw(n,t);cw(o[e>>2]|0);return}function lw(){var e=0;if(!(r[7952]|0)){bw(10612);Fe(25,10612,g|0)|0;e=7952;o[e>>2]=1;o[e+4>>2]=0}return 10612}function sw(e,t){e=e|0;t=t|0;o[e>>2]=vw()|0;o[e+4>>2]=mw()|0;o[e+12>>2]=t;o[e+8>>2]=gw()|0;o[e+32>>2]=8;return}function cw(e){e=e|0;var t=0,n=0;t=h;h=h+16|0;n=t;fw()|0;o[n>>2]=e;dw(10608,n);h=t;return}function fw(){if(!(r[11714]|0)){o[2652]=0;Fe(62,10608,g|0)|0;r[11714]=1}return 10608}function dw(e,t){e=e|0;t=t|0;var n=0;n=$T(8)|0;o[n+4>>2]=o[t>>2];o[n>>2]=o[e>>2];o[e>>2]=n;return}function pw(e){e=e|0;hw(e);return}function hw(e){e=e|0;var t=0,n=0;t=o[e>>2]|0;if(t|0)do{n=t;t=o[t>>2]|0;KT(n)}while((t|0)!=0);o[e>>2]=0;return}function vw(){return 11715}function mw(){return 1496}function gw(){return Wm()|0}function yw(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){_w(n);KT(n)}}else if(t|0)KT(t);return}function _w(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function bw(e){e=e|0;Al(e);return}function ww(e,t){e=e|0;t=t|0;var n=0,r=0;fw()|0;n=o[2652]|0;e:do{if(n|0){while(1){r=o[n+4>>2]|0;if(r|0?(rT(Ew(r)|0,e)|0)==0:0)break;n=o[n>>2]|0;if(!n)break e}Dw(r,t)}}while(0);return}function Ew(e){e=e|0;return o[e+12>>2]|0}function Dw(e,t){e=e|0;t=t|0;var n=0;e=e+36|0;n=o[e>>2]|0;if(n|0){Ji(n);KT(n)}n=$T(4)|0;yu(n,t);o[e>>2]=n;return}function Sw(){if(!(r[11716]|0)){o[2664]=0;Fe(63,10656,g|0)|0;r[11716]=1}return 10656}function Cw(){var e=0;if(!(r[11717]|0)){kw();o[2665]=1504;r[11717]=1;e=1504}else e=o[2665]|0;return e|0}function kw(){if(!(r[11740]|0)){r[11718]=za(za(8,0)|0,0)|0;r[11719]=za(za(0,0)|0,0)|0;r[11720]=za(za(0,16)|0,0)|0;r[11721]=za(za(8,0)|0,0)|0;r[11722]=za(za(0,0)|0,0)|0;r[11723]=za(za(8,0)|0,0)|0;r[11724]=za(za(0,0)|0,0)|0;r[11725]=za(za(8,0)|0,0)|0;r[11726]=za(za(0,0)|0,0)|0;r[11727]=za(za(8,0)|0,0)|0;r[11728]=za(za(0,0)|0,0)|0;r[11729]=za(za(0,0)|0,32)|0;r[11730]=za(za(0,0)|0,32)|0;r[11740]=1}return}function Tw(){return 1572}function xw(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0,f=0;u=h;h=h+32|0;f=u+16|0;c=u+12|0;s=u+8|0;l=u+4|0;a=u;o[f>>2]=e;o[c>>2]=t;o[s>>2]=n;o[l>>2]=r;o[a>>2]=i;Sw()|0;Aw(10656,f,c,s,l,a);h=u;return}function Aw(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0;a=$T(24)|0;Ua(a+4|0,o[t>>2]|0,o[n>>2]|0,o[r>>2]|0,o[i>>2]|0,o[u>>2]|0);o[a>>2]=o[e>>2];o[e>>2]=a;return}function Ow(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0;b=h;h=h+32|0;m=b+20|0;g=b+8|0;y=b+4|0;_=b;t=o[t>>2]|0;if(t|0){v=m+4|0;s=m+8|0;c=g+4|0;f=g+8|0;d=g+8|0;p=m+8|0;do{a=t+4|0;l=Pw(a)|0;if(l|0){i=Iw(l)|0;o[m>>2]=0;o[v>>2]=0;o[s>>2]=0;r=(Nw(l)|0)+1|0;Mw(m,r);if(r|0)while(1){r=r+-1|0;gk(g,o[i>>2]|0);u=o[v>>2]|0;if(u>>>0<(o[p>>2]|0)>>>0){o[u>>2]=o[g>>2];o[v>>2]=(o[v>>2]|0)+4}else Rw(m,g);if(!r)break;else i=i+4|0}r=Fw(l)|0;o[g>>2]=0;o[c>>2]=0;o[f>>2]=0;e:do{if(o[r>>2]|0){i=0;u=0;while(1){if((i|0)==(u|0))Lw(g,r);else{o[i>>2]=o[r>>2];o[c>>2]=(o[c>>2]|0)+4}r=r+4|0;if(!(o[r>>2]|0))break e;i=o[c>>2]|0;u=o[d>>2]|0}}}while(0);o[y>>2]=Bw(a)|0;o[_>>2]=Xa(l)|0;jw(n,e,y,_,m,g);Uw(g);zw(m)}t=o[t>>2]|0}while((t|0)!=0)}h=b;return}function Pw(e){e=e|0;return o[e+12>>2]|0}function Iw(e){e=e|0;return o[e+12>>2]|0}function Nw(e){e=e|0;return o[e+16>>2]|0}function Mw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+32|0;n=i;r=o[e>>2]|0;if((o[e+8>>2]|0)-r>>2>>>0>>0){bE(n,t,(o[e+4>>2]|0)-r>>2,e+8|0);wE(e,n);EE(n)}h=i;return}function Rw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0;a=h;h=h+32|0;n=a;r=e+4|0;i=((o[r>>2]|0)-(o[e>>2]|0)>>2)+1|0;u=mE(e)|0;if(u>>>0>>0)UT(e);else{l=o[e>>2]|0;c=(o[e+8>>2]|0)-l|0;s=c>>1;bE(n,c>>2>>>0>>1>>>0?s>>>0>>0?i:s:u,(o[r>>2]|0)-l>>2,e+8|0);u=n+8|0;o[o[u>>2]>>2]=o[t>>2];o[u>>2]=(o[u>>2]|0)+4;wE(e,n);EE(n);h=a;return}}function Fw(e){e=e|0;return o[e+8>>2]|0}function Lw(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0;a=h;h=h+32|0;n=a;r=e+4|0;i=((o[r>>2]|0)-(o[e>>2]|0)>>2)+1|0;u=pE(e)|0;if(u>>>0>>0)UT(e);else{l=o[e>>2]|0;c=(o[e+8>>2]|0)-l|0;s=c>>1;gE(n,c>>2>>>0>>1>>>0?s>>>0>>0?i:s:u,(o[r>>2]|0)-l>>2,e+8|0);u=n+8|0;o[o[u>>2]>>2]=o[t>>2];o[u>>2]=(o[u>>2]|0)+4;yE(e,n);_E(n);h=a;return}}function Bw(e){e=e|0;return o[e>>2]|0}function jw(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;Ww(e,t,n,r,i,o);return}function Uw(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-4-r|0)>>>2)<<2);KT(n)}return}function zw(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-4-r|0)>>>2)<<2);KT(n)}return}function Ww(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0,d=0;a=h;h=h+48|0;f=a+40|0;l=a+32|0;d=a+24|0;s=a+12|0;c=a;Dk(l);e=Eu(e)|0;o[d>>2]=o[t>>2];n=o[n>>2]|0;r=o[r>>2]|0;Hw(s,i);Vw(c,u);o[f>>2]=o[d>>2];qw(e,f,n,r,s,c);Uw(c);zw(s);Ck(l);h=a;return}function Hw(e,t){e=e|0;t=t|0;var n=0,r=0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;n=t+4|0;r=(o[n>>2]|0)-(o[t>>2]|0)>>2;if(r|0){hE(e,r);vE(e,o[t>>2]|0,o[n>>2]|0,r)}return}function Vw(e,t){e=e|0;t=t|0;var n=0,r=0;o[e>>2]=0;o[e+4>>2]=0;o[e+8>>2]=0;n=t+4|0;r=(o[n>>2]|0)-(o[t>>2]|0)>>2;if(r|0){fE(e,r);dE(e,o[t>>2]|0,o[n>>2]|0,r)}return}function qw(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0,d=0;a=h;h=h+32|0;f=a+28|0;d=a+24|0;l=a+12|0;s=a;c=Cu(Gw()|0)|0;o[d>>2]=o[t>>2];o[f>>2]=o[d>>2];t=$w(f)|0;n=Yw(n)|0;r=Kw(r)|0;o[l>>2]=o[i>>2];f=i+4|0;o[l+4>>2]=o[f>>2];d=i+8|0;o[l+8>>2]=o[d>>2];o[d>>2]=0;o[f>>2]=0;o[i>>2]=0;i=Xw(l)|0;o[s>>2]=o[u>>2];f=u+4|0;o[s+4>>2]=o[f>>2];d=u+8|0;o[s+8>>2]=o[d>>2];o[d>>2]=0;o[f>>2]=0;o[u>>2]=0;Oe(0,c|0,e|0,t|0,n|0,r|0,i|0,Qw(s)|0)|0;Uw(s);zw(l);h=a;return}function Gw(){var e=0;if(!(r[7968]|0)){sE(10708);e=7968;o[e>>2]=1;o[e+4>>2]=0}return 10708}function $w(e){e=e|0;return tE(e)|0}function Yw(e){e=e|0;return Zw(e)|0}function Kw(e){e=e|0;return Jc(e)|0}function Xw(e){e=e|0;return eE(e)|0}function Qw(e){e=e|0;return Jw(e)|0}function Jw(e){e=e|0;var t=0,n=0,r=0;r=(o[e+4>>2]|0)-(o[e>>2]|0)|0;n=r>>2;r=UD(r+4|0)|0;o[r>>2]=n;if(n|0){t=0;do{o[r+4+(t<<2)>>2]=Zw(o[(o[e>>2]|0)+(t<<2)>>2]|0)|0;t=t+1|0}while((t|0)!=(n|0))}return r|0}function Zw(e){e=e|0;return e|0}function eE(e){e=e|0;var t=0,n=0,r=0;r=(o[e+4>>2]|0)-(o[e>>2]|0)|0;n=r>>2;r=UD(r+4|0)|0;o[r>>2]=n;if(n|0){t=0;do{o[r+4+(t<<2)>>2]=tE((o[e>>2]|0)+(t<<2)|0)|0;t=t+1|0}while((t|0)!=(n|0))}return r|0}function tE(e){e=e|0;var t=0,n=0,r=0,i=0;i=h;h=h+32|0;t=i+12|0;n=i;r=al(nE()|0)|0;if(!r)e=rE(e)|0;else{ll(t,r);sl(n,t);bk(e,n);e=fl(t)|0}h=i;return e|0}function nE(){var e=0;if(!(r[7960]|0)){lE(10664);Fe(25,10664,g|0)|0;e=7960;o[e>>2]=1;o[e+4>>2]=0}return 10664}function rE(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=h;h=h+16|0;i=n+4|0;a=n;r=UD(8)|0;t=r;l=$T(4)|0;o[l>>2]=o[e>>2];u=t+4|0;o[u>>2]=l;e=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];iE(e,u,i);o[r>>2]=e;h=n;return t|0}function iE(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1656;o[n+12>>2]=t;o[e+4>>2]=n;return}function oE(e){e=e|0;zT(e);KT(e);return}function uE(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function aE(e){e=e|0;KT(e);return}function lE(e){e=e|0;Al(e);return}function sE(e){e=e|0;Lu(e,cE()|0,5);return}function cE(){return 1676}function fE(e,t){e=e|0;t=t|0;var n=0;if((pE(e)|0)>>>0>>0)UT(e);if(t>>>0>1073741823)Ye();else{n=$T(t<<2)|0;o[e+4>>2]=n;o[e>>2]=n;o[e+8>>2]=n+(t<<2);return}}function dE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=e+4|0;e=n-t|0;if((e|0)>0){ix(o[r>>2]|0,t|0,e|0)|0;o[r>>2]=(o[r>>2]|0)+(e>>>2<<2)}return}function pE(e){e=e|0;return 1073741823}function hE(e,t){e=e|0;t=t|0;var n=0;if((mE(e)|0)>>>0>>0)UT(e);if(t>>>0>1073741823)Ye();else{n=$T(t<<2)|0;o[e+4>>2]=n;o[e>>2]=n;o[e+8>>2]=n+(t<<2);return}}function vE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=e+4|0;e=n-t|0;if((e|0)>0){ix(o[r>>2]|0,t|0,e|0)|0;o[r>>2]=(o[r>>2]|0)+(e>>>2<<2)}return}function mE(e){e=e|0;return 1073741823}function gE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>1073741823)Ye();else{i=$T(t<<2)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<2)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<2);return}function yE(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>2)<<2)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function _E(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-4-t|0)>>>2)<<2);e=o[e>>2]|0;if(e|0)KT(e);return}function bE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>1073741823)Ye();else{i=$T(t<<2)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<2)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<2);return}function wE(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>2)<<2)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function EE(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-4-t|0)>>>2)<<2);e=o[e>>2]|0;if(e|0)KT(e);return}function DE(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0;g=h;h=h+32|0;f=g+20|0;d=g+12|0;c=g+16|0;p=g+4|0;v=g;m=g+8|0;l=Cw()|0;u=o[l>>2]|0;a=o[u>>2]|0;if(a|0){s=o[l+8>>2]|0;l=o[l+4>>2]|0;while(1){gk(f,a);SE(e,f,l,s);u=u+4|0;a=o[u>>2]|0;if(!a)break;else{s=s+1|0;l=l+1|0}}}u=Tw()|0;a=o[u>>2]|0;if(a|0)do{gk(f,a);o[d>>2]=o[u+4>>2];CE(t,f,d);u=u+8|0;a=o[u>>2]|0}while((a|0)!=0);u=o[(fw()|0)>>2]|0;if(u|0)do{t=o[u+4>>2]|0;gk(f,o[(kE(t)|0)>>2]|0);o[d>>2]=Ew(t)|0;TE(n,f,d);u=o[u>>2]|0}while((u|0)!=0);gk(c,0);u=Sw()|0;o[f>>2]=o[c>>2];Ow(f,u,i);u=o[(fw()|0)>>2]|0;if(u|0){e=f+4|0;t=f+8|0;n=f+8|0;do{s=o[u+4>>2]|0;gk(d,o[(kE(s)|0)>>2]|0);AE(p,xE(s)|0);a=o[p>>2]|0;if(a|0){o[f>>2]=0;o[e>>2]=0;o[t>>2]=0;do{gk(v,o[(kE(o[a+4>>2]|0)|0)>>2]|0);l=o[e>>2]|0;if(l>>>0<(o[n>>2]|0)>>>0){o[l>>2]=o[v>>2];o[e>>2]=(o[e>>2]|0)+4}else Rw(f,v);a=o[a>>2]|0}while((a|0)!=0);OE(r,d,f);zw(f)}o[m>>2]=o[d>>2];c=PE(s)|0;o[f>>2]=o[m>>2];Ow(f,c,i);kl(p);u=o[u>>2]|0}while((u|0)!=0)}h=g;return}function SE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;qE(e,t,n,r);return}function CE(e,t,n){e=e|0;t=t|0;n=n|0;VE(e,t,n);return}function kE(e){e=e|0;return e|0}function TE(e,t,n){e=e|0;t=t|0;n=n|0;jE(e,t,n);return}function xE(e){e=e|0;return e+16|0}function AE(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;u=h;h=h+16|0;i=u+8|0;n=u;o[e>>2]=0;r=o[t>>2]|0;o[i>>2]=r;o[n>>2]=e;n=LE(n)|0;if(r|0){r=$T(12)|0;a=(BE(i)|0)+4|0;e=o[a+4>>2]|0;t=r+4|0;o[t>>2]=o[a>>2];o[t+4>>2]=e;t=o[o[i>>2]>>2]|0;o[i>>2]=t;if(!t)e=r;else{t=r;while(1){e=$T(12)|0;s=(BE(i)|0)+4|0;l=o[s+4>>2]|0;a=e+4|0;o[a>>2]=o[s>>2];o[a+4>>2]=l;o[t>>2]=e;a=o[o[i>>2]>>2]|0;o[i>>2]=a;if(!a)break;else t=e}}o[e>>2]=o[n>>2];o[n>>2]=r}h=u;return}function OE(e,t,n){e=e|0;t=t|0;n=n|0;IE(e,t,n);return}function PE(e){e=e|0;return e+24|0}function IE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+32|0;a=r+24|0;i=r+16|0;l=r+12|0;u=r;Dk(i);e=Eu(e)|0;o[l>>2]=o[t>>2];Hw(u,n);o[a>>2]=o[l>>2];NE(e,a,u);zw(u);Ck(i);h=r;return}function NE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0;r=h;h=h+32|0;a=r+16|0;l=r+12|0;i=r;u=Cu(ME()|0)|0;o[l>>2]=o[t>>2];o[a>>2]=o[l>>2];t=$w(a)|0;o[i>>2]=o[n>>2];a=n+4|0;o[i+4>>2]=o[a>>2];l=n+8|0;o[i+8>>2]=o[l>>2];o[l>>2]=0;o[a>>2]=0;o[n>>2]=0;ke(0,u|0,e|0,t|0,Xw(i)|0)|0;zw(i);h=r;return}function ME(){var e=0;if(!(r[7976]|0)){RE(10720);e=7976;o[e>>2]=1;o[e+4>>2]=0}return 10720}function RE(e){e=e|0;Lu(e,FE()|0,2);return}function FE(){return 1732}function LE(e){e=e|0;return o[e>>2]|0}function BE(e){e=e|0;return o[e>>2]|0}function jE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+32|0;u=r+16|0;i=r+8|0;a=r;Dk(i);e=Eu(e)|0;o[a>>2]=o[t>>2];n=o[n>>2]|0;o[u>>2]=o[a>>2];UE(e,u,n);Ck(i);h=r;return}function UE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+16|0;u=r+4|0;a=r;i=Cu(zE()|0)|0;o[a>>2]=o[t>>2];o[u>>2]=o[a>>2];t=$w(u)|0;ke(0,i|0,e|0,t|0,Yw(n)|0)|0;h=r;return}function zE(){var e=0;if(!(r[7984]|0)){WE(10732);e=7984;o[e>>2]=1;o[e+4>>2]=0}return 10732}function WE(e){e=e|0;Lu(e,HE()|0,2);return}function HE(){return 1744}function VE(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0;r=h;h=h+32|0;u=r+16|0;i=r+8|0;a=r;Dk(i);e=Eu(e)|0;o[a>>2]=o[t>>2];n=o[n>>2]|0;o[u>>2]=o[a>>2];UE(e,u,n);Ck(i);h=r;return}function qE(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+32|0;l=u+16|0;a=u+8|0;s=u;Dk(a);e=Eu(e)|0;o[s>>2]=o[t>>2];n=r[n>>0]|0;i=r[i>>0]|0;o[l>>2]=o[s>>2];GE(e,l,n,i);Ck(a);h=u;return}function GE(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;a=i+4|0;l=i;u=Cu($E()|0)|0;o[l>>2]=o[t>>2];o[a>>2]=o[l>>2];t=$w(a)|0;n=YE(n)|0;nt(0,u|0,e|0,t|0,n|0,YE(r)|0)|0;h=i;return}function $E(){var e=0;if(!(r[7992]|0)){XE(10744);e=7992;o[e>>2]=1;o[e+4>>2]=0}return 10744}function YE(e){e=e|0;return KE(e)|0}function KE(e){e=e|0;return e&255|0}function XE(e){e=e|0;Lu(e,QE()|0,3);return}function QE(){return 1756}function JE(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0;v=h;h=h+32|0;s=v+8|0;c=v+4|0;f=v+20|0;d=v;Vs(e,0);i=_k(t)|0;o[s>>2]=0;p=s+4|0;o[p>>2]=0;o[s+8>>2]=0;switch(i<<24>>24){case 0:{r[f>>0]=0;ZE(c,n,f);eD(e,c)|0;Zi(c);break}case 8:{p=yk(t)|0;r[f>>0]=8;gk(d,o[p+4>>2]|0);tD(c,n,f,d,p+8|0);eD(e,c)|0;Zi(c);break}case 9:{a=yk(t)|0;t=o[a+4>>2]|0;if(t|0){l=s+8|0;u=a+12|0;while(1){t=t+-1|0;gk(c,o[u>>2]|0);i=o[p>>2]|0;if(i>>>0<(o[l>>2]|0)>>>0){o[i>>2]=o[c>>2];o[p>>2]=(o[p>>2]|0)+4}else Rw(s,c);if(!t)break;else u=u+4|0}}r[f>>0]=9;gk(d,o[a+8>>2]|0);nD(c,n,f,d,s);eD(e,c)|0;Zi(c);break}default:{p=yk(t)|0;r[f>>0]=i;gk(d,o[p+4>>2]|0);rD(c,n,f,d);eD(e,c)|0;Zi(c)}}zw(s);h=v;return}function ZE(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,o=0;i=h;h=h+16|0;o=i;Dk(o);t=Eu(t)|0;gD(e,t,r[n>>0]|0);Ck(o);h=i;return}function eD(e,t){e=e|0;t=t|0;var n=0;n=o[e>>2]|0;if(n|0)rt(n|0);o[e>>2]=o[t>>2];o[t>>2]=0;return e|0}function tD(e,t,n,i,u){e=e|0;t=t|0;n=n|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0;a=h;h=h+32|0;s=a+16|0;l=a+8|0;c=a;Dk(l);t=Eu(t)|0;n=r[n>>0]|0;o[c>>2]=o[i>>2];u=o[u>>2]|0;o[s>>2]=o[c>>2];pD(e,t,n,s,u);Ck(l);h=a;return}function nD(e,t,n,i,u){e=e|0;t=t|0;n=n|0;i=i|0;u=u|0;var a=0,l=0,s=0,c=0,f=0;a=h;h=h+32|0;c=a+24|0;l=a+16|0;f=a+12|0;s=a;Dk(l);t=Eu(t)|0;n=r[n>>0]|0;o[f>>2]=o[i>>2];Hw(s,u);o[c>>2]=o[f>>2];sD(e,t,n,c,s);zw(s);Ck(l);h=a;return}function rD(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+32|0;l=u+16|0;a=u+8|0;s=u;Dk(a);t=Eu(t)|0;n=r[n>>0]|0;o[s>>2]=o[i>>2];o[l>>2]=o[s>>2];iD(e,t,n,l);Ck(a);h=u;return}function iD(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0,a=0,l=0;i=h;h=h+16|0;u=i+4|0;l=i;a=Cu(oD()|0)|0;n=YE(n)|0;o[l>>2]=o[r>>2];o[u>>2]=o[l>>2];uD(e,ke(0,a|0,t|0,n|0,$w(u)|0)|0);h=i;return}function oD(){var e=0;if(!(r[8e3]|0)){aD(10756);e=8e3;o[e>>2]=1;o[e+4>>2]=0}return 10756}function uD(e,t){e=e|0;t=t|0;Vs(e,t);return}function aD(e){e=e|0;Lu(e,lD()|0,2);return}function lD(){return 1772}function sD(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0;u=h;h=h+32|0;s=u+16|0;c=u+12|0;a=u;l=Cu(cD()|0)|0;n=YE(n)|0;o[c>>2]=o[r>>2];o[s>>2]=o[c>>2];r=$w(s)|0;o[a>>2]=o[i>>2];s=i+4|0;o[a+4>>2]=o[s>>2];c=i+8|0;o[a+8>>2]=o[c>>2];o[c>>2]=0;o[s>>2]=0;o[i>>2]=0;uD(e,nt(0,l|0,t|0,n|0,r|0,Xw(a)|0)|0);zw(a);h=u;return}function cD(){var e=0;if(!(r[8008]|0)){fD(10768);e=8008;o[e>>2]=1;o[e+4>>2]=0}return 10768}function fD(e){e=e|0;Lu(e,dD()|0,3);return}function dD(){return 1784}function pD(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0;u=h;h=h+16|0;l=u+4|0;s=u;a=Cu(hD()|0)|0;n=YE(n)|0;o[s>>2]=o[r>>2];o[l>>2]=o[s>>2];r=$w(l)|0;uD(e,nt(0,a|0,t|0,n|0,r|0,Kw(i)|0)|0);h=u;return}function hD(){var e=0;if(!(r[8016]|0)){vD(10780);e=8016;o[e>>2]=1;o[e+4>>2]=0}return 10780}function vD(e){e=e|0;Lu(e,mD()|0,3);return}function mD(){return 1800}function gD(e,t,n){e=e|0;t=t|0;n=n|0;var r=0;r=Cu(yD()|0)|0;uD(e,it(0,r|0,t|0,YE(n)|0)|0);return}function yD(){var e=0;if(!(r[8024]|0)){_D(10792);e=8024;o[e>>2]=1;o[e+4>>2]=0}return 10792}function _D(e){e=e|0;Lu(e,bD()|0,1);return}function bD(){return 1816}function wD(){ED();DD();SD();return}function ED(){o[2702]=YT(65536)|0;return}function DD(){$D(10856);return}function SD(){CD(10816);return}function CD(e){e=e|0;kD(e,5044);TD(e)|0;return}function kD(e,t){e=e|0;t=t|0;var n=0;n=nE()|0;o[e>>2]=n;zD(n,t);cw(o[e>>2]|0);return}function TD(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,xD()|0);return e|0}function xD(){var e=0;if(!(r[8032]|0)){AD(10820);Fe(64,10820,g|0)|0;e=8032;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(10820)|0))AD(10820);return 10820}function AD(e){e=e|0;ID(e);s_(e,25);return}function OD(e){e=e|0;PD(e+24|0);return}function PD(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function ID(e){e=e|0;var t=0;t=Za()|0;nl(e,5,18,t,LD()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ND(e,t){e=e|0;t=t|0;MD(e,t);return}function MD(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;n=h;h=h+16|0;r=n;i=n+4|0;cc(i,t);o[r>>2]=fc(i,t)|0;RD(e,r);h=n;return}function RD(e,t){e=e|0;t=t|0;FD(e+4|0,o[t>>2]|0);r[e+8>>0]=1;return}function FD(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function LD(){return 1824}function BD(e){e=e|0;return jD(e)|0}function jD(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0;n=h;h=h+16|0;i=n+4|0;a=n;r=UD(8)|0;t=r;l=$T(4)|0;cc(i,e);FD(l,fc(i,e)|0);u=t+4|0;o[u>>2]=l;e=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];iE(e,u,i);o[r>>2]=e;h=n;return t|0}function UD(e){e=e|0;var t=0,n=0;e=e+7&-8;if(e>>>0<=32768?(t=o[2701]|0,e>>>0<=(65536-t|0)>>>0):0){n=(o[2702]|0)+t|0;o[2701]=t+e;e=n}else{e=YT(e+8|0)|0;o[e>>2]=o[2703];o[2703]=e;e=e+8|0}return e|0}function zD(e,t){e=e|0;t=t|0;o[e>>2]=WD()|0;o[e+4>>2]=HD()|0;o[e+12>>2]=t;o[e+8>>2]=VD()|0;o[e+32>>2]=9;return}function WD(){return 11744}function HD(){return 1832}function VD(){return N_()|0}function qD(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){GD(n);KT(n)}}else if(t|0)KT(t);return}function GD(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function $D(e){e=e|0;YD(e,5052);KD(e)|0;XD(e,5058,26)|0;QD(e,5069,1)|0;JD(e,5077,10)|0;ZD(e,5087,19)|0;tS(e,5094,27)|0;return}function YD(e,t){e=e|0;t=t|0;var n=0;n=sk()|0;o[e>>2]=n;ck(n,t);cw(o[e>>2]|0);return}function KD(e){e=e|0;var t=0;t=o[e>>2]|0;r_(t,YC()|0);return e|0}function XD(e,t,n){e=e|0;t=t|0;n=n|0;TC(e,Ia(t)|0,n,0);return e|0}function QD(e,t,n){e=e|0;t=t|0;n=n|0;sC(e,Ia(t)|0,n,0);return e|0}function JD(e,t,n){e=e|0;t=t|0;n=n|0;BS(e,Ia(t)|0,n,0);return e|0}function ZD(e,t,n){e=e|0;t=t|0;n=n|0;bS(e,Ia(t)|0,n,0);return e|0}function eS(e,t){e=e|0;t=t|0;var n=0,r=0;e:while(1){n=o[2703]|0;while(1){if((n|0)==(t|0))break e;r=o[n>>2]|0;o[2703]=r;if(!n)n=r;else break}KT(n)}o[2701]=e;return}function tS(e,t,n){e=e|0;t=t|0;n=n|0;nS(e,Ia(t)|0,n,0);return e|0}function nS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=rS()|0;e=iS(n)|0;La(u,t,i,e,oS(n,r)|0,r);return}function rS(){var e=0,t=0;if(!(r[8040]|0)){dS(10860);Fe(65,10860,g|0)|0;t=8040;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10860)|0)){e=10860;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));dS(10860)}return 10860}function iS(e){e=e|0;return e|0}function oS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=rS()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){uS(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{aS(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function uS(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function aS(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=lS(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;sS(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;uS(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;cS(e,i);fS(i);h=l;return}}function lS(e){e=e|0;return 536870911}function sS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function cS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function fS(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function dS(e){e=e|0;vS(e);return}function pS(e){e=e|0;hS(e+24|0);return}function hS(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function vS(e){e=e|0;var t=0;t=Za()|0;nl(e,1,11,t,mS()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function mS(){return 1840}function gS(e,t,n){e=e|0;t=t|0;n=n|0;_S(o[(yS(e)|0)>>2]|0,t,n);return}function yS(e){e=e|0;return(o[(rS()|0)+24>>2]|0)+(e<<3)|0}function _S(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,o=0;r=h;h=h+16|0;o=r+1|0;i=r;cc(o,t);t=fc(o,t)|0;cc(i,n);n=fc(i,n)|0;vA[e&31](t,n);h=r;return}function bS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=wS()|0;e=ES(n)|0;La(u,t,i,e,DS(n,r)|0,r);return}function wS(){var e=0,t=0;if(!(r[8048]|0)){OS(10896);Fe(66,10896,g|0)|0;t=8048;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10896)|0)){e=10896;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));OS(10896)}return 10896}function ES(e){e=e|0;return e|0}function DS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=wS()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){SS(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{CS(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function SS(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function CS(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=kS(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;TS(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;SS(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;xS(e,i);AS(i);h=l;return}}function kS(e){e=e|0;return 536870911}function TS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function xS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function AS(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function OS(e){e=e|0;NS(e);return}function PS(e){e=e|0;IS(e+24|0);return}function IS(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function NS(e){e=e|0;var t=0;t=Za()|0;nl(e,1,11,t,MS()|0,1);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function MS(){return 1852}function RS(e,t){e=e|0;t=t|0;return LS(o[(FS(e)|0)>>2]|0,t)|0}function FS(e){e=e|0;return(o[(wS()|0)+24>>2]|0)+(e<<3)|0}function LS(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;cc(r,t);t=fc(r,t)|0;t=Jc(mA[e&31](t)|0)|0;h=n;return t|0}function BS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=jS()|0;e=US(n)|0;La(u,t,i,e,zS(n,r)|0,r);return}function jS(){var e=0,t=0;if(!(r[8056]|0)){YS(10932);Fe(67,10932,g|0)|0;t=8056;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10932)|0)){e=10932;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));YS(10932)}return 10932}function US(e){e=e|0;return e|0}function zS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=jS()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){WS(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{HS(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function WS(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function HS(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=VS(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;qS(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;WS(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;GS(e,i);$S(i);h=l;return}}function VS(e){e=e|0;return 536870911}function qS(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function GS(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function $S(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function YS(e){e=e|0;QS(e);return}function KS(e){e=e|0;XS(e+24|0);return}function XS(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function QS(e){e=e|0;var t=0;t=Za()|0;nl(e,1,7,t,JS()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function JS(){return 1860}function ZS(e,t,n){e=e|0;t=t|0;n=n|0;return tC(o[(eC(e)|0)>>2]|0,t,n)|0}function eC(e){e=e|0;return(o[(jS()|0)+24>>2]|0)+(e<<3)|0}function tC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0;r=h;h=h+32|0;a=r+12|0;u=r+8|0;l=r;s=r+16|0;i=r+4|0;nC(s,t);rC(l,s,t);Us(i,n);n=zs(i,n)|0;o[a>>2]=o[l>>2];PA[e&15](u,a,n);n=iC(u)|0;Zi(u);Ws(i);h=r;return n|0}function nC(e,t){e=e|0;t=t|0;return}function rC(e,t,n){e=e|0;t=t|0;n=n|0;oC(e,n);return}function iC(e){e=e|0;return Eu(e)|0}function oC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0;i=h;h=h+16|0;n=i;r=t;if(!(r&1))o[e>>2]=o[t>>2];else{uC(n,0);Be(r|0,n|0)|0;aC(e,n);lC(n)}h=i;return}function uC(e,t){e=e|0;t=t|0;Iu(e,t);o[e+4>>2]=0;r[e+8>>0]=0;return}function aC(e,t){e=e|0;t=t|0;o[e>>2]=o[t+4>>2];return}function lC(e){e=e|0;r[e+8>>0]=0;return}function sC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=cC()|0;e=fC(n)|0;La(u,t,i,e,dC(n,r)|0,r);return}function cC(){var e=0,t=0;if(!(r[8064]|0)){_C(10968);Fe(68,10968,g|0)|0;t=8064;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(10968)|0)){e=10968;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));_C(10968)}return 10968}function fC(e){e=e|0;return e|0}function dC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=cC()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){pC(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{hC(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function pC(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function hC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=vC(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;mC(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;pC(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;gC(e,i);yC(i);h=l;return}}function vC(e){e=e|0;return 536870911}function mC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function gC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function yC(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function _C(e){e=e|0;EC(e);return}function bC(e){e=e|0;wC(e+24|0);return}function wC(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function EC(e){e=e|0;var t=0;t=Za()|0;nl(e,1,1,t,DC()|0,5);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function DC(){return 1872}function SC(e,t,n,r,i,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;u=u|0;kC(o[(CC(e)|0)>>2]|0,t,n,r,i,u);return}function CC(e){e=e|0;return(o[(cC()|0)+24>>2]|0)+(e<<3)|0}function kC(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;var u=0,a=0,l=0,s=0,c=0,f=0;u=h;h=h+32|0;a=u+16|0;l=u+12|0;s=u+8|0;c=u+4|0;f=u;Us(a,t);t=zs(a,t)|0;Us(l,n);n=zs(l,n)|0;Us(s,r);r=zs(s,r)|0;Us(c,i);i=zs(c,i)|0;Us(f,o);o=zs(f,o)|0;cA[e&1](t,n,r,i,o);Ws(f);Ws(c);Ws(s);Ws(l);Ws(a);h=u;return}function TC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=o[e>>2]|0;i=xC()|0;e=AC(n)|0;La(u,t,i,e,OC(n,r)|0,r);return}function xC(){var e=0,t=0;if(!(r[8072]|0)){LC(11004);Fe(69,11004,g|0)|0;t=8072;o[t>>2]=1;o[t+4>>2]=0}if(!(Xa(11004)|0)){e=11004;t=e+36|0;do{o[e>>2]=0;e=e+4|0}while((e|0)<(t|0));LC(11004)}return 11004}function AC(e){e=e|0;return e|0}function OC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0,l=0,s=0;l=h;h=h+16|0;i=l;u=l+4|0;o[i>>2]=e;s=xC()|0;a=s+24|0;t=za(t,4)|0;o[u>>2]=t;n=s+28|0;r=o[n>>2]|0;if(r>>>0<(o[s+32>>2]|0)>>>0){PC(r,e,t);t=(o[n>>2]|0)+8|0;o[n>>2]=t}else{IC(a,i,u);t=o[n>>2]|0}h=l;return(t-(o[a>>2]|0)>>3)+-1|0}function PC(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;o[e+4>>2]=n;return}function IC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0;l=h;h=h+32|0;i=l;u=e+4|0;a=((o[u>>2]|0)-(o[e>>2]|0)>>3)+1|0;r=NC(e)|0;if(r>>>0>>0)UT(e);else{s=o[e>>2]|0;f=(o[e+8>>2]|0)-s|0;c=f>>2;MC(i,f>>3>>>0>>1>>>0?c>>>0>>0?a:c:r,(o[u>>2]|0)-s>>3,e+8|0);a=i+8|0;PC(o[a>>2]|0,o[t>>2]|0,o[n>>2]|0);o[a>>2]=(o[a>>2]|0)+8;RC(e,i);FC(i);h=l;return}}function NC(e){e=e|0;return 536870911}function MC(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0;o[e+12>>2]=0;o[e+16>>2]=r;do{if(t){if(t>>>0>536870911)Ye();else{i=$T(t<<3)|0;break}}else i=0}while(0);o[e>>2]=i;r=i+(n<<3)|0;o[e+8>>2]=r;o[e+4>>2]=r;o[e+12>>2]=i+(t<<3);return}function RC(e,t){e=e|0;t=t|0;var n=0,r=0,i=0,u=0,a=0;r=o[e>>2]|0;a=e+4|0;u=t+4|0;i=(o[a>>2]|0)-r|0;n=(o[u>>2]|0)+(0-(i>>3)<<3)|0;o[u>>2]=n;if((i|0)>0){ix(n|0,r|0,i|0)|0;r=u;n=o[u>>2]|0}else r=u;u=o[e>>2]|0;o[e>>2]=n;o[r>>2]=u;u=t+8|0;i=o[a>>2]|0;o[a>>2]=o[u>>2];o[u>>2]=i;u=e+8|0;a=t+12|0;e=o[u>>2]|0;o[u>>2]=o[a>>2];o[a>>2]=e;o[t>>2]=o[r>>2];return}function FC(e){e=e|0;var t=0,n=0,r=0;t=o[e+4>>2]|0;n=e+8|0;r=o[n>>2]|0;if((r|0)!=(t|0))o[n>>2]=r+(~((r+-8-t|0)>>>3)<<3);e=o[e>>2]|0;if(e|0)KT(e);return}function LC(e){e=e|0;UC(e);return}function BC(e){e=e|0;jC(e+24|0);return}function jC(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function UC(e){e=e|0;var t=0;t=Za()|0;nl(e,1,12,t,zC()|0,2);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function zC(){return 1896}function WC(e,t,n){e=e|0;t=t|0;n=n|0;VC(o[(HC(e)|0)>>2]|0,t,n);return}function HC(e){e=e|0;return(o[(xC()|0)+24>>2]|0)+(e<<3)|0}function VC(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,o=0;r=h;h=h+16|0;o=r+4|0;i=r;qC(o,t);t=GC(o,t)|0;Us(i,n);n=zs(i,n)|0;vA[e&31](t,n);Ws(i);h=r;return}function qC(e,t){e=e|0;t=t|0;return}function GC(e,t){e=e|0;t=t|0;return $C(t)|0}function $C(e){e=e|0;return e|0}function YC(){var e=0;if(!(r[8080]|0)){KC(11040);Fe(70,11040,g|0)|0;e=8080;o[e>>2]=1;o[e+4>>2]=0}if(!(Xa(11040)|0))KC(11040);return 11040}function KC(e){e=e|0;JC(e);s_(e,71);return}function XC(e){e=e|0;QC(e+24|0);return}function QC(e){e=e|0;var t=0,n=0,r=0;n=o[e>>2]|0;r=n;if(n|0){e=e+4|0;t=o[e>>2]|0;if((t|0)!=(n|0))o[e>>2]=t+(~((t+-8-r|0)>>>3)<<3);KT(n)}return}function JC(e){e=e|0;var t=0;t=Za()|0;nl(e,5,7,t,nk()|0,0);o[e+24>>2]=0;o[e+28>>2]=0;o[e+32>>2]=0;return}function ZC(e){e=e|0;ek(e);return}function ek(e){e=e|0;tk(e);return}function tk(e){e=e|0;r[e+8>>0]=1;return}function nk(){return 1936}function rk(){return ik()|0}function ik(){var e=0,t=0,n=0,r=0,i=0,u=0,a=0;t=h;h=h+16|0;i=t+4|0;a=t;n=UD(8)|0;e=n;u=e+4|0;o[u>>2]=$T(1)|0;r=$T(8)|0;u=o[u>>2]|0;o[a>>2]=0;o[i>>2]=o[a>>2];ok(r,u,i);o[n>>2]=r;h=t;return e|0}function ok(e,t,n){e=e|0;t=t|0;n=n|0;o[e>>2]=t;n=$T(16)|0;o[n+4>>2]=0;o[n+8>>2]=0;o[n>>2]=1916;o[n+12>>2]=t;o[e+4>>2]=n;return}function uk(e){e=e|0;zT(e);KT(e);return}function ak(e){e=e|0;e=o[e+12>>2]|0;if(e|0)KT(e);return}function lk(e){e=e|0;KT(e);return}function sk(){var e=0;if(!(r[8088]|0)){mk(11076);Fe(25,11076,g|0)|0;e=8088;o[e>>2]=1;o[e+4>>2]=0}return 11076}function ck(e,t){e=e|0;t=t|0;o[e>>2]=fk()|0;o[e+4>>2]=dk()|0;o[e+12>>2]=t;o[e+8>>2]=pk()|0;o[e+32>>2]=10;return}function fk(){return 11745}function dk(){return 1940}function pk(){return Wm()|0}function hk(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;if((Um(r,896)|0)==512){if(n|0){vk(n);KT(n)}}else if(t|0)KT(t);return}function vk(e){e=e|0;e=o[e+4>>2]|0;if(e|0)qT(e);return}function mk(e){e=e|0;Al(e);return}function gk(e,t){e=e|0;t=t|0;o[e>>2]=t;return}function yk(e){e=e|0;return o[e>>2]|0}function _k(e){e=e|0;return r[o[e>>2]>>0]|0}function bk(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;o[r>>2]=o[e>>2];wk(t,r)|0;h=n;return}function wk(e,t){e=e|0;t=t|0;var n=0;n=Ek(o[e>>2]|0,t)|0;t=e+4|0;o[(o[t>>2]|0)+8>>2]=n;return o[(o[t>>2]|0)+8>>2]|0}function Ek(e,t){e=e|0;t=t|0;var n=0,r=0;n=h;h=h+16|0;r=n;Dk(r);e=Eu(e)|0;t=Sk(e,o[t>>2]|0)|0;Ck(r);h=n;return t|0}function Dk(e){e=e|0;o[e>>2]=o[2701];o[e+4>>2]=o[2703];return}function Sk(e,t){e=e|0;t=t|0;var n=0;n=Cu(kk()|0)|0;return it(0,n|0,e|0,Kw(t)|0)|0}function Ck(e){e=e|0;eS(o[e>>2]|0,o[e+4>>2]|0);return}function kk(){var e=0;if(!(r[8096]|0)){Tk(11120);e=8096;o[e>>2]=1;o[e+4>>2]=0}return 11120}function Tk(e){e=e|0;Lu(e,xk()|0,1);return}function xk(){return 1948}function Ak(){Ok();return}function Ok(){var e=0,t=0,n=0,i=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0;y=h;h=h+16|0;p=y+4|0;v=y;Ne(65536,10804,o[2702]|0,10812);n=Cw()|0;t=o[n>>2]|0;e=o[t>>2]|0;if(e|0){i=o[n+8>>2]|0;n=o[n+4>>2]|0;while(1){ze(e|0,u[n>>0]|0|0,r[i>>0]|0);t=t+4|0;e=o[t>>2]|0;if(!e)break;else{i=i+1|0;n=n+1|0}}}e=Tw()|0;t=o[e>>2]|0;if(t|0)do{We(t|0,o[e+4>>2]|0);e=e+8|0;t=o[e>>2]|0}while((t|0)!=0);We(Pk()|0,5167);d=fw()|0;e=o[d>>2]|0;e:do{if(e|0){do{Ik(o[e+4>>2]|0);e=o[e>>2]|0}while((e|0)!=0);e=o[d>>2]|0;if(e|0){f=d;do{while(1){a=e;e=o[e>>2]|0;a=o[a+4>>2]|0;if(!(Nk(a)|0))break;o[v>>2]=f;o[p>>2]=o[v>>2];Mk(d,p)|0;if(!e)break e}Rk(a);f=o[f>>2]|0;t=Fk(a)|0;l=Xe()|0;s=h;h=h+((1*(t<<2)|0)+15&-16)|0;c=h;h=h+((1*(t<<2)|0)+15&-16)|0;t=o[(xE(a)|0)>>2]|0;if(t|0){n=s;i=c;while(1){o[n>>2]=o[(kE(o[t+4>>2]|0)|0)>>2];o[i>>2]=o[t+8>>2];t=o[t>>2]|0;if(!t)break;else{n=n+4|0;i=i+4|0}}}_=kE(a)|0;t=Lk(a)|0;n=Fk(a)|0;i=Bk(a)|0;Ge(_|0,t|0,s|0,c|0,n|0,i|0,Ew(a)|0);Re(l|0)}while((e|0)!=0)}}}while(0);e=o[(Sw()|0)>>2]|0;if(e|0)do{_=e+4|0;d=Pw(_)|0;a=Fw(d)|0;l=Iw(d)|0;s=(Nw(d)|0)+1|0;c=jk(d)|0;f=Uk(_)|0;d=Xa(d)|0;p=Bw(_)|0;v=zk(_)|0;Ve(0,a|0,l|0,s|0,c|0,f|0,d|0,p|0,v|0,Wk(_)|0);e=o[e>>2]|0}while((e|0)!=0);e=o[(fw()|0)>>2]|0;e:do{if(e|0){t:while(1){t=o[e+4>>2]|0;if(t|0?(m=o[(kE(t)|0)>>2]|0,g=o[(PE(t)|0)>>2]|0,g|0):0){n=g;do{t=n+4|0;i=Pw(t)|0;n:do{if(i|0)switch(Xa(i)|0){case 0:break t;case 4:case 3:case 2:{c=Fw(i)|0;f=Iw(i)|0;d=(Nw(i)|0)+1|0;p=jk(i)|0;v=Xa(i)|0;_=Bw(t)|0;Ve(m|0,c|0,f|0,d|0,p|0,0,v|0,_|0,zk(t)|0,Wk(t)|0);break n}case 1:{s=Fw(i)|0;c=Iw(i)|0;f=(Nw(i)|0)+1|0;d=jk(i)|0;p=Uk(t)|0;v=Xa(i)|0;_=Bw(t)|0;Ve(m|0,s|0,c|0,f|0,d|0,p|0,v|0,_|0,zk(t)|0,Wk(t)|0);break n}case 5:{d=Fw(i)|0;p=Iw(i)|0;v=(Nw(i)|0)+1|0;_=jk(i)|0;Ve(m|0,d|0,p|0,v|0,_|0,Hk(i)|0,Xa(i)|0,0,0,0);break n}default:break n}}while(0);n=o[n>>2]|0}while((n|0)!=0)}e=o[e>>2]|0;if(!e)break e}Ye()}}while(0);$e();h=y;return}function Pk(){return 11703}function Ik(e){e=e|0;r[e+40>>0]=0;return}function Nk(e){e=e|0;return(r[e+40>>0]|0)!=0|0}function Mk(e,t){e=e|0;t=t|0;t=Vk(t)|0;e=o[t>>2]|0;o[t>>2]=o[e>>2];KT(e);return o[t>>2]|0}function Rk(e){e=e|0;r[e+40>>0]=1;return}function Fk(e){e=e|0;return o[e+20>>2]|0}function Lk(e){e=e|0;return o[e+8>>2]|0}function Bk(e){e=e|0;return o[e+32>>2]|0}function jk(e){e=e|0;return o[e+4>>2]|0}function Uk(e){e=e|0;return o[e+4>>2]|0}function zk(e){e=e|0;return o[e+8>>2]|0}function Wk(e){e=e|0;return o[e+16>>2]|0}function Hk(e){e=e|0;return o[e+20>>2]|0}function Vk(e){e=e|0;return o[e>>2]|0}function qk(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0,w=0,E=0,D=0;D=h;h=h+16|0;p=D;do{if(e>>>0<245){c=e>>>0<11?16:e+11&-8;e=c>>>3;d=o[2783]|0;n=d>>>e;if(n&3|0){t=(n&1^1)+e|0;e=11172+(t<<1<<2)|0;n=e+8|0;r=o[n>>2]|0;i=r+8|0;u=o[i>>2]|0;if((e|0)==(u|0))o[2783]=d&~(1<>2]=e;o[n>>2]=u}E=t<<3;o[r+4>>2]=E|3;E=r+E+4|0;o[E>>2]=o[E>>2]|1;E=i;h=D;return E|0}f=o[2785]|0;if(c>>>0>f>>>0){if(n|0){t=2<>>12&16;t=t>>>a;n=t>>>5&8;t=t>>>n;i=t>>>2&4;t=t>>>i;e=t>>>1&2;t=t>>>e;r=t>>>1&1;r=(n|a|i|e|r)+(t>>>r)|0;t=11172+(r<<1<<2)|0;e=t+8|0;i=o[e>>2]|0;a=i+8|0;n=o[a>>2]|0;if((t|0)==(n|0)){e=d&~(1<>2]=t;o[e>>2]=n;e=d}u=(r<<3)-c|0;o[i+4>>2]=c|3;r=i+c|0;o[r+4>>2]=u|1;o[r+u>>2]=u;if(f|0){i=o[2788]|0;t=f>>>3;n=11172+(t<<1<<2)|0;t=1<>2]|0}o[e>>2]=i;o[t+12>>2]=i;o[i+8>>2]=t;o[i+12>>2]=n}o[2785]=u;o[2788]=r;E=a;h=D;return E|0}l=o[2784]|0;if(l){n=(l&0-l)+-1|0;a=n>>>12&16;n=n>>>a;u=n>>>5&8;n=n>>>u;s=n>>>2&4;n=n>>>s;r=n>>>1&2;n=n>>>r;e=n>>>1&1;e=o[11436+((u|a|s|r|e)+(n>>>e)<<2)>>2]|0;n=(o[e+4>>2]&-8)-c|0;r=o[e+16+(((o[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!r){s=e;u=n}else{do{a=(o[r+4>>2]&-8)-c|0;s=a>>>0>>0;n=s?a:n;e=s?r:e;r=o[r+16+(((o[r+16>>2]|0)==0&1)<<2)>>2]|0}while((r|0)!=0);s=e;u=n}a=s+c|0;if(s>>>0>>0){i=o[s+24>>2]|0;t=o[s+12>>2]|0;do{if((t|0)==(s|0)){e=s+20|0;t=o[e>>2]|0;if(!t){e=s+16|0;t=o[e>>2]|0;if(!t){n=0;break}}while(1){n=t+20|0;r=o[n>>2]|0;if(r|0){t=r;e=n;continue}n=t+16|0;r=o[n>>2]|0;if(!r)break;else{t=r;e=n}}o[e>>2]=0;n=t}else{n=o[s+8>>2]|0;o[n+12>>2]=t;o[t+8>>2]=n;n=t}}while(0);do{if(i|0){t=o[s+28>>2]|0;e=11436+(t<<2)|0;if((s|0)==(o[e>>2]|0)){o[e>>2]=n;if(!n){o[2784]=l&~(1<>2]|0)!=(s|0)&1)<<2)>>2]=n;if(!n)break}o[n+24>>2]=i;t=o[s+16>>2]|0;if(t|0){o[n+16>>2]=t;o[t+24>>2]=n}t=o[s+20>>2]|0;if(t|0){o[n+20>>2]=t;o[t+24>>2]=n}}}while(0);if(u>>>0<16){E=u+c|0;o[s+4>>2]=E|3;E=s+E+4|0;o[E>>2]=o[E>>2]|1}else{o[s+4>>2]=c|3;o[a+4>>2]=u|1;o[a+u>>2]=u;if(f|0){r=o[2788]|0;t=f>>>3;n=11172+(t<<1<<2)|0;t=1<>2]|0}o[e>>2]=r;o[t+12>>2]=r;o[r+8>>2]=t;o[r+12>>2]=n}o[2785]=u;o[2788]=a}E=s+8|0;h=D;return E|0}else d=c}else d=c}else d=c}else if(e>>>0<=4294967231){e=e+11|0;c=e&-8;s=o[2784]|0;if(s){r=0-c|0;e=e>>>8;if(e){if(c>>>0>16777215)l=31;else{d=(e+1048320|0)>>>16&8;w=e<>>16&4;w=w<>>16&2;l=14-(f|d|l)+(w<>>15)|0;l=c>>>(l+7|0)&1|l<<1}}else l=0;n=o[11436+(l<<2)>>2]|0;e:do{if(!n){n=0;e=0;w=57}else{e=0;a=c<<((l|0)==31?0:25-(l>>>1)|0);u=0;while(1){i=(o[n+4>>2]&-8)-c|0;if(i>>>0>>0)if(!i){e=n;r=0;i=n;w=61;break e}else{e=n;r=i}i=o[n+20>>2]|0;n=o[n+16+(a>>>31<<2)>>2]|0;u=(i|0)==0|(i|0)==(n|0)?u:i;i=(n|0)==0;if(i){n=u;w=57;break}else a=a<<((i^1)&1)}}}while(0);if((w|0)==57){if((n|0)==0&(e|0)==0){e=2<>>12&16;d=d>>>a;u=d>>>5&8;d=d>>>u;l=d>>>2&4;d=d>>>l;f=d>>>1&2;d=d>>>f;n=d>>>1&1;e=0;n=o[11436+((u|a|l|f|n)+(d>>>n)<<2)>>2]|0}if(!n){l=e;a=r}else{i=n;w=61}}if((w|0)==61)while(1){w=0;n=(o[i+4>>2]&-8)-c|0;d=n>>>0>>0;n=d?n:r;e=d?i:e;i=o[i+16+(((o[i+16>>2]|0)==0&1)<<2)>>2]|0;if(!i){l=e;a=n;break}else{r=n;w=61}}if((l|0)!=0?a>>>0<((o[2785]|0)-c|0)>>>0:0){u=l+c|0;if(l>>>0>=u>>>0){E=0;h=D;return E|0}i=o[l+24>>2]|0;t=o[l+12>>2]|0;do{if((t|0)==(l|0)){e=l+20|0;t=o[e>>2]|0;if(!t){e=l+16|0;t=o[e>>2]|0;if(!t){t=0;break}}while(1){n=t+20|0;r=o[n>>2]|0;if(r|0){t=r;e=n;continue}n=t+16|0;r=o[n>>2]|0;if(!r)break;else{t=r;e=n}}o[e>>2]=0}else{E=o[l+8>>2]|0;o[E+12>>2]=t;o[t+8>>2]=E}}while(0);do{if(i){e=o[l+28>>2]|0;n=11436+(e<<2)|0;if((l|0)==(o[n>>2]|0)){o[n>>2]=t;if(!t){r=s&~(1<>2]|0)!=(l|0)&1)<<2)>>2]=t;if(!t){r=s;break}}o[t+24>>2]=i;e=o[l+16>>2]|0;if(e|0){o[t+16>>2]=e;o[e+24>>2]=t}e=o[l+20>>2]|0;if(e){o[t+20>>2]=e;o[e+24>>2]=t;r=s}else r=s}else r=s}while(0);do{if(a>>>0>=16){o[l+4>>2]=c|3;o[u+4>>2]=a|1;o[u+a>>2]=a;t=a>>>3;if(a>>>0<256){n=11172+(t<<1<<2)|0;e=o[2783]|0;t=1<>2]|0}o[e>>2]=u;o[t+12>>2]=u;o[u+8>>2]=t;o[u+12>>2]=n;break}t=a>>>8;if(t){if(a>>>0>16777215)t=31;else{w=(t+1048320|0)>>>16&8;E=t<>>16&4;E=E<>>16&2;t=14-(b|w|t)+(E<>>15)|0;t=a>>>(t+7|0)&1|t<<1}}else t=0;n=11436+(t<<2)|0;o[u+28>>2]=t;e=u+16|0;o[e+4>>2]=0;o[e>>2]=0;e=1<>2]=u;o[u+24>>2]=n;o[u+12>>2]=u;o[u+8>>2]=u;break}e=a<<((t|0)==31?0:25-(t>>>1)|0);n=o[n>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(a|0)){w=97;break}r=n+16+(e>>>31<<2)|0;t=o[r>>2]|0;if(!t){w=96;break}else{e=e<<1;n=t}}if((w|0)==96){o[r>>2]=u;o[u+24>>2]=n;o[u+12>>2]=u;o[u+8>>2]=u;break}else if((w|0)==97){w=n+8|0;E=o[w>>2]|0;o[E+12>>2]=u;o[w>>2]=u;o[u+8>>2]=E;o[u+12>>2]=n;o[u+24>>2]=0;break}}else{E=a+c|0;o[l+4>>2]=E|3;E=l+E+4|0;o[E>>2]=o[E>>2]|1}}while(0);E=l+8|0;h=D;return E|0}else d=c}else d=c}else d=-1}while(0);n=o[2785]|0;if(n>>>0>=d>>>0){t=n-d|0;e=o[2788]|0;if(t>>>0>15){E=e+d|0;o[2788]=E;o[2785]=t;o[E+4>>2]=t|1;o[E+t>>2]=t;o[e+4>>2]=d|3}else{o[2785]=0;o[2788]=0;o[e+4>>2]=n|3;E=e+n+4|0;o[E>>2]=o[E>>2]|1}E=e+8|0;h=D;return E|0}a=o[2786]|0;if(a>>>0>d>>>0){b=a-d|0;o[2786]=b;E=o[2789]|0;w=E+d|0;o[2789]=w;o[w+4>>2]=b|1;o[E+4>>2]=d|3;E=E+8|0;h=D;return E|0}if(!(o[2901]|0)){o[2903]=4096;o[2902]=4096;o[2904]=-1;o[2905]=-1;o[2906]=0;o[2894]=0;e=p&-16^1431655768;o[p>>2]=e;o[2901]=e;e=4096}else e=o[2903]|0;l=d+48|0;s=d+47|0;u=e+s|0;i=0-e|0;c=u&i;if(c>>>0<=d>>>0){E=0;h=D;return E|0}e=o[2893]|0;if(e|0?(f=o[2891]|0,p=f+c|0,p>>>0<=f>>>0|p>>>0>e>>>0):0){E=0;h=D;return E|0}e:do{if(!(o[2894]&4)){n=o[2789]|0;t:do{if(n){r=11580;while(1){e=o[r>>2]|0;if(e>>>0<=n>>>0?(g=r+4|0,(e+(o[g>>2]|0)|0)>>>0>n>>>0):0)break;e=o[r+8>>2]|0;if(!e){w=118;break t}else r=e}t=u-a&i;if(t>>>0<2147483647){e=lx(t|0)|0;if((e|0)==((o[r>>2]|0)+(o[g>>2]|0)|0)){if((e|0)!=(-1|0)){a=t;u=e;w=135;break e}}else{r=e;w=126}}else t=0}else w=118}while(0);do{if((w|0)==118){n=lx(0)|0;if((n|0)!=(-1|0)?(t=n,v=o[2902]|0,m=v+-1|0,t=((m&t|0)==0?0:(m+t&0-v)-t|0)+c|0,v=o[2891]|0,m=t+v|0,t>>>0>d>>>0&t>>>0<2147483647):0){g=o[2893]|0;if(g|0?m>>>0<=v>>>0|m>>>0>g>>>0:0){t=0;break}e=lx(t|0)|0;if((e|0)==(n|0)){a=t;u=n;w=135;break e}else{r=e;w=126}}else t=0}}while(0);do{if((w|0)==126){n=0-t|0;if(!(l>>>0>t>>>0&(t>>>0<2147483647&(r|0)!=(-1|0))))if((r|0)==(-1|0)){t=0;break}else{a=t;u=r;w=135;break e}e=o[2903]|0;e=s-t+e&0-e;if(e>>>0>=2147483647){a=t;u=r;w=135;break e}if((lx(e|0)|0)==(-1|0)){lx(n|0)|0;t=0;break}else{a=e+t|0;u=r;w=135;break e}}}while(0);o[2894]=o[2894]|4;w=133}else{t=0;w=133}}while(0);if(((w|0)==133?c>>>0<2147483647:0)?(b=lx(c|0)|0,g=lx(0)|0,y=g-b|0,_=y>>>0>(d+40|0)>>>0,!((b|0)==(-1|0)|_^1|b>>>0>>0&((b|0)!=(-1|0)&(g|0)!=(-1|0))^1)):0){a=_?y:t;u=b;w=135}if((w|0)==135){t=(o[2891]|0)+a|0;o[2891]=t;if(t>>>0>(o[2892]|0)>>>0)o[2892]=t;s=o[2789]|0;do{if(s){t=11580;while(1){e=o[t>>2]|0;n=t+4|0;r=o[n>>2]|0;if((u|0)==(e+r|0)){w=145;break}i=o[t+8>>2]|0;if(!i)break;else t=i}if(((w|0)==145?(o[t+12>>2]&8|0)==0:0)?s>>>0>>0&s>>>0>=e>>>0:0){o[n>>2]=r+a;E=s+8|0;E=(E&7|0)==0?0:0-E&7;w=s+E|0;E=(o[2786]|0)+(a-E)|0;o[2789]=w;o[2786]=E;o[w+4>>2]=E|1;o[w+E+4>>2]=40;o[2790]=o[2905];break}if(u>>>0<(o[2787]|0)>>>0)o[2787]=u;n=u+a|0;t=11580;while(1){if((o[t>>2]|0)==(n|0)){w=153;break}e=o[t+8>>2]|0;if(!e)break;else t=e}if((w|0)==153?(o[t+12>>2]&8|0)==0:0){o[t>>2]=u;f=t+4|0;o[f>>2]=(o[f>>2]|0)+a;f=u+8|0;f=u+((f&7|0)==0?0:0-f&7)|0;t=n+8|0;t=n+((t&7|0)==0?0:0-t&7)|0;c=f+d|0;l=t-f-d|0;o[f+4>>2]=d|3;do{if((t|0)!=(s|0)){if((t|0)==(o[2788]|0)){E=(o[2785]|0)+l|0;o[2785]=E;o[2788]=c;o[c+4>>2]=E|1;o[c+E>>2]=E;break}e=o[t+4>>2]|0;if((e&3|0)==1){a=e&-8;r=e>>>3;e:do{if(e>>>0<256){e=o[t+8>>2]|0;n=o[t+12>>2]|0;if((n|0)==(e|0)){o[2783]=o[2783]&~(1<>2]=n;o[n+8>>2]=e;break}}else{u=o[t+24>>2]|0;e=o[t+12>>2]|0;do{if((e|0)==(t|0)){r=t+16|0;n=r+4|0;e=o[n>>2]|0;if(!e){e=o[r>>2]|0;if(!e){e=0;break}else n=r}while(1){r=e+20|0;i=o[r>>2]|0;if(i|0){e=i;n=r;continue}r=e+16|0;i=o[r>>2]|0;if(!i)break;else{e=i;n=r}}o[n>>2]=0}else{E=o[t+8>>2]|0;o[E+12>>2]=e;o[e+8>>2]=E}}while(0);if(!u)break;n=o[t+28>>2]|0;r=11436+(n<<2)|0;do{if((t|0)!=(o[r>>2]|0)){o[u+16+(((o[u+16>>2]|0)!=(t|0)&1)<<2)>>2]=e;if(!e)break e}else{o[r>>2]=e;if(e|0)break;o[2784]=o[2784]&~(1<>2]=u;n=t+16|0;r=o[n>>2]|0;if(r|0){o[e+16>>2]=r;o[r+24>>2]=e}n=o[n+4>>2]|0;if(!n)break;o[e+20>>2]=n;o[n+24>>2]=e}}while(0);t=t+a|0;i=a+l|0}else i=l;t=t+4|0;o[t>>2]=o[t>>2]&-2;o[c+4>>2]=i|1;o[c+i>>2]=i;t=i>>>3;if(i>>>0<256){n=11172+(t<<1<<2)|0;e=o[2783]|0;t=1<>2]|0}o[e>>2]=c;o[t+12>>2]=c;o[c+8>>2]=t;o[c+12>>2]=n;break}t=i>>>8;do{if(!t)t=0;else{if(i>>>0>16777215){t=31;break}w=(t+1048320|0)>>>16&8;E=t<>>16&4;E=E<>>16&2;t=14-(b|w|t)+(E<>>15)|0;t=i>>>(t+7|0)&1|t<<1}}while(0);r=11436+(t<<2)|0;o[c+28>>2]=t;e=c+16|0;o[e+4>>2]=0;o[e>>2]=0;e=o[2784]|0;n=1<>2]=c;o[c+24>>2]=r;o[c+12>>2]=c;o[c+8>>2]=c;break}e=i<<((t|0)==31?0:25-(t>>>1)|0);n=o[r>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(i|0)){w=194;break}r=n+16+(e>>>31<<2)|0;t=o[r>>2]|0;if(!t){w=193;break}else{e=e<<1;n=t}}if((w|0)==193){o[r>>2]=c;o[c+24>>2]=n;o[c+12>>2]=c;o[c+8>>2]=c;break}else if((w|0)==194){w=n+8|0;E=o[w>>2]|0;o[E+12>>2]=c;o[w>>2]=c;o[c+8>>2]=E;o[c+12>>2]=n;o[c+24>>2]=0;break}}else{E=(o[2786]|0)+l|0;o[2786]=E;o[2789]=c;o[c+4>>2]=E|1}}while(0);E=f+8|0;h=D;return E|0}t=11580;while(1){e=o[t>>2]|0;if(e>>>0<=s>>>0?(E=e+(o[t+4>>2]|0)|0,E>>>0>s>>>0):0)break;t=o[t+8>>2]|0}i=E+-47|0;e=i+8|0;e=i+((e&7|0)==0?0:0-e&7)|0;i=s+16|0;e=e>>>0>>0?s:e;t=e+8|0;n=u+8|0;n=(n&7|0)==0?0:0-n&7;w=u+n|0;n=a+-40-n|0;o[2789]=w;o[2786]=n;o[w+4>>2]=n|1;o[w+n+4>>2]=40;o[2790]=o[2905];n=e+4|0;o[n>>2]=27;o[t>>2]=o[2895];o[t+4>>2]=o[2896];o[t+8>>2]=o[2897];o[t+12>>2]=o[2898];o[2895]=u;o[2896]=a;o[2898]=0;o[2897]=t;t=e+24|0;do{w=t;t=t+4|0;o[t>>2]=7}while((w+8|0)>>>0>>0);if((e|0)!=(s|0)){u=e-s|0;o[n>>2]=o[n>>2]&-2;o[s+4>>2]=u|1;o[e>>2]=u;t=u>>>3;if(u>>>0<256){n=11172+(t<<1<<2)|0;e=o[2783]|0;t=1<>2]|0}o[e>>2]=s;o[t+12>>2]=s;o[s+8>>2]=t;o[s+12>>2]=n;break}t=u>>>8;if(t){if(u>>>0>16777215)n=31;else{w=(t+1048320|0)>>>16&8;E=t<>>16&4;E=E<>>16&2;n=14-(b|w|n)+(E<>>15)|0;n=u>>>(n+7|0)&1|n<<1}}else n=0;r=11436+(n<<2)|0;o[s+28>>2]=n;o[s+20>>2]=0;o[i>>2]=0;t=o[2784]|0;e=1<>2]=s;o[s+24>>2]=r;o[s+12>>2]=s;o[s+8>>2]=s;break}e=u<<((n|0)==31?0:25-(n>>>1)|0);n=o[r>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(u|0)){w=216;break}r=n+16+(e>>>31<<2)|0;t=o[r>>2]|0;if(!t){w=215;break}else{e=e<<1;n=t}}if((w|0)==215){o[r>>2]=s;o[s+24>>2]=n;o[s+12>>2]=s;o[s+8>>2]=s;break}else if((w|0)==216){w=n+8|0;E=o[w>>2]|0;o[E+12>>2]=s;o[w>>2]=s;o[s+8>>2]=E;o[s+12>>2]=n;o[s+24>>2]=0;break}}}else{E=o[2787]|0;if((E|0)==0|u>>>0>>0)o[2787]=u;o[2895]=u;o[2896]=a;o[2898]=0;o[2792]=o[2901];o[2791]=-1;t=0;do{E=11172+(t<<1<<2)|0;o[E+12>>2]=E;o[E+8>>2]=E;t=t+1|0}while((t|0)!=32);E=u+8|0;E=(E&7|0)==0?0:0-E&7;w=u+E|0;E=a+-40-E|0;o[2789]=w;o[2786]=E;o[w+4>>2]=E|1;o[w+E+4>>2]=40;o[2790]=o[2905]}}while(0);t=o[2786]|0;if(t>>>0>d>>>0){b=t-d|0;o[2786]=b;E=o[2789]|0;w=E+d|0;o[2789]=w;o[w+4>>2]=b|1;o[E+4>>2]=d|3;E=E+8|0;h=D;return E|0}}o[(Jk()|0)>>2]=12;E=0;h=D;return E|0}function Gk(e){e=e|0;var t=0,n=0,r=0,i=0,u=0,a=0,l=0,s=0;if(!e)return;n=e+-8|0;i=o[2787]|0;e=o[e+-4>>2]|0;t=e&-8;s=n+t|0;do{if(!(e&1)){r=o[n>>2]|0;if(!(e&3))return;a=n+(0-r)|0;u=r+t|0;if(a>>>0>>0)return;if((a|0)==(o[2788]|0)){e=s+4|0;t=o[e>>2]|0;if((t&3|0)!=3){l=a;t=u;break}o[2785]=u;o[e>>2]=t&-2;o[a+4>>2]=u|1;o[a+u>>2]=u;return}n=r>>>3;if(r>>>0<256){e=o[a+8>>2]|0;t=o[a+12>>2]|0;if((t|0)==(e|0)){o[2783]=o[2783]&~(1<>2]=t;o[t+8>>2]=e;l=a;t=u;break}}i=o[a+24>>2]|0;e=o[a+12>>2]|0;do{if((e|0)==(a|0)){n=a+16|0;t=n+4|0;e=o[t>>2]|0;if(!e){e=o[n>>2]|0;if(!e){e=0;break}else t=n}while(1){n=e+20|0;r=o[n>>2]|0;if(r|0){e=r;t=n;continue}n=e+16|0;r=o[n>>2]|0;if(!r)break;else{e=r;t=n}}o[t>>2]=0}else{l=o[a+8>>2]|0;o[l+12>>2]=e;o[e+8>>2]=l}}while(0);if(i){t=o[a+28>>2]|0;n=11436+(t<<2)|0;if((a|0)==(o[n>>2]|0)){o[n>>2]=e;if(!e){o[2784]=o[2784]&~(1<>2]|0)!=(a|0)&1)<<2)>>2]=e;if(!e){l=a;t=u;break}}o[e+24>>2]=i;t=a+16|0;n=o[t>>2]|0;if(n|0){o[e+16>>2]=n;o[n+24>>2]=e}t=o[t+4>>2]|0;if(t){o[e+20>>2]=t;o[t+24>>2]=e;l=a;t=u}else{l=a;t=u}}else{l=a;t=u}}else{l=n;a=n}}while(0);if(a>>>0>=s>>>0)return;e=s+4|0;r=o[e>>2]|0;if(!(r&1))return;if(!(r&2)){e=o[2788]|0;if((s|0)==(o[2789]|0)){s=(o[2786]|0)+t|0;o[2786]=s;o[2789]=l;o[l+4>>2]=s|1;if((l|0)!=(e|0))return;o[2788]=0;o[2785]=0;return}if((s|0)==(e|0)){s=(o[2785]|0)+t|0;o[2785]=s;o[2788]=a;o[l+4>>2]=s|1;o[a+s>>2]=s;return}i=(r&-8)+t|0;n=r>>>3;do{if(r>>>0<256){t=o[s+8>>2]|0;e=o[s+12>>2]|0;if((e|0)==(t|0)){o[2783]=o[2783]&~(1<>2]=e;o[e+8>>2]=t;break}}else{u=o[s+24>>2]|0;e=o[s+12>>2]|0;do{if((e|0)==(s|0)){n=s+16|0;t=n+4|0;e=o[t>>2]|0;if(!e){e=o[n>>2]|0;if(!e){n=0;break}else t=n}while(1){n=e+20|0;r=o[n>>2]|0;if(r|0){e=r;t=n;continue}n=e+16|0;r=o[n>>2]|0;if(!r)break;else{e=r;t=n}}o[t>>2]=0;n=e}else{n=o[s+8>>2]|0;o[n+12>>2]=e;o[e+8>>2]=n;n=e}}while(0);if(u|0){e=o[s+28>>2]|0;t=11436+(e<<2)|0;if((s|0)==(o[t>>2]|0)){o[t>>2]=n;if(!n){o[2784]=o[2784]&~(1<>2]|0)!=(s|0)&1)<<2)>>2]=n;if(!n)break}o[n+24>>2]=u;e=s+16|0;t=o[e>>2]|0;if(t|0){o[n+16>>2]=t;o[t+24>>2]=n}e=o[e+4>>2]|0;if(e|0){o[n+20>>2]=e;o[e+24>>2]=n}}}}while(0);o[l+4>>2]=i|1;o[a+i>>2]=i;if((l|0)==(o[2788]|0)){o[2785]=i;return}}else{o[e>>2]=r&-2;o[l+4>>2]=t|1;o[a+t>>2]=t;i=t}e=i>>>3;if(i>>>0<256){n=11172+(e<<1<<2)|0;t=o[2783]|0;e=1<>2]|0}o[t>>2]=l;o[e+12>>2]=l;o[l+8>>2]=e;o[l+12>>2]=n;return}e=i>>>8;if(e){if(i>>>0>16777215)e=31;else{a=(e+1048320|0)>>>16&8;s=e<>>16&4;s=s<>>16&2;e=14-(u|a|e)+(s<>>15)|0;e=i>>>(e+7|0)&1|e<<1}}else e=0;r=11436+(e<<2)|0;o[l+28>>2]=e;o[l+20>>2]=0;o[l+16>>2]=0;t=o[2784]|0;n=1<>>1)|0);n=o[r>>2]|0;while(1){if((o[n+4>>2]&-8|0)==(i|0)){e=73;break}r=n+16+(t>>>31<<2)|0;e=o[r>>2]|0;if(!e){e=72;break}else{t=t<<1;n=e}}if((e|0)==72){o[r>>2]=l;o[l+24>>2]=n;o[l+12>>2]=l;o[l+8>>2]=l;break}else if((e|0)==73){a=n+8|0;s=o[a>>2]|0;o[s+12>>2]=l;o[a>>2]=l;o[l+8>>2]=s;o[l+12>>2]=n;o[l+24>>2]=0;break}}else{o[2784]=t|n;o[r>>2]=l;o[l+24>>2]=r;o[l+12>>2]=l;o[l+8>>2]=l}}while(0);s=(o[2791]|0)+-1|0;o[2791]=s;if(!s)e=11588;else return;while(1){e=o[e>>2]|0;if(!e)break;else e=e+8|0}o[2791]=-1;return}function $k(){return 11628}function Yk(e){e=e|0;var t=0,n=0;t=h;h=h+16|0;n=t;o[n>>2]=tT(o[e+60>>2]|0)|0;e=Qk(ut(6,n|0)|0)|0;h=t;return e|0}function Kk(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0;d=h;h=h+48|0;c=d+16|0;u=d;i=d+32|0;l=e+28|0;r=o[l>>2]|0;o[i>>2]=r;s=e+20|0;r=(o[s>>2]|0)-r|0;o[i+4>>2]=r;o[i+8>>2]=t;o[i+12>>2]=n;r=r+n|0;a=e+60|0;o[u>>2]=o[a>>2];o[u+4>>2]=i;o[u+8>>2]=2;u=Qk(st(146,u|0)|0)|0;e:do{if((r|0)!=(u|0)){t=2;while(1){if((u|0)<0)break;r=r-u|0;v=o[i+4>>2]|0;p=u>>>0>v>>>0;i=p?i+8|0:i;t=(p<<31>>31)+t|0;v=u-(p?v:0)|0;o[i>>2]=(o[i>>2]|0)+v;p=i+4|0;o[p>>2]=(o[p>>2]|0)-v;o[c>>2]=o[a>>2];o[c+4>>2]=i;o[c+8>>2]=t;u=Qk(st(146,c|0)|0)|0;if((r|0)==(u|0)){f=3;break e}}o[e+16>>2]=0;o[l>>2]=0;o[s>>2]=0;o[e>>2]=o[e>>2]|32;if((t|0)==2)n=0;else n=n-(o[i+4>>2]|0)|0}else f=3}while(0);if((f|0)==3){v=o[e+44>>2]|0;o[e+16>>2]=v+(o[e+48>>2]|0);o[l>>2]=v;o[s>>2]=v}h=d;return n|0}function Xk(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0;i=h;h=h+32|0;u=i;r=i+20|0;o[u>>2]=o[e+60>>2];o[u+4>>2]=0;o[u+8>>2]=t;o[u+12>>2]=r;o[u+16>>2]=n;if((Qk(lt(140,u|0)|0)|0)<0){o[r>>2]=-1;e=-1}else e=o[r>>2]|0;h=i;return e|0}function Qk(e){e=e|0;if(e>>>0>4294963200){o[(Jk()|0)>>2]=0-e;e=-1}return e|0}function Jk(){return(Zk()|0)+64|0}function Zk(){return eT()|0}function eT(){return 2084}function tT(e){e=e|0;return e|0}function nT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0;u=h;h=h+32|0;i=u;o[e+36>>2]=1;if((o[e>>2]&64|0)==0?(o[i>>2]=o[e+60>>2],o[i+4>>2]=21523,o[i+8>>2]=u+16,Qe(54,i|0)|0):0)r[e+75>>0]=-1;i=Kk(e,t,n)|0;h=u;return i|0}function rT(e,t){e=e|0;t=t|0;var n=0,i=0;n=r[e>>0]|0;i=r[t>>0]|0;if(n<<24>>24==0?1:n<<24>>24!=i<<24>>24)e=i;else{do{e=e+1|0;t=t+1|0;n=r[e>>0]|0;i=r[t>>0]|0}while(!(n<<24>>24==0?1:n<<24>>24!=i<<24>>24));e=i}return(n&255)-(e&255)|0}function iT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,o=0;e:do{if(!n)e=0;else{while(1){i=r[e>>0]|0;o=r[t>>0]|0;if(i<<24>>24!=o<<24>>24)break;n=n+-1|0;if(!n){e=0;break e}else{e=e+1|0;t=t+1|0}}e=(i&255)-(o&255)|0}}while(0);return e|0}function oT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0;y=h;h=h+224|0;d=y+120|0;p=y+80|0;m=y;g=y+136|0;i=p;u=i+40|0;do{o[i>>2]=0;i=i+4|0}while((i|0)<(u|0));o[d>>2]=o[n>>2];if((uT(0,t,d,m,p)|0)<0)n=-1;else{if((o[e+76>>2]|0)>-1)v=aT(e)|0;else v=0;n=o[e>>2]|0;f=n&32;if((r[e+74>>0]|0)<1)o[e>>2]=n&-33;i=e+48|0;if(!(o[i>>2]|0)){u=e+44|0;a=o[u>>2]|0;o[u>>2]=g;l=e+28|0;o[l>>2]=g;s=e+20|0;o[s>>2]=g;o[i>>2]=80;c=e+16|0;o[c>>2]=g+80;n=uT(e,t,d,m,p)|0;if(a){_A[o[e+36>>2]&7](e,0,0)|0;n=(o[s>>2]|0)==0?-1:n;o[u>>2]=a;o[i>>2]=0;o[c>>2]=0;o[l>>2]=0;o[s>>2]=0}}else n=uT(e,t,d,m,p)|0;i=o[e>>2]|0;o[e>>2]=i|f;if(v|0)lT(e);n=(i&32|0)==0?n:-1}h=y;return n|0}function uT(e,t,n,u,a){e=e|0;t=t|0;n=n|0;u=u|0;a=a|0;var l=0,s=0,f=0,d=0,p=0,v=0,m=0,g=0,y=0,_=0,b=0,w=0,E=0,D=0,S=0,C=0,k=0,T=0,x=0,O=0,P=0,I=0,N=0;N=h;h=h+64|0;x=N+16|0;O=N;k=N+24|0;P=N+8|0;I=N+20|0;o[x>>2]=t;D=(e|0)!=0;S=k+40|0;C=S;k=k+39|0;T=P+4|0;s=0;l=0;v=0;e:while(1){do{if((l|0)>-1)if((s|0)>(2147483647-l|0)){o[(Jk()|0)>>2]=75;l=-1;break}else{l=s+l|0;break}}while(0);s=r[t>>0]|0;if(!(s<<24>>24)){E=87;break}else f=t;t:while(1){switch(s<<24>>24){case 37:{s=f;E=9;break t}case 0:{s=f;break t}default:{}}w=f+1|0;o[x>>2]=w;s=r[w>>0]|0;f=w}t:do{if((E|0)==9)while(1){E=0;if((r[f+1>>0]|0)!=37)break t;s=s+1|0;f=f+2|0;o[x>>2]=f;if((r[f>>0]|0)==37)E=9;else break}}while(0);s=s-t|0;if(D)sT(e,t,s);if(s|0){t=f;continue}d=f+1|0;s=(r[d>>0]|0)+-48|0;if(s>>>0<10){w=(r[f+2>>0]|0)==36;b=w?s:-1;v=w?1:v;d=w?f+3|0:d}else b=-1;o[x>>2]=d;s=r[d>>0]|0;f=(s<<24>>24)+-32|0;t:do{if(f>>>0<32){p=0;m=s;while(1){s=1<>2]=d;s=r[d>>0]|0;f=(s<<24>>24)+-32|0;if(f>>>0>=32)break;else m=s}}else p=0}while(0);if(s<<24>>24==42){f=d+1|0;s=(r[f>>0]|0)+-48|0;if(s>>>0<10?(r[d+2>>0]|0)==36:0){o[a+(s<<2)>>2]=10;s=o[u+((r[f>>0]|0)+-48<<3)>>2]|0;v=1;d=d+3|0}else{if(v|0){l=-1;break}if(D){v=(o[n>>2]|0)+(4-1)&~(4-1);s=o[v>>2]|0;o[n>>2]=v+4;v=0;d=f}else{s=0;v=0;d=f}}o[x>>2]=d;w=(s|0)<0;s=w?0-s|0:s;p=w?p|8192:p}else{s=cT(x)|0;if((s|0)<0){l=-1;break}d=o[x>>2]|0}do{if((r[d>>0]|0)==46){if((r[d+1>>0]|0)!=42){o[x>>2]=d+1;f=cT(x)|0;d=o[x>>2]|0;break}m=d+2|0;f=(r[m>>0]|0)+-48|0;if(f>>>0<10?(r[d+3>>0]|0)==36:0){o[a+(f<<2)>>2]=10;f=o[u+((r[m>>0]|0)+-48<<3)>>2]|0;d=d+4|0;o[x>>2]=d;break}if(v|0){l=-1;break e}if(D){w=(o[n>>2]|0)+(4-1)&~(4-1);f=o[w>>2]|0;o[n>>2]=w+4}else f=0;o[x>>2]=m;d=m}else f=-1}while(0);_=0;while(1){if(((r[d>>0]|0)+-65|0)>>>0>57){l=-1;break e}w=d+1|0;o[x>>2]=w;m=r[(r[d>>0]|0)+-65+(5178+(_*58|0))>>0]|0;g=m&255;if((g+-1|0)>>>0<8){_=g;d=w}else break}if(!(m<<24>>24)){l=-1;break}y=(b|0)>-1;do{if(m<<24>>24==19){if(y){l=-1;break e}else E=49}else{if(y){o[a+(b<<2)>>2]=g;y=u+(b<<3)|0;b=o[y+4>>2]|0;E=O;o[E>>2]=o[y>>2];o[E+4>>2]=b;E=49;break}if(!D){l=0;break e}fT(O,g,n)}}while(0);if((E|0)==49?(E=0,!D):0){s=0;t=w;continue}d=r[d>>0]|0;d=(_|0)!=0&(d&15|0)==3?d&-33:d;y=p&-65537;b=(p&8192|0)==0?p:y;t:do{switch(d|0){case 110:switch((_&255)<<24>>24){case 0:{o[o[O>>2]>>2]=l;s=0;t=w;continue e}case 1:{o[o[O>>2]>>2]=l;s=0;t=w;continue e}case 2:{s=o[O>>2]|0;o[s>>2]=l;o[s+4>>2]=((l|0)<0)<<31>>31;s=0;t=w;continue e}case 3:{i[o[O>>2]>>1]=l;s=0;t=w;continue e}case 4:{r[o[O>>2]>>0]=l;s=0;t=w;continue e}case 6:{o[o[O>>2]>>2]=l;s=0;t=w;continue e}case 7:{s=o[O>>2]|0;o[s>>2]=l;o[s+4>>2]=((l|0)<0)<<31>>31;s=0;t=w;continue e}default:{s=0;t=w;continue e}}case 112:{d=120;f=f>>>0>8?f:8;t=b|8;E=61;break}case 88:case 120:{t=b;E=61;break}case 111:{d=O;t=o[d>>2]|0;d=o[d+4>>2]|0;g=pT(t,d,S)|0;y=C-g|0;p=0;m=5642;f=(b&8|0)==0|(f|0)>(y|0)?f:y+1|0;y=b;E=67;break}case 105:case 100:{d=O;t=o[d>>2]|0;d=o[d+4>>2]|0;if((d|0)<0){t=ZT(0,0,t|0,d|0)|0;d=A;p=O;o[p>>2]=t;o[p+4>>2]=d;p=1;m=5642;E=66;break t}else{p=(b&2049|0)!=0&1;m=(b&2048|0)==0?(b&1|0)==0?5642:5644:5643;E=66;break t}}case 117:{d=O;p=0;m=5642;t=o[d>>2]|0;d=o[d+4>>2]|0;E=66;break}case 99:{r[k>>0]=o[O>>2];t=k;p=0;m=5642;g=S;d=1;f=y;break}case 109:{d=vT(o[(Jk()|0)>>2]|0)|0;E=71;break}case 115:{d=o[O>>2]|0;d=d|0?d:5652;E=71;break}case 67:{o[P>>2]=o[O>>2];o[T>>2]=0;o[O>>2]=P;g=-1;d=P;E=75;break}case 83:{t=o[O>>2]|0;if(!f){gT(e,32,s,0,b);t=0;E=84}else{g=f;d=t;E=75}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{s=_T(e,+c[O>>3],s,f,b,d)|0;t=w;continue e}default:{p=0;m=5642;g=S;d=f;f=b}}}while(0);t:do{if((E|0)==61){b=O;_=o[b>>2]|0;b=o[b+4>>2]|0;g=dT(_,b,S,d&32)|0;m=(t&8|0)==0|(_|0)==0&(b|0)==0;p=m?0:2;m=m?5642:5642+(d>>4)|0;y=t;t=_;d=b;E=67}else if((E|0)==66){g=hT(t,d,S)|0;y=b;E=67}else if((E|0)==71){E=0;b=mT(d,0,f)|0;_=(b|0)==0;t=d;p=0;m=5642;g=_?d+f|0:b;d=_?f:b-d|0;f=y}else if((E|0)==75){E=0;m=d;t=0;f=0;while(1){p=o[m>>2]|0;if(!p)break;f=yT(I,p)|0;if((f|0)<0|f>>>0>(g-t|0)>>>0)break;t=f+t|0;if(g>>>0>t>>>0)m=m+4|0;else break}if((f|0)<0){l=-1;break e}gT(e,32,s,t,b);if(!t){t=0;E=84}else{p=0;while(1){f=o[d>>2]|0;if(!f){E=84;break t}f=yT(I,f)|0;p=f+p|0;if((p|0)>(t|0)){E=84;break t}sT(e,I,f);if(p>>>0>=t>>>0){E=84;break}else d=d+4|0}}}}while(0);if((E|0)==67){E=0;d=(t|0)!=0|(d|0)!=0;b=(f|0)!=0|d;d=((d^1)&1)+(C-g)|0;t=b?g:S;g=S;d=b?(f|0)>(d|0)?f:d:f;f=(f|0)>-1?y&-65537:y}else if((E|0)==84){E=0;gT(e,32,s,t,b^8192);s=(s|0)>(t|0)?s:t;t=w;continue}_=g-t|0;y=(d|0)<(_|0)?_:d;b=y+p|0;s=(s|0)<(b|0)?b:s;gT(e,32,s,b,f);sT(e,m,p);gT(e,48,s,b,f^65536);gT(e,48,y,_,0);sT(e,t,_);gT(e,32,s,b,f^8192);t=w}e:do{if((E|0)==87)if(!e)if(!v)l=0;else{l=1;while(1){t=o[a+(l<<2)>>2]|0;if(!t)break;fT(u+(l<<3)|0,t,n);l=l+1|0;if((l|0)>=10){l=1;break e}}while(1){if(o[a+(l<<2)>>2]|0){l=-1;break e}l=l+1|0;if((l|0)>=10){l=1;break}}}}while(0);h=N;return l|0}function aT(e){e=e|0;return 0}function lT(e){e=e|0;return}function sT(e,t,n){e=e|0;t=t|0;n=n|0;if(!(o[e>>2]&32))PT(t,n,e)|0;return}function cT(e){e=e|0;var t=0,n=0,i=0;n=o[e>>2]|0;i=(r[n>>0]|0)+-48|0;if(i>>>0<10){t=0;do{t=i+(t*10|0)|0;n=n+1|0;o[e>>2]=n;i=(r[n>>0]|0)+-48|0}while(i>>>0<10)}else t=0;return t|0}function fT(e,t,n){e=e|0;t=t|0;n=n|0;var r=0,i=0,u=0.0;e:do{if(t>>>0<=20)do{switch(t|0){case 9:{r=(o[n>>2]|0)+(4-1)&~(4-1);t=o[r>>2]|0;o[n>>2]=r+4;o[e>>2]=t;break e}case 10:{r=(o[n>>2]|0)+(4-1)&~(4-1);t=o[r>>2]|0;o[n>>2]=r+4;r=e;o[r>>2]=t;o[r+4>>2]=((t|0)<0)<<31>>31;break e}case 11:{r=(o[n>>2]|0)+(4-1)&~(4-1);t=o[r>>2]|0;o[n>>2]=r+4;r=e;o[r>>2]=t;o[r+4>>2]=0;break e}case 12:{r=(o[n>>2]|0)+(8-1)&~(8-1);t=r;i=o[t>>2]|0;t=o[t+4>>2]|0;o[n>>2]=r+8;r=e;o[r>>2]=i;o[r+4>>2]=t;break e}case 13:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;r=(r&65535)<<16>>16;i=e;o[i>>2]=r;o[i+4>>2]=((r|0)<0)<<31>>31;break e}case 14:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;i=e;o[i>>2]=r&65535;o[i+4>>2]=0;break e}case 15:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;r=(r&255)<<24>>24;i=e;o[i>>2]=r;o[i+4>>2]=((r|0)<0)<<31>>31;break e}case 16:{i=(o[n>>2]|0)+(4-1)&~(4-1);r=o[i>>2]|0;o[n>>2]=i+4;i=e;o[i>>2]=r&255;o[i+4>>2]=0;break e}case 17:{i=(o[n>>2]|0)+(8-1)&~(8-1);u=+c[i>>3];o[n>>2]=i+8;c[e>>3]=u;break e}case 18:{i=(o[n>>2]|0)+(8-1)&~(8-1);u=+c[i>>3];o[n>>2]=i+8;c[e>>3]=u;break e}default:break e}}while(0)}while(0);return}function dT(e,t,n,i){e=e|0;t=t|0;n=n|0;i=i|0;if(!((e|0)==0&(t|0)==0))do{n=n+-1|0;r[n>>0]=u[5694+(e&15)>>0]|0|i;e=rx(e|0,t|0,4)|0;t=A}while(!((e|0)==0&(t|0)==0));return n|0}function pT(e,t,n){e=e|0;t=t|0;n=n|0;if(!((e|0)==0&(t|0)==0))do{n=n+-1|0;r[n>>0]=e&7|48;e=rx(e|0,t|0,3)|0;t=A}while(!((e|0)==0&(t|0)==0));return n|0}function hT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0;if(t>>>0>0|(t|0)==0&e>>>0>4294967295){while(1){i=cx(e|0,t|0,10,0)|0;n=n+-1|0;r[n>>0]=i&255|48;i=e;e=ax(e|0,t|0,10,0)|0;if(!(t>>>0>9|(t|0)==9&i>>>0>4294967295))break;else t=A}t=e}else t=e;if(t)while(1){n=n+-1|0;r[n>>0]=(t>>>0)%10|0|48;if(t>>>0<10)break;else t=(t>>>0)/10|0}return n|0}function vT(e){e=e|0;return kT(e,o[(CT()|0)+188>>2]|0)|0}function mT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0;a=t&255;i=(n|0)!=0;e:do{if(i&(e&3|0)!=0){u=t&255;while(1){if((r[e>>0]|0)==u<<24>>24){l=6;break e}e=e+1|0;n=n+-1|0;i=(n|0)!=0;if(!(i&(e&3|0)!=0)){l=5;break}}}else l=5}while(0);if((l|0)==5)if(i)l=6;else n=0;e:do{if((l|0)==6){u=t&255;if((r[e>>0]|0)!=u<<24>>24){i=V(a,16843009)|0;t:do{if(n>>>0>3)while(1){a=o[e>>2]^i;if((a&-2139062144^-2139062144)&a+-16843009|0)break;e=e+4|0;n=n+-4|0;if(n>>>0<=3){l=11;break t}}else l=11}while(0);if((l|0)==11)if(!n){n=0;break}while(1){if((r[e>>0]|0)==u<<24>>24)break e;e=e+1|0;n=n+-1|0;if(!n){n=0;break}}}}}while(0);return(n|0?e:0)|0}function gT(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var o=0,u=0;u=h;h=h+256|0;o=u;if((n|0)>(r|0)&(i&73728|0)==0){i=n-r|0;tx(o|0,t|0,(i>>>0<256?i:256)|0)|0;if(i>>>0>255){t=n-r|0;do{sT(e,o,256);i=i+-256|0}while(i>>>0>255);i=t&255}sT(e,o,i)}h=u;return}function yT(e,t){e=e|0;t=t|0;if(!e)e=0;else e=DT(e,t,0)|0;return e|0}function _T(e,t,n,i,a,l){e=e|0;t=+t;n=n|0;i=i|0;a=a|0;l=l|0;var s=0,c=0,f=0,d=0,p=0,v=0,m=0,g=0.0,y=0,_=0,b=0,w=0,E=0,D=0,S=0,C=0,k=0,T=0,x=0,O=0,P=0,I=0,N=0;N=h;h=h+560|0;f=N+8|0;b=N;I=N+524|0;P=I;d=N+512|0;o[b>>2]=0;O=d+12|0;bT(t)|0;if((A|0)<0){t=-t;T=1;k=5659}else{T=(a&2049|0)!=0&1;k=(a&2048|0)==0?(a&1|0)==0?5660:5665:5662}bT(t)|0;x=A&2146435072;do{if(x>>>0<2146435072|(x|0)==2146435072&0<0){g=+wT(t,b)*2.0;s=g!=0.0;if(s)o[b>>2]=(o[b>>2]|0)+-1;E=l|32;if((E|0)==97){y=l&32;m=(y|0)==0?k:k+9|0;v=T|2;s=12-i|0;do{if(!(i>>>0>11|(s|0)==0)){t=8.0;do{s=s+-1|0;t=t*16.0}while((s|0)!=0);if((r[m>>0]|0)==45){t=-(t+(-g-t));break}else{t=g+t-t;break}}else t=g}while(0);c=o[b>>2]|0;s=(c|0)<0?0-c|0:c;s=hT(s,((s|0)<0)<<31>>31,O)|0;if((s|0)==(O|0)){s=d+11|0;r[s>>0]=48}r[s+-1>>0]=(c>>31&2)+43;p=s+-2|0;r[p>>0]=l+15;d=(i|0)<1;f=(a&8|0)==0;s=I;do{x=~~t;c=s+1|0;r[s>>0]=u[5694+x>>0]|y;t=(t-+(x|0))*16.0;if((c-P|0)==1?!(f&(d&t==0.0)):0){r[c>>0]=46;s=s+2|0}else s=c}while(t!=0.0);x=s-P|0;P=O-p|0;O=(i|0)!=0&(x+-2|0)<(i|0)?i+2|0:x;s=P+v+O|0;gT(e,32,n,s,a);sT(e,m,v);gT(e,48,n,s,a^65536);sT(e,I,x);gT(e,48,O-x|0,0,0);sT(e,p,P);gT(e,32,n,s,a^8192);break}c=(i|0)<0?6:i;if(s){s=(o[b>>2]|0)+-28|0;o[b>>2]=s;t=g*268435456.0}else{t=g;s=o[b>>2]|0}x=(s|0)<0?f:f+288|0;f=x;do{S=~~t>>>0;o[f>>2]=S;f=f+4|0;t=(t-+(S>>>0))*1.0e9}while(t!=0.0);if((s|0)>0){d=x;v=f;while(1){p=(s|0)<29?s:29;s=v+-4|0;if(s>>>0>=d>>>0){f=0;do{D=nx(o[s>>2]|0,0,p|0)|0;D=ex(D|0,A|0,f|0,0)|0;S=A;w=cx(D|0,S|0,1e9,0)|0;o[s>>2]=w;f=ax(D|0,S|0,1e9,0)|0;s=s+-4|0}while(s>>>0>=d>>>0);if(f){d=d+-4|0;o[d>>2]=f}}f=v;while(1){if(f>>>0<=d>>>0)break;s=f+-4|0;if(!(o[s>>2]|0))f=s;else break}s=(o[b>>2]|0)-p|0;o[b>>2]=s;if((s|0)>0)v=f;else break}}else d=x;if((s|0)<0){i=((c+25|0)/9|0)+1|0;_=(E|0)==102;do{y=0-s|0;y=(y|0)<9?y:9;if(d>>>0>>0){p=(1<>>y;m=0;s=d;do{S=o[s>>2]|0;o[s>>2]=(S>>>y)+m;m=V(S&p,v)|0;s=s+4|0}while(s>>>0>>0);s=(o[d>>2]|0)==0?d+4|0:d;if(!m){d=s;s=f}else{o[f>>2]=m;d=s;s=f+4|0}}else{d=(o[d>>2]|0)==0?d+4|0:d;s=f}f=_?x:d;f=(s-f>>2|0)>(i|0)?f+(i<<2)|0:s;s=(o[b>>2]|0)+y|0;o[b>>2]=s}while((s|0)<0);s=d;i=f}else{s=d;i=f}S=x;if(s>>>0>>0){f=(S-s>>2)*9|0;p=o[s>>2]|0;if(p>>>0>=10){d=10;do{d=d*10|0;f=f+1|0}while(p>>>0>=d>>>0)}}else f=0;_=(E|0)==103;w=(c|0)!=0;d=c-((E|0)!=102?f:0)+((w&_)<<31>>31)|0;if((d|0)<(((i-S>>2)*9|0)+-9|0)){d=d+9216|0;y=x+4+(((d|0)/9|0)+-1024<<2)|0;d=((d|0)%9|0)+1|0;if((d|0)<9){p=10;do{p=p*10|0;d=d+1|0}while((d|0)!=9)}else p=10;v=o[y>>2]|0;m=(v>>>0)%(p>>>0)|0;d=(y+4|0)==(i|0);if(!(d&(m|0)==0)){g=(((v>>>0)/(p>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;D=(p|0)/2|0;t=m>>>0>>0?.5:d&(m|0)==(D|0)?1.0:1.5;if(T){D=(r[k>>0]|0)==45;t=D?-t:t;g=D?-g:g}d=v-m|0;o[y>>2]=d;if(g+t!=g){D=d+p|0;o[y>>2]=D;if(D>>>0>999999999){f=y;while(1){d=f+-4|0;o[f>>2]=0;if(d>>>0>>0){s=s+-4|0;o[s>>2]=0}D=(o[d>>2]|0)+1|0;o[d>>2]=D;if(D>>>0>999999999)f=d;else break}}else d=y;f=(S-s>>2)*9|0;v=o[s>>2]|0;if(v>>>0>=10){p=10;do{p=p*10|0;f=f+1|0}while(v>>>0>=p>>>0)}}else d=y}else d=y;d=d+4|0;d=i>>>0>d>>>0?d:i;D=s}else{d=i;D=s}E=d;while(1){if(E>>>0<=D>>>0){b=0;break}s=E+-4|0;if(!(o[s>>2]|0))E=s;else{b=1;break}}i=0-f|0;do{if(_){s=((w^1)&1)+c|0;if((s|0)>(f|0)&(f|0)>-5){p=l+-1|0;c=s+-1-f|0}else{p=l+-2|0;c=s+-1|0}s=a&8;if(!s){if(b?(C=o[E+-4>>2]|0,(C|0)!=0):0){if(!((C>>>0)%10|0)){d=0;s=10;do{s=s*10|0;d=d+1|0}while(!((C>>>0)%(s>>>0)|0|0))}else d=0}else d=9;s=((E-S>>2)*9|0)+-9|0;if((p|32|0)==102){y=s-d|0;y=(y|0)>0?y:0;c=(c|0)<(y|0)?c:y;y=0;break}else{y=s+f-d|0;y=(y|0)>0?y:0;c=(c|0)<(y|0)?c:y;y=0;break}}else y=s}else{p=l;y=a&8}}while(0);_=c|y;v=(_|0)!=0&1;m=(p|32|0)==102;if(m){w=0;s=(f|0)>0?f:0}else{s=(f|0)<0?i:f;s=hT(s,((s|0)<0)<<31>>31,O)|0;d=O;if((d-s|0)<2)do{s=s+-1|0;r[s>>0]=48}while((d-s|0)<2);r[s+-1>>0]=(f>>31&2)+43;s=s+-2|0;r[s>>0]=p;w=s;s=d-s|0}s=T+1+c+v+s|0;gT(e,32,n,s,a);sT(e,k,T);gT(e,48,n,s,a^65536);if(m){p=D>>>0>x>>>0?x:D;y=I+9|0;v=y;m=I+8|0;d=p;do{f=hT(o[d>>2]|0,0,y)|0;if((d|0)==(p|0)){if((f|0)==(y|0)){r[m>>0]=48;f=m}}else if(f>>>0>I>>>0){tx(I|0,48,f-P|0)|0;do{f=f+-1|0}while(f>>>0>I>>>0)}sT(e,f,v-f|0);d=d+4|0}while(d>>>0<=x>>>0);if(_|0)sT(e,5710,1);if(d>>>0>>0&(c|0)>0)while(1){f=hT(o[d>>2]|0,0,y)|0;if(f>>>0>I>>>0){tx(I|0,48,f-P|0)|0;do{f=f+-1|0}while(f>>>0>I>>>0)}sT(e,f,(c|0)<9?c:9);d=d+4|0;f=c+-9|0;if(!(d>>>0>>0&(c|0)>9)){c=f;break}else c=f}gT(e,48,c+9|0,9,0)}else{_=b?E:D+4|0;if((c|0)>-1){b=I+9|0;y=(y|0)==0;i=b;v=0-P|0;m=I+8|0;p=D;do{f=hT(o[p>>2]|0,0,b)|0;if((f|0)==(b|0)){r[m>>0]=48;f=m}do{if((p|0)==(D|0)){d=f+1|0;sT(e,f,1);if(y&(c|0)<1){f=d;break}sT(e,5710,1);f=d}else{if(f>>>0<=I>>>0)break;tx(I|0,48,f+v|0)|0;do{f=f+-1|0}while(f>>>0>I>>>0)}}while(0);P=i-f|0;sT(e,f,(c|0)>(P|0)?P:c);c=c-P|0;p=p+4|0}while(p>>>0<_>>>0&(c|0)>-1)}gT(e,48,c+18|0,18,0);sT(e,w,O-w|0)}gT(e,32,n,s,a^8192)}else{I=(l&32|0)!=0;s=T+3|0;gT(e,32,n,s,a&-65537);sT(e,k,T);sT(e,t!=t|0.0!=0.0?I?5686:5690:I?5678:5682,3);gT(e,32,n,s,a^8192)}}while(0);h=N;return((s|0)<(n|0)?n:s)|0}function bT(e){e=+e;var t=0;c[d>>3]=e;t=o[d>>2]|0;A=o[d+4>>2]|0;return t|0}function wT(e,t){e=+e;t=t|0;return+ +ET(e,t)}function ET(e,t){e=+e;t=t|0;var n=0,r=0,i=0;c[d>>3]=e;n=o[d>>2]|0;r=o[d+4>>2]|0;i=rx(n|0,r|0,52)|0;switch(i&2047){case 0:{if(e!=0.0){e=+ET(e*18446744073709551616.0,t);n=(o[t>>2]|0)+-64|0}else n=0;o[t>>2]=n;break}case 2047:break;default:{o[t>>2]=(i&2047)+-1022;o[d>>2]=n;o[d+4>>2]=r&-2146435073|1071644672;e=+c[d>>3]}}return+e}function DT(e,t,n){e=e|0;t=t|0;n=n|0;do{if(e){if(t>>>0<128){r[e>>0]=t;e=1;break}if(!(o[o[(ST()|0)+188>>2]>>2]|0))if((t&-128|0)==57216){r[e>>0]=t;e=1;break}else{o[(Jk()|0)>>2]=84;e=-1;break}if(t>>>0<2048){r[e>>0]=t>>>6|192;r[e+1>>0]=t&63|128;e=2;break}if(t>>>0<55296|(t&-8192|0)==57344){r[e>>0]=t>>>12|224;r[e+1>>0]=t>>>6&63|128;r[e+2>>0]=t&63|128;e=3;break}if((t+-65536|0)>>>0<1048576){r[e>>0]=t>>>18|240;r[e+1>>0]=t>>>12&63|128;r[e+2>>0]=t>>>6&63|128;r[e+3>>0]=t&63|128;e=4;break}else{o[(Jk()|0)>>2]=84;e=-1;break}}else e=1}while(0);return e|0}function ST(){return eT()|0}function CT(){return eT()|0}function kT(e,t){e=e|0;t=t|0;var n=0,i=0;i=0;while(1){if((u[5712+i>>0]|0)==(e|0)){e=2;break}n=i+1|0;if((n|0)==87){n=5800;i=87;e=5;break}else i=n}if((e|0)==2)if(!i)n=5800;else{n=5800;e=5}if((e|0)==5)while(1){do{e=n;n=n+1|0}while((r[e>>0]|0)!=0);i=i+-1|0;if(!i)break;else e=5}return TT(n,o[t+20>>2]|0)|0}function TT(e,t){e=e|0;t=t|0;return xT(e,t)|0}function xT(e,t){e=e|0;t=t|0;if(!t)t=0;else t=AT(o[t>>2]|0,o[t+4>>2]|0,e)|0;return(t|0?t:e)|0}function AT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,h=0;h=(o[e>>2]|0)+1794895138|0;a=OT(o[e+8>>2]|0,h)|0;i=OT(o[e+12>>2]|0,h)|0;u=OT(o[e+16>>2]|0,h)|0;e:do{if((a>>>0>>2>>>0?(p=t-(a<<2)|0,i>>>0

>>0&u>>>0

>>0):0)?((u|i)&3|0)==0:0){p=i>>>2;d=u>>>2;f=0;while(1){s=a>>>1;c=f+s|0;l=c<<1;u=l+p|0;i=OT(o[e+(u<<2)>>2]|0,h)|0;u=OT(o[e+(u+1<<2)>>2]|0,h)|0;if(!(u>>>0>>0&i>>>0<(t-u|0)>>>0)){i=0;break e}if(r[e+(u+i)>>0]|0){i=0;break e}i=rT(n,e+u|0)|0;if(!i)break;i=(i|0)<0;if((a|0)==1){i=0;break e}else{f=i?f:c;a=i?s:a-s|0}}i=l+d|0;u=OT(o[e+(i<<2)>>2]|0,h)|0;i=OT(o[e+(i+1<<2)>>2]|0,h)|0;if(i>>>0>>0&u>>>0<(t-i|0)>>>0)i=(r[e+(i+u)>>0]|0)==0?e+i|0:0;else i=0}else i=0}while(0);return i|0}function OT(e,t){e=e|0;t=t|0;var n=0;n=fx(e|0)|0;return((t|0)==0?e:n)|0}function PT(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0,s=0;i=n+16|0;u=o[i>>2]|0;if(!u){if(!(IT(n)|0)){u=o[i>>2]|0;a=5}else i=0}else a=5;e:do{if((a|0)==5){s=n+20|0;l=o[s>>2]|0;i=l;if((u-l|0)>>>0>>0){i=_A[o[n+36>>2]&7](n,e,t)|0;break}t:do{if((r[n+75>>0]|0)>-1){l=t;while(1){if(!l){a=0;u=e;break t}u=l+-1|0;if((r[e+u>>0]|0)==10)break;else l=u}i=_A[o[n+36>>2]&7](n,e,l)|0;if(i>>>0>>0)break e;a=l;u=e+l|0;t=t-l|0;i=o[s>>2]|0}else{a=0;u=e}}while(0);ix(i|0,u|0,t|0)|0;o[s>>2]=(o[s>>2]|0)+t;i=a+t|0}}while(0);return i|0}function IT(e){e=e|0;var t=0,n=0;t=e+74|0;n=r[t>>0]|0;r[t>>0]=n+255|n;t=o[e>>2]|0;if(!(t&8)){o[e+8>>2]=0;o[e+4>>2]=0;n=o[e+44>>2]|0;o[e+28>>2]=n;o[e+20>>2]=n;o[e+16>>2]=n+(o[e+48>>2]|0);e=0}else{o[e>>2]=t|32;e=-1}return e|0}function NT(e,t){e=Y(e);t=Y(t);var n=0,r=0;n=MT(e)|0;do{if((n&2147483647)>>>0<=2139095040){r=MT(t)|0;if((r&2147483647)>>>0<=2139095040)if((r^n|0)<0){e=(n|0)<0?t:e;break}else{e=e>2]=e,o[d>>2]|0)|0}function RT(e,t){e=Y(e);t=Y(t);var n=0,r=0;n=FT(e)|0;do{if((n&2147483647)>>>0<=2139095040){r=FT(t)|0;if((r&2147483647)>>>0<=2139095040)if((r^n|0)<0){e=(n|0)<0?e:t;break}else{e=e>2]=e,o[d>>2]|0)|0}function LT(e,t){e=Y(e);t=Y(t);var n=0,r=0,i=0,u=0,a=0,l=0,c=0,f=0;u=(s[d>>2]=e,o[d>>2]|0);l=(s[d>>2]=t,o[d>>2]|0);n=u>>>23&255;a=l>>>23&255;c=u&-2147483648;i=l<<1;e:do{if((i|0)!=0?!((n|0)==255|((BT(t)|0)&2147483647)>>>0>2139095040):0){r=u<<1;if(r>>>0<=i>>>0){t=Y(e*Y(0.0));return Y((r|0)==(i|0)?t:e)}if(!n){n=u<<9;if((n|0)>-1){r=n;n=0;do{n=n+-1|0;r=r<<1}while((r|0)>-1)}else n=0;r=u<<1-n}else r=u&8388607|8388608;if(!a){u=l<<9;if((u|0)>-1){i=0;do{i=i+-1|0;u=u<<1}while((u|0)>-1)}else i=0;a=i;l=l<<1-i}else l=l&8388607|8388608;i=r-l|0;u=(i|0)>-1;t:do{if((n|0)>(a|0)){while(1){if(u)if(!i)break;else r=i;r=r<<1;n=n+-1|0;i=r-l|0;u=(i|0)>-1;if((n|0)<=(a|0))break t}t=Y(e*Y(0.0));break e}}while(0);if(u)if(!i){t=Y(e*Y(0.0));break}else r=i;if(r>>>0<8388608)do{r=r<<1;n=n+-1|0}while(r>>>0<8388608);if((n|0)>0)n=r+-8388608|n<<23;else n=r>>>(1-n|0);t=(o[d>>2]=n|c,Y(s[d>>2]))}else f=3}while(0);if((f|0)==3){t=Y(e*t);t=Y(t/t)}return Y(t)}function BT(e){e=Y(e);return(s[d>>2]=e,o[d>>2]|0)|0}function jT(e,t){e=e|0;t=t|0;return oT(o[582]|0,e,t)|0}function UT(e){e=e|0;Ye()}function zT(e){e=e|0;return}function WT(e,t){e=e|0;t=t|0;return 0}function HT(e){e=e|0;if((VT(e+4|0)|0)==-1){hA[o[(o[e>>2]|0)+8>>2]&127](e);e=1}else e=0;return e|0}function VT(e){e=e|0;var t=0;t=o[e>>2]|0;o[e>>2]=t+-1;return t+-1|0}function qT(e){e=e|0;if(HT(e)|0)GT(e);return}function GT(e){e=e|0;var t=0;t=e+8|0;if(!((o[t>>2]|0)!=0?(VT(t)|0)!=-1:0))hA[o[(o[e>>2]|0)+16>>2]&127](e);return}function $T(e){e=e|0;var t=0;t=(e|0)==0?1:e;while(1){e=qk(t)|0;if(e|0)break;e=QT()|0;if(!e){e=0;break}IA[e&0]()}return e|0}function YT(e){e=e|0;return $T(e)|0}function KT(e){e=e|0;Gk(e);return}function XT(e){e=e|0;if((r[e+11>>0]|0)<0)KT(o[e>>2]|0);return}function QT(){var e=0;e=o[2923]|0;o[2923]=e+0;return e|0}function JT(){}function ZT(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;r=t-r-(n>>>0>e>>>0|0)>>>0;return(A=r,e-n>>>0|0)|0}function ex(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;n=e+n>>>0;return(A=t+r+(n>>>0>>0|0)>>>0,n|0)|0}function tx(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0,l=0;a=e+n|0;t=t&255;if((n|0)>=67){while(e&3){r[e>>0]=t;e=e+1|0}i=a&-4|0;u=i-64|0;l=t|t<<8|t<<16|t<<24;while((e|0)<=(u|0)){o[e>>2]=l;o[e+4>>2]=l;o[e+8>>2]=l;o[e+12>>2]=l;o[e+16>>2]=l;o[e+20>>2]=l;o[e+24>>2]=l;o[e+28>>2]=l;o[e+32>>2]=l;o[e+36>>2]=l;o[e+40>>2]=l;o[e+44>>2]=l;o[e+48>>2]=l;o[e+52>>2]=l;o[e+56>>2]=l;o[e+60>>2]=l;e=e+64|0}while((e|0)<(i|0)){o[e>>2]=l;e=e+4|0}}while((e|0)<(a|0)){r[e>>0]=t;e=e+1|0}return a-n|0}function nx(e,t,n){e=e|0;t=t|0;n=n|0;if((n|0)<32){A=t<>>32-n;return e<>>n;return e>>>n|(t&(1<>>n-32|0}function ix(e,t,n){e=e|0;t=t|0;n=n|0;var i=0,u=0,a=0;if((n|0)>=8192)return He(e|0,t|0,n|0)|0;a=e|0;u=e+n|0;if((e&3)==(t&3)){while(e&3){if(!n)return a|0;r[e>>0]=r[t>>0]|0;e=e+1|0;t=t+1|0;n=n-1|0}n=u&-4|0;i=n-64|0;while((e|0)<=(i|0)){o[e>>2]=o[t>>2];o[e+4>>2]=o[t+4>>2];o[e+8>>2]=o[t+8>>2];o[e+12>>2]=o[t+12>>2];o[e+16>>2]=o[t+16>>2];o[e+20>>2]=o[t+20>>2];o[e+24>>2]=o[t+24>>2];o[e+28>>2]=o[t+28>>2];o[e+32>>2]=o[t+32>>2];o[e+36>>2]=o[t+36>>2];o[e+40>>2]=o[t+40>>2];o[e+44>>2]=o[t+44>>2];o[e+48>>2]=o[t+48>>2];o[e+52>>2]=o[t+52>>2];o[e+56>>2]=o[t+56>>2];o[e+60>>2]=o[t+60>>2];e=e+64|0;t=t+64|0}while((e|0)<(n|0)){o[e>>2]=o[t>>2];e=e+4|0;t=t+4|0}}else{n=u-4|0;while((e|0)<(n|0)){r[e>>0]=r[t>>0]|0;r[e+1>>0]=r[t+1>>0]|0;r[e+2>>0]=r[t+2>>0]|0;r[e+3>>0]=r[t+3>>0]|0;e=e+4|0;t=t+4|0}}while((e|0)<(u|0)){r[e>>0]=r[t>>0]|0;e=e+1|0;t=t+1|0}return a|0}function ox(e){e=e|0;var t=0;t=r[m+(e&255)>>0]|0;if((t|0)<8)return t|0;t=r[m+(e>>8&255)>>0]|0;if((t|0)<8)return t+8|0;t=r[m+(e>>16&255)>>0]|0;if((t|0)<8)return t+16|0;return(r[m+(e>>>24)>>0]|0)+24|0}function ux(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;var u=0,a=0,l=0,s=0,c=0,f=0,d=0,p=0,h=0,v=0;f=e;s=t;c=s;a=n;p=r;l=p;if(!c){u=(i|0)!=0;if(!l){if(u){o[i>>2]=(f>>>0)%(a>>>0);o[i+4>>2]=0}p=0;i=(f>>>0)/(a>>>0)>>>0;return(A=p,i)|0}else{if(!u){p=0;i=0;return(A=p,i)|0}o[i>>2]=e|0;o[i+4>>2]=t&0;p=0;i=0;return(A=p,i)|0}}u=(l|0)==0;do{if(a){if(!u){u=($(l|0)|0)-($(c|0)|0)|0;if(u>>>0<=31){d=u+1|0;l=31-u|0;t=u-31>>31;a=d;e=f>>>(d>>>0)&t|c<>>(d>>>0)&t;u=0;l=f<>2]=e|0;o[i+4>>2]=s|t&0;p=0;i=0;return(A=p,i)|0}u=a-1|0;if(u&a|0){l=($(a|0)|0)+33-($(c|0)|0)|0;v=64-l|0;d=32-l|0;s=d>>31;h=l-32|0;t=h>>31;a=l;e=d-1>>31&c>>>(h>>>0)|(c<>>(l>>>0))&t;t=t&c>>>(l>>>0);u=f<>>(h>>>0))&s|f<>31;break}if(i|0){o[i>>2]=u&f;o[i+4>>2]=0}if((a|0)==1){h=s|t&0;v=e|0|0;return(A=h,v)|0}else{v=ox(a|0)|0;h=c>>>(v>>>0)|0;v=c<<32-v|f>>>(v>>>0)|0;return(A=h,v)|0}}else{if(u){if(i|0){o[i>>2]=(c>>>0)%(a>>>0);o[i+4>>2]=0}h=0;v=(c>>>0)/(a>>>0)>>>0;return(A=h,v)|0}if(!f){if(i|0){o[i>>2]=0;o[i+4>>2]=(c>>>0)%(l>>>0)}h=0;v=(c>>>0)/(l>>>0)>>>0;return(A=h,v)|0}u=l-1|0;if(!(u&l)){if(i|0){o[i>>2]=e|0;o[i+4>>2]=u&c|t&0}h=0;v=c>>>((ox(l|0)|0)>>>0);return(A=h,v)|0}u=($(l|0)|0)-($(c|0)|0)|0;if(u>>>0<=30){t=u+1|0;l=31-u|0;a=t;e=c<>>(t>>>0);t=c>>>(t>>>0);u=0;l=f<>2]=e|0;o[i+4>>2]=s|t&0;h=0;v=0;return(A=h,v)|0}}while(0);if(!a){c=l;s=0;l=0}else{d=n|0|0;f=p|r&0;c=ex(d|0,f|0,-1,-1)|0;n=A;s=l;l=0;do{r=s;s=u>>>31|s<<1;u=l|u<<1;r=e<<1|r>>>31|0;p=e>>>31|t<<1|0;ZT(c|0,n|0,r|0,p|0)|0;v=A;h=v>>31|((v|0)<0?-1:0)<<1;l=h&1;e=ZT(r|0,p|0,h&d|0,(((v|0)<0?-1:0)>>31|((v|0)<0?-1:0)<<1)&f|0)|0;t=A;a=a-1|0}while((a|0)!=0);c=s;s=0}a=0;if(i|0){o[i>>2]=e;o[i+4>>2]=t}h=(u|0)>>>31|(c|a)<<1|(a<<1|u>>>31)&0|s;v=(u<<1|0>>>31)&-2|l;return(A=h,v)|0}function ax(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;return ux(e,t,n,r,0)|0}function lx(e){e=e|0;var t=0,n=0;n=e+15&-16|0;t=o[f>>2]|0;e=t+n|0;if((n|0)>0&(e|0)<(t|0)|(e|0)<0){Z()|0;qe(12);return-1}o[f>>2]=e;if((e|0)>(J()|0)?(Q()|0)==0:0){o[f>>2]=t;qe(12);return-1}return t|0}function sx(e,t,n){e=e|0;t=t|0;n=n|0;var i=0;if((t|0)<(e|0)&(e|0)<(t+n|0)){i=e;t=t+n|0;e=e+n|0;while((n|0)>0){e=e-1|0;t=t-1|0;n=n-1|0;r[e>>0]=r[t>>0]|0}e=i}else ix(e,t,n)|0;return e|0}function cx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;var i=0,u=0;u=h;h=h+16|0;i=u|0;ux(e,t,n,r,i)|0;h=u;return(A=o[i+4>>2]|0,o[i>>2]|0)|0}function fx(e){e=e|0;return(e&255)<<24|(e>>8&255)<<16|(e>>16&255)<<8|e>>>24|0}function dx(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;cA[e&1](t|0,n|0,r|0,i|0,o|0)}function px(e,t,n){e=e|0;t=t|0;n=Y(n);fA[e&1](t|0,Y(n))}function hx(e,t,n){e=e|0;t=t|0;n=+n;dA[e&31](t|0,+n)}function vx(e,t,n,r){e=e|0;t=t|0;n=Y(n);r=Y(r);return Y(pA[e&0](t|0,Y(n),Y(r)))}function mx(e,t){e=e|0;t=t|0;hA[e&127](t|0)}function gx(e,t,n){e=e|0;t=t|0;n=n|0;vA[e&31](t|0,n|0)}function yx(e,t){e=e|0;t=t|0;return mA[e&31](t|0)|0}function _x(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;gA[e&1](t|0,+n,+r,i|0)}function bx(e,t,n,r){e=e|0;t=t|0;n=+n;r=+r;yA[e&1](t|0,+n,+r)}function wx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;return _A[e&7](t|0,n|0,r|0)|0}function Ex(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;return+bA[e&1](t|0,n|0,r|0)}function Dx(e,t){e=e|0;t=t|0;return+wA[e&15](t|0)}function Sx(e,t,n){e=e|0;t=t|0;n=+n;return EA[e&1](t|0,+n)|0}function Cx(e,t,n){e=e|0;t=t|0;n=n|0;return DA[e&15](t|0,n|0)|0}function kx(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=+r;i=+i;o=o|0;SA[e&1](t|0,n|0,+r,+i,o|0)}function Tx(e,t,n,r,i,o,u){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;u=u|0;CA[e&1](t|0,n|0,r|0,i|0,o|0,u|0)}function xx(e,t,n){e=e|0;t=t|0;n=n|0;return+kA[e&7](t|0,n|0)}function Ax(e){e=e|0;return TA[e&7]()|0}function Ox(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;return xA[e&1](t|0,n|0,r|0,i|0,o|0)|0}function Px(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=+i;AA[e&1](t|0,n|0,r|0,+i)}function Ix(e,t,n,r,i,o,u){e=e|0;t=t|0;n=n|0;r=Y(r);i=i|0;o=Y(o);u=u|0;OA[e&1](t|0,n|0,Y(r),i|0,Y(o),u|0)}function Nx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;PA[e&15](t|0,n|0,r|0)}function Mx(e){e=e|0;IA[e&0]()}function Rx(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;NA[e&15](t|0,n|0,+r)}function Fx(e,t,n){e=e|0;t=+t;n=+n;return MA[e&1](+t,+n)|0}function Lx(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;RA[e&15](t|0,n|0,r|0,i|0)}function Bx(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;K(0)}function jx(e,t){e=e|0;t=Y(t);K(1)}function Ux(e,t){e=e|0;t=+t;K(2)}function zx(e,t,n){e=e|0;t=Y(t);n=Y(n);K(3);return ft}function Wx(e){e=e|0;K(4)}function Hx(e,t){e=e|0;t=t|0;K(5)}function Vx(e){e=e|0;K(6);return 0}function qx(e,t,n,r){e=e|0;t=+t;n=+n;r=r|0;K(7)}function Gx(e,t,n){e=e|0;t=+t;n=+n;K(8)}function $x(e,t,n){e=e|0;t=t|0;n=n|0;K(9);return 0}function Yx(e,t,n){e=e|0;t=t|0;n=n|0;K(10);return 0.0}function Kx(e){e=e|0;K(11);return 0.0}function Xx(e,t){e=e|0;t=+t;K(12);return 0}function Qx(e,t){e=e|0;t=t|0;K(13);return 0}function Jx(e,t,n,r,i){e=e|0;t=t|0;n=+n;r=+r;i=i|0;K(14)}function Zx(e,t,n,r,i,o){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;o=o|0;K(15)}function eA(e,t){e=e|0;t=t|0;K(16);return 0.0}function tA(){K(17);return 0}function nA(e,t,n,r,i){e=e|0;t=t|0;n=n|0;r=r|0;i=i|0;K(18);return 0}function rA(e,t,n,r){e=e|0;t=t|0;n=n|0;r=+r;K(19)}function iA(e,t,n,r,i,o){e=e|0;t=t|0;n=Y(n);r=r|0;i=Y(i);o=o|0;K(20)}function oA(e,t,n){e=e|0;t=t|0;n=n|0;K(21)}function uA(){K(22)}function aA(e,t,n){e=e|0;t=t|0;n=+n;K(23)}function lA(e,t){e=+e;t=+t;K(24);return 0}function sA(e,t,n,r){e=e|0;t=t|0;n=n|0;r=r|0;K(25)}var cA=[Bx,DE];var fA=[jx,qi];var dA=[Ux,yo,_o,bo,wo,Eo,Do,So,ko,To,Ao,Oo,Po,Io,No,Mo,Ro,Fo,Lo,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux,Ux];var pA=[zx];var hA=[Wx,zT,hl,vl,ml,Kd,Xd,Qd,yb,_b,bb,oE,uE,aE,uk,ak,lk,bt,Xi,to,Co,xo,ju,Uu,Ka,Sl,Wl,ps,Ns,rc,kc,qc,df,Mf,Zf,yd,Ld,gp,Fp,th,bh,jh,iv,kv,Vv,am,xm,Wi,cg,Ag,Qg,yy,Fy,o_,g_,b_,U_,H_,ab,Db,kb,Gb,pw,Cl,OD,pS,PS,KS,bC,BC,XC,ZC,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx,Wx];var vA=[Hx,no,ro,uo,ao,lo,so,co,fo,vo,mo,go,eu,ru,iu,ou,uu,au,lu,pu,gu,Ku,Ov,$v,Ey,ND,ww,eS,Hx,Hx,Hx,Hx];var mA=[Vx,Yk,Ki,zo,qo,Go,$o,Yo,Ko,Xo,Jo,Zo,hu,vu,zu,Pm,Uy,Kb,BD,UD,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx,Vx];var gA=[qx,Wu];var yA=[Gx,cb];var _A=[$x,Kk,Xk,nT,ac,wp,hg,ZS];var bA=[Yx,rd];var wA=[Kx,tu,nu,su,Hu,Vu,qu,Gu,$u,Yu,Kx,Kx,Kx,Kx,Kx,Kx];var EA=[Xx,p_];var DA=[Qx,WT,mu,tl,gs,Oc,Kc,zd,Up,fm,Gi,RS,Qx,Qx,Qx,Qx];var SA=[Jx,Gl];var CA=[Zx,SC];var kA=[eA,cu,Xu,Qu,Ju,Ed,eA,eA];var TA=[tA,Zu,$i,Ui,C_,$_,Pb,rk];var xA=[nA,Fr];var AA=[rA,Sh];var OA=[iA,_u];var PA=[oA,Wo,Qo,fu,du,Ls,mf,Hh,lv,Vi,JE,gS,WC,oA,oA,oA];var IA=[uA];var NA=[aA,io,oo,po,ho,Bo,jo,Uo,oh,Ng,l_,aA,aA,aA,aA,aA];var MA=[lA,vb];var RA=[sA,Bf,jm,ty,Ky,P_,Z_,Bb,yw,qD,hk,sA,sA,sA,sA,sA];return{_llvm_bswap_i32:fx,dynCall_idd:Fx,dynCall_i:Ax,_i64Subtract:ZT,___udivdi3:ax,dynCall_vif:px,setThrew:mt,dynCall_viii:Nx,_bitshift64Lshr:rx,_bitshift64Shl:nx,dynCall_vi:mx,dynCall_viiddi:kx,dynCall_diii:Ex,dynCall_iii:Cx,_memset:tx,_sbrk:lx,_memcpy:ix,__GLOBAL__sub_I_Yoga_cpp:ji,dynCall_vii:gx,___uremdi3:cx,dynCall_vid:hx,stackAlloc:dt,_nbind_init:Ak,getTempRet0:yt,dynCall_di:Dx,dynCall_iid:Sx,setTempRet0:gt,_i64Add:ex,dynCall_fiff:vx,dynCall_iiii:wx,_emscripten_get_global_libc:$k,dynCall_viid:Rx,dynCall_viiid:Px,dynCall_viififi:Ix,dynCall_ii:yx,__GLOBAL__sub_I_Binding_cc:wD,dynCall_viiii:Lx,dynCall_iiiiii:Ox,stackSave:pt,dynCall_viiiii:dx,__GLOBAL__sub_I_nbind_cc:ea,dynCall_vidd:bx,_free:Gk,runPostSets:JT,dynCall_viiiiii:Tx,establishStackSpace:vt,_memmove:sx,stackRestore:ht,_malloc:qk,__GLOBAL__sub_I_common_cc:iw,dynCall_viddi:_x,dynCall_dii:xx,dynCall_v:Mx}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii,initialStackTop;function ExitStatus(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm,ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var preloadStartTime=null,calledMain=!1;function run(e){function t(){Module.calledRun||(Module.calledRun=!0,ABORT||(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(e),postRun()))}e=e||Module.arguments,null===preloadStartTime&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0||Module.calledRun||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),t()}),1)):t()))}function exit(e,t){t&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=e,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(e)),ENVIRONMENT_IS_NODE&&process.exit(e),Module.quit(e,new ExitStatus(e)))}dependenciesFulfilled=function e(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=e)},Module.callMain=Module.callMain=function(e){e=e||[],ensureInitRuntime();var t=e.length+1;function n(){for(var e=0;e<3;e++)r.push(0)}var r=[allocate(intArrayFromString(Module.thisProgram),"i8",ALLOC_NORMAL)];n();for(var i=0;i0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()},void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return wrapper}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__=[]))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},3019:e=>{"use strict";e.exports={ALIGN_COUNT:8,ALIGN_AUTO:0,ALIGN_FLEX_START:1,ALIGN_CENTER:2,ALIGN_FLEX_END:3,ALIGN_STRETCH:4,ALIGN_BASELINE:5,ALIGN_SPACE_BETWEEN:6,ALIGN_SPACE_AROUND:7,DIMENSION_COUNT:2,DIMENSION_WIDTH:0,DIMENSION_HEIGHT:1,DIRECTION_COUNT:3,DIRECTION_INHERIT:0,DIRECTION_LTR:1,DIRECTION_RTL:2,DISPLAY_COUNT:2,DISPLAY_FLEX:0,DISPLAY_NONE:1,EDGE_COUNT:9,EDGE_LEFT:0,EDGE_TOP:1,EDGE_RIGHT:2,EDGE_BOTTOM:3,EDGE_START:4,EDGE_END:5,EDGE_HORIZONTAL:6,EDGE_VERTICAL:7,EDGE_ALL:8,EXPERIMENTAL_FEATURE_COUNT:1,EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS:0,FLEX_DIRECTION_COUNT:4,FLEX_DIRECTION_COLUMN:0,FLEX_DIRECTION_COLUMN_REVERSE:1,FLEX_DIRECTION_ROW:2,FLEX_DIRECTION_ROW_REVERSE:3,JUSTIFY_COUNT:6,JUSTIFY_FLEX_START:0,JUSTIFY_CENTER:1,JUSTIFY_FLEX_END:2,JUSTIFY_SPACE_BETWEEN:3,JUSTIFY_SPACE_AROUND:4,JUSTIFY_SPACE_EVENLY:5,LOG_LEVEL_COUNT:6,LOG_LEVEL_ERROR:0,LOG_LEVEL_WARN:1,LOG_LEVEL_INFO:2,LOG_LEVEL_DEBUG:3,LOG_LEVEL_VERBOSE:4,LOG_LEVEL_FATAL:5,MEASURE_MODE_COUNT:3,MEASURE_MODE_UNDEFINED:0,MEASURE_MODE_EXACTLY:1,MEASURE_MODE_AT_MOST:2,NODE_TYPE_COUNT:2,NODE_TYPE_DEFAULT:0,NODE_TYPE_TEXT:1,OVERFLOW_COUNT:3,OVERFLOW_VISIBLE:0,OVERFLOW_HIDDEN:1,OVERFLOW_SCROLL:2,POSITION_TYPE_COUNT:2,POSITION_TYPE_RELATIVE:0,POSITION_TYPE_ABSOLUTE:1,PRINT_OPTIONS_COUNT:3,PRINT_OPTIONS_LAYOUT:1,PRINT_OPTIONS_STYLE:2,PRINT_OPTIONS_CHILDREN:4,UNIT_COUNT:4,UNIT_UNDEFINED:0,UNIT_POINT:1,UNIT_PERCENT:2,UNIT_AUTO:3,WRAP_COUNT:3,WRAP_NO_WRAP:0,WRAP_WRAP:1,WRAP_WRAP_REVERSE:2}},6401:(e,t,n)=>{"use strict";var r=n(7180),i=n(3354),o=!1,u=null;if(i({},(function(e,t){if(!o){if(o=!0,e)throw e;u=t}})),!o)throw new Error("Failed to load the yoga module - it needed to be loaded synchronously, but didn't");e.exports=r(u.bind,u.lib)},7180:(e,t,n)=>{"use strict";var r=Object.assign||function(e){for(var t=1;t"}}]),e}(),s=function(){function e(t,n){u(this,e),this.width=t,this.height=n}return i(e,null,[{key:"fromJS",value:function(t){return new e(t.width,t.height)}}]),i(e,[{key:"fromJS",value:function(e){e(this.width,this.height)}},{key:"toString",value:function(){return""}}]),e}(),c=function(){function e(t,n){u(this,e),this.unit=t,this.value=n}return i(e,[{key:"fromJS",value:function(e){e(this.unit,this.value)}},{key:"toString",value:function(){switch(this.unit){case a.UNIT_POINT:return String(this.value);case a.UNIT_PERCENT:return this.value+"%";case a.UNIT_AUTO:return"auto";default:return this.value+"?"}}},{key:"valueOf",value:function(){return this.value}}]),e}();e.exports=function(e,t){function n(e,t,n){var r=e[t];e[t]=function(){for(var e=arguments.length,t=Array(e),i=0;i1?t-1:0),i=1;i1&&void 0!==arguments[1]?arguments[1]:NaN,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:NaN,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:a.DIRECTION_LTR;return e.call(this,t,n,r)})),r({Config:t.Config,Node:t.Node,Layout:e("Layout",l),Size:e("Size",s),Value:e("Value",c),getInstanceCount:function(){return t.getInstanceCount.apply(t,arguments)}},a)}},2357:e=>{"use strict";e.exports=require("assert")},6417:e=>{"use strict";e.exports=require("crypto")},8614:e=>{"use strict";e.exports=require("events")},5747:e=>{"use strict";e.exports=require("fs")},8605:e=>{"use strict";e.exports=require("http")},7211:e=>{"use strict";e.exports=require("https")},2282:e=>{"use strict";e.exports=require("module")},1631:e=>{"use strict";e.exports=require("net")},2087:e=>{"use strict";e.exports=require("os")},2413:e=>{"use strict";e.exports=require("stream")},4016:e=>{"use strict";e.exports=require("tls")},3867:e=>{"use strict";e.exports=require("tty")},8835:e=>{"use strict";e.exports=require("url")},8761:e=>{"use strict";e.exports=require("zlib")}},__webpack_module_cache__={};function __webpack_require__(e){if(__webpack_module_cache__[e])return __webpack_module_cache__[e].exports;var t=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(t.exports,t,t.exports,__webpack_require__),t.loaded=!0,t.exports}return __webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),__webpack_require__(7560)})(); +return plugin; +} +}; \ No newline at end of file diff --git a/.yarn/releases/yarn-2.4.1.cjs b/.yarn/releases/yarn-2.4.1.cjs new file mode 100755 index 00000000..65ec5dde --- /dev/null +++ b/.yarn/releases/yarn-2.4.1.cjs @@ -0,0 +1,55 @@ +#!/usr/bin/env node +module.exports=(()=>{var e={25545:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=25545,e.exports=t},44692:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>g});var A=r(54143);const n={optional:!0},o=[["@samverschueren/stream-to-observable@<0.3.1",{peerDependenciesMeta:{rxjs:n,zenObservable:n}}],["any-observable@<0.5.1",{peerDependenciesMeta:{rxjs:n,zenObservable:n}}],["@pm2/agent@<1.0.4",{dependencies:{debug:"*"}}],["debug@<4.2.0",{peerDependenciesMeta:{"supports-color":n}}],["got@<11",{dependencies:{"@types/responselike":"^1.0.0","@types/keyv":"^3.1.1"}}],["cacheable-lookup@<4.1.2",{dependencies:{"@types/keyv":"^3.1.1"}}],["http-link-dataloader@*",{peerDependencies:{graphql:"^0.13.1 || ^14.0.0"}}],["typescript-language-server@*",{dependencies:{"vscode-jsonrpc":"^5.0.1","vscode-languageserver-protocol":"^3.15.0"}}],["postcss-syntax@*",{peerDependenciesMeta:{"postcss-html":n,"postcss-jsx":n,"postcss-less":n,"postcss-markdown":n,"postcss-scss":n}}],["jss-plugin-rule-value-function@<=10.1.1",{dependencies:{"tiny-warning":"^1.0.2"}}],["ink-select-input@<4.1.0",{peerDependencies:{react:"^16.8.2"}}],["promise-inflight@*",{peerDependenciesMeta:{bluebird:n}}],["reactcss@*",{peerDependencies:{react:"*"}}],["react-color@<=2.19.0",{peerDependencies:{react:"*"}}],["gatsby-plugin-i18n@*",{dependencies:{ramda:"^0.24.1"}}],["useragent@^2.0.0",{dependencies:{request:"^2.88.0",yamlparser:"0.0.x",semver:"5.5.x"}}],["@apollographql/apollo-tools@*",{peerDependencies:{graphql:"^14.2.1 || ^15.0.0"}}],["material-table@^2.0.0",{dependencies:{"@babel/runtime":"^7.11.2"}}],["@babel/parser@*",{dependencies:{"@babel/types":"^7.8.3"}}],["fork-ts-checker-webpack-plugin@*",{peerDependencies:{eslint:">= 6",typescript:">= 2.7",webpack:">= 4"},peerDependenciesMeta:{eslint:n}}],["rc-animate@*",{peerDependencies:{react:"^15.0.0 || ^16.0.0","react-dom":"^15.0.0 || ^16.0.0"}}],["react-bootstrap-table2-paginator@*",{dependencies:{classnames:"^2.2.6"}}],["react-draggable@<=4.4.3",{peerDependencies:{react:">= 16.3.0","react-dom":">= 16.3.0"}}],["apollo-upload-client@<14",{peerDependencies:{graphql:"14 - 15"}}],["react-instantsearch-core@<=6.7.0",{peerDependencies:{algoliasearch:">= 3.1 < 5"}}],["react-instantsearch-dom@<=6.7.0",{dependencies:{"react-fast-compare":"^3.0.0"}}],["ws@<7.2.1",{peerDependencies:{bufferutil:"^4.0.1","utf-8-validate":"^5.0.2"},peerDependenciesMeta:{bufferutil:n,"utf-8-validate":n}}],["react-portal@*",{peerDependencies:{"react-dom":"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0"}}]];let i,s,a;const c=new Map([[A.makeIdent(null,"fsevents").identHash,function(){return void 0===i&&(i=r(78761).brotliDecompressSync(Buffer.from("G7weAByFTVk3Vs7UfHhq4yykgEM7pbW7TI43SG2S5tvGrwHBAzdz+s/npQ6tgEvobvxisrPIadkXeUAJotBn5bDZ5kAhcRqsIHe3F75Walet5hNalwgFDtxb0BiDUjiUQkjG0yW2hto9HPgiCkm316d6bC0kST72YN7D7rfkhCE9x4J0XwB0yavalxpUu2t9xszHrmtwalOxT7VslsxWcB1qpqZwERUra4psWhTV8BgwWeizurec82Caf1ABL11YMfbf8FJ9JBceZOkgmvrQPbC9DUldX/yMbmX06UQluCEjSwUoyO+EZPIjofr+/oAZUck2enraRD+oWLlnlYnj8xB+gwSo9lmmks4fXv574qSqcWA6z21uYkzMu3EWj+K23RxeQlLqiE35/rC8GcS4CGkKHKKq+zAIQwD9iRDNfiAqueLLpicFFrNsAI4zeTD/eO9MHcnRa5m8UT+M2+V+AkFST4BlKneiAQRSdST8KEAIyFlULt6wa9EBd0Ds28VmpaxquJdVt+nwdEs5xUskI13OVtFyY0UrQIRAlCuvvWivvlSKQfTO+2Q8OyUR1W5RvetaPz4jD27hdtwHFFA1Ptx6Ee/t2cY2rg2G46M1pNDRf2pWhvpy8pqMnuI3++4OF3+7OFIWXGjh+o7Nr2jNvbiYcQdQS1h903/jVFgOpA0yJ78z+x759bFA0rq+6aY5qPB4FzS3oYoLupDUhD9nDz6F6H7hpnlMf18KNKDu4IKjTWwrAnY6MFQw1W6ymOALHlFyCZmQhldg1MQHaMVVQTVgDC60TfaBqG++Y8PEoFhN/PBTZT175KNP/BlHDYGOOBmnBdzqJKplZ/ljiVG0ZBzfqeBRrrUkn6rA54462SgiliKoYVnbeptMdXNfAuaupIEi0bApF10TlgHfmEJAPUVidRVFyDupSem5po5vErPqWKhKbUIp0LozpYsIKK57dM/HKr+nguF+7924IIWMICkQ8JUigs9D+W+c4LnNoRtPPKNRUiCYmP+Jfo2lfKCKw8qpraEeWU3uiNRO6zcyKQoXPR5htmzzLznke7b4YbXW3I1lIRzmgG02Udb58U+7TpwyN7XymCgH+wuPDthZVQvRZuEP+SnLtMicz9m5zASWOBiAcLmkuFlTKuHspSIhCBD0yUPKcxu81A+4YD78rA2vtwsUEday9WNyrShyrl60rWmA+SmbYZkQOwFJWArxRYYc5jGhA5ikxYw1rx3ei4NmeX/lKiwpZ9Ln1tV2Ae7sArvxuVLbJjqJRjW1vFXAyHpvLG+8MJ6T2Ubx5M2KDa2SN6vuIGxJ9WQM9Mk3Q7aCNiZONXllhqq24DmoLbQfW2rYWsOgHWjtOmIQMyMKdiHZDjoyIq5+U700nZ6odJAoYXPQBvFNiQ78d5jaXliBqLTJEqUCwi+LiH2mx92EmNKDsJL74Z613+3lf20pxkV1+erOrjj8pW00vsPaahKUM+05ssd5uwM7K482KWEf3TCwlg/o3e5ngto7qSMz7YteIgCsF1UOcsLk7F7MxWbvrPMY473ew0G+noVL8EPbkmEMftMSeL6HFub/zy+2JQ==","base64")).toString()),i}],[A.makeIdent(null,"resolve").identHash,function(){return void 0===s&&(s=r(78761).brotliDecompressSync(Buffer.from("G1QTIIzURnVBnGa0VPvr81orV8AFIqdU0sqrdcVgCdukgAZwi8a50gLk9+19Z2NcUILjmzXkzt4dzm5a6Yoys+/9qnKiaApXukOiuoyUaMcynG4X7X4vBaIE/PL30gwG6HSGJkLxb9PnLjfMr+748n7sM6C/NycK6ber/bX1reVVxta6W/31tZIhfrS+upoE/TPRHj0S/l0T59gTGdtKOp1OmMOJt9rhfucDdLJ2tgyfnO+u4YMkQAcYq/nebTcDmbXhqhgo6iQA4M3m4xya4Cos3p6klmkmQT+S4DLDZfwfMF+sUCx36KleOtaHLQfEIz0Bmncj/Ngi3lqOl4391EWEfIss6gVp3oDUGwsSZJKeOVONJWZg+Mue3KUMV3aMqYJ+7b2219D+GFDi8EV5y/Y+5J+He0oNjKAgqLsJziEsS9uIaCu3BHBKSXxNKKa2ShbfglcWoiiVT2kfGI7Gw+YJ/Sqy1H6wdFWtyVUQIa82JPwbeV25YKLzc5ZIFM6GCPSA+J9dTvJbs5LuuKnLP3f09gCu2jxqsAv6CA+ZySVaUJr2d3A70BC/uBCKr2OVrWgC3fSwb7NlfkgSEEiejrMGvhya9lMbVI6lMsFKN330A1/FOaefHQdNGLEZ3IwFF87H3xVlM0Xxsmbi/7A60oymRcIe0tH90alG6ez/yA7jwYotxuHWZdR+1HlMcddGHAV6QD/gXYPV0wnNv47I+5FGevzZFMqWSO8GU4nQ3FjsdgdJcD+c1rvudERKuLyd7bxiBpnsMDHsvPP4nXdXkld/gUNks3GAE1Otmb90bavDyiw4Mrx496Iw+jbLTgsCZGZXSZ9vM55C7KGe4HyJAKXEk0iT/Cj/PFwLJBN7pcP7ZFfYtUApGTWKkYhI9IE2zt/5ByH72wdvH+88b71zuv/FMCX3w6x5nzhY44Cg5IYv9LeKwHuHIWgPbfgrAcUxOlKkPRdQOIDF/aBuLPJAXD+TgxCNXx4jQxeR/qlBWVikFPfEI4rXMUc4kZ2w9KbPKYRvFUag0dVlVoyUP4zfidbTXAdZF88jAckl+NHjLFCNdX7EQ1PbLSOl+P+MqgwEOCi6dxgWZ7NCwJBjWKpk1LaxwKrhZ4aEC/0lMPJYe5S8xAakDcmA2kSS86GjEMTrv3VEu0S0YGZcxToMV524G4WAc4CReePePdipvs4aXRL5p+aeN96yfMGjsiTbQNxgbdRKc+keQ+NxYIEm1mBtEO29WrcbrqNbQRMR66KpGG4aG0NtmRyZ2JhUvu0paCklRlID8PT3gSiwZrqr4XZXoBBzBMrveWCuOg7iTgGDXDdbGi8XHkQf5KXDGFUxWueu5wkSa6gMWY1599g2piQjwBKIAPt4N5cOZdFBidz2feGwEAy1j1UydGxDSCCUsh314cUIIRV/dWCheceubL2gU8CibewmP7UxmN5kN4I7zfQhPxkP0NCcei8GXQpw4c3krEzW7PR2hgi/hqqqR58UJ/ZVfWxfcH5ZKMo4itkmPK0FCGxzzIRP20lK/gz28Y03sY233KvSVWUKl9rcbX6MbHjpUG8MvNlw72p6FwTejv92zgpnCxVJnIHHZhCBxNcHF5RTveRp513hUtTHHq4BIndlytZT5xoTSYfHKqKNr4o9kcGINIz6tZSKRdtbON3Ydr9cgqxHIeisMNIsvPg/IFMZuBbSqqDLeSO5dak1cGr76FtH2PC7hs0S0Oq3GsmF1Ga4YABAMGcdPAWzTk26B7cKV91I2b0V/GYvnsEQ1YGntRqi5EQqTlgZszbV/32GuZtUF49JOA/r4jAdwUOsbPo6mNoBlJPYjM5axrZaWQf33bFsLWqiyvvDOM4x0Ng802T7cuP2a3q98GWq6yiq6q3M77hcZlOUnmryctRYmI4Hb2F5XixFohkBmySCjU+M7/WQVE5YAtnlxiUJDhFN0y1tNeMWY9E0MfZi2rQ4eC72WXjsAA==","base64")).toString()),s}],[A.makeIdent(null,"typescript").identHash,function(){return void 0===a&&(a=r(78761).brotliDecompressSync(Buffer.from("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","base64")).toString()),a}]]),g={hooks:{registerPackageExtensions:async(e,t)=>{for(const[e,r]of o)t(A.parseDescriptor(e,!0),r)},getBuiltinPatch:async(e,t)=>{var r;if(!t.startsWith("compat/"))return;const n=A.parseIdent(t.slice("compat/".length)),o=null===(r=c.get(n.identHash))||void 0===r?void 0:r();return void 0!==o?o:null},reduceDependency:async(e,t,r,n)=>void 0===c.get(e.identHash)?e:A.makeDescriptor(e,A.makeRange({protocol:"patch:",source:A.stringifyDescriptor(e),selector:`builtin`,params:null}))}}},10189:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>p});var A=r(36370),n=r(25413),o=r(54143),i=r(40822);class s extends n.BaseCommand{constructor(){super(...arguments),this.quiet=!1,this.args=[]}async execute(){const e=[];this.pkg&&e.push("--package",this.pkg),this.quiet&&e.push("--quiet");const t=o.parseIdent(this.command),r=o.makeIdent(t.scope,"create-"+t.name);return this.cli.run(["dlx",...e,o.stringifyIdent(r),...this.args])}}(0,A.gn)([i.Command.String("-p,--package",{description:"The package to run the provided command from"})],s.prototype,"pkg",void 0),(0,A.gn)([i.Command.Boolean("-q,--quiet",{description:"Only report critical errors instead of printing the full install logs"})],s.prototype,"quiet",void 0),(0,A.gn)([i.Command.String()],s.prototype,"command",void 0),(0,A.gn)([i.Command.Proxy()],s.prototype,"args",void 0),(0,A.gn)([i.Command.Path("create")],s.prototype,"execute",null);var a=r(39922),c=r(85824),g=r(63088),l=r(43896),u=r(46009);class h extends n.BaseCommand{constructor(){super(...arguments),this.quiet=!1,this.args=[]}async execute(){return a.VK.telemetry=null,await l.xfs.mktempPromise(async e=>{const t=u.y1.join(e,"dlx-"+process.pid);await l.xfs.mkdirPromise(t),await l.xfs.writeFilePromise(u.y1.join(t,"package.json"),"{}\n"),await l.xfs.writeFilePromise(u.y1.join(t,"yarn.lock"),"");const r=u.y1.join(t,".yarnrc.yml"),A=await a.VK.findProjectCwd(this.context.cwd,u.QS.lockfile),i=null!==A?u.y1.join(A,".yarnrc.yml"):null;null!==i&&l.xfs.existsSync(i)?(await l.xfs.copyFilePromise(i,r),await a.VK.updateConfiguration(t,e=>{const t={...e,enableGlobalCache:!0,enableTelemetry:!1};return Array.isArray(e.plugins)&&(t.plugins=e.plugins.map(e=>{const t="string"==typeof e?e:e.path,r=u.cS.isAbsolute(t)?t:u.cS.resolve(u.cS.fromPortablePath(A),t);return"string"==typeof e?r:{path:r,spec:e.spec}})),t})):await l.xfs.writeFilePromise(r,"enableGlobalCache: true\nenableTelemetry: false\n");const s=void 0!==this.pkg?[this.pkg]:[this.command],h=o.parseDescriptor(this.command).name,p=await this.cli.run(["add","--",...s],{cwd:t,quiet:this.quiet});if(0!==p)return p;this.quiet||this.context.stdout.write("\n");const d=await a.VK.find(t,this.context.plugins),{project:C,workspace:f}=await c.I.find(d,t);if(null===f)throw new n.WorkspaceRequiredError(C.cwd,t);return await C.restoreInstallState(),await g.executeWorkspaceAccessibleBinary(f,h,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}}h.usage=i.Command.Usage({description:"run a package in a temporary environment",details:"\n This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\n\n By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\n\n Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\n ",examples:[["Use create-react-app to create a new React app","yarn dlx create-react-app ./my-app"]]}),(0,A.gn)([i.Command.String("-p,--package",{description:"The package to run the provided command from"})],h.prototype,"pkg",void 0),(0,A.gn)([i.Command.Boolean("-q,--quiet",{description:"Only report critical errors instead of printing the full install logs"})],h.prototype,"quiet",void 0),(0,A.gn)([i.Command.String()],h.prototype,"command",void 0),(0,A.gn)([i.Command.Proxy()],h.prototype,"args",void 0),(0,A.gn)([i.Command.Path("dlx")],h.prototype,"execute",null);const p={commands:[s,h]}},34777:(e,t,r)=>{"use strict";r.r(t),r.d(t,{dedupeUtils:()=>A,default:()=>We,suggestUtils:()=>A});var A={};r.r(A),r.d(A,{Modifier:()=>o,Strategy:()=>i,Target:()=>n,applyModifier:()=>S,extractDescriptorFromPath:()=>N,extractRangeModifier:()=>v,fetchDescriptorFrom:()=>K,findProjectDescriptors:()=>k,getModifier:()=>D,getSuggestedDescriptors:()=>F});var n,o,i,s=r(39922),a=r(36370),c=r(25413),g=r(28148),l=r(62152),u=r(92659),h=r(85824),p=r(15815),d=r(54143),C=r(40822),f=r(61899),I=r(33720),E=r(46611),B=r(71643),y=r(43896),m=r(46009),w=r(53887),Q=r.n(w);function D(e,t){return e.exact?o.EXACT:e.caret?o.CARET:e.tilde?o.TILDE:t.configuration.get("defaultSemverRangePrefix")}!function(e){e.REGULAR="dependencies",e.DEVELOPMENT="devDependencies",e.PEER="peerDependencies"}(n||(n={})),function(e){e.CARET="^",e.TILDE="~",e.EXACT=""}(o||(o={})),function(e){e.KEEP="keep",e.REUSE="reuse",e.PROJECT="project",e.LATEST="latest",e.CACHE="cache"}(i||(i={}));const b=/^([\^~]?)[0-9]+(?:\.[0-9]+){0,2}(?:-\S+)?$/;function v(e,{project:t}){const r=e.match(b);return r?r[1]:t.configuration.get("defaultSemverRangePrefix")}function S(e,t){let{protocol:r,source:A,params:n,selector:o}=d.parseRange(e.range);return Q().valid(o)&&(o=`${t}${e.range}`),d.makeDescriptor(e,d.makeRange({protocol:r,source:A,params:n,selector:o}))}async function k(e,{project:t,target:r}){const A=new Map,o=e=>{let t=A.get(e.descriptorHash);return t||A.set(e.descriptorHash,t={descriptor:e,locators:[]}),t};for(const A of t.workspaces)if(r===n.PEER){const t=A.manifest.peerDependencies.get(e.identHash);void 0!==t&&o(t).locators.push(A.locator)}else{const t=A.manifest.dependencies.get(e.identHash),i=A.manifest.devDependencies.get(e.identHash);r===n.DEVELOPMENT?void 0!==i?o(i).locators.push(A.locator):void 0!==t&&o(t).locators.push(A.locator):void 0!==t?o(t).locators.push(A.locator):void 0!==i&&o(i).locators.push(A.locator)}return A}async function N(e,{cwd:t,workspace:r}){return await async function(e){return await y.xfs.mktempPromise(async t=>{const r=s.VK.create(t);return r.useWithSource(t,{enableMirror:!1,compressionLevel:0},t,{overwrite:!0}),await e(new g.C(t,{configuration:r,check:!1,immutable:!1}))})}(async A=>{m.y1.isAbsolute(e)||(e=m.y1.relative(r.cwd,m.y1.resolve(t,e))).match(/^\.{0,2}\//)||(e="./"+e);const{project:n}=r,o=await K(d.makeIdent(null,"archive"),e,{project:r.project,cache:A,workspace:r});if(!o)throw new Error("Assertion failed: The descriptor should have been found");const i=new I.$,s=n.configuration.makeResolver(),a=n.configuration.makeFetcher(),c={checksums:n.storedChecksums,project:n,cache:A,fetcher:a,report:i,resolver:s},g=s.bindDescriptor(o,r.anchoredLocator,c),l=d.convertDescriptorToLocator(g),u=await a.fetch(l,c),h=await E.G.find(u.prefixPath,{baseFs:u.packageFs});if(!h.name)throw new Error("Target path doesn't have a name");return d.makeDescriptor(h.name,e)})}async function F(e,{project:t,workspace:r,cache:A,target:o,modifier:s,strategies:a,maxResults:c=1/0}){if(!(c>=0))throw new Error(`Invalid maxResults (${c})`);if("unknown"!==e.range)return{suggestions:[{descriptor:e,name:"Use "+d.prettyDescriptor(t.configuration,e),reason:"(unambiguous explicit request)"}],rejections:[]};const g=null!=r&&r.manifest[o].get(e.identHash)||null,l=[],u=[],h=async e=>{try{await e()}catch(e){u.push(e)}};for(const u of a){if(l.length>=c)break;switch(u){case i.KEEP:await h(async()=>{g&&l.push({descriptor:g,name:"Keep "+d.prettyDescriptor(t.configuration,g),reason:"(no changes)"})});break;case i.REUSE:await h(async()=>{for(const{descriptor:A,locators:n}of(await k(e,{project:t,target:o})).values()){if(1===n.length&&n[0].locatorHash===r.anchoredLocator.locatorHash&&a.includes(i.KEEP))continue;let e="(originally used by "+d.prettyLocator(t.configuration,n[0]);e+=n.length>1?` and ${n.length-1} other${n.length>2?"s":""})`:")",l.push({descriptor:A,name:"Reuse "+d.prettyDescriptor(t.configuration,A),reason:e})}});break;case i.CACHE:await h(async()=>{for(const r of t.storedDescriptors.values())r.identHash===e.identHash&&l.push({descriptor:r,name:"Reuse "+d.prettyDescriptor(t.configuration,r),reason:"(already used somewhere in the lockfile)"})});break;case i.PROJECT:await h(async()=>{if(null!==r.manifest.name&&e.identHash===r.manifest.name.identHash)return;const A=t.tryWorkspaceByIdent(e);null!==A&&l.push({descriptor:A.anchoredDescriptor,name:"Attach "+d.prettyWorkspace(t.configuration,A),reason:`(local workspace at ${A.cwd})`})});break;case i.LATEST:await h(async()=>{if("unknown"!==e.range)l.push({descriptor:e,name:"Use "+d.prettyRange(t.configuration,e.range),reason:"(explicit range requested)"});else if(o===n.PEER)l.push({descriptor:d.makeDescriptor(e,"*"),name:"Use *",reason:"(catch-all peer dependency pattern)"});else if(t.configuration.get("enableNetwork")){let n=await K(e,"latest",{project:t,cache:A,workspace:r,preserveModifier:!1});n&&(n=S(n,s),l.push({descriptor:n,name:"Use "+d.prettyDescriptor(t.configuration,n),reason:"(resolved from latest)"}))}else l.push({descriptor:null,name:"Resolve from latest",reason:B.pretty(t.configuration,"(unavailable because enableNetwork is toggled off)","grey")})})}}return{suggestions:l.slice(0,c),rejections:u.slice(0,c)}}async function K(e,t,{project:r,cache:A,workspace:n,preserveModifier:o=!0}){const i=d.makeDescriptor(e,t),s=new I.$,a=r.configuration.makeFetcher(),c=r.configuration.makeResolver(),g={project:r,fetcher:a,cache:A,checksums:r.storedChecksums,report:s,skipIntegrityCheck:!0},l={...g,resolver:c,fetchOptions:g},u=c.bindDescriptor(i,n.anchoredLocator,l),h=await c.getCandidates(u,new Map,l);if(0===h.length)return null;const p=h[0];let{protocol:C,source:f,params:E,selector:B}=d.parseRange(d.convertToManifestRange(p.reference));if(C===r.configuration.get("defaultProtocol")&&(C=null),Q().valid(B)&&!1!==o){B=v("string"==typeof o?o:i.range,{project:r})+B}return d.makeDescriptor(p,d.makeRange({protocol:C,source:f,params:E,selector:B}))}class M extends c.BaseCommand{constructor(){super(...arguments),this.packages=[],this.json=!1,this.exact=!1,this.tilde=!1,this.caret=!1,this.dev=!1,this.peer=!1,this.optional=!1,this.preferDev=!1,this.interactive=null,this.cached=!1}async execute(){var e;const t=await s.VK.find(this.context.cwd,this.context.plugins),{project:r,workspace:A}=await h.I.find(t,this.context.cwd),o=await g.C.find(t);if(!A)throw new c.WorkspaceRequiredError(r.cwd,this.context.cwd);await r.restoreInstallState({restoreResolutions:!1});const a=null!==(e=this.interactive)&&void 0!==e?e:t.get("preferInteractive"),I=D(this,r),E=[...a?[i.REUSE]:[],i.PROJECT,...this.cached?[i.CACHE]:[],i.LATEST],B=a?1/0:1,y=await Promise.all(this.packages.map(async e=>{const t=e.match(/^\.{0,2}\//)?await N(e,{cwd:this.context.cwd,workspace:A}):d.parseDescriptor(e),i=function(e,t,{dev:r,peer:A,preferDev:o,optional:i}){const s=e.manifest[n.REGULAR].has(t.identHash),a=e.manifest[n.DEVELOPMENT].has(t.identHash),c=e.manifest[n.PEER].has(t.identHash);if((r||A)&&s)throw new C.UsageError(`Package "${d.prettyIdent(e.project.configuration,t)}" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!A&&c)throw new C.UsageError(`Package "${d.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(i&&a)throw new C.UsageError(`Package "${d.prettyIdent(e.project.configuration,t)}" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(i&&!A&&c)throw new C.UsageError(`Package "${d.prettyIdent(e.project.configuration,t)}" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||o)&&i)throw new C.UsageError(`Package "${d.prettyIdent(e.project.configuration,t)}" cannot simultaneously be a dev dependency and an optional dependency`);return A?n.PEER:r||o?n.DEVELOPMENT:s?n.REGULAR:a?n.DEVELOPMENT:n.REGULAR}(A,t,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return[t,await F(t,{project:r,workspace:A,cache:o,target:i,modifier:I,strategies:E,maxResults:B}),i]})),m=await l.h.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async e=>{for(const[A,{suggestions:n,rejections:o}]of y){if(0===n.filter(e=>null!==e.descriptor).length){const[n]=o;if(void 0===n)throw new Error("Assertion failed: Expected an error to have been set");const i=this.cli.error(n);r.configuration.get("enableNetwork")?e.reportError(u.b.CANT_SUGGEST_RESOLUTIONS,`${d.prettyDescriptor(t,A)} can't be resolved to a satisfying range:\n\n${i}`):e.reportError(u.b.CANT_SUGGEST_RESOLUTIONS,`${d.prettyDescriptor(t,A)} can't be resolved to a satisfying range (note: network resolution has been disabled):\n\n${i}`)}}});if(m.hasErrors())return m.exitCode();let w=!1;const Q=[],b=[];for(const[,{suggestions:e},t]of y){let r;const n=e.filter(e=>null!==e.descriptor),o=n[0].descriptor,i=n.every(e=>d.areDescriptorsEqual(e.descriptor,o));1===n.length||i?r=o:(w=!0,({answer:r}=await(0,f.prompt)({type:"select",name:"answer",message:"Which range do you want to use?",choices:e.map(({descriptor:e,name:t,reason:r})=>e?{name:t,hint:r,descriptor:e}:{name:t,hint:r,disabled:!0}),onCancel:()=>process.exit(130),result(e){return this.find(e,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout})));const s=A.manifest[t].get(r.identHash);void 0!==s&&s.descriptorHash===r.descriptorHash||(A.manifest[t].set(r.identHash,r),this.optional&&("dependencies"===t?A.manifest.ensureDependencyMeta({...r,range:"unknown"}).optional=!0:"peerDependencies"===t&&(A.manifest.ensurePeerDependencyMeta({...r,range:"unknown"}).optional=!0)),void 0===s?Q.push([A,t,r,E]):b.push([A,t,s,r]))}await t.triggerMultipleHooks(e=>e.afterWorkspaceDependencyAddition,Q),await t.triggerMultipleHooks(e=>e.afterWorkspaceDependencyReplacement,b),w&&this.context.stdout.write("\n");return(await p.Pk.start({configuration:t,json:this.json,stdout:this.context.stdout,includeLogs:!this.context.quiet},async e=>{await r.install({cache:o,report:e})})).exitCode()}}M.usage=C.Command.Usage({description:"add dependencies to the project",details:"\n This command adds a package to the package.json for the nearest workspace.\n\n - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\n\n - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\n\n - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\n\n - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\"peerDependenciesMeta\": { \"\": { \"optional\": true } }`\n\n - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\n\n - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\n\n If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\n\n If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\n\n For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/features/protocols.\n ",examples:[["Add a regular package to the current workspace","$0 add lodash"],["Add a specific version for a package to the current workspace","$0 add lodash@1.2.3"],["Add a package from a GitHub repository (the master branch) to the current workspace using a URL","$0 add lodash@https://github.com/lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol","$0 add lodash@github:lodash/lodash"],["Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)","$0 add lodash@lodash/lodash"],["Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)","$0 add lodash-es@lodash/lodash#es"]]}),(0,a.gn)([C.Command.Rest()],M.prototype,"packages",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],M.prototype,"json",void 0),(0,a.gn)([C.Command.Boolean("-E,--exact",{description:"Don't use any semver modifier on the resolved range"})],M.prototype,"exact",void 0),(0,a.gn)([C.Command.Boolean("-T,--tilde",{description:"Use the `~` semver modifier on the resolved range"})],M.prototype,"tilde",void 0),(0,a.gn)([C.Command.Boolean("-C,--caret",{description:"Use the `^` semver modifier on the resolved range"})],M.prototype,"caret",void 0),(0,a.gn)([C.Command.Boolean("-D,--dev",{description:"Add a package as a dev dependency"})],M.prototype,"dev",void 0),(0,a.gn)([C.Command.Boolean("-P,--peer",{description:"Add a package as a peer dependency"})],M.prototype,"peer",void 0),(0,a.gn)([C.Command.Boolean("-O,--optional",{description:"Add / upgrade a package to an optional regular / peer dependency"})],M.prototype,"optional",void 0),(0,a.gn)([C.Command.Boolean("--prefer-dev",{description:"Add / upgrade a package to a dev dependency"})],M.prototype,"preferDev",void 0),(0,a.gn)([C.Command.Boolean("-i,--interactive",{description:"Reuse the specified package from other workspaces in the project"})],M.prototype,"interactive",void 0),(0,a.gn)([C.Command.Boolean("--cached",{description:"Reuse the highest version already used somewhere within the project"})],M.prototype,"cached",void 0),(0,a.gn)([C.Command.Path("add")],M.prototype,"execute",null);var R=r(63088);class x extends c.BaseCommand{constructor(){super(...arguments),this.verbose=!1,this.json=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,locator:r}=await h.I.find(e,this.context.cwd);if(await t.restoreInstallState(),this.name){const A=(await R.getPackageAccessibleBinaries(r,{project:t})).get(this.name);if(!A)throw new C.UsageError(`Couldn't find a binary named "${this.name}" for package "${d.prettyLocator(e,r)}"`);const[,n]=A;return this.context.stdout.write(n+"\n"),0}return(await p.Pk.start({configuration:e,json:this.json,stdout:this.context.stdout},async A=>{const n=await R.getPackageAccessibleBinaries(r,{project:t}),o=Array.from(n.keys()).reduce((e,t)=>Math.max(e,t.length),0);for(const[e,[t,r]]of n)A.reportJson({name:e,source:d.stringifyIdent(t),path:r});if(this.verbose)for(const[t,[r]]of n)A.reportInfo(null,`${t.padEnd(o," ")} ${d.prettyLocator(e,r)}`);else for(const e of n.keys())A.reportInfo(null,e)})).exitCode()}}x.usage=C.Command.Usage({description:"get the path to a binary script",details:"\n When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the `-v,--verbose` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.\n\n When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.\n ",examples:[["List all the available binaries","$0 bin"],["Print the path to a specific binary","$0 bin eslint"]]}),(0,a.gn)([C.Command.String({required:!1})],x.prototype,"name",void 0),(0,a.gn)([C.Command.Boolean("-v,--verbose",{description:"Print both the binary name and the locator of the package that provides the binary"})],x.prototype,"verbose",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],x.prototype,"json",void 0),(0,a.gn)([C.Command.Path("bin")],x.prototype,"execute",null);class L extends c.BaseCommand{constructor(){super(...arguments),this.mirror=!1,this.all=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),t=await g.C.find(e);return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async()=>{const e=(this.all||this.mirror)&&null!==t.mirrorCwd,r=!this.mirror;e&&await y.xfs.removePromise(t.mirrorCwd),r&&await y.xfs.removePromise(t.cwd)})).exitCode()}}L.usage=C.Command.Usage({description:"remove the shared cache files",details:"\n This command will remove all the files from the cache.\n ",examples:[["Remove all the local archives","$0 cache clean"],["Remove all the archives stored in the ~/.yarn directory","$0 cache clean --mirror"]]}),(0,a.gn)([C.Command.Boolean("--mirror",{description:"Remove the global cache files instead of the local cache files"})],L.prototype,"mirror",void 0),(0,a.gn)([C.Command.Boolean("--all",{description:"Remove both the global cache files and the local cache files of the current project"})],L.prototype,"all",void 0),(0,a.gn)([C.Command.Path("cache","clean")],L.prototype,"execute",null);var P=r(73632),O=r(44674),U=r.n(O),T=r(31669);class j extends c.BaseCommand{constructor(){super(...arguments),this.json=!1,this.unsafe=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),t=this.name.replace(/[.[].*$/,""),r=this.name.replace(/^[^.[]*/,"");if(void 0===e.settings.get(t))throw new C.UsageError(`Couldn't find a configuration settings named "${t}"`);const A=e.getSpecial(t,{hideSecrets:!this.unsafe,getNativePaths:!0}),n=P.convertMapsToIndexableObjects(A),o=r?U()(n,r):n,i=await p.Pk.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async e=>{e.reportJson(o)});if(!this.json){if("string"==typeof o)return this.context.stdout.write(o+"\n"),i.exitCode();T.inspect.styles.name="cyan",this.context.stdout.write((0,T.inspect)(o,{depth:1/0,colors:e.get("enableColors"),compact:!1})+"\n")}return i.exitCode()}}j.usage=C.Command.Usage({description:"read a configuration settings",details:"\n This command will print a configuration setting.\n\n Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the `--no-redacted` to get the untransformed value.\n ",examples:[["Print a simple configuration setting","yarn config get yarnPath"],["Print a complex configuration setting","yarn config get packageExtensions"],["Print a nested field from the configuration","yarn config get 'npmScopes[\"my-company\"].npmRegistryServer'"],["Print a token from the configuration","yarn config get npmAuthToken --no-redacted"],["Print a configuration setting as JSON","yarn config get packageExtensions --json"]]}),(0,a.gn)([C.Command.String()],j.prototype,"name",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],j.prototype,"json",void 0),(0,a.gn)([C.Command.Boolean("--no-redacted",{description:"Don't redact secrets (such as tokens) from the output"})],j.prototype,"unsafe",void 0),(0,a.gn)([C.Command.Path("config","get")],j.prototype,"execute",null);var Y=r(82558),G=r.n(Y),H=r(81534),J=r.n(H);class q extends c.BaseCommand{constructor(){super(...arguments),this.json=!1,this.home=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins);if(!e.projectCwd)throw new C.UsageError("This command must be run from within a project folder");const t=this.name.replace(/[.[].*$/,""),r=this.name.replace(/^[^.[]*\.?/,"");if(void 0===e.settings.get(t))throw new C.UsageError(`Couldn't find a configuration settings named "${t}"`);const A=this.json?JSON.parse(this.value):this.value,n=this.home?e=>s.VK.updateHomeConfiguration(e):t=>s.VK.updateConfiguration(e.projectCwd,t);await n(e=>{if(r){const t=G()(e);return J()(t,this.name,A),t}return{...e,[t]:A}});const o=(await s.VK.find(this.context.cwd,this.context.plugins)).getSpecial(t,{hideSecrets:!0,getNativePaths:!0}),i=P.convertMapsToIndexableObjects(o),a=r?U()(i,r):i;return(await p.Pk.start({configuration:e,includeFooter:!1,stdout:this.context.stdout},async t=>{T.inspect.styles.name="cyan",t.reportInfo(u.b.UNNAMED,`Successfully set ${this.name} to ${(0,T.inspect)(a,{depth:1/0,colors:e.get("enableColors"),compact:!1})}`)})).exitCode()}}q.usage=C.Command.Usage({description:"change a configuration settings",details:"\n This command will set a configuration setting.\n\n When used without the `--json` flag, it can only set a simple configuration setting (a string, a number, or a boolean).\n\n When used with the `--json` flag, it can set both simple and complex configuration settings, including Arrays and Objects.\n ",examples:[["Set a simple configuration setting (a string, a number, or a boolean)","yarn config set initScope myScope"],["Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag",'yarn config set initScope --json \\"myScope\\"'],["Set a complex configuration setting (an Array) using the `--json` flag",'yarn config set unsafeHttpWhitelist --json \'["*.example.com", "example.com"]\''],["Set a complex configuration setting (an Object) using the `--json` flag",'yarn config set packageExtensions --json \'{ "@babel/parser@*": { "dependencies": { "@babel/types": "*" } } }\''],["Set a nested configuration setting",'yarn config set npmScopes.company.npmRegistryServer "https://npm.example.com"'],["Set a nested configuration setting using indexed access for non-simple keys",'yarn config set \'npmRegistries["//npm.example.com"].npmAuthToken\' "ffffffff-ffff-ffff-ffff-ffffffffffff"']]}),(0,a.gn)([C.Command.String()],q.prototype,"name",void 0),(0,a.gn)([C.Command.String()],q.prototype,"value",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Set complex configuration settings to JSON values"})],q.prototype,"json",void 0),(0,a.gn)([C.Command.Boolean("-H,--home",{description:"Update the home configuration instead of the project configuration"})],q.prototype,"home",void 0),(0,a.gn)([C.Command.Path("config","set")],q.prototype,"execute",null);class z extends c.BaseCommand{constructor(){super(...arguments),this.verbose=!1,this.why=!1,this.json=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins,{strict:!1});return(await p.Pk.start({configuration:e,json:this.json,stdout:this.context.stdout},async t=>{if(e.invalid.size>0&&!this.json){for(const[r,A]of e.invalid)t.reportError(u.b.INVALID_CONFIGURATION_KEY,`Invalid configuration key "${r}" in ${A}`);t.reportSeparator()}if(this.json){const r=P.sortMap(e.settings.keys(),e=>e);for(const A of r){const r=e.settings.get(A),n=e.getSpecial(A,{hideSecrets:!0,getNativePaths:!0}),o=e.sources.get(A);this.verbose?t.reportJson({key:A,effective:n,source:o}):t.reportJson({key:A,effective:n,source:o,...r})}}else{const r=P.sortMap(e.settings.keys(),e=>e),A=r.reduce((e,t)=>Math.max(e,t.length),0),n={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2};if(this.why||this.verbose){const o=r.map(t=>{const r=e.settings.get(t);if(!r)throw new Error(`Assertion failed: This settings ("${t}") should have been registered`);return[t,this.why?e.sources.get(t)||"":r.description]}),i=o.reduce((e,[,t])=>Math.max(e,t.length),0);for(const[r,s]of o)t.reportInfo(null,`${r.padEnd(A," ")} ${s.padEnd(i," ")} ${(0,T.inspect)(e.getSpecial(r,{hideSecrets:!0,getNativePaths:!0}),n)}`)}else for(const o of r)t.reportInfo(null,`${o.padEnd(A," ")} ${(0,T.inspect)(e.getSpecial(o,{hideSecrets:!0,getNativePaths:!0}),n)}`)}})).exitCode()}}z.usage=C.Command.Usage({description:"display the current configuration",details:"\n This command prints the current active configuration settings.\n ",examples:[["Print the active configuration settings","$0 config"]]}),(0,a.gn)([C.Command.Boolean("-v,--verbose",{description:"Print the setting description on top of the regular key/value information"})],z.prototype,"verbose",void 0),(0,a.gn)([C.Command.Boolean("--why",{description:"Print the reason why a setting is set a particular way"})],z.prototype,"why",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],z.prototype,"json",void 0),(0,a.gn)([C.Command.Path("config")],z.prototype,"execute",null);var W,V=r(15966),X=r(35691),_=r(2401),Z=r.n(_);!function(e){e.HIGHEST="highest"}(W||(W={}));const $=new Set(Object.values(W)),ee={highest:async(e,t,{resolver:r,fetcher:A,resolveOptions:n,fetchOptions:o})=>{const i=new Map;for(const[t,r]of e.storedResolutions){const A=e.storedDescriptors.get(t);if(void 0===A)throw new Error(`Assertion failed: The descriptor (${t}) should have been registered`);P.getSetWithDefault(i,A.identHash).add(r)}return Array.from(e.storedDescriptors.values(),async A=>{if(t.length&&!Z().isMatch(d.stringifyIdent(A),t))return null;const o=e.storedResolutions.get(A.descriptorHash);if(void 0===o)throw new Error(`Assertion failed: The resolution (${A.descriptorHash}) should have been registered`);const s=e.originalPackages.get(o);if(void 0===s)return null;if(!r.shouldPersistResolution(s,n))return null;const a=i.get(A.identHash);if(void 0===a)throw new Error(`Assertion failed: The resolutions (${A.identHash}) should have been registered`);if(1===a.size)return null;const c=[...a].map(t=>{const r=e.originalPackages.get(t);if(void 0===r)throw new Error(`Assertion failed: The package (${t}) should have been registered`);return r.reference}),g=await r.getSatisfying(A,c,n),l=null==g?void 0:g[0];if(void 0===l)return null;const u=l.locatorHash,h=e.originalPackages.get(u);if(void 0===h)throw new Error(`Assertion failed: The package (${u}) should have been registered`);return u===o?null:{descriptor:A,currentPackage:s,updatedPackage:h}})}};class te extends c.BaseCommand{constructor(){super(...arguments),this.patterns=[],this.strategy=W.HIGHEST,this.check=!1,this.json=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t}=await h.I.find(e,this.context.cwd),r=await g.C.find(e);let A=0;const n=await p.Pk.start({configuration:e,includeFooter:!1,stdout:this.context.stdout,json:this.json},async e=>{A=await async function(e,{strategy:t,patterns:r,cache:A,report:n}){const{configuration:o}=e,i=new I.$,s=o.makeResolver(),a=o.makeFetcher(),c={cache:A,checksums:e.storedChecksums,fetcher:a,project:e,report:i,skipIntegrityCheck:!0},g={project:e,resolver:s,report:i,fetchOptions:c};return await n.startTimerPromise("Deduplication step",async()=>{const A=ee[t],i=await A(e,r,{resolver:s,resolveOptions:g,fetcher:a,fetchOptions:c}),l=X.yG.progressViaCounter(i.length);n.reportProgress(l);let h,p=0;switch(await Promise.all(i.map(t=>t.then(t=>{if(null===t)return;p++;const{descriptor:r,currentPackage:A,updatedPackage:i}=t;n.reportInfo(u.b.UNNAMED,`${d.prettyDescriptor(o,r)} can be deduped from ${d.prettyLocator(o,A)} to ${d.prettyLocator(o,i)}`),n.reportJson({descriptor:d.stringifyDescriptor(r),currentResolution:d.stringifyLocator(A),updatedResolution:d.stringifyLocator(i)}),e.storedResolutions.set(r.descriptorHash,i.locatorHash)}).finally(()=>l.tick()))),p){case 0:h="No packages";break;case 1:h="One package";break;default:h=p+" packages"}const C=B.pretty(o,t,B.Type.CODE);return n.reportInfo(u.b.UNNAMED,`${h} can be deduped using the ${C} strategy`),p})}(t,{strategy:this.strategy,patterns:this.patterns,cache:r,report:e})});if(n.hasErrors())return n.exitCode();if(this.check)return A?1:0;return(await p.Pk.start({configuration:e,stdout:this.context.stdout,json:this.json},async e=>{await t.install({cache:r,report:e})})).exitCode()}}te.schema=V.object().shape({strategy:V.string().test({name:"strategy",message:"${path} must be one of ${strategies}",params:{strategies:[...$].join(", ")},test:e=>$.has(e)})}),te.usage=C.Command.Usage({description:"deduplicate dependencies with overlapping ranges",details:"\n Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\n\n This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\n\n - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\n\n **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\n\n If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n ### In-depth explanation:\n\n Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\n\n Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\n\n **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\n ",examples:[["Dedupe all packages","$0 dedupe"],["Dedupe all packages using a specific strategy","$0 dedupe --strategy highest"],["Dedupe a specific package","$0 dedupe lodash"],["Dedupe all packages with the `@babel/*` scope","$0 dedupe '@babel/*'"],["Check for duplicates (can be used as a CI step)","$0 dedupe --check"]]}),(0,a.gn)([C.Command.Rest()],te.prototype,"patterns",void 0),(0,a.gn)([C.Command.String("-s,--strategy",{description:"The strategy to use when deduping dependencies"})],te.prototype,"strategy",void 0),(0,a.gn)([C.Command.Boolean("-c,--check",{description:"Exit with exit code 1 when duplicates are found, without persisting the dependency tree"})],te.prototype,"check",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],te.prototype,"json",void 0),(0,a.gn)([C.Command.Path("dedupe")],te.prototype,"execute",null);class re extends C.Command{async execute(){const{plugins:e}=await s.VK.find(this.context.cwd,this.context.plugins),t=[];for(const r of e){const{commands:e}=r[1];if(e){const A=C.Cli.from(e).definitions();t.push([r[0],A])}}const A=this.cli.definitions(),n=r(60306)["@yarnpkg/builder"].bundles.standard;for(const e of t){const t=e[1];for(const r of t)A.find(e=>{return t=e.path,A=r.path,t.split(" ").slice(1).join()===A.split(" ").slice(1).join();var t,A}).plugin={name:e[0],isDefault:n.includes(e[0])}}this.context.stdout.write(JSON.stringify({commands:A},null,2)+"\n")}}(0,a.gn)([C.Command.Path("--clipanion=definitions")],re.prototype,"execute",null);class Ae extends C.Command{async execute(){this.context.stdout.write(this.cli.usage(null))}}(0,a.gn)([C.Command.Path("help"),C.Command.Path("--help"),C.Command.Path("-h")],Ae.prototype,"execute",null);class ne extends C.Command{constructor(){super(...arguments),this.args=[]}async execute(){if(this.leadingArgument.match(/[\\/]/)&&!d.tryParseIdent(this.leadingArgument)){const e=m.y1.resolve(this.context.cwd,m.cS.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:e})}return await this.cli.run(["run",this.leadingArgument,...this.args])}}(0,a.gn)([C.Command.String()],ne.prototype,"leadingArgument",void 0),(0,a.gn)([C.Command.Proxy()],ne.prototype,"args",void 0);var oe=r(59355);class ie extends C.Command{async execute(){this.context.stdout.write((oe.o||"")+"\n")}}(0,a.gn)([C.Command.Path("-v"),C.Command.Path("--version")],ie.prototype,"execute",null);var se=r(6220);class ae extends c.BaseCommand{constructor(){super(...arguments),this.args=[]}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t}=await h.I.find(e,this.context.cwd);return await y.xfs.mktempPromise(async e=>{const{code:r}=await se.pipevp(this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await R.makeScriptEnv({project:t,binFolder:e})});return r})}}ae.usage=C.Command.Usage({description:"execute a shell command",details:"\n This command simply executes a shell binary within the context of the root directory of the active workspace.\n\n It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n ",examples:[["Execute a shell command","$0 exec echo Hello World"]]}),(0,a.gn)([C.Command.String()],ae.prototype,"commandName",void 0),(0,a.gn)([C.Command.Proxy()],ae.prototype,"args",void 0),(0,a.gn)([C.Command.Path("exec")],ae.prototype,"execute",null);var ce=r(36545);class ge extends c.BaseCommand{async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t}=await h.I.find(e,this.context.cwd);if(await t.applyLightResolution(),void 0!==this.hash)return await async function(e,t,r){const{configuration:A}=t,n=t.peerRequirements.get(e);if(void 0===n)throw new Error(`No peerDependency requirements found for hash: "${e}"`);return(await p.Pk.start({configuration:A,stdout:r.stdout,includeFooter:!1},async e=>{var r,o;const i=t.storedPackages.get(n.subject);if(void 0===i)throw new Error("Assertion failed: Expected the subject package to have been registered");const s=t.storedPackages.get(n.rootRequester);if(void 0===s)throw new Error("Assertion failed: Expected the root package to have been registered");const a=null!==(r=i.dependencies.get(n.requested.identHash))&&void 0!==r?r:null,c=null!==a?t.storedResolutions.get(a.descriptorHash):null;if(void 0===c)throw new Error("Assertion failed: Expected the resolution to have been registered");const g=null!==c?t.storedPackages.get(c):null;if(void 0===g)throw new Error("Assertion failed: Expected the provided package to have been registered");const l=[...n.allRequesters.values()].map(e=>{const r=t.storedPackages.get(e);if(void 0===r)throw new Error("Assertion failed: Expected the package to be registered");const A=d.devirtualizeLocator(r),o=t.storedPackages.get(A.locatorHash);if(void 0===o)throw new Error("Assertion failed: Expected the package to be registered");const i=o.peerDependencies.get(n.requested.identHash);if(void 0===i)throw new Error("Assertion failed: Expected the peer dependency to be registered");return{pkg:r,peerDependency:i}});if(null!==g){const t=l.every(({peerDependency:e})=>ce.satisfiesWithPrereleases(g.version,e.range));e.reportInfo(u.b.UNNAMED,`${d.prettyLocator(A,i)} provides ${d.prettyLocator(A,g)} with version ${d.prettyReference(A,null!==(o=g.version)&&void 0!==o?o:"")}, which ${t?"satisfies":"doesn't satisfy"} the following requirements:`)}else e.reportInfo(u.b.UNNAMED,`${d.prettyLocator(A,i)} doesn't provide ${d.prettyIdent(A,n.requested)}, breaking the following requirements:`);e.reportSeparator();const h=B.mark(A),p=[];for(const{pkg:e,peerDependency:t}of P.sortMap(l,e=>d.stringifyLocator(e.pkg))){const r=null!==g&&ce.satisfiesWithPrereleases(g.version,t.range)?h.Check:h.Cross;p.push({stringifiedLocator:d.stringifyLocator(e),prettyLocator:d.prettyLocator(A,e),prettyRange:d.prettyRange(A,t.range),mark:r})}const C=Math.max(...p.map(({stringifiedLocator:e})=>e.length)),f=Math.max(...p.map(({prettyRange:e})=>e.length));for(const{stringifiedLocator:t,prettyLocator:r,prettyRange:A,mark:n}of P.sortMap(p,({stringifiedLocator:e})=>e))e.reportInfo(null,`${r.padEnd(C+(r.length-t.length)," ")} → ${A.padEnd(f," ")} ${n}`);p.length>1&&(e.reportSeparator(),e.reportInfo(u.b.UNNAMED,"Note: these requirements start with "+d.prettyLocator(t.configuration,s)))})).exitCode()}(this.hash,t,{stdout:this.context.stdout});return(await p.Pk.start({configuration:e,stdout:this.context.stdout,includeFooter:!1},async r=>{var A;const n=[([,e])=>d.stringifyLocator(t.storedPackages.get(e.subject)),([,e])=>d.stringifyIdent(e.requested)];for(const[o,i]of P.sortMap(t.peerRequirements,n)){const n=t.storedPackages.get(i.subject);if(void 0===n)throw new Error("Assertion failed: Expected the subject package to have been registered");const s=t.storedPackages.get(i.rootRequester);if(void 0===s)throw new Error("Assertion failed: Expected the root package to have been registered");const a=null!==(A=n.dependencies.get(i.requested.identHash))&&void 0!==A?A:null,c=B.pretty(e,o,B.Type.CODE),g=d.prettyLocator(e,n),l=d.prettyIdent(e,i.requested),u=d.prettyIdent(e,s),h=i.allRequesters.length-1,p="descendant"+(1===h?"":"s"),C=h>0?` and ${h} ${p}`:"",f=null!==a?"provides":"doesn't provide";r.reportInfo(null,`${c} → ${g} ${f} ${l} to ${u}${C}`)}})).exitCode()}}ge.schema=V.object().shape({hash:V.string().matches(/^p[0-9a-f]{5}$/)}),ge.usage=C.Command.Usage({description:"explain a set of peer requirements",details:"\n A set of peer requirements represents all peer requirements that a dependent must satisfy when providing a given peer request to a requester and its descendants.\n\n When the hash argument is specified, this command prints a detailed explanation of all requirements of the set corresponding to the hash and whether they're satisfied or not.\n\n When used without arguments, this command lists all sets of peer requirements and the corresponding hash that can be used to get detailed information about a given set.\n\n **Note:** A hash is a six-letter p-prefixed code that can be obtained from peer dependency warnings or from the list of all peer requirements (`yarn explain peer-requirements`).\n ",examples:[["Explain the corresponding set of peer requirements for a hash","$0 explain peer-requirements p1a4ed"],["List all sets of peer requirements","$0 explain peer-requirements"]]}),(0,a.gn)([C.Command.String({required:!1})],ge.prototype,"hash",void 0),(0,a.gn)([C.Command.Path("explain","peer-requirements")],ge.prototype,"execute",null);var le=r(85875);class ue extends c.BaseCommand{constructor(){super(...arguments),this.all=!1,this.recursive=!1,this.extra=[],this.cache=!1,this.dependents=!1,this.manifest=!1,this.nameOnly=!1,this.virtuals=!1,this.json=!1,this.patterns=[]}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd),A=await g.C.find(e);if(!r&&!this.all)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);await t.restoreInstallState();const n=new Set(this.extra);this.cache&&n.add("cache"),this.dependents&&n.add("dependents"),this.manifest&&n.add("manifest");const o=(e,{recursive:r})=>{const A=e.anchoredLocator.locatorHash,n=new Map,o=[A];for(;o.length>0;){const e=o.shift();if(n.has(e))continue;const i=t.storedPackages.get(e);if(void 0===i)throw new Error("Assertion failed: Expected the package to be registered");if(n.set(e,i),d.isVirtualLocator(i)&&o.push(d.devirtualizeLocator(i).locatorHash),r||e===A)for(const e of i.dependencies.values()){const r=t.storedResolutions.get(e.descriptorHash);if(void 0===r)throw new Error("Assertion failed: Expected the resolution to be registered");o.push(r)}}return n.values()},i=({all:e,recursive:A})=>e&&A?t.storedPackages.values():e?(({recursive:e})=>{const r=new Map;for(const A of t.workspaces)for(const t of o(A,{recursive:e}))r.set(t.locatorHash,t);return r.values()})({recursive:A}):o(r,{recursive:A}),{selection:a,sortedLookup:l}=(({all:e,recursive:t})=>{const r=i({all:e,recursive:t}),A=this.patterns.map(e=>{const t=d.parseLocator(e),r=Z().makeRe(d.stringifyIdent(t)),A=d.isVirtualLocator(t),n=A?d.devirtualizeLocator(t):t;return e=>{const o=d.stringifyIdent(e);if(!r.test(o))return!1;if("unknown"===t.reference)return!0;const i=d.isVirtualLocator(e),s=i?d.devirtualizeLocator(e):e;return(!A||!i||t.reference===e.reference)&&n.reference===s.reference}}),n=P.sortMap([...r],e=>d.stringifyLocator(e));return{selection:n.filter(e=>0===A.length||A.some(t=>t(e))),sortedLookup:n}})({all:this.all,recursive:this.recursive});if(0===a.length)throw new C.UsageError("No package matched your request");const u=new Map;if(this.dependents)for(const e of l)for(const r of e.dependencies.values()){const A=t.storedResolutions.get(r.descriptorHash);if(void 0===A)throw new Error("Assertion failed: Expected the resolution to be registered");P.getArrayWithDefault(u,A).push(e)}const p=new Map;for(const e of l){if(!d.isVirtualLocator(e))continue;const t=d.devirtualizeLocator(e);P.getArrayWithDefault(p,t.locatorHash).push(e)}const f={},m={children:f},w=e.makeFetcher(),Q={project:t,fetcher:w,cache:A,checksums:t.storedChecksums,report:new I.$,skipIntegrityCheck:!0},D=[async(e,t,r)=>{var A,n;if(!t.has("manifest"))return;const o=await w.fetch(e,Q);let i;try{i=await E.G.find(o.prefixPath,{baseFs:o.packageFs})}finally{null===(A=o.releaseFs)||void 0===A||A.call(o)}r("Manifest",{License:B.tuple(B.Type.NO_HINT,i.license),Homepage:B.tuple(B.Type.URL,null!==(n=i.raw.homepage)&&void 0!==n?n:null)})},async(e,r,n)=>{var o;if(!r.has("cache"))return;const i=null!==(o=t.storedChecksums.get(e.locatorHash))&&void 0!==o?o:null,s=A.getLocatorPath(e,i);let a;if(null!==s)try{a=y.xfs.statSync(s)}catch(e){}const c=void 0!==a?[a.size,B.Type.SIZE]:void 0;n("Cache",{Checksum:B.tuple(B.Type.NO_HINT,i),Path:B.tuple(B.Type.PATH,s),Size:c})}];for(const r of a){const A=d.isVirtualLocator(r);if(!this.virtuals&&A)continue;const o={},i={value:[r,B.Type.LOCATOR],children:o};if(f[d.stringifyLocator(r)]=i,this.nameOnly){delete i.children;continue}const s=p.get(r.locatorHash);void 0!==s&&(o.Instances={label:"Instances",value:B.tuple(B.Type.NUMBER,s.length)}),o.Version={label:"Version",value:B.tuple(B.Type.NO_HINT,r.version)};const a=(e,t)=>{const r={};if(o[e]=r,Array.isArray(t))r.children=t.map(e=>({value:e}));else{const e={};r.children=e;for(const[r,A]of Object.entries(t))void 0!==A&&(e[r]={label:r,value:A})}};if(!A){for(const e of D)await e(r,n,a);await e.triggerHook(e=>e.fetchPackageInfo,r,n,a)}r.bin.size>0&&!A&&a("Exported Binaries",[...r.bin.keys()].map(e=>B.tuple(B.Type.PATH,e)));const c=u.get(r.locatorHash);void 0!==c&&c.length>0&&a("Dependents",c.map(e=>B.tuple(B.Type.LOCATOR,e))),r.dependencies.size>0&&!A&&a("Dependencies",[...r.dependencies.values()].map(e=>{var r;const A=t.storedResolutions.get(e.descriptorHash),n=void 0!==A&&null!==(r=t.storedPackages.get(A))&&void 0!==r?r:null;return B.tuple(B.Type.RESOLUTION,{descriptor:e,locator:n})})),r.peerDependencies.size>0&&A&&a("Peer dependencies",[...r.peerDependencies.values()].map(e=>{var A,n;const o=r.dependencies.get(e.identHash),i=void 0!==o&&null!==(A=t.storedResolutions.get(o.descriptorHash))&&void 0!==A?A:null,s=null!==i&&null!==(n=t.storedPackages.get(i))&&void 0!==n?n:null;return B.tuple(B.Type.RESOLUTION,{descriptor:e,locator:s})}))}le.emitTree(m,{configuration:e,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}}ue.usage=C.Command.Usage({description:"see information related to packages",details:"\n This command prints various information related to the specified packages, accepting glob patterns.\n\n By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\n\n Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\n\n Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\n ",examples:[["Show information about Lodash","$0 info lodash"]]}),(0,a.gn)([C.Command.Boolean("-A,--all",{description:"Print versions of a package from the whole project"})],ue.prototype,"all",void 0),(0,a.gn)([C.Command.Boolean("-R,--recursive",{description:"Print information for all packages, including transitive dependencies"})],ue.prototype,"recursive",void 0),(0,a.gn)([C.Command.Array("-X,--extra",{description:"An array of requests of extra data provided by plugins"})],ue.prototype,"extra",void 0),(0,a.gn)([C.Command.Boolean("--cache",{description:"Print information about the cache entry of a package (path, size, checksum)"})],ue.prototype,"cache",void 0),(0,a.gn)([C.Command.Boolean("--dependents",{description:"Print all dependents for each matching package"})],ue.prototype,"dependents",void 0),(0,a.gn)([C.Command.Boolean("--manifest",{description:"Print data obtained by looking at the package archive (license, homepage, ...)"})],ue.prototype,"manifest",void 0),(0,a.gn)([C.Command.Boolean("--name-only",{description:"Only print the name for the matching packages"})],ue.prototype,"nameOnly",void 0),(0,a.gn)([C.Command.Boolean("--virtuals",{description:"Print each instance of the virtual packages"})],ue.prototype,"virtuals",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],ue.prototype,"json",void 0),(0,a.gn)([C.Command.Rest()],ue.prototype,"patterns",void 0),(0,a.gn)([C.Command.Path("info")],ue.prototype,"execute",null);var he=r(11640),pe=r(5864);class de extends c.BaseCommand{constructor(){super(...arguments),this.json=!1,this.checkCache=!1,this.skipBuilds=!1,this.silent=!1}async execute(){var e,t,r;const A=await s.VK.find(this.context.cwd,this.context.plugins);void 0!==this.inlineBuilds&&A.useWithSource("",{enableInlineBuilds:this.inlineBuilds},A.startingCwd,{overwrite:!0});const n=!!process.env.NOW_BUILDER,o=!!process.env.NETLIFY,i=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=async(e,{error:t})=>{const r=await p.Pk.start({configuration:A,stdout:this.context.stdout,includeFooter:!1},async r=>{t?r.reportError(u.b.DEPRECATED_CLI_SETTINGS,e):r.reportWarning(u.b.DEPRECATED_CLI_SETTINGS,e)});return r.hasErrors()?r.exitCode():null};if(void 0!==this.ignoreEngines){const e=await a("The --ignore-engines option is deprecated; engine checking isn't a core feature anymore",{error:!n});if(null!==e)return e}if(void 0!==this.registry){const e=await a("The --registry option is deprecated; prefer setting npmRegistryServer in your .yarnrc.yml file",{error:!1});if(null!==e)return e}if(void 0!==this.preferOffline){const e=await a("The --prefer-offline flag is deprecated; use the --cached flag with 'yarn add' instead",{error:!n});if(null!==e)return e}if(void 0!==this.production){const e=await a("The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead",{error:!0});if(null!==e)return e}if(void 0!==this.nonInteractive){const e=await a("The --non-interactive option is deprecated",{error:!i});if(null!==e)return e}if(void 0!==this.frozenLockfile){const e=await a("The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead",{error:!i&&!pe.TRAVIS});if(null!==e)return e}if(void 0!==this.cacheFolder){const e=await a("The cache-folder option has been deprecated; use rc settings instead",{error:!o});if(null!==e)return e}const l=void 0===this.immutable&&void 0===this.frozenLockfile?null!==(e=A.get("enableImmutableInstalls"))&&void 0!==e&&e:null!==(r=null!==(t=this.immutable)&&void 0!==t?t:this.frozenLockfile)&&void 0!==r&&r;if(null!==A.projectCwd){const e=await p.Pk.start({configuration:A,json:this.json,stdout:this.context.stdout,includeFooter:!1},async e=>{await async function(e,t){if(!e.projectCwd)return!1;const r=m.y1.join(e.projectCwd,e.get("lockfileFilename"));if(!await y.xfs.existsPromise(r))return!1;const A=await y.xfs.readFilePromise(r,"utf8");if(!A.includes("<<<<<<<"))return!1;if(t)throw new X.lk(u.b.AUTOMERGE_IMMUTABLE,"Cannot autofix a lockfile when running an immutable install");const[n,o]=function(e){const t=[[],[]],r=e.split(/\r?\n/g);let A=!1;for(;r.length>0;){const e=r.shift();if(void 0===e)throw new Error("Assertion failed: Some lines should remain");if(e.startsWith("<<<<<<<")){for(;r.length>0;){const e=r.shift();if(void 0===e)throw new Error("Assertion failed: Some lines should remain");if("======="===e){A=!1;break}A||e.startsWith("|||||||")?A=!0:t[0].push(e)}for(;r.length>0;){const e=r.shift();if(void 0===e)throw new Error("Assertion failed: Some lines should remain");if(e.startsWith(">>>>>>>"))break;t[1].push(e)}}else t[0].push(e),t[1].push(e)}return[t[0].join("\n"),t[1].join("\n")]}(A);let i,s;try{i=(0,he.parseSyml)(n),s=(0,he.parseSyml)(o)}catch(e){throw new X.lk(u.b.AUTOMERGE_FAILED_TO_PARSE,"The individual variants of the lockfile failed to parse")}const a={...i,...s};for(const[e,t]of Object.entries(a))"string"==typeof t&&delete a[e];return await y.xfs.changeFilePromise(r,(0,he.stringifySyml)(a),{automaticNewlines:!0}),!0}(A,l)&&(e.reportInfo(u.b.AUTOMERGE_SUCCESS,"Automatically fixed merge conflicts 👍"),e.reportSeparator())});if(e.hasErrors())return e.exitCode()}if(null!==A.projectCwd){const e=await p.Pk.start({configuration:A,json:this.json,stdout:this.context.stdout,includeFooter:!1},async e=>{var t;(null===(t=s.VK.telemetry)||void 0===t?void 0:t.isNew)&&(e.reportInfo(u.b.TELEMETRY_NOTICE,"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry"),e.reportInfo(u.b.TELEMETRY_NOTICE,`Run ${B.pretty(A,"yarn config set --home enableTelemetry 0",B.Type.CODE)} to disable`),e.reportSeparator())});if(e.hasErrors())return e.exitCode()}const{project:d,workspace:C}=await h.I.find(A,this.context.cwd),f=await g.C.find(A,{immutable:this.immutableCache,check:this.checkCache});if(!C)throw new c.WorkspaceRequiredError(d.cwd,this.context.cwd);await d.restoreInstallState({restoreResolutions:!1});return(await p.Pk.start({configuration:A,json:this.json,stdout:this.context.stdout,includeLogs:!0},async e=>{await d.install({cache:f,report:e,immutable:l,skipBuild:this.skipBuilds})})).exitCode()}}de.usage=C.Command.Usage({description:"install the project dependencies",details:"\n This command setup your project if needed. The installation is splitted in four different steps that each have their own characteristics:\n\n - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\n\n - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where are stored the cache files).\n\n - **Link:** Then we send the dependency tree information to internal plugins tasked from writing them on the disk in some form (for example by generating the .pnp.js file you might know).\n\n - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another.\n\n Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your .pnp.js file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\n\n If the `--immutable` option is set, Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePaths` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\n\n If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\n\n If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\n\n If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\n\n If the `--skip-builds` option is set, Yarn will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the later will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n ",examples:[["Install the project","$0 install"],["Validate a project when using Zero-Installs","$0 install --immutable --immutable-cache"],["Validate a project when using Zero-Installs (slightly safer if you accept external PRs)","$0 install --immutable --immutable-cache --check-cache"]]}),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],de.prototype,"json",void 0),(0,a.gn)([C.Command.Boolean("--immutable",{description:"Abort with an error exit code if the lockfile was to be modified"})],de.prototype,"immutable",void 0),(0,a.gn)([C.Command.Boolean("--immutable-cache",{description:"Abort with an error exit code if the cache folder was to be modified"})],de.prototype,"immutableCache",void 0),(0,a.gn)([C.Command.Boolean("--check-cache",{description:"Always refetch the packages and ensure that their checksums are consistent"})],de.prototype,"checkCache",void 0),(0,a.gn)([C.Command.Boolean("--production",{hidden:!0})],de.prototype,"production",void 0),(0,a.gn)([C.Command.Boolean("--non-interactive",{hidden:!0})],de.prototype,"nonInteractive",void 0),(0,a.gn)([C.Command.Boolean("--frozen-lockfile",{hidden:!0})],de.prototype,"frozenLockfile",void 0),(0,a.gn)([C.Command.Boolean("--prefer-offline",{hidden:!0})],de.prototype,"preferOffline",void 0),(0,a.gn)([C.Command.Boolean("--ignore-engines",{hidden:!0})],de.prototype,"ignoreEngines",void 0),(0,a.gn)([C.Command.String("--registry",{hidden:!0})],de.prototype,"registry",void 0),(0,a.gn)([C.Command.Boolean("--inline-builds",{description:"Verbosely print the output of the build steps of dependencies"})],de.prototype,"inlineBuilds",void 0),(0,a.gn)([C.Command.Boolean("--skip-builds",{description:"Skip the build step altogether"})],de.prototype,"skipBuilds",void 0),(0,a.gn)([C.Command.String("--cache-folder",{hidden:!0})],de.prototype,"cacheFolder",void 0),(0,a.gn)([C.Command.Boolean("--silent",{hidden:!0})],de.prototype,"silent",void 0),(0,a.gn)([C.Command.Path(),C.Command.Path("install")],de.prototype,"execute",null);class Ce extends c.BaseCommand{constructor(){super(...arguments),this.all=!1,this.private=!1,this.relative=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd),A=await g.C.find(e);if(!r)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);const n=m.y1.resolve(this.context.cwd,m.cS.toPortablePath(this.destination)),o=await s.VK.find(n,this.context.plugins),{project:i,workspace:a}=await h.I.find(o,n);if(!a)throw new c.WorkspaceRequiredError(i.cwd,n);const l=t.topLevelWorkspace,u=[];if(this.all){for(const e of i.workspaces)!e.manifest.name||e.manifest.private&&!this.private||u.push(e);if(0===u.length)throw new C.UsageError("No workspace found to be linked in the target project")}else{if(!a.manifest.name)throw new C.UsageError("The target workspace doesn't have a name and thus cannot be linked");if(a.manifest.private&&!this.private)throw new C.UsageError("The target workspace is marked private - use the --private flag to link it anyway");u.push(a)}for(const e of u){const r=d.stringifyIdent(e.locator),A=this.relative?m.y1.relative(t.cwd,e.cwd):e.cwd;l.manifest.resolutions.push({pattern:{descriptor:{fullName:r}},reference:"portal:"+A})}return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async e=>{await t.install({cache:A,report:e})})).exitCode()}}Ce.usage=C.Command.Usage({description:"connect the local project to another one",details:"\n This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\n\n There is no `yarn unlink` command. To unlink the workspaces from the current project one must revert the changes made to the `resolutions` field.\n ",examples:[["Register a remote workspace for use in the current project","$0 link ~/ts-loader"],["Register all workspaces from a remote project for use in the current project","$0 link ~/jest --all"]]}),(0,a.gn)([C.Command.String()],Ce.prototype,"destination",void 0),(0,a.gn)([C.Command.Boolean("-A,--all",{description:"Link all workspaces belonging to the target project to the current one"})],Ce.prototype,"all",void 0),(0,a.gn)([C.Command.Boolean("-p,--private",{description:"Also link private workspaces belonging to the target project to the current one"})],Ce.prototype,"private",void 0),(0,a.gn)([C.Command.Boolean("-r,--relative",{description:"Link workspaces using relative paths instead of absolute paths"})],Ce.prototype,"relative",void 0),(0,a.gn)([C.Command.Path("link")],Ce.prototype,"execute",null);class fe extends c.BaseCommand{constructor(){super(...arguments),this.args=[]}async execute(){return this.cli.run(["exec","node",...this.args])}}fe.usage=C.Command.Usage({description:"run node with the hook already setup",details:"\n This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n\n The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.\n ",examples:[["Run a Node script","$0 node ./my-script.js"]]}),(0,a.gn)([C.Command.Proxy()],fe.prototype,"args",void 0),(0,a.gn)([C.Command.Path("node")],fe.prototype,"execute",null);var Ie=r(20624),Ee=r(12087),Be=r(85622),ye=r.n(Be),me=r(79669);class we extends c.BaseCommand{constructor(){super(...arguments),this.onlyIfNeeded=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins);if(e.get("yarnPath")&&this.onlyIfNeeded)return 0;let t;if("latest"===this.version||"berry"===this.version)t="https://github.com/yarnpkg/berry/raw/master/packages/yarnpkg-cli/bin/yarn.js";else if("classic"===this.version)t="https://nightly.yarnpkg.com/latest.js";else if(ce.satisfiesWithPrereleases(this.version,">=2.0.0"))t=`https://github.com/yarnpkg/berry/raw/%40yarnpkg/cli/${this.version}/packages/yarnpkg-cli/bin/yarn.js`;else{if(!ce.satisfiesWithPrereleases(this.version,"^0.x || ^1.x"))throw Q().validRange(this.version)?new C.UsageError("Support for ranges got removed - please use the exact version you want to install, or 'latest' to get the latest build available"):new C.UsageError(`Invalid version descriptor "${this.version}"`);t=`https://github.com/yarnpkg/yarn/releases/download/v${this.version}/yarn-${this.version}.js`}return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{r.reportInfo(u.b.UNNAMED,"Downloading "+B.pretty(e,t,"green"));const A=await me.get(t,{configuration:e});await Qe(e,null,A,{report:r})})).exitCode()}}async function Qe(e,t,r,{report:A}){const n=e.projectCwd?e.projectCwd:e.startingCwd;null===t&&await y.xfs.mktempPromise(async e=>{const A=m.y1.join(e,"yarn.cjs");await y.xfs.writeFilePromise(A,r);const{stdout:o}=await se.execvp(process.execPath,[m.cS.fromPortablePath(A),"--version"],{cwd:n,env:{...process.env,YARN_IGNORE_PATH:"1"}});if(t=o.trim(),!Q().valid(t))throw new Error("Invalid semver version")});const o=m.y1.resolve(n,".yarn/releases"),i=m.y1.resolve(o,`yarn-${t}.cjs`),a=m.y1.relative(e.startingCwd,i),c=m.y1.relative(n,i),g=e.get("yarnPath"),l=null===g||g.startsWith(o+"/");A.reportInfo(u.b.UNNAMED,"Saving the new release in "+B.pretty(e,a,"magenta")),await y.xfs.removePromise(m.y1.dirname(i)),await y.xfs.mkdirPromise(m.y1.dirname(i),{recursive:!0}),await y.xfs.writeFilePromise(i,r),await y.xfs.chmodPromise(i,493),l&&await s.VK.updateConfiguration(n,{yarnPath:c})}we.usage=C.Command.Usage({description:"lock the Yarn version used by the project",details:"\n This command will download a specific release of Yarn directly from the Yarn GitHub repository, will store it inside your project, and will change the `yarnPath` settings from your project `.yarnrc.yml` file to point to the new file.\n\n A very good use case for this command is to enforce the version of Yarn used by the any single member of your team inside a same project - by doing this you ensure that you have control on Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting a different behavior than you.\n ",examples:[["Download the latest release from the Yarn repository","$0 set version latest"],["Download the latest classic release from the Yarn repository","$0 set version classic"],["Download a specific Yarn 2 build","$0 set version 2.0.0-rc.30"],["Switch back to a specific Yarn 1 release","$0 set version 1.22.1"]]}),(0,a.gn)([C.Command.Boolean("--only-if-needed",{description:"Only lock the Yarn version if it isn't already locked"})],we.prototype,"onlyIfNeeded",void 0),(0,a.gn)([C.Command.String()],we.prototype,"version",void 0),(0,a.gn)([C.Command.Path("policies","set-version"),C.Command.Path("set","version")],we.prototype,"execute",null);const De=/^[0-9]+$/;function be(e){return De.test(e)?`pull/${e}/head`:e}class ve extends c.BaseCommand{constructor(){super(...arguments),this.repository="https://github.com/yarnpkg/berry.git",this.branch="master",this.plugins=[],this.noMinify=!1,this.force=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),t=void 0!==this.installPath?m.y1.resolve(this.context.cwd,m.cS.toPortablePath(this.installPath)):m.y1.resolve(m.cS.toPortablePath((0,Ee.tmpdir)()),"yarnpkg-sources",Ie.makeHash(this.repository).slice(0,6));return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{await ke(this,{configuration:e,report:r,target:t}),r.reportSeparator(),r.reportInfo(u.b.UNNAMED,"Building a fresh bundle"),r.reportSeparator(),await Se((({plugins:e,noMinify:t},r)=>[["yarn","build:cli",...(new Array).concat(...e.map(e=>["--plugin",ye().resolve(r,e)])),...t?["--no-minify"]:[],"|"]])(this,t),{configuration:e,context:this.context,target:t}),r.reportSeparator();const A=m.y1.resolve(t,"packages/yarnpkg-cli/bundles/yarn.js"),n=await y.xfs.readFilePromise(A);await Qe(e,"sources",n,{report:r})})).exitCode()}}async function Se(e,{configuration:t,context:r,target:A}){for(const[n,...o]of e){const e="|"===o[o.length-1];if(e&&o.pop(),e)await se.pipevp(n,o,{cwd:A,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(B.pretty(t," $ "+[n,...o].join(" "),"grey")+"\n");try{await se.execvp(n,o,{cwd:A,strict:!0})}catch(e){throw r.stdout.write(e.stdout||e.stack),e}}}}async function ke(e,{configuration:t,report:r,target:A}){let n=!1;if(!e.force&&y.xfs.existsSync(m.y1.join(A,".git"))){r.reportInfo(u.b.UNNAMED,"Fetching the latest commits"),r.reportSeparator();try{await Se((({branch:e})=>[["git","fetch","origin",be(e),"--force"],["git","reset","--hard","FETCH_HEAD"],["git","clean","-dfx"]])(e),{configuration:t,context:e.context,target:A}),n=!0}catch(e){r.reportSeparator(),r.reportWarning(u.b.UNNAMED,"Repository update failed; we'll try to regenerate it")}}n||(r.reportInfo(u.b.UNNAMED,"Cloning the remote repository"),r.reportSeparator(),await y.xfs.removePromise(A),await y.xfs.mkdirPromise(A,{recursive:!0}),await Se((({repository:e,branch:t},r)=>[["git","init",m.cS.fromPortablePath(r)],["git","remote","add","origin",e],["git","fetch","origin",be(t)],["git","reset","--hard","FETCH_HEAD"]])(e,A),{configuration:t,context:e.context,target:A}))}ve.usage=C.Command.Usage({description:"build Yarn from master",details:"\n This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.\n ",examples:[["Build Yarn from master","$0 set version from sources"]]}),(0,a.gn)([C.Command.String("--path",{description:"The path where the repository should be cloned to"})],ve.prototype,"installPath",void 0),(0,a.gn)([C.Command.String("--repository",{description:"The repository that should be cloned"})],ve.prototype,"repository",void 0),(0,a.gn)([C.Command.String("--branch",{description:"The branch of the repository that should be cloned"})],ve.prototype,"branch",void 0),(0,a.gn)([C.Command.Array("--plugin",{description:"An array of additional plugins that should be included in the bundle"})],ve.prototype,"plugins",void 0),(0,a.gn)([C.Command.Boolean("--no-minify",{description:"Build a bundle for development (debugging) - non-minified and non-mangled"})],ve.prototype,"noMinify",void 0),(0,a.gn)([C.Command.Boolean("-f,--force",{description:"Always clone the repository instead of trying to fetch the latest commits"})],ve.prototype,"force",void 0),(0,a.gn)([C.Command.Path("set","version","from","sources")],ve.prototype,"execute",null);var Ne=r(78835);const Fe=require("vm");async function Ke(e){const t=await me.get("https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml",{configuration:e});return(0,he.parseSyml)(t.toString())}class Me extends c.BaseCommand{constructor(){super(...arguments),this.json=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins);return(await p.Pk.start({configuration:e,json:this.json,stdout:this.context.stdout},async t=>{const r=await Ke(e);for(const[e,{experimental:A,...n}]of Object.entries(r)){let r=e;A&&(r+=" [experimental]"),t.reportJson({name:e,experimental:A,...n}),t.reportInfo(null,r)}})).exitCode()}}Me.usage=C.Command.Usage({category:"Plugin-related commands",description:"list the available official plugins",details:"\n This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\n ",examples:[["List the official plugins","$0 plugin list"]]}),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],Me.prototype,"json",void 0),(0,a.gn)([C.Command.Path("plugin","list")],Me.prototype,"execute",null);class Re extends c.BaseCommand{async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins);return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async t=>{const{project:r}=await h.I.find(e,this.context.cwd);let A,n;if(this.name.match(/^\.{0,2}[\\/]/)||m.cS.isAbsolute(this.name)){const o=m.y1.resolve(this.context.cwd,m.cS.toPortablePath(this.name));t.reportInfo(u.b.UNNAMED,"Reading "+B.pretty(e,o,B.Type.PATH)),A=m.y1.relative(r.cwd,o),n=await y.xfs.readFilePromise(o)}else{let r;if(this.name.match(/^https?:/)){try{new Ne.URL(this.name)}catch(e){throw new X.lk(u.b.INVALID_PLUGIN_REFERENCE,`Plugin specifier "${this.name}" is neither a plugin name nor a valid url`)}A=this.name,r=this.name}else{const t=d.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),n=d.stringifyIdent(t),o=await Ke(e);if(!Object.prototype.hasOwnProperty.call(o,n))throw new X.lk(u.b.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${n}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be referenced by their name; any other plugin will have to be referenced through its public url (for example https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js).`);A=n,r=o[n].url}t.reportInfo(u.b.UNNAMED,"Downloading "+B.pretty(e,r,"green")),n=await me.get(r,{configuration:e})}await xe(A,n,{project:r,report:t})})).exitCode()}}async function xe(e,t,{project:r,report:A}){const{configuration:n}=r,o={},i={exports:o};(0,Fe.runInNewContext)(t.toString(),{module:i,exports:o});const a=i.exports.name,c=`.yarn/plugins/${a}.cjs`,g=m.y1.resolve(r.cwd,c);A.reportInfo(u.b.UNNAMED,"Saving the new plugin in "+B.pretty(n,c,"magenta")),await y.xfs.mkdirPromise(m.y1.dirname(g),{recursive:!0}),await y.xfs.writeFilePromise(g,t);const l={path:c,spec:e};await s.VK.updateConfiguration(r.cwd,e=>{const t=[];let A=!1;for(const n of e.plugins||[]){const e="string"!=typeof n?n.path:n,o=m.y1.resolve(r.cwd,m.cS.toPortablePath(e)),{name:i}=P.dynamicRequire(m.cS.fromPortablePath(o));i!==a?t.push(n):(t.push(l),A=!0)}return A||t.push(l),{...e,plugins:t}})}Re.usage=C.Command.Usage({category:"Plugin-related commands",description:"download a plugin",details:"\n This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.\n\n Three types of plugin references are accepted:\n\n - If the plugin is stored within the Yarn repository, it can be referenced by name.\n - Third-party plugins can be referenced directly through their public urls.\n - Local plugins can be referenced by their path on the disk.\n\n Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the `@yarnpkg/builder` package).\n ",examples:[['Download and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import @yarnpkg/plugin-exec"],['Download and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import exec"],["Download and activate a community plugin","$0 plugin import https://example.org/path/to/plugin.js"],["Activate a local plugin","$0 plugin import ./path/to/plugin.js"]]}),(0,a.gn)([C.Command.String()],Re.prototype,"name",void 0),(0,a.gn)([C.Command.Path("plugin","import")],Re.prototype,"execute",null);class Le extends c.BaseCommand{constructor(){super(...arguments),this.repository="https://github.com/yarnpkg/berry.git",this.branch="master",this.noMinify=!1,this.force=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),t=void 0!==this.installPath?m.y1.resolve(this.context.cwd,m.cS.toPortablePath(this.installPath)):m.y1.resolve(m.cS.toPortablePath((0,Ee.tmpdir)()),"yarnpkg-sources",Ie.makeHash(this.repository).slice(0,6));return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{const{project:A}=await h.I.find(e,this.context.cwd),n=d.parseIdent(this.name.replace(/^((@yarnpkg\/)?plugin-)?/,"@yarnpkg/plugin-")),o=d.stringifyIdent(n),i=await Ke(e);if(!Object.prototype.hasOwnProperty.call(i,o))throw new X.lk(u.b.PLUGIN_NAME_NOT_FOUND,`Couldn't find a plugin named "${o}" on the remote registry. Note that only the plugins referenced on our website (https://github.com/yarnpkg/berry/blob/master/plugins.yml) can be built and imported from sources.`);const s=o,a=s.replace(/@yarnpkg\//,"");await ke(this,{configuration:e,report:r,target:t}),r.reportSeparator(),r.reportInfo(u.b.UNNAMED,"Building a fresh "+a),r.reportSeparator(),await Se((({pluginName:e,noMinify:t},r)=>[["yarn","build:"+e,...t?["--no-minify"]:[],"|"]])({pluginName:a,noMinify:this.noMinify}),{configuration:e,context:this.context,target:t}),r.reportSeparator();const c=m.y1.resolve(t,`packages/${a}/bundles/${s}.js`),g=await y.xfs.readFilePromise(c);await xe(s,g,{project:A,report:r})})).exitCode()}}Le.usage=C.Command.Usage({category:"Plugin-related commands",description:"build a plugin from sources",details:"\n This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.\n\n The plugins can be referenced by their short name if sourced from the official Yarn repository.\n ",examples:[['Build and activate the "@yarnpkg/plugin-exec" plugin',"$0 plugin import from sources @yarnpkg/plugin-exec"],['Build and activate the "@yarnpkg/plugin-exec" plugin (shorthand)',"$0 plugin import from sources exec"]]}),(0,a.gn)([C.Command.String()],Le.prototype,"name",void 0),(0,a.gn)([C.Command.String("--path",{description:"The path where the repository should be cloned to"})],Le.prototype,"installPath",void 0),(0,a.gn)([C.Command.String("--repository",{description:"The repository that should be cloned"})],Le.prototype,"repository",void 0),(0,a.gn)([C.Command.String("--branch",{description:"The branch of the repository that should be cloned"})],Le.prototype,"branch",void 0),(0,a.gn)([C.Command.Boolean("--no-minify",{description:"Build a plugin for development (debugging) - non-minified and non-mangled"})],Le.prototype,"noMinify",void 0),(0,a.gn)([C.Command.Boolean("-f,--force",{description:"Always clone the repository instead of trying to fetch the latest commits"})],Le.prototype,"force",void 0),(0,a.gn)([C.Command.Path("plugin","import","from","sources")],Le.prototype,"execute",null);class Pe extends c.BaseCommand{async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t}=await h.I.find(e,this.context.cwd);return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{const A=this.name,n=d.parseIdent(A);if(!e.plugins.has(A))throw new C.UsageError(d.prettyIdent(e,n)+" isn't referenced by the current configuration");const o=`.yarn/plugins/${A}.cjs`,i=m.y1.resolve(t.cwd,o);y.xfs.existsSync(i)&&(r.reportInfo(u.b.UNNAMED,`Removing ${B.pretty(e,o,B.Type.PATH)}...`),await y.xfs.removePromise(i)),r.reportInfo(u.b.UNNAMED,"Updating the configuration..."),await s.VK.updateConfiguration(t.cwd,e=>{if(!Array.isArray(e.plugins))return e;const t=e.plugins.filter(e=>e.path!==o);return e.plugins.length===t.length?e:{...e,plugins:t}})})).exitCode()}}Pe.usage=C.Command.Usage({category:"Plugin-related commands",description:"remove a plugin",details:"\n This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.\n\n **Note:** The plugins have to be referenced by their name property, which can be obtained using the `yarn plugin runtime` command. Shorthands are not allowed.\n ",examples:[["Remove a plugin imported from the Yarn repository","$0 plugin remove @yarnpkg/plugin-typescript"],["Remove a plugin imported from a local file","$0 plugin remove my-local-plugin"]]}),(0,a.gn)([C.Command.String()],Pe.prototype,"name",void 0),(0,a.gn)([C.Command.Path("plugin","remove")],Pe.prototype,"execute",null);class Oe extends c.BaseCommand{constructor(){super(...arguments),this.json=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins);return(await p.Pk.start({configuration:e,json:this.json,stdout:this.context.stdout},async t=>{for(const r of e.plugins.keys()){const e=this.context.plugins.plugins.has(r);let A=r;e&&(A+=" [builtin]"),t.reportJson({name:r,builtin:e}),t.reportInfo(null,""+A)}})).exitCode()}}Oe.usage=C.Command.Usage({category:"Plugin-related commands",description:"list the active plugins",details:"\n This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.\n ",examples:[["List the currently active plugins","$0 plugin runtime"]]}),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],Oe.prototype,"json",void 0),(0,a.gn)([C.Command.Path("plugin","runtime")],Oe.prototype,"execute",null);class Ue extends c.BaseCommand{constructor(){super(...arguments),this.idents=[]}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd),A=await g.C.find(e);if(!r)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);const n=new Set;for(const e of this.idents)n.add(d.parseIdent(e).identHash);await t.resolveEverything({cache:A,report:new I.$});const o=e.get("bstatePath"),i=y.xfs.existsSync(o)?(0,he.parseSyml)(await y.xfs.readFilePromise(o,"utf8")):{},a=new Map;for(const e of t.storedPackages.values()){if(!Object.prototype.hasOwnProperty.call(i,e.locatorHash))continue;if(0===n.size||n.has(e.identHash))continue;const t=i[e.locatorHash];a.set(e.locatorHash,t)}if(a.size>0){const r=e.get("bstatePath"),A=h.I.generateBuildStateFile(a,t.storedPackages);await y.xfs.mkdirPromise(m.y1.dirname(r),{recursive:!0}),await y.xfs.changeFilePromise(r,A,{automaticNewlines:!0})}else await y.xfs.removePromise(o);return(await p.Pk.start({configuration:e,stdout:this.context.stdout,includeLogs:!this.context.quiet},async e=>{await t.install({cache:A,report:e})})).exitCode()}}Ue.usage=C.Command.Usage({description:"rebuild the project's native packages",details:"\n This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.\n\n Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).\n\n By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.\n ",examples:[["Rebuild all packages","$0 rebuild"],["Rebuild fsevents only","$0 rebuild fsevents"]]}),(0,a.gn)([C.Command.Rest()],Ue.prototype,"idents",void 0),(0,a.gn)([C.Command.Path("rebuild")],Ue.prototype,"execute",null);class Te extends c.BaseCommand{constructor(){super(...arguments),this.all=!1,this.patterns=[]}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd),A=await g.C.find(e);if(!r)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);await t.restoreInstallState({restoreResolutions:!1});const o=this.all?t.workspaces:[r],i=[n.REGULAR,n.DEVELOPMENT,n.PEER],a=[];let l=!1;const u=[];for(const e of this.patterns){let t=!1;const r=d.parseIdent(e);for(const A of o){const n=[...A.manifest.peerDependenciesMeta.keys()];for(const r of Z()(n,e))A.manifest.peerDependenciesMeta.delete(r),l=!0,t=!0;for(const e of i){const n=A.manifest.getForScope(e),o=[...n.values()].map(e=>d.stringifyIdent(e));for(const i of Z()(o,d.stringifyIdent(r))){const{identHash:r}=d.parseIdent(i),o=n.get(r);if(void 0===o)throw new Error("Assertion failed: Expected the descriptor to be registered");A.manifest[e].delete(r),u.push([A,e,o]),l=!0,t=!0}}}t||a.push(e)}const f=a.length>1?"Patterns":"Pattern",I=a.length>1?"don't":"doesn't",E=this.all?"any":"this";if(a.length>0)throw new C.UsageError(`${f} ${B.prettyList(e,a,s.a5.CODE)} ${I} match any packages referenced by ${E} workspace`);if(l){await e.triggerMultipleHooks(e=>e.afterWorkspaceDependencyRemoval,u);return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async e=>{await t.install({cache:A,report:e})})).exitCode()}return 0}}Te.usage=C.Command.Usage({description:"remove dependencies from the project",details:"\n This command will remove the packages matching the specified patterns from the current workspace.\n\n This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n ",examples:[["Remove a dependency from the current project","$0 remove lodash"],["Remove a dependency from all workspaces at once","$0 remove lodash --all"],["Remove all dependencies starting with `eslint-`","$0 remove 'eslint-*'"],["Remove all dependencies with the `@babel` scope","$0 remove '@babel/*'"],["Remove all dependencies matching `react-dom` or `react-helmet`","$0 remove 'react-{dom,helmet}'"]]}),(0,a.gn)([C.Command.Boolean("-A,--all",{description:"Apply the operation to all workspaces from the current project"})],Te.prototype,"all",void 0),(0,a.gn)([C.Command.Rest()],Te.prototype,"patterns",void 0),(0,a.gn)([C.Command.Path("remove")],Te.prototype,"execute",null);class je extends c.BaseCommand{async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd);if(!r)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async t=>{const A=r.manifest.scripts,n=P.sortMap(A.keys(),e=>e),o={breakLength:1/0,colors:e.get("enableColors"),maxArrayLength:2},i=n.reduce((e,t)=>Math.max(e,t.length),0);for(const[e,r]of A.entries())t.reportInfo(null,`${e.padEnd(i," ")} ${(0,T.inspect)(r,o)}`)})).exitCode()}}(0,a.gn)([C.Command.Path("run")],je.prototype,"execute",null);class Ye extends c.BaseCommand{constructor(){super(...arguments),this.inspect=!1,this.inspectBrk=!1,this.topLevel=!1,this.binariesOnly=!1,this.args=[]}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r,locator:A}=await h.I.find(e,this.context.cwd);await t.restoreInstallState();const n=this.topLevel?t.topLevelWorkspace.anchoredLocator:A;if(!this.binariesOnly&&await R.hasPackageScript(n,this.scriptName,{project:t}))return await R.executePackageScript(n,this.scriptName,this.args,{project:t,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if((await R.getPackageAccessibleBinaries(n,{project:t})).get(this.scriptName)){const e=[];return this.inspect&&("string"==typeof this.inspect?e.push("--inspect="+this.inspect):e.push("--inspect")),this.inspectBrk&&("string"==typeof this.inspectBrk?e.push("--inspect-brk="+this.inspectBrk):e.push("--inspect-brk")),await R.executePackageAccessibleBinary(n,this.scriptName,this.args,{cwd:this.context.cwd,project:t,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:e})}if(!this.topLevel&&!this.binariesOnly&&r&&this.scriptName.includes(":")){const e=(await Promise.all(t.workspaces.map(async e=>e.manifest.scripts.has(this.scriptName)?e:null))).filter(e=>null!==e);if(1===e.length)return await R.executeWorkspaceScript(e[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw"node-gyp"===this.scriptName?new C.UsageError(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${d.prettyLocator(e,A)}). This typically happens because some package depends on "node-gyp" to build itself, but didn't list it in their dependencies. To fix that, please run "yarn add node-gyp" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new C.UsageError(`Couldn't find a script name "${this.scriptName}" in the top-level (used by ${d.prettyLocator(e,A)}).`);{if("global"===this.scriptName)throw new C.UsageError("The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead");const e=[this.scriptName].concat(this.args);for(const[t,r]of c.pluginCommands)for(const A of r)if(e.length>=A.length&&JSON.stringify(e.slice(0,A.length))===JSON.stringify(A))throw new C.UsageError(`Couldn't find a script named "${this.scriptName}", but a matching command can be found in the ${t} plugin. You can install it with "yarn plugin import ${t}".`);throw new C.UsageError(`Couldn't find a script named "${this.scriptName}".`)}}}Ye.usage=C.Command.Usage({description:"run a script defined in the package.json",details:"\n This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:\n\n - If the `scripts` field from your local package.json contains a matching script name, its definition will get executed.\n\n - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.\n\n - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.\n\n Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).\n ",examples:[["Run the tests from the local workspace","$0 run test"],['Same thing, but without the "run" keyword',"$0 test"],["Inspect Webpack while running","$0 run --inspect-brk webpack"]]}),(0,a.gn)([C.Command.String("--inspect",{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"})],Ye.prototype,"inspect",void 0),(0,a.gn)([C.Command.String("--inspect-brk",{tolerateBoolean:!0,description:"Forwarded to the underlying Node process when executing a binary"})],Ye.prototype,"inspectBrk",void 0),(0,a.gn)([C.Command.Boolean("-T,--top-level",{hidden:!0})],Ye.prototype,"topLevel",void 0),(0,a.gn)([C.Command.Boolean("-B,--binaries-only",{hidden:!0})],Ye.prototype,"binariesOnly",void 0),(0,a.gn)([C.Command.Boolean("--silent",{hidden:!0})],Ye.prototype,"silent",void 0),(0,a.gn)([C.Command.String()],Ye.prototype,"scriptName",void 0),(0,a.gn)([C.Command.Proxy()],Ye.prototype,"args",void 0),(0,a.gn)([C.Command.Path("run")],Ye.prototype,"execute",null);class Ge extends c.BaseCommand{constructor(){super(...arguments),this.save=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd),A=await g.C.find(e);if(!r)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);const n=d.parseDescriptor(this.descriptor,!0),o=d.makeDescriptor(n,this.resolution);t.storedDescriptors.set(n.descriptorHash,n),t.storedDescriptors.set(o.descriptorHash,o),t.resolutionAliases.set(n.descriptorHash,o.descriptorHash);return(await p.Pk.start({configuration:e,stdout:this.context.stdout},async e=>{await t.install({cache:A,report:e})})).exitCode()}}Ge.usage=C.Command.Usage({description:"enforce a package resolution",details:'\n This command updates the resolution table so that `descriptor` is resolved by `resolution`.\n\n Note that by default this command only affect the current resolution table - meaning that this "manual override" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, add the `-s,--save` flag which will also edit the `resolutions` field from your top-level manifest.\n\n Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\n ',examples:[["Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0","$0 set resolution lodash@npm:^1.2.3 1.5.0"]]}),(0,a.gn)([C.Command.String()],Ge.prototype,"descriptor",void 0),(0,a.gn)([C.Command.String()],Ge.prototype,"resolution",void 0),(0,a.gn)([C.Command.Boolean("-s,--save",{description:"Persist the resolution inside the top-level manifest"})],Ge.prototype,"save",void 0),(0,a.gn)([C.Command.Path("set","resolution")],Ge.prototype,"execute",null);class He extends c.BaseCommand{constructor(){super(...arguments),this.patterns=[],this.interactive=null,this.exact=!1,this.tilde=!1,this.caret=!1}async execute(){var e;const t=await s.VK.find(this.context.cwd,this.context.plugins),{project:r,workspace:A}=await h.I.find(t,this.context.cwd),o=await g.C.find(t);if(!A)throw new c.WorkspaceRequiredError(r.cwd,this.context.cwd);const a=null!==(e=this.interactive)&&void 0!==e?e:t.get("preferInteractive"),I=D(this,r),E=a?[i.KEEP,i.REUSE,i.PROJECT,i.LATEST]:[i.PROJECT,i.LATEST],y=[],m=[];for(const e of this.patterns){let t=!1;const A=d.parseDescriptor(e);for(const e of r.workspaces)for(const i of[n.REGULAR,n.DEVELOPMENT]){const n=[...e.manifest.getForScope(i).values()].map(e=>d.stringifyIdent(e));for(const s of Z()(n,d.stringifyIdent(A))){const n=d.parseIdent(s),a=e.manifest[i].get(n.identHash);if(void 0===a)throw new Error("Assertion failed: Expected the descriptor to be registered");const c=d.makeDescriptor(n,A.range);y.push(Promise.resolve().then(async()=>[e,i,a,await F(c,{project:r,workspace:e,cache:o,target:i,modifier:I,strategies:E})])),t=!0}}t||m.push(e)}if(m.length>1)throw new C.UsageError(`Patterns ${B.prettyList(t,m,s.a5.CODE)} don't match any packages referenced by any workspace`);if(m.length>0)throw new C.UsageError(`Pattern ${B.prettyList(t,m,s.a5.CODE)} doesn't match any packages referenced by any workspace`);const w=await Promise.all(y),Q=await l.h.start({configuration:t,stdout:this.context.stdout,suggestInstall:!1},async e=>{for(const[,,A,{suggestions:n,rejections:o}]of w){const i=n.filter(e=>null!==e.descriptor);if(0===i.length){const[n]=o;if(void 0===n)throw new Error("Assertion failed: Expected an error to have been set");const i=this.cli.error(n);r.configuration.get("enableNetwork")?e.reportError(u.b.CANT_SUGGEST_RESOLUTIONS,`${d.prettyDescriptor(t,A)} can't be resolved to a satisfying range\n\n${i}`):e.reportError(u.b.CANT_SUGGEST_RESOLUTIONS,`${d.prettyDescriptor(t,A)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${i}`)}else i.length>1&&!a&&e.reportError(u.b.CANT_SUGGEST_RESOLUTIONS,d.prettyDescriptor(t,A)+" has multiple possible upgrade strategies; use -i to disambiguate manually")}});if(Q.hasErrors())return Q.exitCode();let b=!1;const v=[];for(const[e,A,,{suggestions:n}]of w){let o;const i=n.filter(e=>null!==e.descriptor),s=i[0].descriptor,a=i.every(e=>d.areDescriptorsEqual(e.descriptor,s));1===i.length||a?o=s:(b=!0,({answer:o}=await(0,f.prompt)({type:"select",name:"answer",message:`Which range to you want to use in ${d.prettyWorkspace(t,e)} ❯ ${A}?`,choices:n.map(({descriptor:e,name:t,reason:r})=>e?{name:t,hint:r,descriptor:e}:{name:t,hint:r,disabled:!0}),onCancel:()=>process.exit(130),result(e){return this.find(e,"descriptor")},stdin:this.context.stdin,stdout:this.context.stdout})));const c=e.manifest[A].get(o.identHash);if(void 0===c)throw new Error("Assertion failed: This descriptor should have a matching entry");if(c.descriptorHash!==o.descriptorHash)e.manifest[A].set(o.identHash,o),v.push([e,A,c,o]);else{const A=t.makeResolver(),n={project:r,resolver:A},o=A.bindDescriptor(c,e.anchoredLocator,n);r.forgetResolution(o)}}await t.triggerMultipleHooks(e=>e.afterWorkspaceDependencyReplacement,v),b&&this.context.stdout.write("\n");return(await p.Pk.start({configuration:t,stdout:this.context.stdout},async e=>{await r.install({cache:o,report:e})})).exitCode()}}He.usage=C.Command.Usage({description:"upgrade dependencies across the project",details:"\n This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\n\n If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\n\n The, `-C,--caret`, `-E,--exact` and `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\n\n Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\n\n This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n\n **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\n ",examples:[["Upgrade all instances of lodash to the latest release","$0 up lodash"],["Upgrade all instances of lodash to the latest release, but ask confirmation for each","$0 up lodash -i"],["Upgrade all instances of lodash to 1.2.3","$0 up lodash@1.2.3"],["Upgrade all instances of packages with the `@babel` scope to the latest release","$0 up '@babel/*'"],["Upgrade all instances of packages containing the word `jest` to the latest release","$0 up '*jest*'"],["Upgrade all instances of packages with the `@babel` scope to 7.0.0","$0 up '@babel/*@7.0.0'"]]}),(0,a.gn)([C.Command.Rest()],He.prototype,"patterns",void 0),(0,a.gn)([C.Command.Boolean("-i,--interactive",{description:"Offer various choices, depending on the detected upgrade paths"})],He.prototype,"interactive",void 0),(0,a.gn)([C.Command.Boolean("-E,--exact",{description:"Don't use any semver modifier on the resolved range"})],He.prototype,"exact",void 0),(0,a.gn)([C.Command.Boolean("-T,--tilde",{description:"Use the `~` semver modifier on the resolved range"})],He.prototype,"tilde",void 0),(0,a.gn)([C.Command.Boolean("-C,--caret",{description:"Use the `^` semver modifier on the resolved range"})],He.prototype,"caret",void 0),(0,a.gn)([C.Command.Path("up")],He.prototype,"execute",null);class Je extends c.BaseCommand{constructor(){super(...arguments),this.recursive=!1,this.json=!1,this.peers=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd);if(!r)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);await t.restoreInstallState();const A=d.parseIdent(this.package).identHash,n=this.recursive?function(e,t,{configuration:r,peers:A}){const n=P.sortMap(e.workspaces,e=>d.stringifyLocator(e.anchoredLocator)),o=new Set,i=new Set,s=r=>{if(o.has(r.locatorHash))return i.has(r.locatorHash);if(o.add(r.locatorHash),r.identHash===t)return i.add(r.locatorHash),!0;let n=!1;r.identHash===t&&(n=!0);for(const t of r.dependencies.values()){if(!A&&r.peerDependencies.has(t.identHash))continue;const o=e.storedResolutions.get(t.descriptorHash);if(!o)throw new Error("Assertion failed: The resolution should have been registered");const i=e.storedPackages.get(o);if(!i)throw new Error("Assertion failed: The package should have been registered");s(i)&&(n=!0)}return n&&i.add(r.locatorHash),n};for(const t of n){const r=e.storedPackages.get(t.anchoredLocator.locatorHash);if(!r)throw new Error("Assertion failed: The package should have been registered");s(r)}const a=new Set,c={},g={children:c},l=(t,r,n)=>{if(!i.has(t.locatorHash))return;const o={},s={value:null!==n?B.tuple(B.Type.DEPENDENT,{locator:t,descriptor:n}):B.tuple(B.Type.LOCATOR,t),children:o};if(r[d.stringifyLocator(t)]=s,!a.has(t.locatorHash)&&(a.add(t.locatorHash),null===n||!e.tryWorkspaceByLocator(t)))for(const r of t.dependencies.values()){if(!A&&t.peerDependencies.has(r.identHash))continue;const n=e.storedResolutions.get(r.descriptorHash);if(!n)throw new Error("Assertion failed: The resolution should have been registered");const i=e.storedPackages.get(n);if(!i)throw new Error("Assertion failed: The package should have been registered");l(i,o,r)}};for(const t of n){const r=e.storedPackages.get(t.anchoredLocator.locatorHash);if(!r)throw new Error("Assertion failed: The package should have been registered");l(r,c,null)}return g}(t,A,{configuration:e,peers:this.peers}):function(e,t,{configuration:r,peers:A}){const n=P.sortMap(e.storedPackages.values(),e=>d.stringifyLocator(e)),o={},i={children:o};for(const r of n){const n={},i=null;for(const s of r.dependencies.values()){if(!A&&r.peerDependencies.has(s.identHash))continue;const a=e.storedResolutions.get(s.descriptorHash);if(!a)throw new Error("Assertion failed: The resolution should have been registered");const c=e.storedPackages.get(a);if(!c)throw new Error("Assertion failed: The package should have been registered");if(c.identHash!==t)continue;if(null===i){const e=d.stringifyLocator(r);o[e]={value:[r,B.Type.LOCATOR],children:n}}const g=d.stringifyLocator(c);n[g]={value:[{descriptor:s,locator:c},B.Type.DEPENDENT]}}}return i}(t,A,{configuration:e,peers:this.peers});le.emitTree(n,{configuration:e,stdout:this.context.stdout,json:this.json,separators:1})}}Je.usage=C.Command.Usage({description:"display the reason why a package is needed",details:'\n This command prints the exact reasons why a package appears in the dependency tree.\n\n If `-R,--recursive` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named "Foo" when looking for "Bar", it means that "Foo" already got printed higher in the tree.\n ',examples:[["Explain why lodash is used in your project","$0 why lodash"]]}),(0,a.gn)([C.Command.String()],Je.prototype,"package",void 0),(0,a.gn)([C.Command.Boolean("-R,--recursive",{description:"List, for each workspace, what are all the paths that lead to the dependency"})],Je.prototype,"recursive",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],Je.prototype,"json",void 0),(0,a.gn)([C.Command.Boolean("--peers",{description:"Also print the peer dependencies that match the specified name"})],Je.prototype,"peers",void 0),(0,a.gn)([C.Command.Path("why")],Je.prototype,"execute",null);class qe extends c.BaseCommand{constructor(){super(...arguments),this.verbose=!1,this.json=!1}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t}=await h.I.find(e,this.context.cwd);return(await p.Pk.start({configuration:e,json:this.json,stdout:this.context.stdout},async e=>{for(const r of t.workspaces){const{manifest:A}=r;let n;if(this.verbose){const e=new Set,r=new Set;for(const n of E.G.hardDependencies)for(const[o,i]of A.getForScope(n)){const A=t.tryWorkspaceByDescriptor(i);null===A?t.workspacesByIdent.has(o)&&r.add(i):e.add(A)}n={workspaceDependencies:Array.from(e).map(e=>e.relativeCwd),mismatchedWorkspaceDependencies:Array.from(r).map(e=>d.stringifyDescriptor(e))}}e.reportInfo(null,""+r.relativeCwd),e.reportJson({location:r.relativeCwd,name:A.name?d.stringifyIdent(A.name):null,...n})}})).exitCode()}}qe.usage=C.Command.Usage({category:"Workspace-related commands",description:"list all available workspaces",details:"\n This command will print the list of all workspaces in the project. If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\n "}),(0,a.gn)([C.Command.Boolean("-v,--verbose",{description:"Also return the cross-dependencies between workspaces"})],qe.prototype,"verbose",void 0),(0,a.gn)([C.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],qe.prototype,"json",void 0),(0,a.gn)([C.Command.Path("workspaces","list")],qe.prototype,"execute",null);class ze extends C.Command{constructor(){super(...arguments),this.args=[]}async execute(){const e=await s.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await h.I.find(e,this.context.cwd);if(!r)throw new c.WorkspaceRequiredError(t.cwd,this.context.cwd);const A=t.workspaces,n=new Map(A.map(e=>{const t=d.convertToIdent(e.locator);return[d.stringifyIdent(t),e]})),o=n.get(this.workspaceName);if(void 0===o){const e=Array.from(n.keys()).sort();throw new C.UsageError(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:\n - ${e.join("\n - ")}?`)}return this.cli.run([this.commandName,...this.args],{cwd:o.cwd})}}ze.usage=C.Command.Usage({category:"Workspace-related commands",description:"run a command within the specified workspace",details:"\n This command will run a given sub-command on a single workspace.\n ",examples:[["Add a package to a single workspace","yarn workspace components add -D react"],["Run build script on a single workspace","yarn workspace components run build"]]}),(0,a.gn)([C.Command.String()],ze.prototype,"workspaceName",void 0),(0,a.gn)([C.Command.String()],ze.prototype,"commandName",void 0),(0,a.gn)([C.Command.Proxy()],ze.prototype,"args",void 0),(0,a.gn)([C.Command.Path("workspace")],ze.prototype,"execute",null);const We={configuration:{enableImmutableInstalls:{description:"If true, prevents the install command from modifying the lockfile",type:s.a2.BOOLEAN,default:!1},defaultSemverRangePrefix:{description:"The default save prefix: '^', '~' or ''",type:s.a2.STRING,values:["^","~",""],default:o.CARET}},commands:[L,j,q,Ge,ve,we,qe,re,Ae,ne,ie,M,x,z,te,ae,ge,ue,de,Ce,fe,Le,Re,Pe,Me,Oe,Ue,Te,je,Ye,He,Je,ze]}},68023:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>E,fileUtils:()=>A});var A={};r.r(A),r.d(A,{makeArchiveFromLocator:()=>p,makeBufferFromLocator:()=>d,makeLocator:()=>h,makeSpec:()=>u,parseSpec:()=>l});var n=r(54143),o=r(46009);const i=/^(?:[a-zA-Z]:[\\/]|\.{0,2}\/)/,s=/^[^?]*\.(?:tar\.gz|tgz)(?:::.*)?$/;var a=r(73632),c=r(72785),g=r(75448);function l(e){const{params:t,selector:r}=n.parseRange(e),A=o.cS.toPortablePath(r);return{parentLocator:t&&"string"==typeof t.locator?n.parseLocator(t.locator):null,path:A}}function u({parentLocator:e,path:t,folderHash:r,protocol:A}){const o=null!==e?{locator:n.stringifyLocator(e)}:{},i=void 0!==r?{hash:r}:{};return n.makeRange({protocol:A,source:t,selector:t,params:{...i,...o}})}function h(e,{parentLocator:t,path:r,folderHash:A,protocol:o}){return n.makeLocator(e,u({parentLocator:t,path:r,folderHash:A,protocol:o}))}async function p(e,{protocol:t,fetchOptions:r,inMemory:A=!1}){const{parentLocator:i,path:s}=n.parseFileStyleRange(e.reference,{protocol:t}),l=o.y1.isAbsolute(s)?{packageFs:new g.M(o.LZ.root),prefixPath:o.LZ.dot,localPath:o.LZ.root}:await r.fetcher.fetch(i,r),u=l.localPath?{packageFs:new g.M(o.LZ.root),prefixPath:o.y1.relative(o.LZ.root,l.localPath)}:l;l!==u&&l.releaseFs&&l.releaseFs();const h=u.packageFs,p=o.y1.join(u.prefixPath,s);return await a.releaseAfterUseAsync(async()=>await c.makeArchiveFromDirectory(p,{baseFs:h,prefixPath:n.getIdentVendorPath(e),compressionLevel:r.project.configuration.get("compressionLevel"),inMemory:A}),u.releaseFs)}async function d(e,{protocol:t,fetchOptions:r}){return(await p(e,{protocol:t,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var C=r(20624),f=r(32485),I=r(46611);const E={fetchers:[class{supports(e,t){return!!s.test(e.reference)&&!!e.reference.startsWith("file:")}getLocalPath(e,t){return null}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,[A,o,i]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,n.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from the disk"),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:A,releaseFs:o,prefixPath:n.getIdentVendorPath(e),checksum:i}}async fetchFromDisk(e,t){const{parentLocator:r,path:A}=n.parseFileStyleRange(e.reference,{protocol:"file:"}),i=o.y1.isAbsolute(A)?{packageFs:new g.M(o.LZ.root),prefixPath:o.LZ.dot,localPath:o.LZ.root}:await t.fetcher.fetch(r,t),s=i.localPath?{packageFs:new g.M(o.LZ.root),prefixPath:o.y1.relative(o.LZ.root,i.localPath)}:i;i!==s&&i.releaseFs&&i.releaseFs();const l=s.packageFs,u=o.y1.join(s.prefixPath,A),h=await l.readFilePromise(u);return await a.releaseAfterUseAsync(async()=>await c.convertToZip(h,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:n.getIdentVendorPath(e),stripComponents:1}),s.releaseFs)}},class{supports(e,t){return!!e.reference.startsWith("file:")}getLocalPath(e,t){const{parentLocator:r,path:A}=n.parseFileStyleRange(e.reference,{protocol:"file:"});if(o.y1.isAbsolute(A))return A;const i=t.fetcher.getLocalPath(r,t);return null===i?null:o.y1.resolve(i,A)}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,[A,o,i]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,n.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from the disk"),loader:()=>this.fetchFromDisk(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:A,releaseFs:o,prefixPath:n.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:i}}async fetchFromDisk(e,t){return p(e,{protocol:"file:",fetchOptions:t})}}],resolvers:[class{supportsDescriptor(e,t){return!!s.test(e.range)&&(!!e.range.startsWith("file:")||!!i.test(e.range))}supportsLocator(e,t){return!!s.test(e.reference)&&!!e.reference.startsWith("file:")}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,r){return i.test(e.range)&&(e=n.makeDescriptor(e,"file:"+e.range)),n.bindDescriptor(e,{locator:n.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){let A=e.range;return A.startsWith("file:")&&(A=A.slice("file:".length)),[n.makeLocator(e,"file:"+o.cS.toPortablePath(A))]}async getSatisfying(e,t,r){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");const r=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),A=await a.releaseAfterUseAsync(async()=>await I.G.find(r.prefixPath,{baseFs:r.packageFs}),r.releaseFs);return{...e,version:A.version||"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:f.Un.HARD,dependencies:A.dependencies,peerDependencies:A.peerDependencies,dependenciesMeta:A.dependenciesMeta,peerDependenciesMeta:A.peerDependenciesMeta,bin:A.bin}}},class{supportsDescriptor(e,t){return!!e.range.match(i)||!!e.range.startsWith("file:")}supportsLocator(e,t){return!!e.reference.startsWith("file:")}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){return i.test(e.range)&&(e=n.makeDescriptor(e,"file:"+e.range)),n.bindDescriptor(e,{locator:n.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");const{path:A,parentLocator:o}=l(e.range);if(null===o)throw new Error("Assertion failed: The descriptor should have been bound");const i=await d(n.makeLocator(e,n.makeRange({protocol:"file:",source:A,selector:A,params:{locator:n.stringifyLocator(o)}})),{protocol:"file:",fetchOptions:r.fetchOptions});return[h(e,{parentLocator:o,path:A,folderHash:C.makeHash("1",i).slice(0,6),protocol:"file:"})]}async getSatisfying(e,t,r){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");const r=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),A=await a.releaseAfterUseAsync(async()=>await I.G.find(r.prefixPath,{baseFs:r.packageFs}),r.releaseFs);return{...e,version:A.version||"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:f.Un.HARD,dependencies:A.dependencies,peerDependencies:A.peerDependencies,dependenciesMeta:A.dependenciesMeta,peerDependenciesMeta:A.peerDependenciesMeta,bin:A.bin}}}]}},75641:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>F,gitUtils:()=>A});var A={};r.r(A),r.d(A,{TreeishProtocols:()=>y,clone:()=>S,isGitUrl:()=>m,lsRemote:()=>b,normalizeLocator:()=>D,normalizeRepoUrl:()=>Q,resolveUrl:()=>v,splitRepoUrl:()=>w});var n=r(39922),o=r(54143),i=r(63088),s=r(73632),a=r(72785),c=r(43896),g=r(46009),l=r(79669),u=r(6220),h=r(71191),p=r.n(h),d=r(53887),C=r.n(d),f=r(78835),I=r.n(f);function E(){return{...process.env,GIT_SSH_COMMAND:"ssh -o BatchMode=yes"}}const B=[/^ssh:/,/^git(?:\+[^:]+)?:/,/^(?:git\+)?https?:[^#]+\/[^#]+(?:\.git)(?:#.*)?$/,/^git@[^#]+\/[^#]+\.git(?:#.*)?$/,/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z._0-9-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z._0-9-]+?)(?:\.git)?(?:#.*)?$/,/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/];var y;function m(e){return!!e&&B.some(t=>!!e.match(t))}function w(e){const t=(e=Q(e)).indexOf("#");if(-1===t)return{repo:e,treeish:{protocol:y.Head,request:"master"},extra:{}};const r=e.slice(0,t),A=e.slice(t+1);if(A.match(/^[a-z]+=/)){const e=p().parse(A);for(const[t,r]of Object.entries(e))if("string"!=typeof r)throw new Error(`Assertion failed: The ${t} parameter must be a literal string`);const t=Object.values(y).find(t=>Object.prototype.hasOwnProperty.call(e,t));let n,o;void 0!==t?(n=t,o=e[t]):(n=y.Head,o="master");for(const t of Object.values(y))delete e[t];return{repo:r,treeish:{protocol:n,request:o},extra:e}}{const e=A.indexOf(":");let t,n;return-1===e?(t=null,n=A):(t=A.slice(0,e),n=A.slice(e+1)),{repo:r,treeish:{protocol:t,request:n},extra:{}}}}function Q(e,{git:t=!1}={}){var r;if(e=(e=(e=e.replace(/^git\+https:/,"https:")).replace(/^(?:github:|https:\/\/github\.com\/)?(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)(?:\.git)?(#.*)?$/,"https://github.com/$1/$2.git$3")).replace(/^https:\/\/github\.com\/(?!\.{1,2}\/)([a-zA-Z0-9._-]+)\/(?!\.{1,2}(?:#|$))([a-zA-Z0-9._-]+?)\/tarball\/(.+)?$/,"https://github.com/$1/$2.git#$3"),t){let t;e=e.replace(/^git\+([^:]+):/,"$1:");try{t=I().parse(e)}catch(e){t=null}t&&"ssh:"===t.protocol&&(null===(r=t.path)||void 0===r?void 0:r.startsWith("/:"))&&(e=e.replace(/^ssh:\/\//,""))}return e}function D(e){return o.makeLocator(e,Q(e.reference))}async function b(e,t){const r=Q(e,{git:!0});if(!l.getNetworkSettings(r,{configuration:t}).enableNetwork)throw new Error(`Request to '${r}' has been blocked because of your configuration settings`);let A;try{A=await u.execvp("git",["ls-remote","--refs",r],{cwd:t.startingCwd,env:E(),strict:!0})}catch(t){throw t.message=`Listing the refs for ${e} failed`,t}const n=new Map,o=/^([a-f0-9]{40})\t(refs\/[^\n]+)/gm;let i;for(;null!==(i=o.exec(A.stdout));)n.set(i[2],i[1]);return n}async function v(e,t){const{repo:r,treeish:{protocol:A,request:n},extra:o}=w(e),i=await b(r,t),s=(e,t)=>{switch(e){case y.Commit:if(!t.match(/^[a-f0-9]{40}$/))throw new Error("Invalid commit hash");return p().stringify({...o,commit:t});case y.Head:{const e=i.get("refs/heads/"+t);if(void 0===e)throw new Error(`Unknown head ("${t}")`);return p().stringify({...o,commit:e})}case y.Tag:{const e=i.get("refs/tags/"+t);if(void 0===e)throw new Error(`Unknown tag ("${t}")`);return p().stringify({...o,commit:e})}case y.Semver:{if(!C().validRange(t))throw new Error(`Invalid range ("${t}")`);const e=new Map([...i.entries()].filter(([e])=>e.startsWith("refs/tags/")).map(([e,t])=>[C().parse(e.slice(10)),t]).filter(e=>null!==e[0])),r=C().maxSatisfying([...e.keys()],t);if(null===r)throw new Error(`No matching range ("${t}")`);return p().stringify({...o,commit:e.get(r)})}case null:{let e;if(null!==(e=a(y.Commit,t)))return e;if(null!==(e=a(y.Tag,t)))return e;if(null!==(e=a(y.Head,t)))return e;throw t.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve "${t}" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve "${t}" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol ("${e}")`)}},a=(e,t)=>{try{return s(e,t)}catch(e){return null}};return`${r}#${s(A,n)}`}async function S(e,t){return await t.getLimit("cloneConcurrency")(async()=>{const{repo:r,treeish:{protocol:A,request:n}}=w(e);if("commit"!==A)throw new Error("Invalid treeish protocol when cloning");const o=Q(r,{git:!0});if(!1===l.getNetworkSettings(o,{configuration:t}).enableNetwork)throw new Error(`Request to '${o}' has been blocked because of your configuration settings`);const i=await c.xfs.mktempPromise(),s={cwd:i,env:E(),strict:!0};try{await u.execvp("git",["clone","-c core.autocrlf=false",o,g.cS.fromPortablePath(i)],s),await u.execvp("git",["checkout",""+n],s)}catch(e){throw e.message="Repository clone failed: "+e.message,e}return i})}!function(e){e.Commit="commit",e.Head="head",e.Tag="tag",e.Semver="semver"}(y||(y={}));var k=r(32485),N=r(46611);const F={configuration:{cloneConcurrency:{description:"Maximal number of concurrent clones",type:n.a2.NUMBER,default:2}},fetchers:[class{supports(e,t){return m(e.reference)}getLocalPath(e,t){return null}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,A=D(e),n=new Map(t.checksums);n.set(A.locatorHash,r);const i={...t,checksums:n},s=await this.downloadHosted(A,i);if(null!==s)return s;const[a,c,g]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,o.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from the remote repository"),loader:()=>this.cloneFromRemote(A,i),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:a,releaseFs:c,prefixPath:o.getIdentVendorPath(e),checksum:g}}async downloadHosted(e,t){return t.project.configuration.reduceHook(e=>e.fetchHostedRepository,null,e,t)}async cloneFromRemote(e,t){const r=await S(e.reference,t.project.configuration),A=w(e.reference),n=g.y1.join(r,"package.tgz");await i.prepareExternalProject(r,n,{configuration:t.project.configuration,report:t.report,workspace:A.extra.workspace});const l=await c.xfs.readFilePromise(n);return await s.releaseAfterUseAsync(async()=>await a.convertToZip(l,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:o.getIdentVendorPath(e),stripComponents:1}))}}],resolvers:[class{supportsDescriptor(e,t){return m(e.range)}supportsLocator(e,t){return m(e.reference)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){const A=await v(e.range,r.project.configuration);return[o.makeLocator(e,A)]}async getSatisfying(e,t,r){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");const r=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),A=await s.releaseAfterUseAsync(async()=>await N.G.find(r.prefixPath,{baseFs:r.packageFs}),r.releaseFs);return{...e,version:A.version||"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:k.Un.HARD,dependencies:A.dependencies,peerDependencies:A.peerDependencies,dependenciesMeta:A.dependenciesMeta,peerDependenciesMeta:A.peerDependenciesMeta,bin:A.bin}}}]}},68126:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>d});var A=r(54143),n=r(79669),o=r(72785),i=r(63088),s=r(43896),a=r(75448),c=r(46009),g=r(75641),l=r(71191),u=r.n(l);const h=[/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+)\/tarball\/([^/#]+)(?:#(.*))?$/,/^https?:\/\/(?:([^/]+?)@)?github.com\/([^/#]+)\/([^/#]+?)(?:\.git)?(?:#(.*))?$/];class p{supports(e,t){return!(!(r=e.reference)||!h.some(e=>!!r.match(e)));var r}getLocalPath(e,t){return null}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,[n,o,i]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,A.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from GitHub"),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:n,releaseFs:o,prefixPath:A.getIdentVendorPath(e),checksum:i}}async fetchFromNetwork(e,t){const r=await n.get(this.getLocatorUrl(e,t),{configuration:t.project.configuration});return await s.xfs.mktempPromise(async n=>{const l=new a.M(n);await o.extractArchiveTo(r,l,{stripComponents:1});const u=g.gitUtils.splitRepoUrl(e.reference),h=c.y1.join(n,"package.tgz");await i.prepareExternalProject(n,h,{configuration:t.project.configuration,report:t.report,workspace:u.extra.workspace});const p=await s.xfs.readFilePromise(h);return await o.convertToZip(p,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:A.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,t){const{auth:r,username:A,reponame:n,treeish:o}=function(e){let t;for(const r of h)if(t=e.match(r),t)break;if(!t)throw new Error(`Input cannot be parsed as a valid GitHub URL ('${e}').`);let[,r,A,n,o="master"]=t;const{commit:i}=u().parse(o);return o=i||o.replace(/[^:]*:/,""),{auth:r,username:A,reponame:n,treeish:o}}(e.reference);return`https://${r?r+"@":""}github.com/${A}/${n}/archive/${o}.tar.gz`}}const d={hooks:{async fetchHostedRepository(e,t,r){if(null!==e)return e;const A=new p;if(!A.supports(t,r))return null;try{return await A.fetch(t,r)}catch(e){return null}}}}},99148:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>l});var A=r(54143),n=r(79669),o=r(72785);const i=/^[^?]*\.(?:tar\.gz|tgz)(?:\?.*)?$/,s=/^https?:/;var a=r(46611),c=r(32485),g=r(73632);const l={fetchers:[class{supports(e,t){return!!i.test(e.reference)&&!!s.test(e.reference)}getLocalPath(e,t){return null}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,[n,o,i]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,A.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from the remote server"),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:n,releaseFs:o,prefixPath:A.getIdentVendorPath(e),checksum:i}}async fetchFromNetwork(e,t){const r=await n.get(e.reference,{configuration:t.project.configuration});return await o.convertToZip(r,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:A.getIdentVendorPath(e),stripComponents:1})}}],resolvers:[class{supportsDescriptor(e,t){return!!i.test(e.range)&&!!s.test(e.range)}supportsLocator(e,t){return!!i.test(e.reference)&&!!s.test(e.reference)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){return[A.convertDescriptorToLocator(e)]}async getSatisfying(e,t,r){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");const r=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),A=await g.releaseAfterUseAsync(async()=>await a.G.find(r.prefixPath,{baseFs:r.packageFs}),r.releaseFs);return{...e,version:A.version||"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:c.Un.HARD,dependencies:A.dependencies,peerDependencies:A.peerDependencies,dependenciesMeta:A.dependenciesMeta,peerDependenciesMeta:A.peerDependenciesMeta,bin:A.bin}}}]}},64314:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>I});var A=r(39922),n=r(36370),o=r(25413),i=r(46611),s=r(85824),a=r(6220),c=r(63088),g=r(54143),l=r(43896),u=r(46009),h=r(40822),p=r(80305),d=r.n(p),C=r(31669);class f extends o.BaseCommand{constructor(){super(...arguments),this.usev2=!1,this.assumeFreshProject=!1,this.yes=!1,this.private=!1,this.workspace=!1,this.install=!1}async execute(){if(l.xfs.existsSync(u.y1.join(this.context.cwd,i.G.fileName)))throw new h.UsageError("A package.json already exists in the specified directory");const e=await A.VK.find(this.context.cwd,this.context.plugins),t=this.install?!0===this.install?"latest":this.install:null;return null!==t?await this.executeProxy(e,t):await this.executeRegular(e)}async executeProxy(e,t){if(null!==e.get("yarnPath"))throw new h.UsageError(`Cannot use the --install flag when the current directory already uses yarnPath (from ${e.sources.get("yarnPath")})`);if(null!==e.projectCwd)throw new h.UsageError("Cannot use the --install flag when the current directory is already part of a project");l.xfs.existsSync(this.context.cwd)||await l.xfs.mkdirPromise(this.context.cwd,{recursive:!0});const r=u.y1.join(this.context.cwd,e.get("lockfileFilename"));l.xfs.existsSync(r)||await l.xfs.writeFilePromise(r,"");const A=await this.cli.run(["set","version",t]);if(0!==A)return A;this.context.stdout.write("\n");const n=["--assume-fresh-project"];return this.private&&n.push("-p"),this.workspace&&n.push("-w"),this.yes&&n.push("-y"),await l.xfs.mktempPromise(async e=>{const{code:t}=await a.pipevp("yarn",["init",...n],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await c.makeScriptEnv({binFolder:e})});return t})}async executeRegular(e){let t=null;if(!this.assumeFreshProject)try{t=await s.I.find(e,this.context.cwd)}catch(e){t=null}l.xfs.existsSync(this.context.cwd)||await l.xfs.mkdirPromise(this.context.cwd,{recursive:!0});const r=new i.G,A=Object.fromEntries(e.get("initFields").entries());r.load(A),r.name=g.makeIdent(e.get("initScope"),u.y1.basename(this.context.cwd)),r.version=e.get("initVersion"),r.private=this.private||this.workspace,r.license=e.get("initLicense"),this.workspace&&(await l.xfs.mkdirPromise(u.y1.join(this.context.cwd,"packages"),{recursive:!0}),r.workspaceDefinitions=[{pattern:"packages/*"}]);const n={};r.exportTo(n),C.inspect.styles.name="cyan",this.context.stdout.write((0,C.inspect)(n,{depth:1/0,colors:!0,compact:!1})+"\n");const o=u.y1.join(this.context.cwd,i.G.fileName);await l.xfs.changeFilePromise(o,JSON.stringify(n,null,2)+"\n");const c=u.y1.join(this.context.cwd,"README.md");if(l.xfs.existsSync(c)||await l.xfs.writeFilePromise(c,`# ${g.stringifyIdent(r.name)}\n`),!t){const t=u.y1.join(this.context.cwd,u.QS.lockfile);await l.xfs.writeFilePromise(t,"");const r=["/.yarn/** linguist-vendored"].map(e=>e+"\n").join(""),A=u.y1.join(this.context.cwd,".gitattributes");l.xfs.existsSync(A)||await l.xfs.writeFilePromise(A,r);const n=["/.yarn/*","!/.yarn/releases","!/.yarn/plugins","!/.yarn/sdks","","# Swap the comments on the following lines if you don't wish to use zero-installs","# Documentation here: https://yarnpkg.com/features/zero-installs","!/.yarn/cache","#/.pnp.*"].map(e=>e+"\n").join(""),o=u.y1.join(this.context.cwd,".gitignore");l.xfs.existsSync(o)||await l.xfs.writeFilePromise(o,n);const i={"*":{endOfLine:"lf",insertFinalNewline:!0},"*.{js,json,.yml}":{charset:"utf-8",indentStyle:"space",indentSize:2}};d()(i,e.get("initEditorConfig"));let s="root = true\n";for(const[e,t]of Object.entries(i)){s+=`\n[${e}]\n`;for(const[e,r]of Object.entries(t)){s+=`${e.replace(/[A-Z]/g,e=>"_"+e.toLowerCase())} = ${r}\n`}}const c=u.y1.join(this.context.cwd,".editorconfig");l.xfs.existsSync(c)||await l.xfs.writeFilePromise(c,s),await a.execvp("git",["init"],{cwd:this.context.cwd})}}}f.usage=h.Command.Usage({description:"create a new package",details:"\n This command will setup a new package in your local directory.\n\n If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\n\n If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\n\n If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\n\n The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\n ",examples:[["Create a new package in the local directory","yarn init"],["Create a new private package in the local directory","yarn init -p"],["Create a new package and store the Yarn release inside","yarn init -i latest"],["Create a new private package and defines it as a workspace root","yarn init -w"]]}),(0,n.gn)([h.Command.Boolean("-2",{hidden:!0})],f.prototype,"usev2",void 0),(0,n.gn)([h.Command.Boolean("--assume-fresh-project",{hidden:!0})],f.prototype,"assumeFreshProject",void 0),(0,n.gn)([h.Command.Boolean("-y,--yes",{hidden:!0})],f.prototype,"yes",void 0),(0,n.gn)([h.Command.Boolean("-p,--private",{description:"Initialize a private package"})],f.prototype,"private",void 0),(0,n.gn)([h.Command.Boolean("-w,--workspace",{description:"Initialize a private workspace root with a `packages/` directory"})],f.prototype,"workspace",void 0),(0,n.gn)([h.Command.String("-i,--install",{tolerateBoolean:!0,description:"Initialize a package with a specific bundle that will be locked in the project"})],f.prototype,"install",void 0),(0,n.gn)([h.Command.Path("init")],f.prototype,"execute",null);const I={configuration:{initLicense:{description:"License used when creating packages via the init command",type:A.a2.STRING,default:null},initScope:{description:"Scope used when creating packages via the init command",type:A.a2.STRING,default:null},initVersion:{description:"Version used when creating packages via the init command",type:A.a2.STRING,default:null},initFields:{description:"Additional fields to set when creating packages via the init command",type:A.a2.MAP,valueDefinition:{description:"",type:A.a2.ANY}},initEditorConfig:{description:"Extra rules to define in the generator editorconfig",type:A.a2.MAP,valueDefinition:{description:"",type:A.a2.ANY}}},commands:[f]}},92994:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>g});var A=r(54143),n=r(46009),o=r(75448),i=r(10489);var s=r(46611),a=r(32485),c=r(73632);const g={fetchers:[class{supports(e,t){return!!e.reference.startsWith("link:")}getLocalPath(e,t){const{parentLocator:r,path:o}=A.parseFileStyleRange(e.reference,{protocol:"link:"});if(n.y1.isAbsolute(o))return o;const i=t.fetcher.getLocalPath(r,t);return null===i?null:n.y1.resolve(i,o)}async fetch(e,t){const{parentLocator:r,path:s}=A.parseFileStyleRange(e.reference,{protocol:"link:"}),a=n.y1.isAbsolute(s)?{packageFs:new o.M(n.LZ.root),prefixPath:n.LZ.dot,localPath:n.LZ.root}:await t.fetcher.fetch(r,t),c=a.localPath?{packageFs:new o.M(n.LZ.root),prefixPath:n.y1.relative(n.LZ.root,a.localPath)}:a;a!==c&&a.releaseFs&&a.releaseFs();const g=c.packageFs,l=n.y1.join(c.prefixPath,s);return a.localPath?{packageFs:new o.M(l,{baseFs:g}),releaseFs:c.releaseFs,prefixPath:n.LZ.dot,discardFromLookup:!0,localPath:l}:{packageFs:new i.n(l,{baseFs:g}),releaseFs:c.releaseFs,prefixPath:n.LZ.dot,discardFromLookup:!0}}},class{supports(e,t){return!!e.reference.startsWith("portal:")}getLocalPath(e,t){const{parentLocator:r,path:o}=A.parseFileStyleRange(e.reference,{protocol:"portal:"});if(n.y1.isAbsolute(o))return o;const i=t.fetcher.getLocalPath(r,t);return null===i?null:n.y1.resolve(i,o)}async fetch(e,t){const{parentLocator:r,path:s}=A.parseFileStyleRange(e.reference,{protocol:"portal:"}),a=n.y1.isAbsolute(s)?{packageFs:new o.M(n.LZ.root),prefixPath:n.LZ.dot,localPath:n.LZ.root}:await t.fetcher.fetch(r,t),c=a.localPath?{packageFs:new o.M(n.LZ.root),prefixPath:n.y1.relative(n.LZ.root,a.localPath)}:a;a!==c&&a.releaseFs&&a.releaseFs();const g=c.packageFs,l=n.y1.join(c.prefixPath,s);return a.localPath?{packageFs:new o.M(l,{baseFs:g}),releaseFs:c.releaseFs,prefixPath:n.LZ.dot,localPath:l}:{packageFs:new i.n(l,{baseFs:g}),releaseFs:c.releaseFs,prefixPath:n.LZ.dot}}}],resolvers:[class{supportsDescriptor(e,t){return!!e.range.startsWith("link:")}supportsLocator(e,t){return!!e.reference.startsWith("link:")}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){return A.bindDescriptor(e,{locator:A.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){const o=e.range.slice("link:".length);return[A.makeLocator(e,"link:"+n.cS.toPortablePath(o))]}async getSatisfying(e,t,r){return null}async resolve(e,t){return{...e,version:"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:a.Un.SOFT,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}},class{supportsDescriptor(e,t){return!!e.range.startsWith("portal:")}supportsLocator(e,t){return!!e.reference.startsWith("portal:")}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){return A.bindDescriptor(e,{locator:A.stringifyLocator(t)})}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){const o=e.range.slice("portal:".length);return[A.makeLocator(e,"portal:"+n.cS.toPortablePath(o))]}async getSatisfying(e,t,r){return null}async resolve(e,t){if(!t.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");const r=await t.fetchOptions.fetcher.fetch(e,t.fetchOptions),A=await c.releaseAfterUseAsync(async()=>await s.G.find(r.prefixPath,{baseFs:r.packageFs}),r.releaseFs);return{...e,version:A.version||"0.0.0",languageName:t.project.configuration.get("defaultLanguageName"),linkType:a.Un.SOFT,dependencies:new Map([...A.dependencies,...A.devDependencies]),peerDependencies:A.peerDependencies,dependenciesMeta:A.dependenciesMeta,peerDependenciesMeta:A.peerDependenciesMeta,bin:A.bin}}}]}},8375:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>ne,getPnpPath:()=>Ae});var A,n=r(39922),o=r(46009),i=r(54143);!function(e){e[e.YES=0]="YES",e[e.NO=1]="NO",e[e.DEPENDS=2]="DEPENDS"}(A||(A={}));const s=(e,t)=>`${e}@${t}`,a=(e,t)=>{const r=t.indexOf("#"),A=r>=0?t.substring(r+1):t;return s(e,A)};var c;!function(e){e[e.NONE=-1]="NONE",e[e.PERF=0]="PERF",e[e.CHECK=1]="CHECK",e[e.REASONS=2]="REASONS",e[e.INTENSIVE_CHECK=9]="INTENSIVE_CHECK"}(c||(c={}));const g=(e,t)=>{if(t.decoupled)return t;const{name:r,references:A,ident:n,locator:o,dependencies:i,originalDependencies:s,hoistedDependencies:a,peerNames:c,reasons:g,isHoistBorder:l}=t,u={name:r,references:new Set(A),ident:n,locator:o,dependencies:new Map(i),originalDependencies:new Map(s),hoistedDependencies:new Map(a),peerNames:new Set(c),reasons:new Map(g),decoupled:!0,isHoistBorder:l},h=u.dependencies.get(r);return h&&h.ident==u.ident&&u.dependencies.set(r,u),e.dependencies.set(u.name,u),u},l=e=>{const t=new Set,r=(A,n=new Set)=>{if(!n.has(A)){n.add(A);for(const o of A.peerNames)if(!e.peerNames.has(o)){const A=e.dependencies.get(o);A&&!t.has(A)&&r(A,n)}t.add(A)}};for(const t of e.dependencies.values())e.peerNames.has(t.name)||r(t);return t},u=(e,t,r,A,n=new Set)=>{const o=t[t.length-1];if(n.has(o))return;n.add(o);const i=((e,t)=>{const r=new Map([[e.name,[e.ident]]]);for(const t of e.dependencies.values())e.peerNames.has(t.name)||r.set(t.name,[t.ident]);const A=Array.from(t.keys());A.sort((e,r)=>{const A=t.get(e),n=t.get(r);return n.peerDependents.size!==A.peerDependents.size?n.peerDependents.size-A.peerDependents.size:n.dependents.size-A.dependents.size});for(const t of A){const A=t.substring(0,t.indexOf("@",1)),n=t.substring(A.length+1);if(!e.peerNames.has(A)){let e=r.get(A);e||(e=[],r.set(A,e)),e.indexOf(n)<0&&e.push(n)}}return r})(o,E(o)),s=new Map(Array.from(i.entries()).map(([e,t])=>[e,t[0]])),a=o===e?new Map:(e=>{const t=new Map,r=new Set,A=n=>{if(!r.has(n)){r.add(n);for(const r of n.hoistedDependencies.values())e.dependencies.has(r.name)||t.set(r.name,r);for(const e of n.dependencies.values())n.peerNames.has(e.name)||A(e)}};return A(e),t})(o);let c;do{p(e,t,r,a,s,i,A),c=!1;for(const[e,t]of i)t.length>1&&!o.dependencies.has(e)&&(s.delete(e),t.shift(),s.set(e,t[0]),c=!0)}while(c);for(const n of o.dependencies.values())o.peerNames.has(n.name)||r.has(n.locator)||(r.add(n.locator),u(e,[...t,n],r,A),r.delete(n.locator))},h=(e,t,r,n,o,i,{outputReason:s})=>{let a,c=null,g=new Set;s&&(a=""+Array.from(e).map(e=>B(e)).join("→"));const l=t[t.length-1],u=r.ident===l.ident,h=o.get(r.name);let p=h===r.ident&&!u;if(s&&!p&&h&&!u&&(c=`- filled by: ${B(i.get(r.name)[0])} at ${a}`),p){let e=!1;const A=n.get(r.name);if(e=!A||A.ident===r.ident,s&&!e&&(c=`- filled by: ${B(A.locator)} at ${a}`),e)for(let A=1;A=1;r--){const n=t[r];for(const o of A){if(n.peerNames.has(o)&&n.originalDependencies.has(o))continue;const i=n.dependencies.get(o);i&&(r===t.length-1?g.add(i):(g=null,e=!1,s&&(c=`- peer dependency ${B(i.locator)} from parent ${B(n.locator)} was not hoisted to ${a}`))),A.delete(o)}if(!e)break}p=e}return null!==g&&g.size>0?{isHoistable:A.DEPENDS,dependsOn:g,reason:c}:{isHoistable:p?A.YES:A.NO,reason:c}},p=(e,t,r,n,o,i,s)=>{const a=t[t.length-1],u=new Set,p=(t,C,I,E)=>{if(u.has(I))return;const m=[...C,I.locator],w=new Map,Q=new Map;for(const e of l(I)){let g=null;if(g||(g=h(r,[a,...t,I],e,n,o,i,{outputReason:s.debugLevel>=c.REASONS})),Q.set(e,g),g.isHoistable===A.DEPENDS)for(const t of g.dependsOn){const r=w.get(t.name)||new Set;r.add(e.name),w.set(t.name,r)}}const D=new Set,b=(e,t,r)=>{if(!D.has(e)){D.add(e),e.ident!==I.ident&&Q.set(e,{isHoistable:A.NO,reason:r});for(const A of w.get(e.name)||[])b(I.dependencies.get(A),t,r)}};let v;s.debugLevel>=c.REASONS&&(v=""+Array.from(r).map(e=>B(e)).join("→"));for(const[e,t]of Q)t.isHoistable===A.NO&&b(e,t,`- peer dependency ${B(e.locator)} from parent ${B(I.locator)} was not hoisted to ${v}`);for(const e of Q.keys())if(!D.has(e)){I.dependencies.delete(e.name),I.hoistedDependencies.set(e.name,e),I.reasons.delete(e.name);const t=a.dependencies.get(e.name);if(t)for(const r of e.references)t.references.add(r);else a.ident!==e.ident&&(a.dependencies.set(e.name,e),E.add(e))}if(s.check){const r=d(e);if(r)throw new Error(`${r}, after hoisting dependencies of ${[a,...t,I].map(e=>B(e.locator)).join("→")}:\n${y(e)}`)}const S=l(I);for(const e of S)if(D.has(e)&&m.indexOf(e.locator)<0){const r=Q.get(e);if(r.isHoistable!==A.YES&&I.reasons.set(e.name,r.reason),!e.isHoistBorder){u.add(I);const r=g(I,e);p([...t,I],[...C,I.locator],r,f),u.delete(I)}}};let C,f=new Set(l(a));do{C=f,f=new Set;for(const e of C){if(e.locator===a.locator||e.isHoistBorder)continue;const t=g(a,e);p([],Array.from(r),t,f)}}while(f.size>0)},d=e=>{const t=[],r=new Set,A=new Set,n=(e,o)=>{if(r.has(e))return;if(r.add(e),A.has(e))return;const i=new Map(o);for(const t of e.dependencies.values())e.peerNames.has(t.name)||i.set(t.name,t);for(const r of e.originalDependencies.values()){const n=i.get(r.name),s=()=>""+Array.from(A).concat([e]).map(e=>B(e.locator)).join("→");if(e.peerNames.has(r.name)){const e=o.get(r.name);e===n&&e&&e.ident===r.ident||t.push(`${s()} - broken peer promise: expected ${r.ident} but found ${e?e.ident:e}`)}else n?n.ident!==r.ident&&t.push(`${s()} - broken require promise for ${r.name}: expected ${r.ident}, but found: ${n.ident}`):t.push(`${s()} - broken require promise: no required dependency ${r.locator} found`)}A.add(e);for(const t of e.dependencies.values())e.peerNames.has(t.name)||n(t,i);A.delete(e)};return n(e,e.dependencies),t.join("\n")},C=(e,t)=>{const{identName:r,name:A,reference:n,peerNames:o}=e,i={name:A,references:new Set([n]),locator:s(r,n),ident:a(r,n),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(o),reasons:new Map,decoupled:!0,isHoistBorder:!0},c=new Map([[e,i]]),g=(e,r)=>{let A=c.get(e);const n=!!A;if(!A){const{name:n,identName:o,reference:i,peerNames:g}=e,l=t.hoistingLimits.get(r.locator);A={name:n,references:new Set([i]),locator:s(o,i),ident:a(o,i),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(g),reasons:new Map,decoupled:!0,isHoistBorder:!!l&&l.has(n)},c.set(e,A)}if(r.dependencies.set(e.name,A),r.originalDependencies.set(e.name,A),n){const e=new Set,t=r=>{if(!e.has(r)){e.add(r),r.decoupled=!1;for(const e of r.dependencies.values())r.peerNames.has(e.name)||t(e)}};t(A)}else for(const t of e.dependencies)g(t,A)};for(const t of e.dependencies)g(t,i);return i},f=e=>e.substring(0,e.indexOf("@",1)),I=e=>{const t={name:e.name,identName:f(e.locator),references:new Set(e.references),dependencies:new Set},r=new Set([e]),A=(e,t,n)=>{const o=r.has(e);let i;if(t===e)i=n;else{const{name:t,references:r,locator:A}=e;i={name:t,identName:f(A),references:r,dependencies:new Set}}if(n.dependencies.add(i),!o){r.add(e);for(const t of e.dependencies.values())e.peerNames.has(t.name)||A(t,e,i);r.delete(e)}};for(const r of e.dependencies.values())A(r,e,t);return t},E=e=>{const t=new Map,r=new Set([e]),A=e=>{const r=(e=>`${e.name}@${e.ident}`)(e);let A=t.get(r);return A||(A={dependents:new Set,peerDependents:new Set},t.set(r,A)),A},n=(e,t)=>{const o=!!r.has(t);if(A(t).dependents.add(e.ident),!o){r.add(t);for(const e of t.dependencies.values())if(t.peerNames.has(e.name)){A(e).peerDependents.add(t.ident)}else n(t,e)}};for(const t of e.dependencies.values())e.peerNames.has(t.name)||n(e,t);return t},B=e=>{const t=e.indexOf("@",1),r=e.substring(0,t),A=e.substring(t+1);if("workspace:."===A)return".";if(A){const e=(A.indexOf("#")>0?A.split("#")[1]:A).replace("npm:","");return A.startsWith("virtual")?`v:${r}@${e}`:`${r}@${e}`}return""+r},y=e=>{let t=0;const r=(e,A,n="")=>{if(t>5e4||A.has(e))return"";t++;const o=Array.from(e.dependencies.values());let i="";A.add(e);for(let t=0;t":"")+(c!==s.name?`a:${s.name}:`:"")+B(s.locator)+(a?" "+a:"")}\n`,i+=r(s,A,`${n}${t5e4?"\nTree is too large, part of the tree has been dunped\n":"")};var m,w;!function(e){e.HARD="HARD",e.SOFT="SOFT"}(m||(m={})),function(e){e.WORKSPACES="workspaces",e.DEPENDENCIES="dependencies",e.NONE="none"}(w||(w={}));const Q=(e,t)=>{const{packageTree:r,hoistingLimits:A}=b(e,t),n=((e,t={})=>{const r=t.debugLevel||Number(process.env.NM_DEBUG_LEVEL||c.NONE),A={check:t.check||r>=c.INTENSIVE_CHECK,debugLevel:r,hoistingLimits:t.hoistingLimits||new Map};A.debugLevel>=c.PERF&&console.time("hoist");const n=C(e,A);if(u(n,[n],new Set([n.locator]),A),A.debugLevel>=c.PERF&&console.timeEnd("hoist"),A.debugLevel>=c.CHECK){const e=d(n);if(e)throw new Error(`${e}, after hoisting finished:\n${y(n)}`)}return A.debugLevel>=c.REASONS&&console.log(y(n)),I(n)})(r,{hoistingLimits:A});return v(e,n,t)},D=e=>`${e.name}@${e.reference}`;const b=(e,t)=>{const r=e.getDependencyTreeRoots(),A=new Map,n=new Map,s=e.getPackageInformation(e.topLevel);if(null===s)throw new Error("Assertion failed: Expected the top-level package to have been registered");const a=e.findPackageLocator(s.packageLocation);if(null===a)throw new Error("Assertion failed: Expected the top-level package to have a physical locator");const c=o.cS.toPortablePath(s.packageLocation),g=D(a);if(t.project){const e={children:new Map},r=t.project.cwd.split(o.y1.sep);for(const[A,n]of t.project.workspacesByCwd){const t=A.split(o.y1.sep).slice(r.length);let s=e;for(const e of t){let t=s.children.get(e);t||(t={children:new Map},s.children.set(e,t)),s=t}s.workspaceLocator={name:i.stringifyIdent(n.anchoredLocator),reference:n.anchoredLocator.reference}}const A=(e,t)=>{if(e.workspaceLocator){const r=D(t);let A=n.get(r);A||(A=new Set,n.set(r,A)),A.add(e.workspaceLocator)}for(const r of e.children.values())A(r,e.workspaceLocator||t)};for(const t of e.children.values())A(t,e.workspaceLocator)}else for(const e of r)if(e.name!==a.name||e.reference!==a.reference){let t=n.get(g);t||(t=new Set,n.set(g,t)),t.add(e)}const l={name:a.name,identName:a.name,reference:a.reference,peerNames:s.packagePeers,dependencies:new Set},u=new Map,h=(r,s,g,p,d,C,f)=>{var I,E;const B=((e,t)=>`${D(t)}:${e}`)(r,g);let y=u.get(B);const m=!!y;if(m||g.name!==a.name||g.reference!==a.reference||(y=l,u.set(B,l)),y||(y={name:r,identName:g.name,reference:g.reference,dependencies:new Set,peerNames:s.packagePeers},u.set(B,y)),f){const e=D({name:p.identName,reference:p.reference}),t=A.get(e)||new Set;A.set(e,t),t.add(y.name)}const Q=new Map(s.packageDependencies);if(t.project){const e=t.project.workspacesByCwd.get(o.cS.toPortablePath(s.packageLocation.slice(0,-1)));if(e){const t=new Set([...Array.from(e.manifest.peerDependencies.values(),e=>i.stringifyIdent(e)),...Array.from(e.manifest.peerDependenciesMeta.keys())]);for(const e of t)Q.has(e)||(Q.set(e,d.get(e)||null),y.peerNames.add(e))}}const b=D(g),v=n.get(b);if(v)for(const e of v)Q.set(e.name+"$wsroot$",e.reference);p.dependencies.add(y);const S=t.pnpifyFs||!function(e){let t=i.parseDescriptor(e);return i.isVirtualDescriptor(t)&&(t=i.devirtualizeDescriptor(t)),t.range.startsWith("portal:")}(B);if(!m&&S)for(const[r,A]of Q)if(null!==A){const n=e.getLocator(r,A),i=e.getLocator(r.replace("$wsroot$",""),A),s=e.getPackageInformation(i);if(null===s)throw new Error("Assertion failed: Expected the package to have been registered");const a=null===(I=t.hoistingLimitsByCwd)||void 0===I?void 0:I.get(C),g=o.y1.relative(c,o.cS.toPortablePath(s.packageLocation))||o.LZ.dot,l=null===(E=t.hoistingLimitsByCwd)||void 0===E?void 0:E.get(g),u=a===w.DEPENDENCIES||l===w.DEPENDENCIES||l===w.WORKSPACES;h(r,s,n,y,Q,g,u)}};return h(a.name,s,a,l,s.packageDependencies,o.LZ.dot,!1),{packageTree:l,hoistingLimits:A}};const v=(e,t,r)=>{const A=new Map,n=(t,A)=>{const{linkType:n,target:i}=function(e,t,r){const A=t.getLocator(e.name.replace("$wsroot$",""),e.reference),n=t.getPackageInformation(A);if(null===n)throw new Error("Assertion failed: Expected the package to be registered");let i,s;if(r.pnpifyFs)s=o.cS.toPortablePath(n.packageLocation),i=m.SOFT;else{const r=t.resolveVirtual&&e.reference&&e.reference.startsWith("virtual:")?t.resolveVirtual(n.packageLocation):n.packageLocation;s=o.cS.toPortablePath(r||n.packageLocation),i=n.linkType}return{linkType:i,target:s}}(t,e,r);return{locator:D(t),target:i,linkType:n,aliases:A}},s=e=>{const[t,r]=e.split("/");return r?{scope:(0,o.Zu)(t),name:(0,o.Zu)(r)}:{scope:null,name:(0,o.Zu)(t)}},a=new Set,c=(e,t)=>{if(!a.has(e)){a.add(e);for(const r of e.dependencies){if(r===e||e.identName.endsWith("$wsroot$")&&r.identName===e.identName.replace("$wsroot$",""))continue;const a=Array.from(r.references).sort(),g={name:r.identName,reference:a[0]},{name:l,scope:u}=s(r.name),h=u?[u,l]:[l],p=o.y1.join(t,"node_modules"),d=o.y1.join(p,...h),C=n(g,a.slice(1));if(!r.name.endsWith("$wsroot$")){const e=A.get(d);if(e){if(e.dirList)throw new Error(`Assertion failed: ${d} cannot merge dir node with leaf node`);{const t=i.parseLocator(e.locator),r=i.parseLocator(C.locator);if(e.linkType!==C.linkType)throw new Error(`Assertion failed: ${d} cannot merge nodes with different link types`);if(t.identHash!==r.identHash)throw new Error(`Assertion failed: ${d} cannot merge nodes with different idents ${i.stringifyLocator(t)} and ${i.stringifyLocator(r)}`);C.aliases=[...C.aliases,...e.aliases,i.parseLocator(e.locator).reference]}}A.set(d,C);const t=d.split("/"),r=t.indexOf("node_modules");let n=t.length-1;for(;r>=0&&n>r;){const e=o.cS.toPortablePath(t.slice(0,n).join(o.y1.sep)),r=(0,o.Zu)(t[n]),i=A.get(e);if(i){if(i.dirList){if(i.dirList.has(r))break;i.dirList.add(r)}}else A.set(e,{dirList:new Set([r])});n--}}c(r,C.linkType===m.SOFT?C.target:d)}}},g=n({name:t.name,reference:Array.from(t.references)[0]},[]),l=g.target;return A.set(l,g),c(t,l),A};var S=r(92659),k=r(32485),N=r(73632),F=r(46611),K=r(35691),M=r(43896),R=r(17674),x=r(53660),L=r(65281),P=r(11640),O=r(83228),U=r(58069),T=r.n(U),j=r(40822),Y=r(35747),G=r.n(Y);const H="node_modules";class J{constructor(e){this.opts=e,this.localStore=new Map,this.customData={store:new Map}}getCustomDataKey(){return JSON.stringify({name:"NodeModulesInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,t){var r;const A=o.y1.resolve(t.packageFs.getRealPath(),t.prefixPath);let n=this.customData.store.get(e.locatorHash);if(void 0===n&&(n=await async function(e,t){var r;const A=null!==(r=await F.G.tryFind(t.prefixPath,{baseFs:t.packageFs}))&&void 0!==r?r:new F.G,n=new Set(["preinstall","install","postinstall"]);for(const e of A.scripts.keys())n.has(e)||A.scripts.delete(e);return{manifest:{bin:A.bin,os:A.os,cpu:A.cpu,scripts:A.scripts},misc:{extractHint:O.jsInstallUtils.getExtractHint(t),hasBindingGyp:O.jsInstallUtils.hasBindingGyp(t)}}}(0,t),e.linkType===k.Un.HARD&&this.customData.store.set(e.locatorHash,n)),!O.jsInstallUtils.checkAndReportManifestCompatibility(e,n,"link",{configuration:this.opts.project.configuration,report:this.opts.report}))return{packageLocation:null,buildDirective:null};const s=new Map,a=new Set;if(s.has(i.stringifyIdent(e))||s.set(i.stringifyIdent(e),e.reference),i.isVirtualLocator(e))for(const t of e.peerDependencies.values())s.set(i.stringifyIdent(t),null),a.add(i.stringifyIdent(t));const c={packageLocation:o.cS.fromPortablePath(A)+"/",packageDependencies:s,packagePeers:a,linkType:e.linkType,discardFromLookup:null!==(r=t.discardFromLookup)&&void 0!==r&&r};return this.localStore.set(e.locatorHash,{pkg:e,customPackageData:n,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:c}),{packageLocation:A,buildDirective:null}}async attachInternalDependencies(e,t){const r=this.localStore.get(e.locatorHash);if(void 0===r)throw new Error("Assertion failed: Expected information object to have been registered");for(const[e,A]of t){const t=i.areIdentsEqual(e,A)?A.reference:[i.requirableIdent(A),A.reference];r.pnpNode.packageDependencies.set(i.requirableIdent(e),t)}}async attachExternalDependents(e,t){throw new Error("External dependencies haven't been implemented for the node-modules linker")}async finalizeInstall(){if("node-modules"!==this.opts.project.configuration.get("nodeLinker"))return;const e=new R.p({baseFs:new x.A({libzip:await(0,L.getLibzipPromise)(),maxOpenFiles:80,readOnlyArchives:!0})});let t=await q(this.opts.project);if(null===t){const e=this.opts.project.configuration.get("bstatePath");await M.xfs.existsPromise(e)&&await M.xfs.unlinkPromise(e),t={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map}}const r=new Map(this.opts.project.workspaces.map(e=>{var t,r;let A=this.opts.project.configuration.get("nmHoistingLimits");try{A=N.validateEnum(w,null!==(r=null===(t=e.manifest.installConfig)||void 0===t?void 0:t.hoistingLimits)&&void 0!==r?r:A)}catch(t){const r=i.prettyWorkspace(this.opts.project.configuration,e);this.opts.report.reportWarning(S.b.INVALID_MANIFEST,`${r}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(w).join(", ")}, using default: "${A}"`)}return[e.relativeCwd,A]})),A=(e=>{const t=new Map;for(const[r,A]of e.entries())if(!A.dirList){let e=t.get(A.locator);e||(e={target:A.target,linkType:A.linkType,locations:[],aliases:A.aliases},t.set(A.locator,e)),e.locations.push(r)}for(const e of t.values())e.locations=e.locations.sort((e,t)=>{const r=e.split(o.y1.delimiter).length,A=t.split(o.y1.delimiter).length;return r!==A?A-r:t.localeCompare(e)});return t})(Q({VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(e,t)=>Array.isArray(t)?{name:t[0],reference:t[1]}:{name:e,reference:t},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(e=>{const t=e.anchoredLocator;return{name:i.stringifyIdent(e.locator),reference:t.reference}}),getPackageInformation:e=>{const t=null===e.reference?this.opts.project.topLevelWorkspace.anchoredLocator:i.makeLocator(i.parseIdent(e.name),e.reference),r=this.localStore.get(t.locatorHash);if(void 0===r)throw new Error("Assertion failed: Expected the package reference to have been registered");return r.pnpNode},findPackageLocator:e=>{const t=this.opts.project.tryWorkspaceByCwd(o.cS.toPortablePath(e));if(null!==t){const e=t.anchoredLocator;return{name:i.stringifyIdent(e),reference:e.reference}}throw new Error("Assertion failed: Unimplemented")},resolveToUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveUnqualified:()=>{throw new Error("Assertion failed: Unimplemented")},resolveRequest:()=>{throw new Error("Assertion failed: Unimplemented")},resolveVirtual:e=>o.cS.fromPortablePath(R.p.resolveVirtual(o.cS.toPortablePath(e)))},{pnpifyFs:!1,hoistingLimitsByCwd:r,project:this.opts.project}));await async function(e,t,{baseFs:r,project:A,report:n,loadManifest:s}){const a=o.y1.join(A.cwd,H),{locationTree:c,binSymlinks:g}=function(e,t){const r=new Map([...e]),A=new Map([...t]);for(const[t,r]of e){const e=o.y1.join(t,H);if(!M.xfs.existsSync(e)){r.children.delete(H);for(const t of A.keys())null!==o.y1.contains(e,t)&&A.delete(t)}}return{locationTree:r,binSymlinks:A}}(e.locationTree,e.binSymlinks),l=V(t,{skipPrefix:A.cwd}),u=[],h=async({srcDir:e,dstDir:t,linkType:A})=>{const n=(async()=>{try{A===k.Un.SOFT?(await M.xfs.mkdirPromise(o.y1.dirname(t),{recursive:!0}),await X(o.y1.resolve(e),t)):await _(t,e,{baseFs:r})}catch(r){throw r.message=`While persisting ${e} -> ${t} ${r.message}`,r}finally{I.tick()}})().then(()=>u.splice(u.indexOf(n),1));u.push(n),u.length>4&&await Promise.race(u)},p=async(e,t,r)=>{const A=(async()=>{const A=async(e,t,r)=>{try{r&&r.innerLoop||await M.xfs.mkdirPromise(t,{recursive:!0});const n=await M.xfs.readdirPromise(e,{withFileTypes:!0});for(const i of n){if(!(r&&r.innerLoop||".bin"!==i.name))continue;const n=o.y1.join(e,i.name),s=o.y1.join(t,i.name);i.isDirectory()?(i.name!==H||r&&r.innerLoop)&&(await M.xfs.mkdirPromise(s,{recursive:!0}),await A(n,s,{innerLoop:!0})):await M.xfs.copyFilePromise(n,s,G().constants.COPYFILE_FICLONE)}}catch(A){throw r&&r.innerLoop||(A.message=`While cloning ${e} -> ${t} ${A.message}`),A}finally{r&&r.innerLoop||I.tick()}};await A(e,t,r)})().then(()=>u.splice(u.indexOf(A),1));u.push(A),u.length>4&&await Promise.race(u)},d=async(e,t,r)=>{if(r)for(const[A,n]of t.children){const t=r.children.get(A);await d(o.y1.join(e,A),n,t)}else t.children.has(H)&&await z(o.y1.join(e,H),{contentsOnly:!1}),await z(e,{contentsOnly:e===a})};for(const[e,t]of c){const r=l.get(e);for(const[A,n]of t.children){if("."===A)continue;const t=r?r.children.get(A):r;await d(o.y1.join(e,A),n,t)}}const C=async(e,t,r)=>{if(r){$(t.locator,r.locator)||await z(e,{contentsOnly:t.linkType===k.Un.HARD});for(const[A,n]of t.children){const t=r.children.get(A);await C(o.y1.join(e,A),n,t)}}else t.children.has(H)&&await z(o.y1.join(e,H),{contentsOnly:!0}),await z(e,{contentsOnly:t.linkType===k.Un.HARD})};for(const[e,t]of l){const r=c.get(e);for(const[A,n]of t.children){if("."===A)continue;const t=r?r.children.get(A):r;await C(o.y1.join(e,A),n,t)}}const f=[];for(const[r,{locations:n}]of e.locatorMap.entries())for(const e of n){const{locationRoot:n,segments:i}=W(e,{skipPrefix:A.cwd});let s=l.get(n),a=n;if(s){for(const e of i)if(a=o.y1.join(a,e),s=s.children.get(e),!s)break;if(s&&!$(s.locator,r)){const e=t.get(s.locator),r=e.target,A=a,n=e.linkType;r!==A&&f.push({srcDir:r,dstDir:A,linkType:n})}}}for(const[e,{locations:r}]of t.entries())for(const n of r){const{locationRoot:r,segments:i}=W(n,{skipPrefix:A.cwd});let s=c.get(r),a=l.get(r),g=r;const u=t.get(e),h=u.target,p=n;if(h===p)continue;const d=u.linkType;for(const e of i)a=a.children.get(e);if(s){for(const e of i)if(g=o.y1.join(g,e),s=s.children.get(e),!s){f.push({srcDir:h,dstDir:p,linkType:d});break}}else f.push({srcDir:h,dstDir:p,linkType:d})}const I=K.yG.progressViaCounter(f.length),E=n.reportProgress(I);try{const e=new Map;for(const t of f)t.linkType!==k.Un.SOFT&&e.has(t.srcDir)||(e.set(t.srcDir,t.dstDir),await h({...t}));await Promise.all(u),u.length=0;for(const t of f){const r=e.get(t.srcDir);t.linkType!==k.Un.SOFT&&t.dstDir!==r&&await p(r,t.dstDir)}await Promise.all(u),await M.xfs.mkdirPromise(a,{recursive:!0});const r=await async function(e,t,r,{loadManifest:A}){const n=new Map;for(const[t,{locations:r}]of e){const e=Z(t)?null:await A(t,r[0]),i=new Map;if(e)for(const[t,A]of e.bin){const e=o.y1.join(r[0],A);""!==A&&M.xfs.existsSync(e)&&i.set(t,A)}n.set(t,i)}const i=new Map,s=(e,t,A)=>{const a=new Map,c=o.y1.contains(r,e);if(A.locator&&null!==c){const t=n.get(A.locator);for(const[r,A]of t){const t=o.y1.join(e,o.cS.toPortablePath(A));a.set((0,o.Zu)(r),t)}for(const[t,r]of A.children){const A=o.y1.join(e,t),n=s(A,A,r);n.size>0&&i.set(e,new Map([...i.get(e)||new Map,...n]))}}else for(const[r,n]of A.children){const A=s(o.y1.join(e,r),t,n);for(const[e,t]of A)a.set(e,t)}return a};for(const[e,r]of t){const t=s(e,e,r);t.size>0&&i.set(e,new Map([...i.get(e)||new Map,...t]))}return i}(t,l,A.cwd,{loadManifest:s});await async function(e,t){for(const r of e.keys())if(!t.has(r)){const e=o.y1.join(r,H,".bin");await M.xfs.removePromise(e)}for(const[r,A]of t){const t=o.y1.join(r,H,".bin"),n=e.get(r)||new Map;await M.xfs.mkdirPromise(t,{recursive:!0});for(const e of n.keys())A.has(e)||(await M.xfs.removePromise(o.y1.join(t,e)),"win32"===process.platform&&await M.xfs.removePromise(o.y1.join(t,(0,o.Zu)(e+".cmd"))));for(const[e,r]of A){const A=n.get(e),i=o.y1.join(t,e);A!==r&&("win32"===process.platform?await T()(o.cS.fromPortablePath(r),o.cS.fromPortablePath(i),{createPwshFile:!1}):(await M.xfs.removePromise(i),await X(r,i),await M.xfs.chmodPromise(r,493)))}}}(g,r),await async function(e,t,r){let A="";A+="# Warning: This file is automatically generated. Removing it is fine, but will\n",A+="# cause your node_modules installation to become invalidated.\n",A+="\n",A+="__metadata:\n",A+=" version: 1\n";const n=Array.from(t.keys()).sort(),s=i.stringifyLocator(e.topLevelWorkspace.anchoredLocator);for(const i of n){const n=t.get(i);A+="\n",A+=JSON.stringify(i)+":\n",A+=" locations:\n";for(const t of n.locations){const r=o.y1.contains(e.cwd,t);if(null===r)throw new Error(`Assertion failed: Expected the path to be within the project (${t})`);A+=` - ${JSON.stringify(r)}\n`}if(n.aliases.length>0){A+=" aliases:\n";for(const e of n.aliases)A+=` - ${JSON.stringify(e)}\n`}if(i===s&&r.size>0){A+=" bin:\n";for(const[t,n]of r){const r=o.y1.contains(e.cwd,t);if(null===r)throw new Error(`Assertion failed: Expected the path to be within the project (${t})`);A+=` ${JSON.stringify(r)}:\n`;for(const[e,r]of n){const n=o.y1.relative(o.y1.join(t,H),r);A+=` ${JSON.stringify(e)}: ${JSON.stringify(n)}\n`}}}}const a=e.cwd,c=o.y1.join(a,H,".yarn-state.yml");await M.xfs.changeFilePromise(c,A,{automaticNewlines:!0})}(A,t,r)}finally{E.stop()}}(t,A,{baseFs:e,project:this.opts.project,report:this.opts.report,loadManifest:async e=>{const t=i.parseLocator(e),r=this.localStore.get(t.locatorHash);if(void 0===r)throw new Error("Assertion failed: Expected the slot to exist");return r.customPackageData.manifest}});const n=[];for(const[e,t]of A.entries()){if(Z(e))continue;const r=i.parseLocator(e),A=this.localStore.get(r.locatorHash);if(void 0===A)throw new Error("Assertion failed: Expected the slot to exist");const o=O.jsInstallUtils.extractBuildScripts(A.pkg,A.customPackageData,A.dependencyMeta,{configuration:this.opts.project.configuration,report:this.opts.report});0!==o.length&&n.push({buildLocations:t.locations,locatorHash:r.locatorHash,buildDirective:o})}return{customData:this.customData,records:n}}}async function q(e,{unrollAliases:t=!1}={}){const r=e.cwd,A=o.y1.join(r,H,".yarn-state.yml");if(!M.xfs.existsSync(A))return null;const n=(0,P.parseSyml)(await M.xfs.readFilePromise(A,"utf8"));if(n.__metadata.version>1)return null;const s=new Map,a=new Map;delete n.__metadata;for(const[e,A]of Object.entries(n)){const n=A.locations.map(e=>o.y1.join(r,e)),c=A.bin;if(c)for(const[e,t]of Object.entries(c)){const A=o.y1.join(r,o.cS.toPortablePath(e)),n=N.getMapWithDefault(a,A);for(const[e,r]of Object.entries(t))n.set((0,o.Zu)(e),o.cS.toPortablePath([A,H,r].join(o.y1.delimiter)))}if(s.set(e,{target:o.LZ.dot,linkType:k.Un.HARD,locations:n,aliases:A.aliases||[]}),t&&A.aliases)for(const t of A.aliases){const{scope:r,name:A}=i.parseLocator(e),a=i.makeLocator(i.makeIdent(r,A),t),c=i.stringifyLocator(a);s.set(c,{target:o.LZ.dot,linkType:k.Un.HARD,locations:n,aliases:[]})}}return{locatorMap:s,binSymlinks:a,locationTree:V(s,{skipPrefix:e.cwd})}}const z=async(e,t)=>{if(e.split(o.y1.sep).indexOf(H)<0)throw new Error("Assertion failed: trying to remove dir that doesn't contain node_modules: "+e);try{if(!t.innerLoop){if((await M.xfs.lstatPromise(e)).isSymbolicLink())return void await M.xfs.unlinkPromise(e)}const r=await M.xfs.readdirPromise(e,{withFileTypes:!0});for(const A of r){const r=o.y1.join(e,(0,o.Zu)(A.name));A.isDirectory()?(A.name!==H||t&&t.innerLoop)&&await z(r,{innerLoop:!0,contentsOnly:!1}):await M.xfs.unlinkPromise(r)}t.contentsOnly||await M.xfs.rmdirPromise(e)}catch(e){if("ENOENT"!==e.code&&"ENOTEMPTY"!==e.code)throw e}},W=(e,{skipPrefix:t})=>{const r=o.y1.contains(t,e);if(null===r)throw new Error(`Assertion failed: Cannot process a path that isn't part of the requested prefix (${e} isn't within ${t})`);const A=r.split(o.y1.sep).filter(e=>""!==e),n=A.indexOf(H),i=A.slice(0,n).join(o.y1.sep);return{locationRoot:o.y1.join(t,i),segments:A.slice(n)}},V=(e,{skipPrefix:t})=>{const r=new Map;if(null===e)return r;const A=()=>({children:new Map,linkType:k.Un.HARD});for(const[n,i]of e.entries()){if(i.linkType===k.Un.SOFT){if(null!==o.y1.contains(t,i.target)){const e=N.getFactoryWithDefault(r,i.target,A);e.locator=n,e.linkType=i.linkType}}for(const e of i.locations){const{locationRoot:o,segments:s}=W(e,{skipPrefix:t});let a=N.getFactoryWithDefault(r,o,A);for(let e=0;e{let r;try{"win32"===process.platform&&(r=M.xfs.lstatSync(e))}catch(e){}"win32"!=process.platform||r&&!r.isDirectory()?M.xfs.symlinkPromise(o.y1.relative(o.y1.dirname(t),e),t):M.xfs.symlinkPromise(e,t,"junction")},_=async(e,t,{baseFs:r,innerLoop:A})=>{await M.xfs.mkdirPromise(e,{recursive:!0});const n=await r.readdirPromise(t,{withFileTypes:!0}),i=async(e,t,A)=>{if(A.isFile()){const A=await r.lstatPromise(t);await r.copyFilePromise(t,e);const n=511&A.mode;420!==n&&await M.xfs.chmodPromise(e,n)}else{if(!A.isSymbolicLink())throw new Error(`Unsupported file type (file: ${t}, mode: 0o${await M.xfs.statSync(t).mode.toString(8).padStart(6,"0")})`);{const A=await r.readlinkPromise(t);await X(o.y1.resolve(o.y1.dirname(e),A),e)}}};for(const s of n){const n=o.y1.join(t,(0,o.Zu)(s.name)),a=o.y1.join(e,(0,o.Zu)(s.name));s.isDirectory()?(s.name!==H||A)&&await _(a,n,{baseFs:r,innerLoop:!0}):await i(a,n,s)}};function Z(e){let t=i.parseDescriptor(e);return i.isVirtualDescriptor(t)&&(t=i.devirtualizeDescriptor(t)),t.range.startsWith("link:")}const $=(e,t)=>{if(!e||!t)return e===t;let r=i.parseLocator(e);i.isVirtualLocator(r)&&(r=i.devirtualizeLocator(r));let A=i.parseLocator(t);return i.isVirtualLocator(A)&&(A=i.devirtualizeLocator(A)),i.areLocatorsEqual(r,A)};var ee=r(34432);class te extends O.PnpLinker{constructor(){super(...arguments),this.mode="loose"}makeInstaller(e){return new re(e)}}class re extends O.PnpInstaller{constructor(){super(...arguments),this.mode="loose"}async finalizeInstallWithPnp(e){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;const t=new R.p({baseFs:new x.A({libzip:await(0,L.getLibzipPromise)(),maxOpenFiles:80,readOnlyArchives:!0})}),r=(0,ee.oC)(e,this.opts.project.cwd,t),A=Q(r,{pnpifyFs:!1,project:this.opts.project}),n=new Map;e.fallbackPool=n;const s=(e,t)=>{const r=i.parseLocator(t.locator),A=i.stringifyIdent(r);A===e?n.set(e,r.reference):n.set(e,[A,r.reference])},a=o.y1.join(this.opts.project.cwd,o.QS.nodeModules),c=A.get(a);if(void 0===c)throw new Error("Assertion failed: Expected a root junction point");if("target"in c)throw new Error("Assertion failed: Expected the root junction point to be a directory");for(const e of c.dirList){const t=o.y1.join(a,e),r=A.get(t);if(void 0===r)throw new Error("Assertion failed: Expected the child to have been registered");if("target"in r)s(e,r);else for(const n of r.dirList){const r=o.y1.join(t,n),i=A.get(r);if(void 0===i)throw new Error("Assertion failed: Expected the subchild to have been registered");if(!("target"in i))throw new Error("Assertion failed: Expected the leaf junction to be a package");s(`${e}/${n}`,i)}}return super.finalizeInstallWithPnp(e)}}const Ae=e=>o.y1.join(e.cwd,".pnp.js"),ne={configuration:{nmHoistingLimits:{description:"Prevent packages can be hoisted past specific levels",type:n.a2.STRING,values:[w.WORKSPACES,w.DEPENDENCIES,w.NONE],default:"none"}},linkers:[class{supportsPackage(e,t){return"node-modules"===t.project.configuration.get("nodeLinker")}async findPackageLocation(e,t){const r=t.project.tryWorkspaceByLocator(e);if(r)return r.cwd;const A=await q(t.project,{unrollAliases:!0});if(null===A)throw new j.UsageError("Couldn't find the node_modules state file - running an install might help (findPackageLocation)");const n=A.locatorMap.get(i.stringifyLocator(e));if(!n){const r=new j.UsageError(`Couldn't find ${i.prettyLocator(t.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw r.code="LOCATOR_NOT_INSTALLED",r}return n.locations[0]}async findPackageLocator(e,t){const r=await q(t.project,{unrollAliases:!0});if(null===r)return null;const{locationRoot:A,segments:n}=W(o.y1.resolve(e),{skipPrefix:t.project.cwd});let s=r.locationTree.get(A);if(!s)return null;let a=s.locator;for(const e of n){if(s=s.children.get(e),!s)break;a=s.locator||a}return i.parseLocator(a)}makeInstaller(e){return new J(e)}},te]}},8190:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>X});var A,n,o=r(39922),i=r(36370),s=r(25413),a=r(85824),c=r(62152),g=r(35691),l=r(92659),u=r(85875),h=r(15815),p=r(14224),d=r(40822);!function(e){e.All="all",e.Production="production",e.Development="development"}(A||(A={})),function(e){e.Info="info",e.Low="low",e.Moderate="moderate",e.High="high",e.Critical="critical"}(n||(n={}));var C=r(54143),f=r(73632),I=r(71643);const E=[n.Info,n.Low,n.Moderate,n.High,n.Critical];function B(e,t){const r=[],A=new Set,n=e=>{A.has(e)||(A.add(e),r.push(e))};for(const e of t)n(e);const o=new Set;for(;r.length>0;){const t=r.shift(),A=e.storedResolutions.get(t);if(void 0===A)throw new Error("Assertion failed: Expected the resolution to have been registered");const i=e.storedPackages.get(A);if(i){o.add(t);for(const e of i.dependencies.values())n(e.descriptorHash)}}return o}function y(e,t,{all:r}){const A=r?e.workspaces:[t],n=A.map(e=>e.manifest),o=new Set(n.map(e=>[...e.dependencies].map(([e,t])=>e)).flat()),i=new Set(n.map(e=>[...e.devDependencies].map(([e,t])=>e)).flat()),s=A.map(e=>[...e.dependencies.values()]).flat(),a=s.filter(e=>o.has(e.identHash)).map(e=>e.descriptorHash),c=s.filter(e=>i.has(e.identHash)).map(e=>e.descriptorHash),g=B(e,a),l=B(e,c);return u=l,h=g,new Set([...u].filter(e=>!h.has(e)));var u,h}function m(e){const t={};for(const r of e)t[C.stringifyIdent(r)]=C.parseRange(r.range).selector;return t}function w(e){if(void 0===e)return new Set;const t=E.indexOf(e),r=E.slice(t);return new Set(r)}function Q(e,t){var r;const A=function(e,t){const r=w(t),A={};for(const t of r)A[t]=e[t];return A}(e,t);for(const e of Object.keys(A))if(null!==(r=A[e])&&void 0!==r&&r)return!0;return!1}class D extends s.BaseCommand{constructor(){super(...arguments),this.all=!1,this.recursive=!1,this.environment=A.All,this.json=!1,this.severity=n.Info}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await a.I.find(e,this.context.cwd);if(!r)throw new s.WorkspaceRequiredError(t.cwd,this.context.cwd);await t.restoreInstallState();const n=function(e,t,{all:r,environment:n}){const o=r?e.workspaces:[t],i=[];if([A.All,A.Production].includes(n))for(const e of o)for(const t of e.manifest.dependencies.values())i.push(t);const s=[];if([A.All,A.Development].includes(n))for(const e of o)for(const t of e.manifest.devDependencies.values())s.push(t);return m([...i,...s].filter(e=>null===C.parseRange(e.range).protocol))}(t,r,{all:this.all,environment:this.environment}),i=function(e,t,{all:r}){var A;const n=y(e,t,{all:r}),o={};for(const t of e.storedPackages.values())o[C.stringifyIdent(t)]={version:null!==(A=t.version)&&void 0!==A?A:"0.0.0",integrity:t.identHash,requires:m(t.dependencies.values()),dev:n.has(C.convertLocatorToDescriptor(t).descriptorHash)};return o}(t,r,{all:this.all});if(!this.recursive)for(const e of Object.keys(i))Object.prototype.hasOwnProperty.call(n,e)?i[e].requires={}:delete i[e];const d={requires:n,dependencies:i},E=p.npmConfigUtils.getPublishRegistry(r.manifest,{configuration:e});let B;const D=await c.h.start({configuration:e,stdout:this.context.stdout},async()=>{try{B=await p.npmHttpUtils.post("/-/npm/v1/security/audits/quick",d,{authType:p.npmHttpUtils.AuthType.NO_AUTH,configuration:e,jsonResponse:!0,registry:E})}catch(e){throw"HTTPError"!==e.name?e:new g.lk(l.b.EXCEPTION,e.toString())}});if(D.hasErrors())return D.exitCode();const b=Q(B.metadata.vulnerabilities,this.severity);if(!this.json&&b)return u.emitTree(function(e,t){const r={},A={children:r};let n=Object.values(e.advisories);if(null!=t){const e=w(t);n=n.filter(t=>e.has(t.severity))}for(const e of f.sortMap(n,e=>e.module_name))r[e.module_name]={label:e.module_name,value:I.tuple(I.Type.RANGE,e.findings.map(e=>e.version).join(", ")),children:{Issue:{label:"Issue",value:I.tuple(I.Type.NO_HINT,e.title)},URL:{label:"URL",value:I.tuple(I.Type.URL,e.url)},Severity:{label:"Severity",value:I.tuple(I.Type.NO_HINT,e.severity)},"Vulnerable Versions":{label:"Vulnerable Versions",value:I.tuple(I.Type.RANGE,e.vulnerable_versions)},"Patched Versions":{label:"Patched Versions",value:I.tuple(I.Type.RANGE,e.patched_versions)},Via:{label:"Via",value:I.tuple(I.Type.NO_HINT,Array.from(new Set(e.findings.map(e=>e.paths).flat().map(e=>e.split(">")[0]))).join(", "))},Recommendation:{label:"Recommendation",value:I.tuple(I.Type.NO_HINT,e.recommendation.replace(/\n/g," "))}}};return A}(B,this.severity),{configuration:e,json:this.json,stdout:this.context.stdout,separators:2}),1;return(await h.Pk.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async e=>{e.reportJson(B),b||e.reportInfo(l.b.EXCEPTION,"No audit suggestions")})).exitCode()}}D.usage=d.Command.Usage({description:"perform a vulnerability audit against the installed packages",details:`\n This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).\n\n For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \`-A,--all\`. To extend this search to both direct and transitive dependencies, use \`-R,--recursive\`.\n\n Applying the \`--severity\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${E.map(e=>`\`${e}\``).join(", ")}.\n\n If the \`--json\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.\n\n To understand the dependency tree requiring vulnerable packages, check the raw report with the \`--json\` flag or use \`yarn why \` to get more information as to who depends on them.\n `,examples:[["Checks for known security issues with the installed packages. The output is a list of known issues.","yarn npm audit"],["Audit dependencies in all workspaces","yarn npm audit --all"],["Limit auditing to `dependencies` (excludes `devDependencies`)","yarn npm audit --environment production"],["Show audit report as valid JSON","yarn npm audit --json"],["Audit all direct and transitive dependencies","yarn npm audit --recursive"],["Output moderate (or more severe) vulnerabilities","yarn npm audit --severity moderate"]]}),(0,i.gn)([d.Command.Boolean("-A,--all")],D.prototype,"all",void 0),(0,i.gn)([d.Command.Boolean("-R,--recursive")],D.prototype,"recursive",void 0),(0,i.gn)([d.Command.String("--environment")],D.prototype,"environment",void 0),(0,i.gn)([d.Command.Boolean("--json")],D.prototype,"json",void 0),(0,i.gn)([d.Command.String("--severity")],D.prototype,"severity",void 0),(0,i.gn)([d.Command.Path("npm","audit")],D.prototype,"execute",null);var b=r(85622),v=r.n(b),S=r(53887),k=r.n(S),N=r(31669);class F extends s.BaseCommand{constructor(){super(...arguments),this.json=!1}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),{project:t}=await a.I.find(e,this.context.cwd),r=void 0!==this.fields?new Set(["name",...this.fields.split(/\s*,\s*/)]):null,A=[];let n=!1;const i=await h.Pk.start({configuration:e,includeFooter:!1,json:this.json,stdout:this.context.stdout},async o=>{for(const i of this.packages){let s;if("."===i){const e=t.topLevelWorkspace;if(!e.manifest.name)throw new d.UsageError("Missing 'name' field in "+v().join(e.cwd,"package.json"));s=C.makeDescriptor(e.manifest.name,"unknown")}else s=C.parseDescriptor(i);const a=p.npmHttpUtils.getIdentUrl(s);let c;try{c=K(await p.npmHttpUtils.get(a,{configuration:e,ident:s,jsonResponse:!0}))}catch(e){throw"HTTPError"!==e.name?e:404===e.response.statusCode?new g.lk(l.b.EXCEPTION,"Package not found"):new g.lk(l.b.EXCEPTION,e.toString())}const u=Object.keys(c.versions).sort(k().compareLoose);let h=c["dist-tags"].latest||u[u.length-1];if(k().validRange(s.range)){const t=k().maxSatisfying(u,s.range);null!==t?h=t:(o.reportWarning(l.b.UNNAMED,`Unmet range ${C.prettyRange(e,s.range)}; falling back to the latest version`),n=!0)}else"unknown"!==s.range&&(o.reportWarning(l.b.UNNAMED,`Invalid range ${C.prettyRange(e,s.range)}; falling back to the latest version`),n=!0);const f=c.versions[h],I={...c,...f,version:h,versions:u};let E;if(null!==r){E={};for(const t of r){const r=I[t];void 0!==r?E[t]=r:(o.reportWarning(l.b.EXCEPTION,`The '${t}' field doesn't exist inside ${C.prettyIdent(e,s)}'s informations`),n=!0)}}else this.json||(delete I.dist,delete I.readme,delete I.users),E=I;o.reportJson(E),this.json||A.push(E)}});N.inspect.styles.name="cyan";for(const e of A)(e!==A[0]||n)&&this.context.stdout.write("\n"),this.context.stdout.write((0,N.inspect)(e,{depth:1/0,colors:!0,compact:!1})+"\n");return i.exitCode()}}function K(e){if(Array.isArray(e)){const t=[];for(let r of e)r=K(r),r&&t.push(r);return t}if("object"==typeof e&&null!==e){const t={};for(const r of Object.keys(e)){if(r.startsWith("_"))continue;const A=K(e[r]);A&&(t[r]=A)}return t}return e||null}F.usage=d.Command.Usage({category:"Npm-related commands",description:"show information about a package",details:"\n This command will fetch information about a package from the npm registry, and prints it in a tree format.\n\n The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\n\n Append `@` to the package argument to provide information specific to the latest version that satisfies the range. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\n\n If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package informations.\n\n By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\n ",examples:[["Show all available information about react (except the `dist`, `readme`, and `users` fields)","yarn npm info react"],["Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)","yarn npm info react --json"],["Show all available information about react 16.12.0","yarn npm info react@16.12.0"],["Show the description of react","yarn npm info react --fields description"],["Show all available versions of react","yarn npm info react --fields versions"],["Show the readme of react","yarn npm info react --fields readme"],["Show a few fields of react","yarn npm info react --fields homepage,repository"]]}),(0,i.gn)([d.Command.Rest()],F.prototype,"packages",void 0),(0,i.gn)([d.Command.String("-f,--fields",{description:"A comma-separated list of manifest fields that should be displayed"})],F.prototype,"fields",void 0),(0,i.gn)([d.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],F.prototype,"json",void 0),(0,i.gn)([d.Command.Path("npm","info")],F.prototype,"execute",null);var M=r(61899);class R extends s.BaseCommand{constructor(){super(...arguments),this.publish=!1}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),t=await x({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await h.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{const A=await async function({registry:e,report:t,stdin:r,stdout:A}){if(process.env.TEST_ENV)return{name:process.env.TEST_NPM_USER||"",password:process.env.TEST_NPM_PASSWORD||""};t.reportInfo(l.b.UNNAMED,"Logging in to "+e);let n=!1;e.match(/^https:\/\/npm\.pkg\.github\.com(\/|$)/)&&(t.reportInfo(l.b.UNNAMED,"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions."),n=!0);t.reportSeparator();const{username:o,password:i}=await(0,M.prompt)([{type:"input",name:"username",message:"Username:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:A},{type:"password",name:"password",message:n?"Token:":"Password:",required:!0,onCancel:()=>process.exit(130),stdin:r,stdout:A}]);return t.reportSeparator(),{name:o,password:i}}({registry:t,report:r,stdin:this.context.stdin,stdout:this.context.stdout}),n="/-/user/org.couchdb.user:"+encodeURIComponent(A.name),i=await p.npmHttpUtils.put(n,A,{attemptedAs:A.name,configuration:e,registry:t,jsonResponse:!0,authType:p.npmHttpUtils.AuthType.NO_AUTH});return await async function(e,t,{configuration:r,scope:A}){const n=e=>r=>{const A=f.isIndexableObject(r)?r:{},n=A[e],o=f.isIndexableObject(n)?n:{};return{...A,[e]:{...o,npmAuthToken:t}}},i=A?{npmScopes:n(A)}:{npmRegistries:n(e)};return await o.VK.updateHomeConfiguration(i)}(t,i.token,{configuration:e,scope:this.scope}),r.reportInfo(l.b.UNNAMED,"Successfully logged in")})).exitCode()}}async function x({scope:e,publish:t,configuration:r,cwd:A}){return e&&t?p.npmConfigUtils.getScopeRegistry(e,{configuration:r,type:p.npmConfigUtils.RegistryType.PUBLISH_REGISTRY}):e?p.npmConfigUtils.getScopeRegistry(e,{configuration:r}):t?p.npmConfigUtils.getPublishRegistry((await(0,s.openWorkspace)(r,A)).manifest,{configuration:r}):p.npmConfigUtils.getDefaultRegistry({configuration:r})}R.usage=d.Command.Usage({category:"Npm-related commands",description:"store new login info to access the npm registry",details:"\n This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\n\n Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n ",examples:[["Login to the default registry","yarn npm login"],["Login to the registry linked to the @my-scope registry","yarn npm login --scope my-scope"],["Login to the publish registry for the current package","yarn npm login --publish"]]}),(0,i.gn)([d.Command.String("-s,--scope",{description:"Login to the registry configured for a given scope"})],R.prototype,"scope",void 0),(0,i.gn)([d.Command.Boolean("--publish",{description:"Login to the publish registry"})],R.prototype,"publish",void 0),(0,i.gn)([d.Command.Path("npm","login")],R.prototype,"execute",null);const L=new Set(["npmAuthIdent","npmAuthToken"]);class P extends s.BaseCommand{constructor(){super(...arguments),this.publish=!1,this.all=!1}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),t=async()=>{var t;const r=await x({configuration:e,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),A=await o.VK.find(this.context.cwd,this.context.plugins),n=C.makeIdent(null!==(t=this.scope)&&void 0!==t?t:null,"pkg");return!p.npmConfigUtils.getAuthConfiguration(r,{configuration:A,ident:n}).get("npmAuthToken")};return(await h.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{if(this.all&&(await async function(){const e=e=>{let t=!1;const r=f.isIndexableObject(e)?{...e}:{};r.npmAuthToken&&(delete r.npmAuthToken,t=!0);for(const e of Object.keys(r))O(r,e)&&(t=!0);if(0!==Object.keys(r).length)return t?r:e};return await o.VK.updateHomeConfiguration({npmRegistries:e,npmScopes:e})}(),r.reportInfo(l.b.UNNAMED,"Successfully logged out from everything")),this.scope)return await U("npmScopes",this.scope),void(await t()?r.reportInfo(l.b.UNNAMED,"Successfully logged out from "+this.scope):r.reportWarning(l.b.UNNAMED,"Scope authentication settings removed, but some other ones settings still apply to it"));const A=await x({configuration:e,cwd:this.context.cwd,publish:this.publish});await U("npmRegistries",A),await t()?r.reportInfo(l.b.UNNAMED,"Successfully logged out from "+A):r.reportWarning(l.b.UNNAMED,"Registry authentication settings removed, but some other ones settings still apply to it")})).exitCode()}}function O(e,t){const r=e[t];if(!f.isIndexableObject(r))return!1;const A=new Set(Object.keys(r));if([...L].every(e=>!A.has(e)))return!1;for(const e of L)A.delete(e);if(0===A.size)return e[t]=void 0,!0;const n={...r};for(const e of L)delete n[e];return e[t]=n,!0}async function U(e,t){return await o.VK.updateHomeConfiguration({[e]:e=>{const r=f.isIndexableObject(e)?e:{};if(!Object.prototype.hasOwnProperty.call(r,t))return e;const A=r[t],n=f.isIndexableObject(A)?A:{},o=new Set(Object.keys(n));if([...L].every(e=>!o.has(e)))return e;for(const e of L)o.delete(e);if(0===o.size){if(1===Object.keys(r).length)return;return{...r,[t]:void 0}}const i={};for(const e of L)i[e]=void 0;return{...r,[t]:{...n,...i}}}})}P.usage=d.Command.Usage({category:"Npm-related commands",description:"logout of the npm registry",details:"\n This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\n\n Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\n\n Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\n\n Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\n ",examples:[["Logout of the default registry","yarn npm logout"],["Logout of the @my-scope scope","yarn npm logout --scope my-scope"],["Logout of the publish registry for the current package","yarn npm logout --publish"],["Logout of all registries","yarn npm logout --all"]]}),(0,i.gn)([d.Command.String("-s,--scope",{description:"Logout of the registry configured for a given scope"})],P.prototype,"scope",void 0),(0,i.gn)([d.Command.Boolean("--publish",{description:"Logout of the publish registry"})],P.prototype,"publish",void 0),(0,i.gn)([d.Command.Boolean("-A,--all",{description:"Logout of all registries"})],P.prototype,"all",void 0),(0,i.gn)([d.Command.Path("npm","logout")],P.prototype,"execute",null);var T=r(63088),j=r(49881);class Y extends s.BaseCommand{constructor(){super(...arguments),this.tag="latest",this.tolerateRepublish=!1}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await a.I.find(e,this.context.cwd);if(!r)throw new s.WorkspaceRequiredError(t.cwd,this.context.cwd);if(r.manifest.private)throw new d.UsageError("Private workspaces cannot be published");if(null===r.manifest.name||null===r.manifest.version)throw new d.UsageError("Workspaces must have valid names and versions to be published on an external registry");await t.restoreInstallState();const A=r.manifest.name,n=r.manifest.version,i=p.npmConfigUtils.getPublishRegistry(r.manifest,{configuration:e});return(await h.Pk.start({configuration:e,stdout:this.context.stdout},async t=>{if(this.tolerateRepublish)try{const r=await p.npmHttpUtils.get(p.npmHttpUtils.getIdentUrl(A),{configuration:e,registry:i,ident:A,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(r,"versions"))throw new g.lk(l.b.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(Object.prototype.hasOwnProperty.call(r.versions,n))return void t.reportWarning(l.b.UNNAMED,`Registry already knows about version ${n}; skipping.`)}catch(e){if("HTTPError"!==e.name)throw e;if(404!==e.response.statusCode)throw new g.lk(l.b.NETWORK_ERROR,`The remote server answered with HTTP ${e.response.statusCode} ${e.response.statusMessage}`)}await T.maybeExecuteWorkspaceLifecycleScript(r,"prepublish",{report:t}),await j.packUtils.prepareForPack(r,{report:t},async()=>{const n=await j.packUtils.genPackList(r);for(const e of n)t.reportInfo(null,e);const o=await j.packUtils.genPackStream(r,n),s=await f.bufferStream(o),a=await p.npmPublishUtils.makePublishBody(r,s,{access:this.access,tag:this.tag,registry:i});try{await p.npmHttpUtils.put(p.npmHttpUtils.getIdentUrl(A),a,{configuration:e,registry:i,ident:A,jsonResponse:!0})}catch(e){if("HTTPError"!==e.name)throw e;{const r=e.response.body&&e.response.body.error?e.response.body.error:`The remote server answered with HTTP ${e.response.statusCode} ${e.response.statusMessage}`;t.reportError(l.b.NETWORK_ERROR,r)}}}),t.hasErrors()||t.reportInfo(l.b.UNNAMED,"Package archive published")})).exitCode()}}Y.usage=d.Command.Usage({category:"Npm-related commands",description:"publish the active workspace to the npm registry",details:'\n This command will pack the active workspace into a fresh archive and upload it to the npm registry.\n\n The package will by default be attached to the `latest` tag on the registry, but this behavior can be overriden by using the `--tag` option.\n\n Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka "private packages"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\n ',examples:[["Publish the active workspace","yarn npm publish"]]}),(0,i.gn)([d.Command.String("--access",{description:"The access for the published package (public or restricted)"})],Y.prototype,"access",void 0),(0,i.gn)([d.Command.String("--tag",{description:"The tag on the registry that the package should be attached to"})],Y.prototype,"tag",void 0),(0,i.gn)([d.Command.Boolean("--tolerate-republish",{description:"Warn and exit when republishing an already existing version of a package"})],Y.prototype,"tolerateRepublish",void 0),(0,i.gn)([d.Command.Path("npm","publish")],Y.prototype,"execute",null);var G=r(46009);class H extends s.BaseCommand{constructor(){super(...arguments),this.json=!1}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await a.I.find(e,this.context.cwd);let A;if(void 0!==this.package)A=C.parseIdent(this.package);else{if(!r)throw new s.WorkspaceRequiredError(t.cwd,this.context.cwd);if(!r.manifest.name)throw new d.UsageError("Missing 'name' field in "+G.y1.join(r.cwd,G.QS.manifest));A=r.manifest.name}const n=await J(A,e),i={children:f.sortMap(Object.entries(n),([e])=>e).map(([e,t])=>({value:I.tuple(I.Type.RESOLUTION,{descriptor:C.makeDescriptor(A,e),locator:C.makeLocator(A,t)})}))};return u.emitTree(i,{configuration:e,json:this.json,stdout:this.context.stdout})}}async function J(e,t){const r=`/-/package${p.npmHttpUtils.getIdentUrl(e)}/dist-tags`;return p.npmHttpUtils.get(r,{configuration:t,ident:e,jsonResponse:!0}).catch(e=>{throw"HTTPError"!==e.name?e:404===e.response.statusCode?new g.lk(l.b.EXCEPTION,"Package not found"):new g.lk(l.b.EXCEPTION,e.toString())})}H.usage=d.Command.Usage({category:"Npm-related commands",description:"list all dist-tags of a package",details:"\n This command will list all tags of a package from the npm registry.\n\n If the package is not specified, Yarn will default to the current workspace.\n ",examples:[["List all tags of package `my-pkg`","yarn npm tag list my-pkg"]]}),(0,i.gn)([d.Command.String({required:!1})],H.prototype,"package",void 0),(0,i.gn)([d.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],H.prototype,"json",void 0),(0,i.gn)([d.Command.Path("npm","tag","list")],H.prototype,"execute",null);class q extends s.BaseCommand{async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await a.I.find(e,this.context.cwd);if(!r)throw new s.WorkspaceRequiredError(t.cwd,this.context.cwd);const A=C.parseDescriptor(this.package,!0),n=A.range;if(!k().valid(n))throw new d.UsageError(`The range ${I.pretty(e,A.range,I.Type.RANGE)} must be a valid semver version`);const i=p.npmConfigUtils.getPublishRegistry(r.manifest,{configuration:e}),c=I.pretty(e,A,I.Type.IDENT),g=I.pretty(e,n,I.Type.RANGE),u=I.pretty(e,this.tag,I.Type.CODE);return(await h.Pk.start({configuration:e,stdout:this.context.stdout},async t=>{const r=await J(A,e);Object.prototype.hasOwnProperty.call(r,this.tag)&&r[this.tag]===n&&t.reportWarning(l.b.UNNAMED,`Tag ${u} is already set to version ${g}`);try{const t=`/-/package${p.npmHttpUtils.getIdentUrl(A)}/dist-tags/${encodeURIComponent(this.tag)}`;await p.npmHttpUtils.put(t,n,{configuration:e,registry:i,ident:A,jsonRequest:!0,jsonResponse:!0})}catch(e){if("HTTPError"!==e.name)throw e;{const r=e.response.body&&e.response.body.error?e.response.body.error:`The remote server answered with HTTP ${e.response.statusCode} ${e.response.statusMessage}`;t.reportError(l.b.NETWORK_ERROR,r)}}t.hasErrors()||t.reportInfo(l.b.UNNAMED,`Tag ${u} added to version ${g} of package ${c}`)})).exitCode()}}q.usage=d.Command.Usage({category:"Npm-related commands",description:"add a tag for a specific version of a package",details:"\n This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.\n ",examples:[["Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`","yarn npm tag add my-pkg@2.3.4-beta.4 beta"]]}),(0,i.gn)([d.Command.String()],q.prototype,"package",void 0),(0,i.gn)([d.Command.String()],q.prototype,"tag",void 0),(0,i.gn)([d.Command.Path("npm","tag","add")],q.prototype,"execute",null);var z=r(15966);class W extends s.BaseCommand{async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await a.I.find(e,this.context.cwd);if(!r)throw new s.WorkspaceRequiredError(t.cwd,this.context.cwd);const A=C.parseIdent(this.package),n=p.npmConfigUtils.getPublishRegistry(r.manifest,{configuration:e}),i=I.pretty(e,this.tag,I.Type.CODE),c=I.pretty(e,A,I.Type.IDENT),g=await J(A,e);if(!Object.prototype.hasOwnProperty.call(g,this.tag))throw new d.UsageError(`${i} is not a tag of package ${c}`);return(await h.Pk.start({configuration:e,stdout:this.context.stdout},async t=>{try{const t=`/-/package${p.npmHttpUtils.getIdentUrl(A)}/dist-tags/${encodeURIComponent(this.tag)}`;await p.npmHttpUtils.del(t,{configuration:e,registry:n,ident:A,jsonResponse:!0})}catch(e){if("HTTPError"!==e.name)throw e;{const r=e.response.body&&e.response.body.error?e.response.body.error:`The remote server answered with HTTP ${e.response.statusCode} ${e.response.statusMessage}`;t.reportError(l.b.NETWORK_ERROR,r)}}t.hasErrors()||t.reportInfo(l.b.UNNAMED,`Tag ${i} removed from package ${c}`)})).exitCode()}}W.schema=z.object().shape({tag:z.string().notOneOf(["latest"])}),W.usage=d.Command.Usage({category:"Npm-related commands",description:"remove a tag from a package",details:"\n This command will remove a tag from a package from the npm registry.\n ",examples:[["Remove the `beta` tag from package `my-pkg`","yarn npm tag remove my-pkg beta"]]}),(0,i.gn)([d.Command.String()],W.prototype,"package",void 0),(0,i.gn)([d.Command.String()],W.prototype,"tag",void 0),(0,i.gn)([d.Command.Path("npm","tag","remove")],W.prototype,"execute",null);class V extends s.BaseCommand{constructor(){super(...arguments),this.publish=!1}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins);let t;t=this.scope&&this.publish?p.npmConfigUtils.getScopeRegistry(this.scope,{configuration:e,type:p.npmConfigUtils.RegistryType.PUBLISH_REGISTRY}):this.scope?p.npmConfigUtils.getScopeRegistry(this.scope,{configuration:e}):this.publish?p.npmConfigUtils.getPublishRegistry((await(0,s.openWorkspace)(e,this.context.cwd)).manifest,{configuration:e}):p.npmConfigUtils.getDefaultRegistry({configuration:e});return(await h.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{try{const A=await p.npmHttpUtils.get("/-/whoami",{configuration:e,registry:t,authType:p.npmHttpUtils.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?C.makeIdent(this.scope,""):void 0});r.reportInfo(l.b.UNNAMED,A.username)}catch(e){if("HTTPError"!==e.name)throw e;401===e.response.statusCode||403===e.response.statusCode?r.reportError(l.b.AUTHENTICATION_INVALID,"Authentication failed - your credentials may have expired"):r.reportError(l.b.AUTHENTICATION_INVALID,e.toString())}})).exitCode()}}V.usage=d.Command.Usage({category:"Npm-related commands",description:"display the name of the authenticated user",details:"\n Print the username associated with the current authentication settings to the standard output.\n\n When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\n\n When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\n ",examples:[["Print username for the default registry","yarn npm whoami"],["Print username for the registry on a given scope","yarn npm whoami --scope company"]]}),(0,i.gn)([d.Command.String("-s,--scope",{description:"Print username for the registry configured for a given scope"})],V.prototype,"scope",void 0),(0,i.gn)([d.Command.Boolean("--publish",{description:"Print username for the publish registry"})],V.prototype,"publish",void 0),(0,i.gn)([d.Command.Path("npm","whoami")],V.prototype,"execute",null);const X={configuration:{npmPublishAccess:{description:"Default access of the published packages",type:o.a2.STRING,default:null}},commands:[D,F,R,P,Y,q,H,W,V]}},14224:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>W,npmConfigUtils:()=>A,npmHttpUtils:()=>n,npmPublishUtils:()=>o});var A={};r.r(A),r.d(A,{RegistryType:()=>l,getAuthConfiguration:()=>Q,getDefaultRegistry:()=>y,getPublishRegistry:()=>E,getRegistryConfiguration:()=>m,getScopeConfiguration:()=>w,getScopeRegistry:()=>B,normalizeRegistry:()=>I});var n={};r.r(n),r.d(n,{AuthType:()=>u,del:()=>N,get:()=>v,getIdentUrl:()=>b,handleInvalidAuthenticationError:()=>D,post:()=>S,put:()=>k});var o={};r.r(o),r.d(o,{makePublishBody:()=>J});var i=r(39922),s=r(54143),a=r(72785),c=r(53887),g=r.n(c);var l,u,h=r(79669),p=r(35691),d=r(92659),C=r(61899),f=r(78835);function I(e){return e.replace(/\/$/,"")}function E(e,{configuration:t}){return e.publishConfig&&e.publishConfig.registry?I(e.publishConfig.registry):e.name?B(e.name.scope,{configuration:t,type:l.PUBLISH_REGISTRY}):y({configuration:t,type:l.PUBLISH_REGISTRY})}function B(e,{configuration:t,type:r=l.FETCH_REGISTRY}){const A=w(e,{configuration:t});if(null===A)return y({configuration:t,type:r});const n=A.get(r);return null===n?y({configuration:t,type:r}):I(n)}function y({configuration:e,type:t=l.FETCH_REGISTRY}){const r=e.get(t);return I(null!==r?r:e.get(l.FETCH_REGISTRY))}function m(e,{configuration:t}){const r=t.get("npmRegistries"),A=r.get(e);if(void 0!==A)return A;const n=r.get(e.replace(/^[a-z]+:/,""));return void 0!==n?n:null}function w(e,{configuration:t}){if(null===e)return null;const r=t.get("npmScopes").get(e);return r||null}function Q(e,{configuration:t,ident:r}){const A=r&&w(r.scope,{configuration:t});if((null==A?void 0:A.get("npmAuthIdent"))||(null==A?void 0:A.get("npmAuthToken")))return A;return m(e,{configuration:t})||t}async function D(e,{attemptedAs:t,registry:r,headers:A,configuration:n}){if("HTTPError"===e.name&&401===e.response.statusCode)throw new p.lk(d.b.AUTHENTICATION_INVALID,`Invalid authentication (${"string"!=typeof t?"as "+await async function(e,t,{configuration:r}){var A;if(void 0===t||void 0===t.authorization)return"an anonymous user";try{const n=await h.get(new f.URL(e+"/-/whoami").href,{configuration:r,headers:t,jsonResponse:!0});return null!==(A=n.username)&&void 0!==A?A:"an unknown user"}catch(e){return"an unknown user"}}(r,A,{configuration:n}):"attempted as "+t})`)}function b(e){return e.scope?`/@${e.scope}%2f${e.name}`:"/"+e.name}async function v(e,{configuration:t,headers:r,ident:A,authType:n,registry:o,...i}){if(A&&void 0===o&&(o=B(A.scope,{configuration:t})),A&&A.scope&&void 0===n&&(n=u.BEST_EFFORT),"string"!=typeof o)throw new Error("Assertion failed: The registry should be a string");const s=F(o,{authType:n,configuration:t,ident:A});let a;s&&(r={...r,authorization:s});try{a=new f.URL(e)}catch(t){a=new f.URL(o+e)}try{return await h.get(a.href,{configuration:t,headers:r,...i})}catch(e){throw await D(e,{registry:o,configuration:t,headers:r}),e}}async function S(e,t,{attemptedAs:r,configuration:A,headers:n,ident:o,authType:i=u.ALWAYS_AUTH,registry:s,...a}){if(o&&void 0===s&&(s=B(o.scope,{configuration:A})),"string"!=typeof s)throw new Error("Assertion failed: The registry should be a string");const c=F(s,{authType:i,configuration:A,ident:o});c&&(n={...n,authorization:c});try{return await h.post(s+e,t,{configuration:A,headers:n,...a})}catch(o){if(!M(o))throw await D(o,{attemptedAs:r,registry:s,configuration:A,headers:n}),o;const i=await K(),c={...n,...R(i)};try{return await h.post(`${s}${e}`,t,{configuration:A,headers:c,...a})}catch(e){throw await D(e,{attemptedAs:r,registry:s,configuration:A,headers:n}),e}}}async function k(e,t,{attemptedAs:r,configuration:A,headers:n,ident:o,authType:i=u.ALWAYS_AUTH,registry:s,...a}){if(o&&void 0===s&&(s=B(o.scope,{configuration:A})),"string"!=typeof s)throw new Error("Assertion failed: The registry should be a string");const c=F(s,{authType:i,configuration:A,ident:o});c&&(n={...n,authorization:c});try{return await h.put(s+e,t,{configuration:A,headers:n,...a})}catch(o){if(!M(o))throw await D(o,{attemptedAs:r,registry:s,configuration:A,headers:n}),o;const i=await K(),c={...n,...R(i)};try{return await h.put(`${s}${e}`,t,{configuration:A,headers:c,...a})}catch(e){throw await D(e,{attemptedAs:r,registry:s,configuration:A,headers:n}),e}}}async function N(e,{attemptedAs:t,configuration:r,headers:A,ident:n,authType:o=u.ALWAYS_AUTH,registry:i,...s}){if(n&&void 0===i&&(i=B(n.scope,{configuration:r})),"string"!=typeof i)throw new Error("Assertion failed: The registry should be a string");const a=F(i,{authType:o,configuration:r,ident:n});a&&(A={...A,authorization:a});try{return await h.del(i+e,{configuration:r,headers:A,...s})}catch(n){if(!M(n))throw await D(n,{attemptedAs:t,registry:i,configuration:r,headers:A}),n;const o=await K(),a={...A,...R(o)};try{return await h.del(`${i}${e}`,{configuration:r,headers:a,...s})}catch(e){throw await D(e,{attemptedAs:t,registry:i,configuration:r,headers:A}),e}}}function F(e,{authType:t=u.CONFIGURATION,configuration:r,ident:A}){const n=Q(e,{configuration:r,ident:A}),o=function(e,t){switch(t){case u.CONFIGURATION:return e.get("npmAlwaysAuth");case u.BEST_EFFORT:case u.ALWAYS_AUTH:return!0;case u.NO_AUTH:return!1;default:throw new Error("Unreachable")}}(n,t);if(!o)return null;if(n.get("npmAuthToken"))return"Bearer "+n.get("npmAuthToken");if(n.get("npmAuthIdent"))return"Basic "+n.get("npmAuthIdent");if(o&&t!==u.BEST_EFFORT)throw new p.lk(d.b.AUTHENTICATION_NOT_FOUND,"No authentication configured for request");return null}async function K(){if(process.env.TEST_ENV)return process.env.TEST_NPM_2FA_TOKEN||"";const{otp:e}=await(0,C.prompt)({type:"password",name:"otp",message:"One-time password:",required:!0,onCancel:()=>process.exit(130)});return e}function M(e){if("HTTPError"!==e.name)return!1;try{return e.response.headers["www-authenticate"].split(/,\s*/).map(e=>e.toLowerCase()).includes("otp")}catch(e){return!1}}function R(e){return{"npm-otp":e}}!function(e){e.FETCH_REGISTRY="npmRegistryServer",e.PUBLISH_REGISTRY="npmPublishRegistry"}(l||(l={})),function(e){e[e.NO_AUTH=0]="NO_AUTH",e[e.BEST_EFFORT=1]="BEST_EFFORT",e[e.CONFIGURATION=2]="CONFIGURATION",e[e.ALWAYS_AUTH=3]="ALWAYS_AUTH"}(u||(u={}));class x{supports(e,t){if(!e.reference.startsWith("npm:"))return!1;const r=new f.URL(e.reference);return!!g().valid(r.pathname)&&!r.searchParams.has("__archiveUrl")}getLocalPath(e,t){return null}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,[A,n,o]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,s.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from the remote registry"),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:A,releaseFs:n,prefixPath:s.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){let r;try{r=await v(x.getLocatorUrl(e),{configuration:t.project.configuration,ident:e})}catch(A){r=await v(x.getLocatorUrl(e).replace(/%2f/g,"/"),{configuration:t.project.configuration,ident:e})}return await a.convertToZip(r,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:s.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,t,{configuration:r}){let A=B(e.scope,{configuration:r});const n=x.getLocatorUrl(e);return t=t.replace(/^https?:(\/\/(?:[^/]+\.)?npmjs.org(?:$|\/))/,"https:$1"),A=A.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"),(t=t.replace(/^https:\/\/registry\.npmjs\.org($|\/)/,"https://registry.yarnpkg.com$1"))===A+n||t===A+n.replace(/%2f/g,"/")}static getLocatorUrl(e){const t=g().clean(e.reference.slice("npm:".length));if(null===t)throw new p.lk(d.b.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");return`${b(e)}/-/${e.name}-${t}.tgz`}}var L=r(46611),P=r(36545),O=r(32485);const U=s.makeIdent(null,"node-gyp"),T=/\b(node-gyp|prebuild-install)\b/;var j=r(52779);var Y=r(49881),G=r(76417),H=r(10129);async function J(e,t,{access:r,tag:A,registry:n}){const o=e.project.configuration,i=e.manifest.name,a=e.manifest.version,c=s.stringifyIdent(i),g=(0,G.createHash)("sha1").update(t).digest("hex"),l=H.Sd(t).toString();void 0===r&&(r=e.manifest.publishConfig&&"string"==typeof e.manifest.publishConfig.access?e.manifest.publishConfig.access:null!==o.get("npmPublishAccess")?o.get("npmPublishAccess"):i.scope?"restricted":"public");const u=await Y.packUtils.genPackageManifest(e),h=`${c}-${a}.tgz`,p=new f.URL(`${c}/-/${h}`,n);return{_id:c,_attachments:{[h]:{content_type:"application/octet-stream",data:t.toString("base64"),length:t.length}},name:c,access:r,"dist-tags":{[A]:a},versions:{[a]:{...u,_id:`${c}@${a}`,name:c,version:a,dist:{shasum:g,integrity:l,tarball:p.toString()}}}}}const q={npmAlwaysAuth:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:i.a2.BOOLEAN,default:!1},npmAuthIdent:{description:"Authentication identity for the npm registry (_auth in npm and yarn v1)",type:i.a2.SECRET,default:null},npmAuthToken:{description:"Authentication token for the npm registry (_authToken in npm and yarn v1)",type:i.a2.SECRET,default:null}},z={npmPublishRegistry:{description:"Registry to push packages to",type:i.a2.STRING,default:null},npmRegistryServer:{description:"URL of the selected npm registry (note: npm enterprise isn't supported)",type:i.a2.STRING,default:"https://registry.yarnpkg.com"}},W={configuration:{...q,...z,npmScopes:{description:"Settings per package scope",type:i.a2.MAP,valueDefinition:{description:"",type:i.a2.SHAPE,properties:{...q,...z}}},npmRegistries:{description:"Settings per registry",type:i.a2.MAP,normalizeKeys:I,valueDefinition:{description:"",type:i.a2.SHAPE,properties:{...q}}}},fetchers:[class{supports(e,t){if(!e.reference.startsWith("npm:"))return!1;const{selector:r,params:A}=s.parseRange(e.reference);return!!g().valid(r)&&(null!==A&&"string"==typeof A.__archiveUrl)}getLocalPath(e,t){return null}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,[A,n,o]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,s.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from the remote server"),loader:()=>this.fetchFromNetwork(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:A,releaseFs:n,prefixPath:s.getIdentVendorPath(e),checksum:o}}async fetchFromNetwork(e,t){const{params:r}=s.parseRange(e.reference);if(null===r||"string"!=typeof r.__archiveUrl)throw new Error("Assertion failed: The archiveUrl querystring parameter should have been available");const A=await v(r.__archiveUrl,{configuration:t.project.configuration,ident:e});return await a.convertToZip(A,{compressionLevel:t.project.configuration.get("compressionLevel"),prefixPath:s.getIdentVendorPath(e),stripComponents:1})}},x],resolvers:[class{supportsDescriptor(e,t){return!!e.range.startsWith("npm:")&&!!s.tryParseDescriptor(e.range.slice("npm:".length),!0)}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Unreachable")}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){const r=s.parseDescriptor(e.range.slice("npm:".length),!0);return t.resolver.getResolutionDependencies(r,t)}async getCandidates(e,t,r){const A=s.parseDescriptor(e.range.slice("npm:".length),!0);return await r.resolver.getCandidates(A,t,r)}async getSatisfying(e,t,r){const A=s.parseDescriptor(e.range.slice("npm:".length),!0);return r.resolver.getSatisfying(A,t,r)}resolve(e,t){throw new Error("Unreachable")}},class{supportsDescriptor(e,t){return!!e.range.startsWith("npm:")&&!!P.validRange(e.range.slice("npm:".length))}supportsLocator(e,t){if(!e.reference.startsWith("npm:"))return!1;const{selector:r}=s.parseRange(e.reference);return!!g().valid(r)}shouldPersistResolution(e,t){return!0}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){const A=P.validRange(e.range.slice("npm:".length));if(null===A)throw new Error("Expected a valid range, got "+e.range.slice("npm:".length));const n=await v(b(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0}),o=Object.keys(n.versions).map(e=>new(g().SemVer)(e)).filter(e=>A.test(e)),i=o.filter(e=>!n.versions[e.raw].deprecated),a=i.length>0?i:o;return a.sort((e,t)=>-e.compare(t)),a.map(t=>{const A=s.makeLocator(e,"npm:"+t.raw),o=n.versions[t.raw].dist.tarball;return x.isConventionalTarballUrl(A,o,{configuration:r.project.configuration})?A:s.bindLocator(A,{__archiveUrl:o})})}async getSatisfying(e,t,r){const A=P.validRange(e.range.slice("npm:".length));if(null===A)throw new Error("Expected a valid range, got "+e.range.slice("npm:".length));return t.map(e=>{try{return new(g().SemVer)(e.slice("npm:".length))}catch(e){return null}}).filter(e=>null!==e).filter(e=>A.test(e)).sort((e,t)=>-e.compare(t)).map(t=>s.makeLocator(e,"npm:"+t.raw))}async resolve(e,t){const{selector:r}=s.parseRange(e.reference),A=g().clean(r);if(null===A)throw new p.lk(d.b.RESOLVER_NOT_FOUND,"The npm semver resolver got selected, but the version isn't semver");const n=await v(b(e),{configuration:t.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"versions"))throw new p.lk(d.b.REMOTE_INVALID,'Registry returned invalid data for - missing "versions" field');if(!Object.prototype.hasOwnProperty.call(n.versions,A))throw new p.lk(d.b.REMOTE_NOT_FOUND,`Registry failed to return reference "${A}"`);const o=new L.G;if(o.load(n.versions[A]),!o.dependencies.has(U.identHash)&&!o.peerDependencies.has(U.identHash))for(const r of o.scripts.values())if(r.match(T)){o.dependencies.set(U.identHash,s.makeDescriptor(U,"latest")),t.report.reportWarning(d.b.NODE_GYP_INJECTED,s.prettyLocator(t.project.configuration,e)+": Implicit dependencies on node-gyp are discouraged");break}return"string"==typeof o.raw.deprecated&&t.report.reportWarning(d.b.DEPRECATED_PACKAGE,`${s.prettyLocator(t.project.configuration,e)} is deprecated: ${o.raw.deprecated}`),{...e,version:A,languageName:"node",linkType:O.Un.HARD,dependencies:o.dependencies,peerDependencies:o.peerDependencies,dependenciesMeta:o.dependenciesMeta,peerDependenciesMeta:o.peerDependenciesMeta,bin:o.bin}}},class{supportsDescriptor(e,t){return!!e.range.startsWith("npm:")&&!!j.c.test(e.range.slice("npm:".length))}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Unreachable")}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){const A=e.range.slice("npm:".length),n=await v(b(e),{configuration:r.project.configuration,ident:e,jsonResponse:!0});if(!Object.prototype.hasOwnProperty.call(n,"dist-tags"))throw new p.lk(d.b.REMOTE_INVALID,'Registry returned invalid data - missing "dist-tags" field');const o=n["dist-tags"];if(!Object.prototype.hasOwnProperty.call(o,A))throw new p.lk(d.b.REMOTE_NOT_FOUND,`Registry failed to return tag "${A}"`);const i=o[A],a=s.makeLocator(e,"npm:"+i),c=n.versions[i].dist.tarball;return x.isConventionalTarballUrl(a,c,{configuration:r.project.configuration})?[a]:[s.bindLocator(a,{__archiveUrl:c})]}async getSatisfying(e,t,r){return null}async resolve(e,t){throw new Error("Unreachable")}}]}},49881:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>T,packUtils:()=>A});var A={};r.r(A),r.d(A,{genPackList:()=>K,genPackStream:()=>N,genPackageManifest:()=>F,hasPackScripts:()=>S,prepareForPack:()=>k});var n=r(54143),o=r(35691),i=r(92659),s=r(36370),a=r(40822);class c extends a.Command{}(0,s.gn)([a.Command.String("--cwd",{hidden:!0})],c.prototype,"cwd",void 0);var g=r(46611),l=r(46009);class u extends a.UsageError{constructor(e,t){super(`This command can only be run from within a workspace of your project (${l.y1.relative(e,t)} isn't a workspace of ${l.y1.join(e,g.G.fileName)}).`)}}r(63129),r(5864),r(35747);new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]]);var h=r(71643),p=r(39922);(0,s.gn)([a.Command.Path("--welcome")],class extends c{async execute(){const e=await p.VK.find(this.context.cwd,this.context.plugins);this.context.stdout.write((e=>`\n${h.pretty(e,"Welcome on Yarn 2!","bold")} 🎉 Thanks for helping us shape our vision of how projects\nshould be managed going forward.\n\nBeing still in RC, Yarn 2 isn't completely stable yet. Some features might be\nmissing, and some behaviors may have received major overhaul. In case of doubt,\nuse the following URLs to get some insight:\n\n - The changelog:\n ${h.pretty(e,"https://github.com/yarnpkg/berry/tree/CHANGELOG.md","cyan")}\n\n - Our issue tracker:\n ${h.pretty(e,"https://github.com/yarnpkg/berry","cyan")}\n\n - Our Discord server:\n ${h.pretty(e,"https://discord.gg/yarnpkg","cyan")}\n\nWe're hoping you will enjoy the experience. For now, a good start is to run\nthe two following commands:\n\n ${h.pretty(e,"find . -name node_modules -prune -exec rm -r {} \\;","magenta")}\n ${h.pretty(e,"yarn install","magenta")}\n\nOne last trick! If you need at some point to upgrade Yarn to a nightly build,\nthe following command will install the CLI straight from master:\n\n ${h.pretty(e,"yarn set version from sources","magenta")}\n\nSee you later 👋\n`)(e).trim()+"\n")}}.prototype,"execute",null);var d=r(85824),C=r(28148),f=r(33720),I=r(15815),E=r(43896),B=r(63088),y=r(10489),m=r(2401),w=r.n(m),Q=r(59938),D=r(78761);const b=["/package.json","/readme","/readme.*","/license","/license.*","/licence","/licence.*","/changelog","/changelog.*"],v=["/package.tgz",".github",".git",".hg","node_modules",".npmignore",".gitignore",".#*",".DS_Store"];async function S(e){return!!B.hasWorkspaceScript(e,"prepack")||!!B.hasWorkspaceScript(e,"postpack")}async function k(e,{report:t},r){await B.maybeExecuteWorkspaceLifecycleScript(e,"prepack",{report:t});try{await r()}finally{await B.maybeExecuteWorkspaceLifecycleScript(e,"postpack",{report:t})}}async function N(e,t){var r,A;void 0===t&&(t=await K(e));const n=new Set;for(const t of null!==(A=null===(r=e.manifest.publishConfig)||void 0===r?void 0:r.executableFiles)&&void 0!==A?A:new Set)n.add(l.y1.normalize(t));for(const t of e.manifest.bin.values())n.add(l.y1.normalize(t));const o=Q.pack();process.nextTick(async()=>{for(const r of t){const t=l.y1.normalize(r),A=l.y1.resolve(e.cwd,t),i=l.y1.join("package",t),s=await E.xfs.lstatPromise(A),a={name:i,mtime:new Date(3155328e5)},c=n.has(t)?493:420;let g,u;const h=new Promise((e,t)=>{g=e,u=t}),p=e=>{e?u(e):g()};if(s.isFile()){let r;r="package.json"===t?Buffer.from(JSON.stringify(await F(e),null,2)):await E.xfs.readFilePromise(A),o.entry({...a,mode:c,type:"file"},r,p)}else s.isSymbolicLink()?o.entry({...a,mode:c,type:"symlink",linkname:await E.xfs.readlinkPromise(A)},p):p(new Error(`Unsupported file type ${s.mode} for ${l.cS.fromPortablePath(t)}`));await h}o.finalize()});const i=(0,D.createGzip)();return o.pipe(i),i}async function F(e){const t=JSON.parse(JSON.stringify(e.manifest.raw));return await e.project.configuration.triggerHook(e=>e.beforeWorkspacePacking,e,t),t}async function K(e){var t,r,A,n,o,i,s,a;const c=e.project,g=c.configuration,u={accept:[],reject:[]};for(const e of v)u.reject.push(e);for(const e of b)u.accept.push(e);u.reject.push(g.get("rcFilename"));const h=t=>{if(null===t||!t.startsWith(e.cwd+"/"))return;const r=l.y1.relative(e.cwd,t),A=l.y1.resolve(l.LZ.root,r);u.reject.push(A)};h(l.y1.resolve(c.cwd,g.get("lockfileFilename"))),h(g.get("bstatePath")),h(g.get("cacheFolder")),h(g.get("globalFolder")),h(g.get("installStatePath")),h(g.get("virtualFolder")),h(g.get("yarnPath")),await g.triggerHook(e=>e.populateYarnPaths,c,e=>{h(e)});for(const t of c.workspaces){const r=l.y1.relative(e.cwd,t.cwd);""===r||r.match(/^(\.\.)?\//)||u.reject.push("/"+r)}const p={accept:[],reject:[]},d=null!==(r=null===(t=e.manifest.publishConfig)||void 0===t?void 0:t.main)&&void 0!==r?r:e.manifest.main,C=null!==(n=null===(A=e.manifest.publishConfig)||void 0===A?void 0:A.module)&&void 0!==n?n:e.manifest.module,f=null!==(i=null===(o=e.manifest.publishConfig)||void 0===o?void 0:o.browser)&&void 0!==i?i:e.manifest.browser,I=null!==(a=null===(s=e.manifest.publishConfig)||void 0===s?void 0:s.bin)&&void 0!==a?a:e.manifest.bin;null!=d&&p.accept.push(l.y1.resolve(l.LZ.root,d)),null!=C&&p.accept.push(l.y1.resolve(l.LZ.root,C)),"string"==typeof f&&p.accept.push(l.y1.resolve(l.LZ.root,f));for(const e of I.values())p.accept.push(l.y1.resolve(l.LZ.root,e));if(f instanceof Map)for(const[e,t]of f.entries())p.accept.push(l.y1.resolve(l.LZ.root,e)),"string"==typeof t&&p.accept.push(l.y1.resolve(l.LZ.root,t));const E=null!==e.manifest.files;if(E){p.reject.push("/*");for(const t of e.manifest.files)R(p.accept,t,{cwd:l.LZ.root})}return await async function(e,{hasExplicitFileList:t,globalList:r,ignoreList:A}){const n=[],o=new y.n(e),i=[[l.LZ.root,[A]]];for(;i.length>0;){const[e,A]=i.pop(),s=await o.lstatPromise(e);if(!x(e,{globalList:r,ignoreLists:s.isDirectory()?null:A}))if(s.isDirectory()){const n=await o.readdirPromise(e);let s=!1,a=!1;if(!t||e!==l.LZ.root)for(const e of n)s=s||".gitignore"===e,a=a||".npmignore"===e;const c=a?await M(o,e,".npmignore"):s?await M(o,e,".gitignore"):null;let g=null!==c?[c].concat(A):A;x(e,{globalList:r,ignoreLists:A})&&(g=[...A,{accept:[],reject:["**/*"]}]);for(const t of n)i.push([l.y1.resolve(e,t),g])}else(s.isFile()||s.isSymbolicLink())&&n.push(l.y1.relative(l.LZ.root,e))}return n.sort()}(e.cwd,{hasExplicitFileList:E,globalList:u,ignoreList:p})}async function M(e,t,r){const A={accept:[],reject:[]},n=await e.readFilePromise(l.y1.join(t,r),"utf8");for(const e of n.split(/\n/g))R(A.reject,e,{cwd:t});return A}function R(e,t,{cwd:r}){const A=t.trim();""!==A&&"#"!==A[0]&&e.push(function(e,{cwd:t}){const r="!"===e[0];return r&&(e=e.slice(1)),e.match(/\.{0,1}\//)&&(e=l.y1.resolve(t,e)),r&&(e="!"+e),e}(A,{cwd:r}))}function x(e,{globalList:t,ignoreLists:r}){if(L(e,t.accept))return!1;if(L(e,t.reject))return!0;if(null!==r)for(const t of r){if(L(e,t.accept))return!1;if(L(e,t.reject))return!0}return!1}function L(e,t){let r=t;const A=[];for(let e=0;e{await k(r,{report:t},async()=>{t.reportJson({base:r.cwd});const e=await K(r);for(const r of e)t.reportInfo(null,r),t.reportJson({location:r});if(!this.dryRun){const t=await N(r,e),n=E.xfs.createWriteStream(A);t.pipe(n),await new Promise(e=>{n.on("finish",e)})}}),this.dryRun||(t.reportInfo(i.b.UNNAMED,"Package archive generated in "+h.pretty(e,A,h.Type.PATH)),t.reportJson({output:A}))})).exitCode()}}O.usage=a.Command.Usage({description:"generate a tarball from the active workspace",details:"\n This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\n\n If the `-o,---out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\n ",examples:[["Create an archive from the active workspace","yarn pack"],["List the files that would be made part of the workspace's archive","yarn pack --dry-run"],["Name and output the archive in a dedicated folder","yarn pack --out /artifacts/%s-%v.tgz"]]}),(0,s.gn)([a.Command.Boolean("--install-if-needed",{description:"Run a preliminary `yarn install` if the package contains build scripts"})],O.prototype,"installIfNeeded",void 0),(0,s.gn)([a.Command.Boolean("-n,--dry-run",{description:"Print the file paths without actually generating the package archive"})],O.prototype,"dryRun",void 0),(0,s.gn)([a.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],O.prototype,"json",void 0),(0,s.gn)([a.Command.String("--filename",{hidden:!1,description:"Create the archive at the specified path"}),a.Command.String("-o,--out",{description:"Create the archive at the specified path"})],O.prototype,"out",void 0),(0,s.gn)([a.Command.Path("pack")],O.prototype,"execute",null);const U=["dependencies","devDependencies","peerDependencies"],T={hooks:{beforeWorkspacePacking:(e,t)=>{t.publishConfig&&(t.publishConfig.main&&(t.main=t.publishConfig.main),t.publishConfig.browser&&(t.browser=t.publishConfig.browser),t.publishConfig.module&&(t.module=t.publishConfig.module),t.publishConfig.browser&&(t.browser=t.publishConfig.browser),t.publishConfig.bin&&(t.bin=t.publishConfig.bin));const r=e.project;for(const A of U)for(const s of e.manifest.getForScope(A).values()){const e=r.tryWorkspaceByDescriptor(s),a=n.parseRange(s.range);if("workspace:"===a.protocol)if(null===e){if(null===r.tryWorkspaceByIdent(s))throw new o.lk(i.b.WORKSPACE_NOT_FOUND,n.prettyDescriptor(r.configuration,s)+": No local workspace found for this range")}else{let r;r=n.areDescriptorsEqual(s,e.anchoredDescriptor)||"*"===a.selector?e.manifest.version:a.selector,t[A][n.stringifyIdent(s)]=r}}}},commands:[O]}},29936:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>re,patchUtils:()=>A});var A={};r.r(A),r.d(A,{applyPatchFile:()=>S,diffFolders:()=>H,extractPackageToDisk:()=>G,isParentRequired:()=>j,loadPatchFiles:()=>Y,makeDescriptor:()=>O,makeLocator:()=>U,parseDescriptor:()=>x,parseLocator:()=>L,parsePatchFile:()=>D});var n=r(39922),o=r(35691),i=r(92659),s=r(54143),a=r(73632),c=r(43896),g=r(46009),l=r(90739),u=r(75448),h=r(65281),p=r(33720),d=r(6220),C=r(36545),f=r(78420);class I extends Error{constructor(e,t){super("Cannot apply hunk #"+(e+1)),this.hunk=t}}const E=/^@@ -(\d+)(,(\d+))? \+(\d+)(,(\d+))? @@.*/;function B(e){return g.y1.relative(g.LZ.root,g.y1.resolve(g.LZ.root,g.cS.toPortablePath(e)))}function y(e){const t=e.trim().match(E);if(!t)throw new Error(`Bad header line: '${e}'`);return{original:{start:Math.max(Number(t[1]),1),length:Number(t[3]||1)},patched:{start:Math.max(Number(t[4]),1),length:Number(t[6]||1)}}}var m;!function(e){e.Context="context",e.Insertion="insertion",e.Deletion="deletion"}(m||(m={}));const w={"@":"header","-":m.Deletion,"+":m.Insertion," ":m.Context,"\\":"pragma",undefined:m.Context};function Q(e){const t=511&parseInt(e,8);if(420!==t&&493!==t)throw new Error("Unexpected file mode string: "+e);return t}function D(e){const t=e.split(/\n/g);return""===t[t.length-1]&&t.pop(),function(e){const t=[];for(const r of e){const{semverExclusivity:e,diffLineFromPath:A,diffLineToPath:n,oldMode:o,newMode:i,deletedFileMode:s,newFileMode:c,renameFrom:g,renameTo:l,beforeHash:u,afterHash:h,fromPath:p,toPath:d,hunks:C}=r,f=g?"rename":s?"file deletion":c?"file creation":C&&C.length>0?"patch":"mode change";let I=null;switch(f){case"rename":if(!g||!l)throw new Error("Bad parser state: rename from & to not given");t.push({type:"rename",semverExclusivity:e,fromPath:B(g),toPath:B(l)}),I=l;break;case"file deletion":{const r=A||p;if(!r)throw new Error("Bad parse state: no path given for file deletion");t.push({type:"file deletion",semverExclusivity:e,hunk:C&&C[0]||null,path:B(r),mode:Q(s),hash:u})}break;case"file creation":{const r=n||d;if(!r)throw new Error("Bad parse state: no path given for file creation");t.push({type:"file creation",semverExclusivity:e,hunk:C&&C[0]||null,path:B(r),mode:Q(c),hash:h})}break;case"patch":case"mode change":I=d||n;break;default:a.assertNever(f)}I&&o&&i&&o!==i&&t.push({type:"mode change",semverExclusivity:e,path:B(I),oldMode:Q(o),newMode:Q(i)}),I&&C&&C.length&&t.push({type:"patch",semverExclusivity:e,path:B(I),hunks:C,beforeHash:u,afterHash:h})}return t}(function(e){const t=[];let r={semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null},A="parsing header",n=null,o=null;function i(){n&&(o&&(n.parts.push(o),o=null),r.hunks.push(n),n=null)}function s(){i(),t.push(r),r={semverExclusivity:null,diffLineFromPath:null,diffLineToPath:null,oldMode:null,newMode:null,deletedFileMode:null,newFileMode:null,renameFrom:null,renameTo:null,beforeHash:null,afterHash:null,fromPath:null,toPath:null,hunks:null}}for(let t=0;te<0?e:"+"+e;throw new Error(`hunk header integrity check failed (expected @@ ${A(e.header.original.length)} ${A(e.header.patched.length)} @@, got @@ ${A(t)} ${A(r)} @@)`)}}async function v(e,t,r){const A=await e.lstatPromise(t),n=await r();if(void 0!==n&&(t=n),e.lutimesPromise)await e.lutimesPromise(t,A.atime,A.mtime);else{if(A.isSymbolicLink())throw new Error("Cannot preserve the time values of a symlink");await e.utimesPromise(t,A.atime,A.mtime)}}async function S(e,{baseFs:t=new f.S,dryRun:r=!1,version:A=null}={}){for(const n of e)if(null===n.semverExclusivity||null===A||C.satisfiesWithPrereleases(A,n.semverExclusivity))switch(n.type){case"file deletion":if(r){if(!t.existsSync(n.path))throw new Error("Trying to delete a file that doesn't exist: "+n.path)}else await v(t,g.y1.dirname(n.path),async()=>{await t.unlinkPromise(n.path)});break;case"rename":if(r){if(!t.existsSync(n.fromPath))throw new Error("Trying to move a file that doesn't exist: "+n.fromPath)}else await v(t,g.y1.dirname(n.fromPath),async()=>{await v(t,g.y1.dirname(n.toPath),async()=>{await v(t,n.fromPath,async()=>(await t.movePromise(n.fromPath,n.toPath),n.toPath))})});break;case"file creation":if(r){if(t.existsSync(n.path))throw new Error("Trying to create a file that already exists: "+n.path)}else{const e=n.hunk?n.hunk.parts[0].lines.join("\n")+(n.hunk.parts[0].noNewlineAtEndOfFile?"":"\n"):"";await t.mkdirpPromise(g.y1.dirname(n.path),{chmod:493,utimes:[315532800,315532800]}),await t.writeFilePromise(n.path,e,{mode:n.mode}),await t.utimesPromise(n.path,315532800,315532800)}break;case"patch":await v(t,n.path,async()=>{await F(n,{baseFs:t,dryRun:r})});break;case"mode change":{const e=(await t.statPromise(n.path)).mode;if(k(n.newMode)!==k(e))continue;await v(t,n.path,async()=>{await t.chmodPromise(n.path,n.newMode)})}break;default:a.assertNever(n)}}function k(e){return(64&e)>0}function N(e){return e.replace(/\s+$/,"")}async function F({hunks:e,path:t},{baseFs:r,dryRun:A=!1}){const n=await r.statSync(t).mode,o=(await r.readFileSync(t,"utf8")).split(/\n/),i=[];let s=0,c=0;for(const t of e){const r=Math.max(c,t.header.patched.start+s),A=Math.max(0,r-c),n=Math.max(0,o.length-r-t.header.original.length),a=Math.max(A,n);let g=0,l=0,u=null;for(;g<=a;){if(g<=A&&(l=r-g,u=K(t,o,l),null!==u)){g=-g;break}if(g<=n&&(l=r+g,u=K(t,o,l),null!==u))break;g+=1}if(null===u)throw new I(e.indexOf(t),t);i.push(u),s+=g,c=l+t.header.original.length}if(A)return;let g=0;for(const e of i)for(const t of e)switch(t.type){case"splice":{const e=t.index+g;o.splice(e,t.numToDelete,...t.linesToInsert),g+=t.linesToInsert.length-t.numToDelete}break;case"pop":o.pop();break;case"push":o.push(t.line);break;default:a.assertNever(t)}await r.writeFilePromise(t,o.join("\n"),{mode:n})}function K(e,t,r){const A=[];for(const o of e.parts)switch(o.type){case m.Context:case m.Deletion:for(const e of o.lines){const A=t[r];if(null==A||(n=e,N(A)!==N(n)))return null;r+=1}o.type===m.Deletion&&(A.push({type:"splice",index:r-o.lines.length,numToDelete:o.lines.length,linesToInsert:[]}),o.noNewlineAtEndOfFile&&A.push({type:"push",line:""}));break;case m.Insertion:A.push({type:"splice",index:r,numToDelete:0,linesToInsert:o.lines}),o.noNewlineAtEndOfFile&&A.push({type:"pop"});break;default:a.assertNever(o.type)}var n;return A}const M=/^builtin<([^>]+)>$/;function R(e,t){const{source:r,selector:A,params:n}=s.parseRange(e);if(null===r)throw new Error("Patch locators must explicitly define their source");const o=A?A.split(/&/).map(e=>g.cS.toPortablePath(e)):[],i=n&&"string"==typeof n.locator?s.parseLocator(n.locator):null,a=n&&"string"==typeof n.version?n.version:null;return{parentLocator:i,sourceItem:t(r),patchPaths:o,sourceVersion:a}}function x(e){const{sourceItem:t,...r}=R(e.range,s.parseDescriptor);return{...r,sourceDescriptor:t}}function L(e){const{sourceItem:t,...r}=R(e.reference,s.parseLocator);return{...r,sourceLocator:t}}function P({parentLocator:e,sourceItem:t,patchPaths:r,sourceVersion:A,patchHash:n},o){const i=null!==e?{locator:s.stringifyLocator(e)}:{},a=void 0!==A?{version:A}:{},c=void 0!==n?{hash:n}:{};return s.makeRange({protocol:"patch:",source:o(t),selector:r.join("&"),params:{...a,...c,...i}})}function O(e,{parentLocator:t,sourceDescriptor:r,patchPaths:A}){return s.makeLocator(e,P({parentLocator:t,sourceItem:r,patchPaths:A},s.stringifyDescriptor))}function U(e,{parentLocator:t,sourcePackage:r,patchPaths:A,patchHash:n}){return s.makeLocator(e,P({parentLocator:t,sourceItem:r,sourceVersion:r.version,patchPaths:A,patchHash:n},s.stringifyLocator))}function T({onAbsolute:e,onRelative:t,onBuiltin:r},A){const n=A.match(M);return null!==n?r(n[1]):g.y1.isAbsolute(A)?e(A):t(A)}function j(e){return T({onAbsolute:()=>!1,onRelative:()=>!0,onBuiltin:()=>!1},e)}async function Y(e,t,r){const A=null!==e?await r.fetcher.fetch(e,r):null,n=A&&A.localPath?{packageFs:new u.M(g.LZ.root),prefixPath:g.y1.relative(g.LZ.root,A.localPath)}:A;A&&A!==n&&A.releaseFs&&A.releaseFs();return(await a.releaseAfterUseAsync(async()=>await Promise.all(t.map(async e=>T({onAbsolute:async()=>await c.xfs.readFilePromise(e,"utf8"),onRelative:async()=>{if(null===A)throw new Error("Assertion failed: The parent locator should have been fetched");return await A.packageFs.readFilePromise(e,"utf8")},onBuiltin:async e=>await r.project.configuration.firstHook(e=>e.getBuiltinPatch,r.project,e)},e))))).map(e=>"string"==typeof e?e.replace(/\r\n?/g,"\n"):e)}async function G(e,{cache:t,project:r}){const A=r.storedChecksums,n=new p.$,o=r.configuration.makeFetcher(),i=await o.fetch(e,{cache:t,project:r,fetcher:o,checksums:A,report:n}),a=await c.xfs.mktempPromise();return await c.xfs.copyPromise(a,i.prefixPath,{baseFs:i.packageFs}),await c.xfs.writeJsonPromise(g.y1.join(a,".yarn-patch.json"),{locator:s.stringifyLocator(e)}),c.xfs.detachTemp(a),a}async function H(e,t){const r=g.cS.fromPortablePath(e).replace(/\\/g,"/"),A=g.cS.fromPortablePath(t).replace(/\\/g,"/"),{stdout:n}=await d.execvp("git",["diff","--src-prefix=a/","--dst-prefix=b/","--ignore-cr-at-eol","--full-index","--no-index",r,A],{cwd:g.cS.toPortablePath(process.cwd())}),o=r.startsWith("/")?e=>e.slice(1):e=>e;return n.replace(new RegExp(`(a|b)(${a.escapeRegExp(`/${o(r)}/`)})`,"g"),"$1/").replace(new RegExp("(a|b)"+a.escapeRegExp(`/${o(A)}/`),"g"),"$1/").replace(new RegExp(a.escapeRegExp(r+"/"),"g"),"").replace(new RegExp(a.escapeRegExp(A+"/"),"g"),"")}var J=r(71643);function q(e,{configuration:t,report:r}){for(const A of e.parts)for(const e of A.lines)switch(A.type){case m.Context:r.reportInfo(null," "+J.pretty(t,e,"grey"));break;case m.Deletion:r.reportError(i.b.FROZEN_LOCKFILE_EXCEPTION,"- "+J.pretty(t,e,J.Type.REMOVED));break;case m.Insertion:r.reportError(i.b.FROZEN_LOCKFILE_EXCEPTION,"+ "+J.pretty(t,e,J.Type.ADDED));break;default:a.assertNever(A.type)}}var z=r(20624);var W=r(36370),V=r(25413),X=r(85824),_=r(28148),Z=r(40822);class $ extends V.BaseCommand{async execute(){const e=await n.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await X.I.find(e,this.context.cwd),A=await _.C.find(e);if(!r)throw new V.WorkspaceRequiredError(t.cwd,this.context.cwd);await t.restoreInstallState();const o=g.y1.resolve(this.context.cwd,g.cS.toPortablePath(this.patchFolder)),i=g.y1.join(o,".yarn-patch.json");if(!c.xfs.existsSync(i))throw new Z.UsageError("The argument folder didn't get created by 'yarn patch'");const a=await c.xfs.readJsonPromise(i),l=s.parseLocator(a.locator,!0);if(!t.storedPackages.has(l.locatorHash))throw new Z.UsageError("No package found in the project for the given locator");const u=await G(l,{cache:A,project:t});this.context.stdout.write(await H(u,o))}}$.usage=Z.Command.Usage({description:"\n This will turn the folder passed in parameter into a patchfile suitable for consumption with the `patch:` protocol.\n\n Only folders generated through `yarn patch` are accepted as valid input for `yarn patch-commit`.\n "}),(0,W.gn)([Z.Command.String()],$.prototype,"patchFolder",void 0),(0,W.gn)([Z.Command.Path("patch-commit")],$.prototype,"execute",null);var ee=r(15815);class te extends V.BaseCommand{async execute(){const e=await n.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await X.I.find(e,this.context.cwd),A=await _.C.find(e);if(!r)throw new V.WorkspaceRequiredError(t.cwd,this.context.cwd);await t.restoreInstallState();let o=s.parseLocator(this.package);if("unknown"===o.reference){const r=a.mapAndFilter([...t.storedPackages.values()],e=>e.identHash!==o.identHash||s.isVirtualLocator(e)?a.mapAndFilter.skip:e);if(0===r.length)throw new Z.UsageError("No package found in the project for the given locator");if(r.length>1)throw new Z.UsageError("Multiple candidate packages found; explicitly choose one of them (use `yarn why ` to get more information as to who depends on them):\n"+r.map(t=>"\n- "+s.prettyLocator(e,t)).join(""));o=r[0]}if(!t.storedPackages.has(o.locatorHash))throw new Z.UsageError("No package found in the project for the given locator");await ee.Pk.start({configuration:e,stdout:this.context.stdout},async r=>{const n=await G(o,{cache:A,project:t});r.reportInfo(i.b.UNNAMED,`Package ${s.prettyLocator(e,o)} got extracted with success!`),r.reportInfo(i.b.UNNAMED,"You can now edit the following folder: "+J.pretty(e,g.cS.fromPortablePath(n),"magenta")),r.reportInfo(i.b.UNNAMED,`Once you are done run ${J.pretty(e,"yarn patch-commit "+g.cS.fromPortablePath(n),"cyan")} and Yarn will store a patchfile based on your changes.`)})}}te.usage=Z.Command.Usage({description:'\n This command will cause a package to be extracted in a temporary directory (under a folder named "patch-workdir"). This folder will be editable at will; running `yarn patch` inside it will then cause Yarn to generate a patchfile and register it into your top-level manifest (cf the `patch:` protocol).\n '}),(0,W.gn)([Z.Command.String()],te.prototype,"package",void 0),(0,W.gn)([Z.Command.Path("patch")],te.prototype,"execute",null);const re={configuration:{enableInlineHunks:{description:"If true, the installs will print unmatched patch hunks",type:n.a2.BOOLEAN,default:!1}},commands:[$,te],fetchers:[class{supports(e,t){return!!e.reference.startsWith("patch:")}getLocalPath(e,t){return null}async fetch(e,t){const r=t.checksums.get(e.locatorHash)||null,[A,n,o]=await t.cache.fetchPackageFromCache(e,r,{onHit:()=>t.report.reportCacheHit(e),onMiss:()=>t.report.reportCacheMiss(e,s.prettyLocator(t.project.configuration,e)+" can't be found in the cache and will be fetched from the disk"),loader:()=>this.patchPackage(e,t),skipIntegrityCheck:t.skipIntegrityCheck});return{packageFs:A,releaseFs:n,prefixPath:s.getIdentVendorPath(e),localPath:this.getLocalPath(e,t),checksum:o}}async patchPackage(e,t){const{parentLocator:r,sourceLocator:A,sourceVersion:n,patchPaths:p}=L(e),d=await Y(r,p,t),C=await c.xfs.mktempPromise(),f=g.y1.join(C,"patched.zip"),E=await t.fetcher.fetch(A,t),B=s.getIdentVendorPath(e),y=await(0,h.getLibzipPromise)(),m=new l.d(f,{libzip:y,create:!0,level:t.project.configuration.get("compressionLevel")});await m.mkdirpPromise(B),await a.releaseAfterUseAsync(async()=>{await m.copyPromise(B,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs);const w=new u.M(g.y1.resolve(g.LZ.root,B),{baseFs:m});for(const e of d)if(null!==e)try{await S(D(e),{baseFs:w,version:n})}catch(e){if(!(e instanceof I))throw e;const r=t.project.configuration.get("enableInlineHunks"),A=r?"":" (set enableInlineHunks for details)";throw new o.lk(i.b.PATCH_HUNK_FAILED,e.message+A,A=>{r&&q(e.hunk,{configuration:t.project.configuration,report:A})})}return m}}],resolvers:[class{supportsDescriptor(e,t){return!!e.range.startsWith("patch:")}supportsLocator(e,t){return!!e.reference.startsWith("patch:")}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){const{patchPaths:A}=x(e);return A.every(e=>!j(e))?e:s.bindDescriptor(e,{locator:s.stringifyLocator(t)})}getResolutionDependencies(e,t){const{sourceDescriptor:r}=x(e);return[r]}async getCandidates(e,t,r){if(!r.fetchOptions)throw new Error("Assertion failed: This resolver cannot be used unless a fetcher is configured");const{parentLocator:A,sourceDescriptor:n,patchPaths:o}=x(e),i=await Y(A,o,r.fetchOptions),s=t.get(n.descriptorHash);if(void 0===s)throw new Error("Assertion failed: The dependency should have been resolved");return[U(e,{parentLocator:A,sourcePackage:s,patchPaths:o,patchHash:z.makeHash("2",...i).slice(0,6)})]}async getSatisfying(e,t,r){return null}async resolve(e,t){const{sourceLocator:r}=L(e);return{...await t.resolver.resolve(r,t),...e}}}]}},83228:(e,t,r)=>{"use strict";r.r(t),r.d(t,{PnpInstaller:()=>k,PnpLinker:()=>S,default:()=>Y,getPnpPath:()=>T,jsInstallUtils:()=>A,pnpUtils:()=>n,quotePathIfNeeded:()=>j});var A={};r.r(A),r.d(A,{checkAndReportManifestCompatibility:()=>y,extractBuildScripts:()=>m,getExtractHint:()=>Q,hasBindingGyp:()=>D});var n={};r.r(n),r.d(n,{getUnpluggedPath:()=>b});var o=r(39922),i=r(43896),s=r(46009),a=r(53887),c=r.n(a),g=r(54143),l=r(71643),u=r(73632),h=r(32485),p=r(92659),d=r(46611),C=r(17674),f=r(75448),I=r(34432),E=r(40822),B=r(92409);function y(e,t,r,{configuration:A,report:n}){return d.G.isManifestFieldCompatible(t.manifest.os,process.platform)?!!d.G.isManifestFieldCompatible(t.manifest.cpu,process.arch)||(null==n||n.reportWarningOnce(p.b.INCOMPATIBLE_CPU,`${g.prettyLocator(A,e)} The CPU architecture ${process.arch} is incompatible with this module, ${r} skipped.`),!1):(null==n||n.reportWarningOnce(p.b.INCOMPATIBLE_OS,`${g.prettyLocator(A,e)} The platform ${process.platform} is incompatible with this module, ${r} skipped.`),!1)}function m(e,t,r,{configuration:A,report:n}){const o=[];for(const e of["preinstall","install","postinstall"])t.manifest.scripts.has(e)&&o.push([B.k.SCRIPT,e]);if(!t.manifest.scripts.has("install")&&t.misc.hasBindingGyp&&o.push([B.k.SHELLCODE,"node-gyp rebuild"]),0===o.length)return[];if(!A.get("enableScripts")&&!r.built)return null==n||n.reportWarningOnce(p.b.DISABLED_BUILD_SCRIPTS,g.prettyLocator(A,e)+" lists build scripts, but all build scripts have been disabled."),[];if(e.linkType!==h.Un.HARD)return null==n||n.reportWarningOnce(p.b.SOFT_LINK_BUILD,g.prettyLocator(A,e)+" lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored."),[];if(r&&!1===r.built)return null==n||n.reportInfoOnce(p.b.BUILD_DISABLED,g.prettyLocator(A,e)+" lists build scripts, but its build has been explicitly disabled through configuration."),[];return y(e,t,"build",{configuration:A,report:n})?o:[]}const w=new Set([".exe",".h",".hh",".hpp",".c",".cc",".cpp",".java",".jar",".node"]);function Q(e){return e.packageFs.getExtractHint({relevantExtensions:w})}function D(e){const t=s.y1.join(e.prefixPath,"binding.gyp");return e.packageFs.existsSync(t)}function b(e,{configuration:t}){return s.y1.resolve(t.get("pnpUnpluggedFolder"),g.slugifyLocator(e))}const v=new Set([g.makeIdent(null,"nan").identHash,g.makeIdent(null,"node-gyp").identHash,g.makeIdent(null,"node-pre-gyp").identHash,g.makeIdent(null,"node-addon-api").identHash,g.makeIdent(null,"fsevents").identHash]);class S{constructor(){this.mode="strict"}supportsPackage(e,t){return"pnp"===t.project.configuration.get("nodeLinker")&&t.project.configuration.get("pnpMode")===this.mode}async findPackageLocation(e,t){const r=T(t.project).main;if(!i.xfs.existsSync(r))throw new E.UsageError(`The project in ${l.pretty(t.project.configuration,t.project.cwd+"/package.json",l.Type.PATH)} doesn't seem to have been installed - running an install there might help`);const A=u.dynamicRequireNoCache(r),n={name:g.requirableIdent(e),reference:e.reference},o=A.getPackageInformation(n);if(!o)throw new E.UsageError(`Couldn't find ${g.prettyLocator(t.project.configuration,e)} in the currently installed PnP map - running an install might help`);return s.cS.toPortablePath(o.packageLocation)}async findPackageLocator(e,t){const A=T(t.project).main;if(!i.xfs.existsSync(A))return null;const n=s.cS.fromPortablePath(A),o=u.dynamicRequire(n);delete r.c[n];const a=o.findPackageLocator(s.cS.fromPortablePath(e));return a?g.makeLocator(g.parseIdent(a.name),a.reference):null}makeInstaller(e){return new k(e)}}class k{constructor(e){this.opts=e,this.mode="strict",this.packageRegistry=new Map,this.virtualTemplates=new Map,this.customData={store:new Map},this.unpluggedPaths=new Set,this.opts=e}getCustomDataKey(){return JSON.stringify({name:"PnpInstaller",version:1})}attachCustomData(e){this.customData=e}async installPackage(e,t){const r=g.requirableIdent(e),A=e.reference,n=!!this.opts.project.tryWorkspaceByLocator(e),o=e.peerDependencies.size>0&&!g.isVirtualLocator(e),i=!o&&!n,a=!o&&e.linkType!==h.Un.SOFT;let c=this.customData.store.get(e.locatorHash);void 0===c&&(c=await async function(e,t){var r;const A=null!==(r=await d.G.tryFind(t.prefixPath,{baseFs:t.packageFs}))&&void 0!==r?r:new d.G,n=new Set(["preinstall","install","postinstall"]);for(const e of A.scripts.keys())n.has(e)||A.scripts.delete(e);return{manifest:{os:A.os,cpu:A.cpu,scripts:A.scripts,preferUnplugged:A.preferUnplugged},misc:{extractHint:Q(t),hasBindingGyp:D(t)}}}(0,t),e.linkType===h.Un.HARD&&this.customData.store.set(e.locatorHash,c));const l=this.opts.project.getDependencyMeta(e,e.version),p=i?m(e,c,l,{configuration:this.opts.project.configuration,report:this.opts.report}):[],f=a?await this.unplugPackageIfNeeded(e,c,t,l):t.packageFs;if(s.y1.isAbsolute(t.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${t.prefixPath}) to be relative to the parent`);const I=s.y1.resolve(f.getRealPath(),t.prefixPath),E=N(this.opts.project.cwd,I),B=new Map,y=new Set;if(g.isVirtualLocator(e)){for(const t of e.peerDependencies.values())B.set(g.requirableIdent(t),null),y.add(g.stringifyIdent(t));if(!this.opts.project.tryWorkspaceByLocator(e)){const t=g.devirtualizeLocator(e);this.virtualTemplates.set(t.locatorHash,{location:N(this.opts.project.cwd,C.p.resolveVirtual(I)),locator:t})}}return u.getMapWithDefault(this.packageRegistry,r).set(A,{packageLocation:E,packageDependencies:B,packagePeers:y,linkType:e.linkType,discardFromLookup:t.discardFromLookup||!1}),{packageLocation:I,buildDirective:p.length>0?p:null}}async attachInternalDependencies(e,t){const r=this.getPackageInformation(e);for(const[e,A]of t){const t=g.areIdentsEqual(e,A)?A.reference:[g.requirableIdent(A),A.reference];r.packageDependencies.set(g.requirableIdent(e),t)}}async attachExternalDependents(e,t){for(const r of t){this.getDiskInformation(r).packageDependencies.set(g.requirableIdent(e),e.reference)}}async finalizeInstall(){const e=new Set;for(const{locator:e,location:t}of this.virtualTemplates.values())u.getMapWithDefault(this.packageRegistry,g.stringifyIdent(e)).set(e.reference,{packageLocation:t,packageDependencies:new Map,packagePeers:new Set,linkType:h.Un.SOFT,discardFromLookup:!1});this.packageRegistry.set(null,new Map([[null,this.getPackageInformation(this.opts.project.topLevelWorkspace.anchoredLocator)]]));const t=this.opts.project.configuration.get("pnpFallbackMode"),r=e,A=this.opts.project.workspaces.map(({anchoredLocator:e})=>({name:g.requirableIdent(e),reference:e.reference})),n="none"!==t,o=[],i=new Map,s=u.buildIgnorePattern([".yarn/sdks/**",...this.opts.project.configuration.get("pnpIgnorePatterns")]),a=this.packageRegistry,c=this.opts.project.configuration.get("pnpShebang");if("dependencies-only"===t)for(const e of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(e)&&o.push({name:g.requirableIdent(e),reference:e.reference});return await this.finalizeInstallWithPnp({blacklistedLocations:r,dependencyTreeRoots:A,enableTopLevelFallback:n,fallbackExclusionList:o,fallbackPool:i,ignorePattern:s,packageRegistry:a,shebang:c}),{customData:this.customData}}async finalizeInstallWithPnp(e){if(this.opts.project.configuration.get("pnpMode")!==this.mode)return;const t=T(this.opts.project),r=this.opts.project.configuration.get("pnpDataPath");if(await i.xfs.removePromise(t.other),"pnp"!==this.opts.project.configuration.get("nodeLinker"))return await i.xfs.removePromise(t.main),void await i.xfs.removePromise(r);const A=await this.locateNodeModules(e.ignorePattern);if(A.length>0){this.opts.report.reportWarning(p.b.DANGEROUS_NODE_MODULES,"One or more node_modules have been detected and will be removed. This operation may take some time.");for(const e of A)await i.xfs.removePromise(e)}if(this.opts.project.configuration.get("pnpEnableInlining")){const A=(0,I.gY)(e);await i.xfs.changeFilePromise(t.main,A,{automaticNewlines:!0}),await i.xfs.chmodPromise(t.main,493),await i.xfs.removePromise(r)}else{const A=s.y1.relative(s.y1.dirname(t.main),r),{dataFile:n,loaderFile:o}=(0,I.Q$)({...e,dataLocation:A});await i.xfs.changeFilePromise(t.main,o,{automaticNewlines:!0}),await i.xfs.chmodPromise(t.main,493),await i.xfs.changeFilePromise(r,n,{automaticNewlines:!0}),await i.xfs.chmodPromise(r,420)}const n=this.opts.project.configuration.get("pnpUnpluggedFolder");if(0===this.unpluggedPaths.size)await i.xfs.removePromise(n);else for(const e of await i.xfs.readdirPromise(n)){const t=s.y1.resolve(n,e);this.unpluggedPaths.has(t)||await i.xfs.removePromise(t)}}async locateNodeModules(e){const t=[],r=e?new RegExp(e):null;for(const e of this.opts.project.workspaces){const A=s.y1.join(e.cwd,"node_modules");if(r&&r.test(s.y1.relative(this.opts.project.cwd,e.cwd))||!i.xfs.existsSync(A))continue;const n=await i.xfs.readdirPromise(A,{withFileTypes:!0}),o=n.filter(e=>!e.isDirectory()||".bin"===e.name||!e.name.startsWith("."));if(o.length===n.length)t.push(A);else for(const e of o)t.push(s.y1.join(A,e.name))}return t}async unplugPackageIfNeeded(e,t,r,A){return this.shouldBeUnplugged(e,t,A)?this.unplugPackage(e,r):r.packageFs}shouldBeUnplugged(e,t,r){return void 0!==r.unplugged?r.unplugged:!!v.has(e.identHash)||(null!==t.manifest.preferUnplugged?t.manifest.preferUnplugged:!!(m(e,t,r,{configuration:this.opts.project.configuration}).length>0||t.misc.extractHint))}async unplugPackage(e,t){const r=b(e,{configuration:this.opts.project.configuration});this.unpluggedPaths.add(r);const A=s.y1.join(r,t.prefixPath,".ready");return await i.xfs.existsPromise(A)||(await i.xfs.mkdirPromise(r,{recursive:!0}),await i.xfs.copyPromise(r,s.LZ.dot,{baseFs:t.packageFs,overwrite:!1}),await i.xfs.writeFilePromise(A,"")),new f.M(r)}getPackageInformation(e){const t=g.requirableIdent(e),r=e.reference,A=this.packageRegistry.get(t);if(!A)throw new Error(`Assertion failed: The package information store should have been available (for ${g.prettyIdent(this.opts.project.configuration,e)})`);const n=A.get(r);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${g.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){const t=u.getMapWithDefault(this.packageRegistry,"@@disk"),r=N(this.opts.project.cwd,e);return u.getFactoryWithDefault(t,r,()=>({packageLocation:r,packageDependencies:new Map,packagePeers:new Set,linkType:h.Un.SOFT,discardFromLookup:!1}))}}function N(e,t){let r=s.y1.relative(e,t);return r.match(/^\.{0,2}\//)||(r="./"+r),r.replace(/\/?$/,"/")}var F=r(36370),K=r(25413),M=r(85824),R=r(28148),x=r(15815),L=r(36545),P=r(2401),O=r.n(P);class U extends K.BaseCommand{constructor(){super(...arguments),this.patterns=[],this.all=!1,this.recursive=!1,this.json=!1}async execute(){const e=await o.VK.find(this.context.cwd,this.context.plugins),{project:t,workspace:r}=await M.I.find(e,this.context.cwd),A=await R.C.find(e);if(!r)throw new K.WorkspaceRequiredError(t.cwd,this.context.cwd);if("pnp"!==e.get("nodeLinker"))throw new E.UsageError("This command can only be used if the `nodeLinker` option is set to `pnp`");await t.restoreInstallState();const n=new Set(this.patterns),i=this.patterns.map(t=>{const r=g.parseDescriptor(t),A="unknown"!==r.range?r:g.makeDescriptor(r,"*");if(!c().validRange(A.range))throw new E.UsageError(`The range of the descriptor patterns must be a valid semver range (${g.prettyDescriptor(e,A)})`);return e=>{const r=g.stringifyIdent(e);return!!O().isMatch(r,g.stringifyIdent(A))&&(!(e.version&&!L.satisfiesWithPrereleases(e.version,A.range))&&(n.delete(t),!0))}}),s=e=>{const r=new Set,A=[],n=(e,o)=>{if(!r.has(e.locatorHash)&&(r.add(e.locatorHash),!t.tryWorkspaceByLocator(e)&&i.some(t=>t(e))&&A.push(e),!(o>0)||this.recursive))for(const r of e.dependencies.values()){const e=t.storedResolutions.get(r.descriptorHash);if(!e)throw new Error("Assertion failed: The resolution should have been registered");const A=t.storedPackages.get(e);if(!A)throw new Error("Assertion failed: The package should have been registered");n(A,o+1)}};for(const r of e){const e=t.storedPackages.get(r.anchoredLocator.locatorHash);if(!e)throw new Error("Assertion failed: The package should have been registered");n(e,0)}return A};let a,h;if(this.all&&this.recursive?(a=(()=>{const e=[];for(const r of t.storedPackages.values())t.tryWorkspaceByLocator(r)||g.isVirtualLocator(r)||!i.some(e=>e(r))||e.push(r);return e})(),h="the project"):this.all?(a=s(t.workspaces),h="any workspace"):(a=s([r]),h="this workspace"),n.size>1)throw new E.UsageError(`Patterns ${l.prettyList(e,n,l.Type.CODE)} don't match any packages referenced by ${h}`);if(n.size>0)throw new E.UsageError(`Pattern ${l.prettyList(e,n,l.Type.CODE)} doesn't match any packages referenced by ${h}`);a=u.sortMap(a,e=>g.stringifyLocator(e));return(await x.Pk.start({configuration:e,stdout:this.context.stdout,json:this.json},async r=>{var n;for(const A of a){const o=null!==(n=A.version)&&void 0!==n?n:"unknown";t.topLevelWorkspace.manifest.ensureDependencyMeta(g.makeDescriptor(A,o)).unplugged=!0,r.reportInfo(p.b.UNNAMED,`Will unpack ${g.prettyLocator(e,A)} to ${l.pretty(e,b(A,{configuration:e}),l.Type.PATH)}`),r.reportJson({locator:g.stringifyLocator(A),version:o})}await t.topLevelWorkspace.persistManifest(),r.reportSeparator(),await t.install({cache:A,report:r})})).exitCode()}}U.usage=E.Command.Usage({description:"force the unpacking of a list of packages",details:"\n This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\n\n A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\n\n Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\n\n By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\n\n This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\n ",examples:[["Unplug the lodash dependency from the active workspace","yarn unplug lodash"],["Unplug all instances of lodash referenced by any workspace","yarn unplug lodash -A"],["Unplug all instances of lodash referenced by the active workspace and its dependencies","yarn unplug lodash -R"],["Unplug all instances of lodash, anywhere","yarn unplug lodash -AR"],["Unplug one specific version of lodash","yarn unplug lodash@1.2.3"],["Unplug all packages with the `@babel` scope","yarn unplug '@babel/*'"],["Unplug all packages (only for testing, not recommended)","yarn unplug -R '*'"]]}),(0,F.gn)([E.Command.Rest()],U.prototype,"patterns",void 0),(0,F.gn)([E.Command.Boolean("-A,--all",{description:"Unplug direct dependencies from the entire project"})],U.prototype,"all",void 0),(0,F.gn)([E.Command.Boolean("-R,--recursive",{description:"Unplug both direct and transitive dependencies"})],U.prototype,"recursive",void 0),(0,F.gn)([E.Command.Boolean("--json",{description:"Format the output as an NDJSON stream"})],U.prototype,"json",void 0),(0,F.gn)([E.Command.Path("unplug")],U.prototype,"execute",null);const T=e=>{let t,r;return"module"===e.topLevelWorkspace.manifest.type?(t=".pnp.cjs",r=".pnp.js"):(t=".pnp.js",r=".pnp.cjs"),{main:s.y1.join(e.cwd,t),other:s.y1.join(e.cwd,r)}},j=e=>/\s/.test(e)?JSON.stringify(e):e;const Y={hooks:{populateYarnPaths:async function(e,t){t(T(e).main),t(T(e).other),t(e.configuration.get("pnpDataPath")),t(e.configuration.get("pnpUnpluggedFolder"))},setupScriptEnvironment:async function(e,t,r){const A=T(e).main,n="--require "+j(s.cS.fromPortablePath(A));if(A.includes(" ")&&c().lt(process.versions.node,"12.0.0"))throw new Error(`Expected the build location to not include spaces when using Node < 12.0.0 (${process.versions.node})`);if(i.xfs.existsSync(A)){let e=t.NODE_OPTIONS||"";const r=/\s*--require\s+\S*\.pnp\.c?js\s*/g;e=e.replace(r," ").trim(),e=e?`${n} ${e}`:n,t.NODE_OPTIONS=e}}},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: "pnp", "node-modules"',type:o.a2.STRING,default:"pnp"},pnpMode:{description:"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.",type:o.a2.STRING,default:"strict"},pnpShebang:{description:"String to prepend to the generated PnP script",type:o.a2.STRING,default:"#!/usr/bin/env node"},pnpIgnorePatterns:{description:"Array of glob patterns; files matching them will use the classic resolution",type:o.a2.STRING,default:[],isArray:!0},pnpEnableInlining:{description:"If true, the PnP data will be inlined along with the generated loader",type:o.a2.BOOLEAN,default:!0},pnpFallbackMode:{description:"If true, the generated PnP loader will follow the top-level fallback rule",type:o.a2.STRING,default:"dependencies-only"},pnpUnpluggedFolder:{description:"Folder where the unplugged packages must be stored",type:o.a2.ABSOLUTE_PATH,default:"./.yarn/unplugged"},pnpDataPath:{description:"Path of the file where the PnP data (used by the loader) must be written",type:o.a2.ABSOLUTE_PATH,default:"./.pnp.data.json"}},linkers:[S],commands:[U]}},43418:(e,t,r)=>{"use strict";r.r(t);var A=r(50683),n=r.n(A);Object.fromEntries||(Object.fromEntries=n());var o=r(59355),i=r(10419),s=r(45330);(0,i.D)({binaryVersion:o.o||"",pluginConfiguration:(0,s.e)()})},25413:(e,t,r)=>{"use strict";r.r(t),r.d(t,{BaseCommand:()=>A.F,WorkspaceRequiredError:()=>s,getDynamicLibs:()=>c,getPluginConfiguration:()=>g.e,main:()=>h.D,openWorkspace:()=>u,pluginCommands:()=>p.f});var A=r(56087),n=r(46611),o=r(46009),i=r(40822);class s extends i.UsageError{constructor(e,t){super(`This command can only be run from within a workspace of your project (${o.y1.relative(e,t)} isn't a workspace of ${o.y1.join(e,n.G.fileName)}).`)}}const a=["@yarnpkg/cli","@yarnpkg/core","@yarnpkg/fslib","@yarnpkg/libzip","@yarnpkg/parsers","@yarnpkg/shell","clipanion","semver","yup"],c=()=>new Map(a.map(e=>[e,r(98497)(e)]));var g=r(45330),l=r(85824);async function u(e,t){const{project:r,workspace:A}=await l.I.find(e,t);if(!A)throw new s(r.cwd,t);return A}var h=r(10419),p=r(15683)},10419:(e,t,r)=>{"use strict";r.d(t,{D:()=>f});var A=r(36545),n=r(39922),o=r(81832),i=r(43896),s=r(46009),a=r(63129),c=r(5864),g=r(40822),l=r(35747),u=r(15683),h=r(36370),p=r(71643),d=r(56087);class C extends d.F{async execute(){const e=await n.VK.find(this.context.cwd,this.context.plugins);this.context.stdout.write((e=>`\n${p.pretty(e,"Welcome on Yarn 2!","bold")} 🎉 Thanks for helping us shape our vision of how projects\nshould be managed going forward.\n\nBeing still in RC, Yarn 2 isn't completely stable yet. Some features might be\nmissing, and some behaviors may have received major overhaul. In case of doubt,\nuse the following URLs to get some insight:\n\n - The changelog:\n ${p.pretty(e,"https://github.com/yarnpkg/berry/tree/CHANGELOG.md","cyan")}\n\n - Our issue tracker:\n ${p.pretty(e,"https://github.com/yarnpkg/berry","cyan")}\n\n - Our Discord server:\n ${p.pretty(e,"https://discord.gg/yarnpkg","cyan")}\n\nWe're hoping you will enjoy the experience. For now, a good start is to run\nthe two following commands:\n\n ${p.pretty(e,"find . -name node_modules -prune -exec rm -r {} \\;","magenta")}\n ${p.pretty(e,"yarn install","magenta")}\n\nOne last trick! If you need at some point to upgrade Yarn to a nightly build,\nthe following command will install the CLI straight from master:\n\n ${p.pretty(e,"yarn set version from sources","magenta")}\n\nSee you later 👋\n`)(e).trim()+"\n")}}async function f({binaryVersion:e,pluginConfiguration:t}){async function r(){const h=new g.Cli({binaryLabel:"Yarn Package Manager",binaryName:"yarn",binaryVersion:e});h.register(C);try{await async function h(p){var d,C,f,I,E;const B=process.versions.node,y=">=10.17 <14 || >14.1";if("1"!==process.env.YARN_IGNORE_NODE&&!A.satisfiesWithPrereleases(B,y))throw new g.UsageError(`This tool requires a Node version compatible with ${y} (got ${B}). Upgrade Node, or set \`YARN_IGNORE_NODE=1\` in your environment.`);const m=await n.VK.find(s.cS.toPortablePath(process.cwd()),t,{usePath:!0,strict:!1}),w=m.get("yarnPath"),Q=m.get("ignorePath"),D=m.get("ignoreCwd");if(!Q&&!D&&w===s.cS.toPortablePath(s.cS.resolve(process.argv[1])))return process.env.YARN_IGNORE_PATH="1",process.env.YARN_IGNORE_CWD="1",void await h(p);if(null===w||Q){Q&&delete process.env.YARN_IGNORE_PATH;m.get("enableTelemetry")&&!c.isCI&&process.stdout.isTTY&&(n.VK.telemetry=new o.E(m,"puba9cdc10ec5790a2cf4969dd413a47270")),null===(d=n.VK.telemetry)||void 0===d||d.reportVersion(e);for(const[e,t]of m.plugins.entries()){u.f.has(null!==(f=null===(C=e.match(/^@yarnpkg\/plugin-(.*)$/))||void 0===C?void 0:C[1])&&void 0!==f?f:"")&&(null===(I=n.VK.telemetry)||void 0===I||I.reportPluginName(e));for(const e of t.commands||[])p.register(e)}const A=p.process(process.argv.slice(2));A.help||null===(E=n.VK.telemetry)||void 0===E||E.reportCommandName(A.path.join(" "));const i=A.cwd;if(void 0!==i&&!D){const e=(0,l.realpathSync)(process.cwd()),t=(0,l.realpathSync)(i);if(e!==t)return process.chdir(i),void await r()}await p.runExit(A,{cwd:s.cS.toPortablePath(process.cwd()),plugins:t,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr})}else if(i.xfs.existsSync(w))try{!function(e){const t=s.cS.fromPortablePath(e);process.on("SIGINT",()=>{}),t?(0,a.execFileSync)(process.execPath,[t,...process.argv.slice(2)],{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}}):(0,a.execFileSync)(t,process.argv.slice(2),{stdio:"inherit",env:{...process.env,YARN_IGNORE_PATH:"1",YARN_IGNORE_CWD:"1"}})}(w)}catch(e){process.exitCode=e.code||1}else process.stdout.write(p.error(new Error(`The "yarn-path" option has been set (in ${m.sources.get("yarnPath")}), but the specified location doesn't exist (${w}).`))),process.exitCode=1}(h)}catch(e){process.stdout.write(h.error(e)),process.exitCode=1}}return r().catch(e=>{process.stdout.write(e.stack||e.message),process.exitCode=1}).finally(()=>i.xfs.rmtempPromise())}(0,h.gn)([g.Command.Path("--welcome")],C.prototype,"execute",null)},15683:(e,t,r)=>{"use strict";r.d(t,{f:()=>A});const A=new Map([["constraints",[["constraints","query"],["constraints","source"],["constraints"]]],["exec",[]],["interactive-tools",[["search"],["upgrade-interactive"]]],["stage",[["stage"]]],["typescript",[]],["version",[["version","apply"],["version","check"],["version"]]],["workspace-tools",[["workspaces","focus"],["workspaces","foreach"]]]])},56087:(e,t,r)=>{"use strict";r.d(t,{F:()=>o});var A=r(36370),n=r(40822);class o extends n.Command{}(0,A.gn)([n.Command.String("--cwd",{hidden:!0})],o.prototype,"cwd",void 0)},28148:(e,t,r)=>{"use strict";r.d(t,{C:()=>I});var A=r(78420),n=r(15037),o=r(90739),i=r(14626),s=r(46009),a=r(43896),c=r(65281),g=r(35747),l=r.n(g),u=r(92659),h=r(35691),p=r(20624),d=r(73632),C=r(54143);const f=7;class I{constructor(e,{configuration:t,immutable:r=t.get("enableImmutableCache"),check:A=!1}){this.markedFiles=new Set,this.mutexes=new Map,this.configuration=t,this.cwd=e,this.immutable=r,this.check=A;const n=t.get("cacheKeyOverride");if(null!==n)this.cacheKey=""+n;else{const e=t.get("compressionLevel"),r=e!==o.k?"c"+e:"";this.cacheKey=[f,r].join("")}}static async find(e,{immutable:t,check:r}={}){const A=new I(e.get("cacheFolder"),{configuration:e,immutable:t,check:r});return await A.setup(),A}get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null;const e=this.configuration.get("globalFolder")+"/cache";return e!==this.cwd?e:null}getVersionFilename(e){return`${C.slugifyLocator(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,t){const r=function(e){const t=e.indexOf("/");return-1!==t?e.slice(t+1):e}(t).slice(0,10);return`${C.slugifyLocator(e)}-${r}.zip`}getLocatorPath(e,t){if(null===this.mirrorCwd)return s.y1.resolve(this.cwd,this.getVersionFilename(e));if(null===t)return null;return E(t)!==this.cacheKey?null:s.y1.resolve(this.cwd,this.getChecksumFilename(e,t))}getLocatorMirrorPath(e){const t=this.mirrorCwd;return null!==t?s.y1.resolve(t,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get("enableGlobalCache")){await a.xfs.mkdirPromise(this.cwd,{recursive:!0});const e=s.y1.resolve(this.cwd,".gitignore");await a.xfs.changeFilePromise(e,"/.gitignore\n*.flock\n")}}async fetchPackageFromCache(e,t,{onHit:r,onMiss:g,loader:f,skipIntegrityCheck:I}){const B=this.getLocatorMirrorPath(e),y=new A.S,m=async(e,r=null)=>{const A=I&&t?t:`${this.cacheKey}/${await p.checksumFile(e)}`;if(null!==r){if(A!==(I&&t?t:`${this.cacheKey}/${await p.checksumFile(r)}`))throw new h.lk(u.b.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the local checksum - has the local cache been corrupted?")}if(null!==t&&A!==t){let e;switch(e=this.check?"throw":E(t)!==E(A)?"update":this.configuration.get("checksumBehavior"),e){case"ignore":return t;case"update":return A;default:case"throw":throw new h.lk(u.b.CACHE_CHECKSUM_MISMATCH,"The remote archive doesn't match the expected checksum")}}return A},w=async t=>{if(!f)throw new Error("Cache check required but no loader configured for "+C.prettyLocator(this.configuration,e));const r=await f(),A=r.getRealPath();return r.saveAndClose(),await a.xfs.chmodPromise(A,420),await m(t,A)},Q=async()=>{if(null===B||!await a.xfs.existsPromise(B)){const e=await f(),t=e.getRealPath();return e.saveAndClose(),t}const t=await a.xfs.mktempPromise(),r=s.y1.join(t,this.getVersionFilename(e));return await a.xfs.copyFilePromise(B,r,l().constants.COPYFILE_FICLONE),r},D=async()=>{if(!f)throw new Error("Cache entry required but missing for "+C.prettyLocator(this.configuration,e));if(this.immutable)throw new h.lk(u.b.IMMUTABLE_CACHE,"Cache entry required but missing for "+C.prettyLocator(this.configuration,e));const t=await Q();await a.xfs.chmodPromise(t,420);const r=await m(t),A=this.getLocatorPath(e,r);if(!A)throw new Error("Assertion failed: Expected the cache path to be available");return await this.writeFileWithLock(A,async()=>await this.writeFileWithLock(B,async()=>(await a.xfs.movePromise(t,A),null!==B&&await a.xfs.copyFilePromise(A,B,l().constants.COPYFILE_FICLONE),[A,r])))};for(let t;t=this.mutexes.get(e.locatorHash);)await t;const[b,v]=await(async()=>{const A=(async()=>{const A=this.getLocatorPath(e,t),n=null!==A&&await y.existsPromise(A),o=n?r:g;if(o&&o(),n){let e=null;const t=A;return e=this.check?await w(t):await m(t),[t,e]}return D()})();this.mutexes.set(e.locatorHash,A);try{return await A}finally{this.mutexes.delete(e.locatorHash)}})();this.markedFiles.add(b);let S=null;const k=await(0,c.getLibzipPromise)(),N=new n.v(()=>d.prettifySyncErrors(()=>S=new o.d(b,{baseFs:y,libzip:k,readOnly:!0}),t=>`Failed to open the cache entry for ${C.prettyLocator(this.configuration,e)}: ${t}`),s.y1);return[new i.K(b,{baseFs:N,pathUtils:s.y1}),()=>{null!==S&&S.discardAndClose()},v]}async writeFileWithLock(e,t){return null===e?await t():(await a.xfs.mkdirPromise(s.y1.dirname(e),{recursive:!0}),await a.xfs.lockPromise(e,async()=>await t()))}}function E(e){const t=e.indexOf("/");return-1!==t?e.slice(0,t):null}},39922:(e,t,r)=>{"use strict";r.d(t,{VK:()=>W,nh:()=>U,tr:()=>O,a5:()=>j,EW:()=>z,a2:()=>T});var A=r(43896),n=r(46009),o=r(90739),i=r(11640),s=r(54738),a=r.n(s),c=r(5864),g=r(40822),l=r(61578),u=r.n(l),h=r(53887),p=r.n(h),d=r(92413),C=r(92659),f=r(54143);const I={hooks:{reduceDependency:(e,t,r,A,{resolver:n,resolveOptions:o})=>{for(const{pattern:A,reference:i}of t.topLevelWorkspace.manifest.resolutions){if(A.from&&A.from.fullName!==f.requirableIdent(r))continue;if(A.from&&A.from.description&&A.from.description!==r.reference)continue;if(A.descriptor.fullName!==f.requirableIdent(e))continue;if(A.descriptor.description&&A.descriptor.description!==e.range)continue;return n.bindDescriptor(f.makeDescriptor(e,i),t.topLevelWorkspace.anchoredLocator,o)}return e},validateProject:async(e,t)=>{for(const r of e.workspaces){const A=f.prettyWorkspace(e.configuration,r);await e.configuration.triggerHook(e=>e.validateWorkspace,r,{reportWarning:(e,r)=>t.reportWarning(e,`${A}: ${r}`),reportError:(e,r)=>t.reportError(e,`${A}: ${r}`)})}},validateWorkspace:async(e,t)=>{const{manifest:r}=e;r.resolutions.length&&e.cwd!==e.project.cwd&&r.errors.push(new Error("Resolutions field will be ignored"));for(const e of r.errors)t.reportWarning(C.b.INVALID_MANIFEST,e.message)}}};var E=r(46611),B=r(35691);class y{constructor(e){this.fetchers=e}supports(e,t){return!!this.tryFetcher(e,t)}getLocalPath(e,t){return this.getFetcher(e,t).getLocalPath(e,t)}async fetch(e,t){const r=this.getFetcher(e,t);return await r.fetch(e,t)}tryFetcher(e,t){const r=this.fetchers.find(r=>r.supports(e,t));return r||null}getFetcher(e,t){const r=this.fetchers.find(r=>r.supports(e,t));if(!r)throw new B.lk(C.b.FETCHER_NOT_FOUND,f.prettyLocator(t.project.configuration,e)+" isn't supported by any available fetcher");return r}}var m=r(27092),w=r(52779),Q=r(60895);class D{static isVirtualDescriptor(e){return!!e.range.startsWith(D.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(D.protocol)}supportsDescriptor(e,t){return D.isVirtualDescriptor(e)}supportsLocator(e,t){return D.isVirtualLocator(e)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){throw new Error('Assertion failed: calling "bindDescriptor" on a virtual descriptor is unsupported')}getResolutionDependencies(e,t){throw new Error('Assertion failed: calling "getResolutionDependencies" on a virtual descriptor is unsupported')}async getCandidates(e,t,r){throw new Error('Assertion failed: calling "getCandidates" on a virtual descriptor is unsupported')}async getSatisfying(e,t,r){throw new Error('Assertion failed: calling "getSatisfying" on a virtual descriptor is unsupported')}async resolve(e,t){throw new Error('Assertion failed: calling "resolve" on a virtual locator is unsupported')}}D.protocol="virtual:";var b=r(75448),v=r(94538);class S{supports(e){return!!e.reference.startsWith(v.d.protocol)}getLocalPath(e,t){return this.getWorkspace(e,t).cwd}async fetch(e,t){const r=this.getWorkspace(e,t).cwd;return{packageFs:new b.M(r),prefixPath:n.LZ.dot,localPath:r}}getWorkspace(e,t){return t.project.getWorkspaceByCwd(e.reference.slice(v.d.protocol.length))}}var k=r(81111),N=r(71643),F=r(73632),K=r(32282),M=r.n(K);function R(e){return("undefined"!=typeof require?require:r(32178))(e)}var x=r(36545),L=r(32485);const P=new Set(["binFolder","version","flags","profile","gpg","ignoreNode","wrapOutput"]),O=".yarnrc.yml",U="yarn.lock";var T;!function(e){e.ANY="ANY",e.BOOLEAN="BOOLEAN",e.ABSOLUTE_PATH="ABSOLUTE_PATH",e.LOCATOR="LOCATOR",e.LOCATOR_LOOSE="LOCATOR_LOOSE",e.NUMBER="NUMBER",e.STRING="STRING",e.SECRET="SECRET",e.SHAPE="SHAPE",e.MAP="MAP"}(T||(T={}));const j=N.Type,Y={lastUpdateCheck:{description:"Last timestamp we checked whether new Yarn versions were available",type:T.STRING,default:null},yarnPath:{description:"Path to the local executable that must be used over the global one",type:T.ABSOLUTE_PATH,default:null},ignorePath:{description:"If true, the local executable will be ignored when using the global one",type:T.BOOLEAN,default:!1},ignoreCwd:{description:"If true, the `--cwd` flag will be ignored",type:T.BOOLEAN,default:!1},cacheKeyOverride:{description:"A global cache key override; used only for test purposes",type:T.STRING,default:null},globalFolder:{description:"Folder where are stored the system-wide settings",type:T.ABSOLUTE_PATH,default:k.getDefaultGlobalFolder()},cacheFolder:{description:"Folder where the cache files must be written",type:T.ABSOLUTE_PATH,default:"./.yarn/cache"},compressionLevel:{description:"Zip files compression level, from 0 to 9 or mixed (a variant of 9, which stores some files uncompressed, when compression doesn't yield good results)",type:T.NUMBER,values:["mixed",0,1,2,3,4,5,6,7,8,9],default:o.k},virtualFolder:{description:"Folder where the virtual packages (cf doc) will be mapped on the disk (must be named $$virtual)",type:T.ABSOLUTE_PATH,default:"./.yarn/$$virtual"},bstatePath:{description:"Path of the file where the current state of the built packages must be stored",type:T.ABSOLUTE_PATH,default:"./.yarn/build-state.yml"},lockfileFilename:{description:"Name of the files where the Yarn dependency tree entries must be stored",type:T.STRING,default:U},installStatePath:{description:"Path of the file where the install state will be persisted",type:T.ABSOLUTE_PATH,default:"./.yarn/install-state.gz"},immutablePatterns:{description:"Array of glob patterns; files matching them won't be allowed to change during immutable installs",type:T.STRING,default:[],isArray:!0},rcFilename:{description:"Name of the files where the configuration can be found",type:T.STRING,default:q()},enableGlobalCache:{description:"If true, the system-wide cache folder will be used regardless of `cache-folder`",type:T.BOOLEAN,default:!1},enableAbsoluteVirtuals:{description:"If true, the virtual symlinks will use absolute paths if required [non portable!!]",type:T.BOOLEAN,default:!1},enableColors:{description:"If true, the CLI is allowed to use colors in its output",type:T.BOOLEAN,default:N.supportsColor,defaultText:""},enableHyperlinks:{description:"If true, the CLI is allowed to use hyperlinks in its output",type:T.BOOLEAN,default:N.supportsHyperlinks,defaultText:""},enableInlineBuilds:{description:"If true, the CLI will print the build output on the command line",type:T.BOOLEAN,default:c.isCI,defaultText:""},enableProgressBars:{description:"If true, the CLI is allowed to show a progress bar for long-running events",type:T.BOOLEAN,default:!c.isCI&&process.stdout.isTTY&&process.stdout.columns>22,defaultText:""},enableTimers:{description:"If true, the CLI is allowed to print the time spent executing commands",type:T.BOOLEAN,default:!0},preferAggregateCacheInfo:{description:"If true, the CLI will only print a one-line report of any cache changes",type:T.BOOLEAN,default:c.isCI},preferInteractive:{description:"If true, the CLI will automatically use the interactive mode when called from a TTY",type:T.BOOLEAN,default:!1},preferTruncatedLines:{description:"If true, the CLI will truncate lines that would go beyond the size of the terminal",type:T.BOOLEAN,default:!1},progressBarStyle:{description:"Which style of progress bar should be used (only when progress bars are enabled)",type:T.STRING,default:void 0,defaultText:""},defaultLanguageName:{description:"Default language mode that should be used when a package doesn't offer any insight",type:T.STRING,default:"node"},defaultProtocol:{description:"Default resolution protocol used when resolving pure semver and tag ranges",type:T.STRING,default:"npm:"},enableTransparentWorkspaces:{description:"If false, Yarn won't automatically resolve workspace dependencies unless they use the `workspace:` protocol",type:T.BOOLEAN,default:!0},enableMirror:{description:"If true, the downloaded packages will be retrieved and stored in both the local and global folders",type:T.BOOLEAN,default:!0},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:T.BOOLEAN,default:!0},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:T.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:T.STRING,default:null},unsafeHttpWhitelist:{description:"List of the hostnames for which http queries are allowed (glob patterns are supported)",type:T.STRING,default:[],isArray:!0},httpTimeout:{description:"Timeout of each http request in milliseconds",type:T.NUMBER,default:6e4},httpRetry:{description:"Retry times on http failure",type:T.NUMBER,default:3},networkConcurrency:{description:"Maximal number of concurrent requests",type:T.NUMBER,default:1/0},networkSettings:{description:"Network settings per hostname (glob patterns are supported)",type:T.MAP,valueDefinition:{description:"",type:T.SHAPE,properties:{caFilePath:{description:"Path to file containing one or multiple Certificate Authority signing certificates",type:T.ABSOLUTE_PATH,default:null},enableNetwork:{description:"If false, the package manager will refuse to use the network if required to",type:T.BOOLEAN,default:null},httpProxy:{description:"URL of the http proxy that must be used for outgoing http requests",type:T.STRING,default:null},httpsProxy:{description:"URL of the http proxy that must be used for outgoing https requests",type:T.STRING,default:null}}}},caFilePath:{description:"A path to a file containing one or multiple Certificate Authority signing certificates",type:T.ABSOLUTE_PATH,default:null},enableStrictSsl:{description:"If false, SSL certificate errors will be ignored",type:T.BOOLEAN,default:!0},logFilters:{description:"Overrides for log levels",type:T.SHAPE,isArray:!0,concatenateValues:!0,properties:{code:{description:"Code of the messages covered by this override",type:T.STRING,default:void 0},text:{description:"Code of the texts covered by this override",type:T.STRING,default:void 0},level:{description:"Log level override, set to null to remove override",type:T.STRING,values:Object.values(N.LogLevel),isNullable:!0,default:void 0}}},enableTelemetry:{description:"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry",type:T.BOOLEAN,default:!0},telemetryInterval:{description:"Minimal amount of time between two telemetry uploads, in days",type:T.NUMBER,default:7},telemetryUserId:{description:"If you desire to tell us which project you are, you can set this field. Completely optional and opt-in.",type:T.STRING,default:null},enableScripts:{description:"If true, packages are allowed to have install scripts by default",type:T.BOOLEAN,default:!0},enableImmutableCache:{description:"If true, the cache is reputed immutable and actions that would modify it will throw",type:T.BOOLEAN,default:!1},checksumBehavior:{description:"Enumeration defining what to do when a checksum doesn't match expectations",type:T.STRING,default:"throw"},packageExtensions:{description:"Map of package corrections to apply on the dependency tree",type:T.MAP,valueDefinition:{description:"The extension that will be applied to any package whose version matches the specified range",type:T.SHAPE,properties:{dependencies:{description:"The set of dependencies that must be made available to the current package in order for it to work properly",type:T.MAP,valueDefinition:{description:"A range",type:T.STRING}},peerDependencies:{description:"Inherited dependencies - the consumer of the package will be tasked to provide them",type:T.MAP,valueDefinition:{description:"A semver range",type:T.STRING}},peerDependenciesMeta:{description:"Extra information related to the dependencies listed in the peerDependencies field",type:T.MAP,valueDefinition:{description:"The peerDependency meta",type:T.SHAPE,properties:{optional:{description:"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error",type:T.BOOLEAN,default:!1}}}}}}}};function G(e,t,r,A,n){if(A.isArray)return Array.isArray(r)?r.map((r,o)=>H(e,`${t}[${o}]`,r,A,n)):String(r).split(/,/).map(r=>H(e,t,r,A,n));if(Array.isArray(r))throw new Error(`Non-array configuration settings "${t}" cannot be an array`);return H(e,t,r,A,n)}function H(e,t,r,A,o){var i;switch(A.type){case T.ANY:return r;case T.SHAPE:return function(e,t,r,A,n){if("object"!=typeof r||Array.isArray(r))throw new g.UsageError(`Object configuration settings "${t}" must be an object`);const o=J(e,A,{ignoreArrays:!0});if(null===r)return o;for(const[i,s]of Object.entries(r)){const r=`${t}.${i}`;if(!A.properties[i])throw new g.UsageError(`Unrecognized configuration settings found: ${t}.${i} - run "yarn config -v" to see the list of settings supported in Yarn`);o.set(i,G(e,r,s,A.properties[i],n))}return o}(e,t,r,A,o);case T.MAP:return function(e,t,r,A,n){const o=new Map;if("object"!=typeof r||Array.isArray(r))throw new g.UsageError(`Map configuration settings "${t}" must be an object`);if(null===r)return o;for(const[i,s]of Object.entries(r)){const r=A.normalizeKeys?A.normalizeKeys(i):i,a=`${t}['${r}']`,c=A.valueDefinition;o.set(r,G(e,a,s,c,n))}return o}(e,t,r,A,o)}if(null===r&&!A.isNullable&&null!==A.default)throw new Error(`Non-nullable configuration settings "${t}" cannot be set to null`);if(null===(i=A.values)||void 0===i?void 0:i.includes(r))return r;const s=(()=>{if(A.type===T.BOOLEAN)return F.parseBoolean(r);if("string"!=typeof r)throw new Error(`Expected value (${r}) to be a string`);const e=F.replaceEnvVariables(r,{env:process.env});switch(A.type){case T.ABSOLUTE_PATH:return n.y1.resolve(o,n.cS.toPortablePath(e));case T.LOCATOR_LOOSE:return f.parseLocator(e,!1);case T.NUMBER:return parseInt(e);case T.LOCATOR:return f.parseLocator(e);default:return e}})();if(A.values&&!A.values.includes(s))throw new Error("Invalid value, expected one of "+A.values.join(", "));return s}function J(e,t,{ignoreArrays:r=!1}={}){switch(t.type){case T.SHAPE:{if(t.isArray&&!r)return[];const A=new Map;for(const[r,n]of Object.entries(t.properties))A.set(r,J(e,n));return A}case T.MAP:return t.isArray&&!r?[]:new Map;case T.ABSOLUTE_PATH:return null===t.default?null:null===e.projectCwd?n.y1.isAbsolute(t.default)?n.y1.normalize(t.default):t.isNullable?null:void 0:Array.isArray(t.default)?t.default.map(t=>n.y1.resolve(e.projectCwd,t)):n.y1.resolve(e.projectCwd,t.default);default:return t.default}}function q(){for(const[e,t]of Object.entries(process.env))if("yarn_rc_filename"===e.toLowerCase()&&"string"==typeof t)return t;return O}var z;!function(e){e[e.LOCKFILE=0]="LOCKFILE",e[e.MANIFEST=1]="MANIFEST",e[e.NONE=2]="NONE"}(z||(z={}));class W{constructor(e){this.projectCwd=null,this.plugins=new Map,this.settings=new Map,this.values=new Map,this.sources=new Map,this.invalid=new Map,this.packageExtensions=new Map,this.limits=new Map,this.startingCwd=e}static create(e,t,r){const A=new W(e);void 0===t||t instanceof Map||(A.projectCwd=t),A.importSettings(Y);const n=void 0!==r?r:t instanceof Map?t:new Map;for(const[e,t]of n)A.activatePlugin(e,t);return A}static async find(e,t,{lookup:r=z.LOCKFILE,strict:o=!0,usePath:i=!1,useRc:s=!0}={}){const c=function(){const e={};for(let[t,r]of Object.entries(process.env))t=t.toLowerCase(),t.startsWith("yarn_")&&(t=a()(t.slice("yarn_".length)),e[t]=r);return e}();delete c.rcFilename;const l=await W.findRcFiles(e),u=await W.findHomeRcFile(),h=({ignoreCwd:e,yarnPath:t,ignorePath:r,lockfileFilename:A})=>({ignoreCwd:e,yarnPath:t,ignorePath:r,lockfileFilename:A}),p=({ignoreCwd:e,yarnPath:t,ignorePath:r,lockfileFilename:A,...n})=>n,d=new W(e);d.importSettings(h(Y)),d.useWithSource("",h(c),e,{strict:!1});for(const{path:e,cwd:t,data:r}of l)d.useWithSource(e,h(r),t,{strict:!1});if(u&&d.useWithSource(u.path,h(u.data),u.cwd,{strict:!1}),i){const e=d.get("yarnPath"),t=d.get("ignorePath");if(null!==e&&!t)return d}const C=d.get("lockfileFilename");let f;switch(r){case z.LOCKFILE:f=await W.findProjectCwd(e,C);break;case z.MANIFEST:f=await W.findProjectCwd(e,null);break;case z.NONE:f=A.xfs.existsSync(n.y1.join(e,"package.json"))?n.y1.resolve(e):null}d.startingCwd=e,d.projectCwd=f,d.importSettings(p(Y));const E=new Map([["@@core",I]]);if(null!==t){for(const e of t.plugins.keys())E.set(e,(B=t.modules.get(e)).__esModule?B.default:B);const r=new Map;for(const e of new Set(M().builtinModules||Object.keys(process.binding("natives"))))r.set(e,()=>R(e));for(const[e,A]of t.modules)r.set(e,()=>A);const A=new Set,o=e=>e.default||e,i=(e,t)=>{const{factory:i,name:s}=R(n.cS.fromPortablePath(e));if(A.has(s))return;const a=new Map(r),c=e=>{if(a.has(e))return a.get(e)();throw new g.UsageError(`This plugin cannot access the package referenced via ${e} which is neither a builtin, nor an exposed entry`)},l=F.prettifySyncErrors(()=>o(i(c)),e=>`${e} (when initializing ${s}, defined in ${t})`);r.set(s,()=>l),A.add(s),E.set(s,l)};if(c.plugins)for(const t of c.plugins.split(";")){i(n.y1.resolve(e,n.cS.toPortablePath(t)),"")}for(const{path:e,cwd:t,data:r}of l)if(s&&Array.isArray(r.plugins))for(const A of r.plugins){const r="string"!=typeof A?A.path:A;i(n.y1.resolve(t,n.cS.toPortablePath(r)),e)}}var B;for(const[e,t]of E)d.activatePlugin(e,t);d.useWithSource("",p(c),e,{strict:o});for(const{path:e,cwd:t,data:r}of l)d.useWithSource(e,p(r),t,{strict:o});return u&&d.useWithSource(u.path,p(u.data),u.cwd,{strict:!1}),d.get("enableGlobalCache")&&(d.values.set("cacheFolder",d.get("globalFolder")+"/cache"),d.sources.set("cacheFolder","")),await d.refreshPackageExtensions(),d}static async findRcFiles(e){const t=q(),r=[];let o=e,s=null;for(;o!==s;){s=o;const e=n.y1.join(s,t);if(A.xfs.existsSync(e)){const t=await A.xfs.readFilePromise(e,"utf8");let n;try{n=(0,i.parseSyml)(t)}catch(r){let A="";throw t.match(/^\s+(?!-)[^:]+\s+\S+/m)&&(A=" (in particular, make sure you list the colons after each key name)"),new g.UsageError(`Parse error when loading ${e}; please check it's proper Yaml${A}`)}r.push({path:e,cwd:s,data:n})}o=n.y1.dirname(s)}return r}static async findHomeRcFile(){const e=q(),t=k.getHomeFolder(),r=n.y1.join(t,e);if(A.xfs.existsSync(r)){const e=await A.xfs.readFilePromise(r,"utf8");return{path:r,cwd:t,data:(0,i.parseSyml)(e)}}return null}static async findProjectCwd(e,t){let r=null,o=e,i=null;for(;o!==i;){if(i=o,A.xfs.existsSync(n.y1.join(i,"package.json"))&&(r=i),null!==t){if(A.xfs.existsSync(n.y1.join(i,t))){r=i;break}}else if(null!==r)break;o=n.y1.dirname(i)}return r}static async updateConfiguration(e,t){const r=q(),o=n.y1.join(e,r),s=A.xfs.existsSync(o)?(0,i.parseSyml)(await A.xfs.readFilePromise(o,"utf8")):{};let a,c=!1;if("function"==typeof t){try{a=t(s)}catch(e){a=t({})}if(a===s)return}else{a=s;for(const e of Object.keys(t)){const r=s[e],A=t[e];let n;if("function"==typeof A)try{n=A(r)}catch(e){n=A(void 0)}else n=A;r!==n&&(a[e]=n,c=!0)}if(!c)return}await A.xfs.changeFilePromise(o,(0,i.stringifySyml)(a),{automaticNewlines:!0})}static async updateHomeConfiguration(e){const t=k.getHomeFolder();return await W.updateConfiguration(t,e)}activatePlugin(e,t){this.plugins.set(e,t),void 0!==t.configuration&&this.importSettings(t.configuration)}importSettings(e){for(const[t,r]of Object.entries(e))if(null!=r){if(this.settings.has(t))throw new Error(`Cannot redefine settings "${t}"`);this.settings.set(t,r),this.values.set(t,J(this,r))}}useWithSource(e,t,r,A){try{this.use(e,t,r,A)}catch(t){throw t.message+=` (in ${N.pretty(this,e,N.Type.PATH)})`,t}}use(e,t,r,{strict:A=!0,overwrite:n=!1}={}){for(const o of Object.keys(t)){if(void 0===t[o])continue;if("plugins"===o)continue;if(""===e&&P.has(o))continue;if("rcFilename"===o)throw new g.UsageError(`The rcFilename settings can only be set via ${"yarn_RC_FILENAME".toUpperCase()}, not via a rc file`);const i=this.settings.get(o);if(!i){if(A)throw new g.UsageError(`Unrecognized or legacy configuration settings found: ${o} - run "yarn config -v" to see the list of settings supported in Yarn`);this.invalid.set(o,e);continue}if(this.sources.has(o)&&!(n||i.type===T.MAP||i.isArray&&i.concatenateValues))continue;let s;try{s=G(this,o,t[o],i,r)}catch(t){throw t.message+=" in "+N.pretty(this,e,N.Type.PATH),t}if(i.type===T.MAP){const t=this.values.get(o);this.values.set(o,new Map(n?[...t,...s]:[...s,...t])),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else if(i.isArray&&i.concatenateValues){const t=this.values.get(o);this.values.set(o,n?[...t,...s]:[...s,...t]),this.sources.set(o,`${this.sources.get(o)}, ${e}`)}else this.values.set(o,s),this.sources.set(o,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key "${e}"`);return this.values.get(e)}getSpecial(e,{hideSecrets:t=!1,getNativePaths:r=!1}){const A=this.get(e),o=this.settings.get(e);if(void 0===o)throw new g.UsageError(`Couldn't find a configuration settings named "${e}"`);return function e(t,r,A){if(r.type===T.SECRET&&"string"==typeof t&&A.hideSecrets)return"********";if(r.type===T.ABSOLUTE_PATH&&"string"==typeof t&&A.getNativePaths)return n.cS.fromPortablePath(t);if(r.isArray&&Array.isArray(t)){const n=[];for(const o of t)n.push(e(o,r,A));return n}if(r.type===T.MAP&&t instanceof Map){const n=new Map;for(const[o,i]of t.entries())n.set(o,e(i,r.valueDefinition,A));return n}if(r.type===T.SHAPE&&t instanceof Map){const n=new Map;for(const[o,i]of t.entries()){const t=r.properties[o];n.set(o,e(i,t,A))}return n}return t}(A,o,{hideSecrets:t,getNativePaths:r})}getSubprocessStreams(e,{header:t,prefix:r,report:n}){let o,i;const s=A.xfs.createWriteStream(e);if(this.get("enableInlineBuilds")){const e=n.createStreamReporter(`${r} ${N.pretty(this,"STDOUT","green")}`),t=n.createStreamReporter(`${r} ${N.pretty(this,"STDERR","red")}`);o=new d.PassThrough,o.pipe(e),o.pipe(s),i=new d.PassThrough,i.pipe(t),i.pipe(s)}else o=s,i=s,void 0!==t&&o.write(t+"\n");return{stdout:o,stderr:i}}makeResolver(){const e=[];for(const t of this.plugins.values())for(const r of t.resolvers||[])e.push(new r);return new m.B([new D,new v.d,new w.O,...e])}makeFetcher(){const e=[];for(const t of this.plugins.values())for(const r of t.fetchers||[])e.push(new r);return new y([new Q.N,new S,...e])}getLinkers(){const e=[];for(const t of this.plugins.values())for(const r of t.linkers||[])e.push(new r);return e}async refreshPackageExtensions(){this.packageExtensions=new Map;const e=this.packageExtensions,t=(t,r,{userProvided:A=!1}={})=>{if(!p().validRange(t.range))throw new Error("Only semver ranges are allowed as keys for the lockfileExtensions setting");const n=new E.G;n.load(r,{yamlCompatibilityMode:!0});const o=[];F.getArrayWithDefault(e,t.identHash).push([t.range,o]);const i={status:L._u.Inactive,userProvided:A,parentDescriptor:t};for(const e of n.dependencies.values())o.push({...i,type:L.HN.Dependency,descriptor:e,description:`${f.stringifyIdent(t)} > ${f.stringifyIdent(e)}`});for(const e of n.peerDependencies.values())o.push({...i,type:L.HN.PeerDependency,descriptor:e,description:`${f.stringifyIdent(t)} >> ${f.stringifyIdent(e)}`});for(const[e,r]of n.peerDependenciesMeta)for(const[A,n]of Object.entries(r))o.push({...i,type:L.HN.PeerDependencyMeta,selector:e,key:A,value:n,description:`${f.stringifyIdent(t)} >> ${e} / ${A}`})};await this.triggerHook(e=>e.registerPackageExtensions,this,t);for(const[e,r]of this.get("packageExtensions"))t(f.parseDescriptor(e,!0),F.convertMapsToIndexableObjects(r),{userProvided:!0})}normalizePackage(e){const t=f.copyPackage(e);if(null==this.packageExtensions)throw new Error("refreshPackageExtensions has to be called before normalizing packages");const r=this.packageExtensions.get(e.identHash);if(void 0!==r){const A=e.version;if(null!==A)for(const[e,n]of r)if(x.satisfiesWithPrereleases(A,e))for(const e of n)switch(e.status===L._u.Inactive&&(e.status=L._u.Redundant),e.type){case L.HN.Dependency:void 0===t.dependencies.get(e.descriptor.identHash)&&(e.status=L._u.Active,t.dependencies.set(e.descriptor.identHash,e.descriptor));break;case L.HN.PeerDependency:void 0===t.peerDependencies.get(e.descriptor.identHash)&&(e.status=L._u.Active,t.peerDependencies.set(e.descriptor.identHash,e.descriptor));break;case L.HN.PeerDependencyMeta:{const r=t.peerDependenciesMeta.get(e.selector);void 0!==r&&Object.prototype.hasOwnProperty.call(r,e.key)&&r[e.key]===e.value||(e.status=L._u.Active,F.getFactoryWithDefault(t.peerDependenciesMeta,e.selector,()=>({}))[e.key]=e.value)}break;default:F.assertNever(e)}}const A=e=>e.scope?`${e.scope}__${e.name}`:""+e.name;for(const e of t.peerDependencies.values()){if("@types"===e.scope)continue;const r=A(e),n=f.makeIdent("types",r);t.peerDependencies.has(n.identHash)||t.peerDependenciesMeta.has(n.identHash)||t.peerDependenciesMeta.set(f.stringifyIdent(n),{optional:!0})}for(const e of t.peerDependenciesMeta.keys()){const r=f.parseIdent(e);t.peerDependencies.has(r.identHash)||t.peerDependencies.set(r.identHash,f.makeDescriptor(r,"*"))}return t.dependencies=new Map(F.sortMap(t.dependencies,([,e])=>f.stringifyDescriptor(e))),t.peerDependencies=new Map(F.sortMap(t.peerDependencies,([,e])=>f.stringifyDescriptor(e))),t}getLimit(e){return F.getFactoryWithDefault(this.limits,e,()=>u()(this.get(e)))}async triggerHook(e,...t){for(const r of this.plugins.values()){const A=r.hooks;if(!A)continue;const n=e(A);n&&await n(...t)}}async triggerMultipleHooks(e,t){for(const r of t)await this.triggerHook(e,...r)}async reduceHook(e,t,...r){let A=t;for(const t of this.plugins.values()){const n=t.hooks;if(!n)continue;const o=e(n);o&&(A=await o(A,...r))}return A}async firstHook(e,...t){for(const r of this.plugins.values()){const A=r.hooks;if(!A)continue;const n=e(A);if(!n)continue;const o=await n(...t);if(void 0!==o)return o}return null}format(e,t){return N.pretty(this,e,t)}}W.telemetry=null},92409:(e,t,r)=>{"use strict";var A;r.d(t,{k:()=>A}),function(e){e[e.SCRIPT=0]="SCRIPT",e[e.SHELLCODE=1]="SHELLCODE"}(A||(A={}))},62152:(e,t,r)=>{"use strict";r.d(t,{h:()=>i});var A=r(35691),n=r(15815),o=r(71643);class i extends A.yG{constructor({configuration:e,stdout:t,suggestInstall:r=!0}){super(),this.errorCount=0,o.addLogFilterSupport(this,{configuration:e}),this.configuration=e,this.stdout=t,this.suggestInstall=r}static async start(e,t){const r=new this(e);try{await t(r)}catch(e){r.reportExceptionOnce(e)}finally{await r.finalize()}return r}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,t,r){return("function"==typeof t?t:r)()}async startTimerPromise(e,t,r){const A="function"==typeof t?t:r;return await A()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,t){}reportWarning(e,t){}reportError(e,t){this.errorCount+=1,this.stdout.write(`${o.pretty(this.configuration,"➤","redBright")} ${this.formatNameWithHyperlink(e)}: ${t}\n`)}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(const{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){this.errorCount>0&&(this.stdout.write(o.pretty(this.configuration,"➤","redBright")+" Errors happened when preparing the environment required to run this command.\n"),this.suggestInstall&&this.stdout.write(o.pretty(this.configuration,"➤","redBright")+' This might be caused by packages being missing from the lockfile, in which case running "yarn install" might help.\n'))}formatNameWithHyperlink(e){return(0,n.Qw)(e,{configuration:this.configuration,json:!1})}}},46611:(e,t,r)=>{"use strict";r.d(t,{G:()=>l});var A=r(78420),n=r(46009),o=r(11640),i=r(53887),s=r.n(i),a=r(73632),c=r(36545),g=r(54143);class l{constructor(){this.indent=" ",this.name=null,this.version=null,this.os=null,this.cpu=null,this.type=null,this.private=!1,this.license=null,this.main=null,this.module=null,this.browser=null,this.languageName=null,this.bin=new Map,this.scripts=new Map,this.dependencies=new Map,this.devDependencies=new Map,this.peerDependencies=new Map,this.workspaceDefinitions=[],this.dependenciesMeta=new Map,this.peerDependenciesMeta=new Map,this.resolutions=[],this.files=null,this.publishConfig=null,this.installConfig=null,this.preferUnplugged=null,this.raw={},this.errors=[]}static async tryFind(e,{baseFs:t=new A.S}={}){const r=n.y1.join(e,"package.json");return await t.existsPromise(r)?await l.fromFile(r,{baseFs:t}):null}static async find(e,{baseFs:t}={}){const r=await l.tryFind(e,{baseFs:t});if(null===r)throw new Error("Manifest not found");return r}static async fromFile(e,{baseFs:t=new A.S}={}){const r=new l;return await r.loadFile(e,{baseFs:t}),r}static fromText(e){const t=new l;return t.loadFromText(e),t}static isManifestFieldCompatible(e,t){if(null===e)return!0;let r=!0,A=!1;for(const n of e)if("!"===n[0]){if(A=!0,t===n.slice(1))return!1}else if(r=!1,n===t)return!0;return A&&r}loadFromText(e){let t;try{t=JSON.parse(h(e)||"{}")}catch(t){throw t.message+=` (when parsing ${e})`,t}this.load(t),this.indent=u(e)}async loadFile(e,{baseFs:t=new A.S}){const r=await t.readFilePromise(e,"utf8");let n;try{n=JSON.parse(h(r)||"{}")}catch(t){throw t.message+=` (when parsing ${e})`,t}this.load(n),this.indent=u(r)}load(e,{yamlCompatibilityMode:t=!1}={}){if("object"!=typeof e||null===e)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;const r=[];if("string"==typeof e.name)try{this.name=g.parseIdent(e.name)}catch(e){r.push(new Error("Parsing failed for the 'name' field"))}if("string"==typeof e.version&&(this.version=e.version),Array.isArray(e.os)){const t=[];this.os=t;for(const A of e.os)"string"!=typeof A?r.push(new Error("Parsing failed for the 'os' field")):t.push(A)}if(Array.isArray(e.cpu)){const t=[];this.cpu=t;for(const A of e.cpu)"string"!=typeof A?r.push(new Error("Parsing failed for the 'cpu' field")):t.push(A)}if("string"==typeof e.type&&(this.type=e.type),"boolean"==typeof e.private&&(this.private=e.private),"string"==typeof e.license&&(this.license=e.license),"string"==typeof e.languageName&&(this.languageName=e.languageName),"string"==typeof e.main&&(this.main=p(e.main)),"string"==typeof e.module&&(this.module=p(e.module)),null!=e.browser)if("string"==typeof e.browser)this.browser=p(e.browser);else{this.browser=new Map;for(const[t,r]of Object.entries(e.browser))this.browser.set(p(t),"string"==typeof r?p(r):r)}if("string"==typeof e.bin)null!==this.name?this.bin=new Map([[this.name.name,p(e.bin)]]):r.push(new Error("String bin field, but no attached package name"));else if("object"==typeof e.bin&&null!==e.bin)for(const[t,A]of Object.entries(e.bin))"string"==typeof A?this.bin.set(t,p(A)):r.push(new Error(`Invalid bin definition for '${t}'`));if("object"==typeof e.scripts&&null!==e.scripts)for(const[t,A]of Object.entries(e.scripts))"string"==typeof A?this.scripts.set(t,A):r.push(new Error(`Invalid script definition for '${t}'`));if("object"==typeof e.dependencies&&null!==e.dependencies)for(const[t,A]of Object.entries(e.dependencies)){if("string"!=typeof A){r.push(new Error(`Invalid dependency range for '${t}'`));continue}let e;try{e=g.parseIdent(t)}catch(e){r.push(new Error(`Parsing failed for the dependency name '${t}'`));continue}const n=g.makeDescriptor(e,A);this.dependencies.set(n.identHash,n)}if("object"==typeof e.devDependencies&&null!==e.devDependencies)for(const[t,A]of Object.entries(e.devDependencies)){if("string"!=typeof A){r.push(new Error(`Invalid dependency range for '${t}'`));continue}let e;try{e=g.parseIdent(t)}catch(e){r.push(new Error(`Parsing failed for the dependency name '${t}'`));continue}const n=g.makeDescriptor(e,A);this.devDependencies.set(n.identHash,n)}if("object"==typeof e.peerDependencies&&null!==e.peerDependencies)for(let[t,A]of Object.entries(e.peerDependencies)){let e;try{e=g.parseIdent(t)}catch(e){r.push(new Error(`Parsing failed for the dependency name '${t}'`));continue}"string"==typeof A&&c.validRange(A)||(r.push(new Error(`Invalid dependency range for '${t}'`)),A="*");const n=g.makeDescriptor(e,A);this.peerDependencies.set(n.identHash,n)}"object"==typeof e.workspaces&&e.workspaces.nohoist&&r.push(new Error("'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead"));const A=Array.isArray(e.workspaces)?e.workspaces:"object"==typeof e.workspaces&&null!==e.workspaces&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];for(const e of A)"string"==typeof e?this.workspaceDefinitions.push({pattern:e}):r.push(new Error(`Invalid workspace definition for '${e}'`));if("object"==typeof e.dependenciesMeta&&null!==e.dependenciesMeta)for(const[A,n]of Object.entries(e.dependenciesMeta)){if("object"!=typeof n||null===n){r.push(new Error("Invalid meta field for '"+A));continue}const e=g.parseDescriptor(A),o=this.ensureDependencyMeta(e),i=d(n.built,{yamlCompatibilityMode:t});if(null===i){r.push(new Error(`Invalid built meta field for '${A}'`));continue}const s=d(n.optional,{yamlCompatibilityMode:t});if(null===s){r.push(new Error(`Invalid optional meta field for '${A}'`));continue}const a=d(n.unplugged,{yamlCompatibilityMode:t});null!==a?Object.assign(o,{built:i,optional:s,unplugged:a}):r.push(new Error(`Invalid unplugged meta field for '${A}'`))}if("object"==typeof e.peerDependenciesMeta&&null!==e.peerDependenciesMeta)for(const[A,n]of Object.entries(e.peerDependenciesMeta)){if("object"!=typeof n||null===n){r.push(new Error(`Invalid meta field for '${A}'`));continue}const e=g.parseDescriptor(A),o=this.ensurePeerDependencyMeta(e),i=d(n.optional,{yamlCompatibilityMode:t});null!==i?Object.assign(o,{optional:i}):r.push(new Error(`Invalid optional meta field for '${A}'`))}if("object"==typeof e.resolutions&&null!==e.resolutions)for(const[t,A]of Object.entries(e.resolutions))if("string"==typeof A)try{this.resolutions.push({pattern:(0,o.parseResolution)(t),reference:A})}catch(e){r.push(e);continue}else r.push(new Error(`Invalid resolution entry for '${t}'`));if(Array.isArray(e.files)){this.files=new Set;for(const t of e.files)"string"==typeof t?this.files.add(t):r.push(new Error(`Invalid files entry for '${t}'`))}if("object"==typeof e.publishConfig&&null!==e.publishConfig){if(this.publishConfig={},"string"==typeof e.publishConfig.access&&(this.publishConfig.access=e.publishConfig.access),"string"==typeof e.publishConfig.main&&(this.publishConfig.main=p(e.publishConfig.main)),"string"==typeof e.publishConfig.module&&(this.publishConfig.module=p(e.publishConfig.module)),null!=e.publishConfig.browser)if("string"==typeof e.publishConfig.browser)this.publishConfig.browser=p(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(const[t,r]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(p(t),"string"==typeof r?p(r):r)}if("string"==typeof e.publishConfig.registry&&(this.publishConfig.registry=e.publishConfig.registry),"string"==typeof e.publishConfig.bin)null!==this.name?this.publishConfig.bin=new Map([[this.name.name,p(e.publishConfig.bin)]]):r.push(new Error("String bin field, but no attached package name"));else if("object"==typeof e.publishConfig.bin&&null!==e.publishConfig.bin){this.publishConfig.bin=new Map;for(const[t,A]of Object.entries(e.publishConfig.bin))"string"==typeof A?this.publishConfig.bin.set(t,p(A)):r.push(new Error(`Invalid bin definition for '${t}'`))}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(const t of e.publishConfig.executableFiles)"string"==typeof t?this.publishConfig.executableFiles.add(p(t)):r.push(new Error("Invalid executable file definition"))}}if("object"==typeof e.installConfig&&null!==e.installConfig){this.installConfig={};for(const t of Object.keys(e.installConfig))"hoistingLimits"===t?"string"==typeof e.installConfig.hoistingLimits?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:r.push(new Error("Invalid hoisting limits definition")):r.push(new Error("Unrecognized installConfig key: "+t))}if("object"==typeof e.optionalDependencies&&null!==e.optionalDependencies)for(const[t,A]of Object.entries(e.optionalDependencies)){if("string"!=typeof A){r.push(new Error(`Invalid dependency range for '${t}'`));continue}let e;try{e=g.parseIdent(t)}catch(e){r.push(new Error(`Parsing failed for the dependency name '${t}'`));continue}const n=g.makeDescriptor(e,A);this.dependencies.set(n.identHash,n);const o=g.makeDescriptor(e,"unknown"),i=this.ensureDependencyMeta(o);Object.assign(i,{optional:!0})}"boolean"==typeof e.preferUnplugged&&(this.preferUnplugged=e.preferUnplugged),this.errors=r}getForScope(e){switch(e){case"dependencies":return this.dependencies;case"devDependencies":return this.devDependencies;case"peerDependencies":return this.peerDependencies;default:throw new Error(`Unsupported value ("${e}")`)}}hasConsumerDependency(e){return!!this.dependencies.has(e.identHash)||!!this.peerDependencies.has(e.identHash)}hasHardDependency(e){return!!this.dependencies.has(e.identHash)||!!this.devDependencies.has(e.identHash)}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!this.hasHardDependency(e)||!!this.hasSoftDependency(e)}isCompatibleWithOS(e){return l.isManifestFieldCompatible(this.os,e)}isCompatibleWithCPU(e){return l.isManifestFieldCompatible(this.cpu,e)}ensureDependencyMeta(e){if("unknown"!==e.range&&!s().valid(e.range))throw new Error(`Invalid meta field range for '${g.stringifyDescriptor(e)}'`);const t=g.stringifyIdent(e),r="unknown"!==e.range?e.range:null;let A=this.dependenciesMeta.get(t);A||this.dependenciesMeta.set(t,A=new Map);let n=A.get(r);return n||A.set(r,n={}),n}ensurePeerDependencyMeta(e){if("unknown"!==e.range)throw new Error(`Invalid meta field range for '${g.stringifyDescriptor(e)}'`);const t=g.stringifyIdent(e);let r=this.peerDependenciesMeta.get(t);return r||this.peerDependenciesMeta.set(t,r={}),r}setRawField(e,t,{after:r=[]}={}){const A=new Set(r.filter(e=>Object.prototype.hasOwnProperty.call(this.raw,e)));if(0===A.size||Object.prototype.hasOwnProperty.call(this.raw,e))this.raw[e]=t;else{const r=this.raw,n=this.raw={};let o=!1;for(const i of Object.keys(r))n[i]=r[i],o||(A.delete(i),0===A.size&&(n[e]=t,o=!0))}}exportTo(e,{compatibilityMode:t=!0}={}){if(Object.assign(e,this.raw),null!==this.name?e.name=g.stringifyIdent(this.name):delete e.name,null!==this.version?e.version=this.version:delete e.version,null!==this.os?e.os=this.os:delete e.os,null!==this.cpu?e.cpu=this.cpu:delete e.cpu,null!==this.type?e.type=this.type:delete e.type,this.private?e.private=!0:delete e.private,null!==this.license?e.license=this.license:delete e.license,null!==this.languageName?e.languageName=this.languageName:delete e.languageName,null!==this.main?e.main=this.main:delete e.main,null!==this.module?e.module=this.module:delete e.module,null!==this.browser){const t=this.browser;"string"==typeof t?e.browser=t:t instanceof Map&&(e.browser=Object.assign({},...Array.from(t.keys()).sort().map(e=>({[e]:t.get(e)}))))}else delete e.browser;1===this.bin.size&&null!==this.name&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(e=>({[e]:this.bin.get(e)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:e})=>e)}:e.workspaces=this.workspaceDefinitions.map(({pattern:e})=>e):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;const r=[],A=[];for(const e of this.dependencies.values()){const n=this.dependenciesMeta.get(g.stringifyIdent(e));let o=!1;if(t&&n){const e=n.get(null);e&&e.optional&&(o=!0)}o?A.push(e):r.push(e)}r.length>0?e.dependencies=Object.assign({},...g.sortDescriptors(r).map(e=>({[g.stringifyIdent(e)]:e.range}))):delete e.dependencies,A.length>0?e.optionalDependencies=Object.assign({},...g.sortDescriptors(A).map(e=>({[g.stringifyIdent(e)]:e.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...g.sortDescriptors(this.devDependencies.values()).map(e=>({[g.stringifyIdent(e)]:e.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...g.sortDescriptors(this.peerDependencies.values()).map(e=>({[g.stringifyIdent(e)]:e.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(const[r,A]of a.sortMap(this.dependenciesMeta.entries(),([e,t])=>e))for(const[n,o]of a.sortMap(A.entries(),([e,t])=>null!==e?"0"+e:"1")){const A=null!==n?g.stringifyDescriptor(g.makeDescriptor(g.parseIdent(r),n)):r,i={...o};t&&null===n&&delete i.optional,0!==Object.keys(i).length&&(e.dependenciesMeta[A]=i)}return 0===Object.keys(e.dependenciesMeta).length&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...a.sortMap(this.peerDependenciesMeta.entries(),([e,t])=>e).map(([e,t])=>({[e]:t}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:e,reference:t})=>({[(0,o.stringifyResolution)(e)]:t}))):delete e.resolutions,null!==this.files?e.files=Array.from(this.files):delete e.files,null!==this.preferUnplugged?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,e}}function u(e){const t=e.match(/^[ \t]+/m);return t?t[0]:" "}function h(e){return 65279===e.charCodeAt(0)?e.slice(1):e}function p(e){return e.replace(/\\/g,"/")}function d(e,{yamlCompatibilityMode:t}){return t?a.tryParseOptionalBoolean(e):void 0===e||"boolean"==typeof e?e:null}l.fileName="package.json",l.allDependencies=["dependencies","devDependencies","peerDependencies"],l.hardDependencies=["dependencies","devDependencies"]},92659:(e,t,r)=>{"use strict";var A;function n(e){return"YN"+e.toString(10).padStart(4,"0")}r.d(t,{b:()=>A,i:()=>n}),function(e){e[e.UNNAMED=0]="UNNAMED",e[e.EXCEPTION=1]="EXCEPTION",e[e.MISSING_PEER_DEPENDENCY=2]="MISSING_PEER_DEPENDENCY",e[e.CYCLIC_DEPENDENCIES=3]="CYCLIC_DEPENDENCIES",e[e.DISABLED_BUILD_SCRIPTS=4]="DISABLED_BUILD_SCRIPTS",e[e.BUILD_DISABLED=5]="BUILD_DISABLED",e[e.SOFT_LINK_BUILD=6]="SOFT_LINK_BUILD",e[e.MUST_BUILD=7]="MUST_BUILD",e[e.MUST_REBUILD=8]="MUST_REBUILD",e[e.BUILD_FAILED=9]="BUILD_FAILED",e[e.RESOLVER_NOT_FOUND=10]="RESOLVER_NOT_FOUND",e[e.FETCHER_NOT_FOUND=11]="FETCHER_NOT_FOUND",e[e.LINKER_NOT_FOUND=12]="LINKER_NOT_FOUND",e[e.FETCH_NOT_CACHED=13]="FETCH_NOT_CACHED",e[e.YARN_IMPORT_FAILED=14]="YARN_IMPORT_FAILED",e[e.REMOTE_INVALID=15]="REMOTE_INVALID",e[e.REMOTE_NOT_FOUND=16]="REMOTE_NOT_FOUND",e[e.RESOLUTION_PACK=17]="RESOLUTION_PACK",e[e.CACHE_CHECKSUM_MISMATCH=18]="CACHE_CHECKSUM_MISMATCH",e[e.UNUSED_CACHE_ENTRY=19]="UNUSED_CACHE_ENTRY",e[e.MISSING_LOCKFILE_ENTRY=20]="MISSING_LOCKFILE_ENTRY",e[e.WORKSPACE_NOT_FOUND=21]="WORKSPACE_NOT_FOUND",e[e.TOO_MANY_MATCHING_WORKSPACES=22]="TOO_MANY_MATCHING_WORKSPACES",e[e.CONSTRAINTS_MISSING_DEPENDENCY=23]="CONSTRAINTS_MISSING_DEPENDENCY",e[e.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]="CONSTRAINTS_INCOMPATIBLE_DEPENDENCY",e[e.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]="CONSTRAINTS_EXTRANEOUS_DEPENDENCY",e[e.CONSTRAINTS_INVALID_DEPENDENCY=26]="CONSTRAINTS_INVALID_DEPENDENCY",e[e.CANT_SUGGEST_RESOLUTIONS=27]="CANT_SUGGEST_RESOLUTIONS",e[e.FROZEN_LOCKFILE_EXCEPTION=28]="FROZEN_LOCKFILE_EXCEPTION",e[e.CROSS_DRIVE_VIRTUAL_LOCAL=29]="CROSS_DRIVE_VIRTUAL_LOCAL",e[e.FETCH_FAILED=30]="FETCH_FAILED",e[e.DANGEROUS_NODE_MODULES=31]="DANGEROUS_NODE_MODULES",e[e.NODE_GYP_INJECTED=32]="NODE_GYP_INJECTED",e[e.AUTHENTICATION_NOT_FOUND=33]="AUTHENTICATION_NOT_FOUND",e[e.INVALID_CONFIGURATION_KEY=34]="INVALID_CONFIGURATION_KEY",e[e.NETWORK_ERROR=35]="NETWORK_ERROR",e[e.LIFECYCLE_SCRIPT=36]="LIFECYCLE_SCRIPT",e[e.CONSTRAINTS_MISSING_FIELD=37]="CONSTRAINTS_MISSING_FIELD",e[e.CONSTRAINTS_INCOMPATIBLE_FIELD=38]="CONSTRAINTS_INCOMPATIBLE_FIELD",e[e.CONSTRAINTS_EXTRANEOUS_FIELD=39]="CONSTRAINTS_EXTRANEOUS_FIELD",e[e.CONSTRAINTS_INVALID_FIELD=40]="CONSTRAINTS_INVALID_FIELD",e[e.AUTHENTICATION_INVALID=41]="AUTHENTICATION_INVALID",e[e.PROLOG_UNKNOWN_ERROR=42]="PROLOG_UNKNOWN_ERROR",e[e.PROLOG_SYNTAX_ERROR=43]="PROLOG_SYNTAX_ERROR",e[e.PROLOG_EXISTENCE_ERROR=44]="PROLOG_EXISTENCE_ERROR",e[e.STACK_OVERFLOW_RESOLUTION=45]="STACK_OVERFLOW_RESOLUTION",e[e.AUTOMERGE_FAILED_TO_PARSE=46]="AUTOMERGE_FAILED_TO_PARSE",e[e.AUTOMERGE_IMMUTABLE=47]="AUTOMERGE_IMMUTABLE",e[e.AUTOMERGE_SUCCESS=48]="AUTOMERGE_SUCCESS",e[e.AUTOMERGE_REQUIRED=49]="AUTOMERGE_REQUIRED",e[e.DEPRECATED_CLI_SETTINGS=50]="DEPRECATED_CLI_SETTINGS",e[e.PLUGIN_NAME_NOT_FOUND=51]="PLUGIN_NAME_NOT_FOUND",e[e.INVALID_PLUGIN_REFERENCE=52]="INVALID_PLUGIN_REFERENCE",e[e.CONSTRAINTS_AMBIGUITY=53]="CONSTRAINTS_AMBIGUITY",e[e.CACHE_OUTSIDE_PROJECT=54]="CACHE_OUTSIDE_PROJECT",e[e.IMMUTABLE_INSTALL=55]="IMMUTABLE_INSTALL",e[e.IMMUTABLE_CACHE=56]="IMMUTABLE_CACHE",e[e.INVALID_MANIFEST=57]="INVALID_MANIFEST",e[e.PACKAGE_PREPARATION_FAILED=58]="PACKAGE_PREPARATION_FAILED",e[e.INVALID_RANGE_PEER_DEPENDENCY=59]="INVALID_RANGE_PEER_DEPENDENCY",e[e.INCOMPATIBLE_PEER_DEPENDENCY=60]="INCOMPATIBLE_PEER_DEPENDENCY",e[e.DEPRECATED_PACKAGE=61]="DEPRECATED_PACKAGE",e[e.INCOMPATIBLE_OS=62]="INCOMPATIBLE_OS",e[e.INCOMPATIBLE_CPU=63]="INCOMPATIBLE_CPU",e[e.FROZEN_ARTIFACT_EXCEPTION=64]="FROZEN_ARTIFACT_EXCEPTION",e[e.TELEMETRY_NOTICE=65]="TELEMETRY_NOTICE",e[e.PATCH_HUNK_FAILED=66]="PATCH_HUNK_FAILED",e[e.INVALID_CONFIGURATION_VALUE=67]="INVALID_CONFIGURATION_VALUE",e[e.UNUSED_PACKAGE_EXTENSION=68]="UNUSED_PACKAGE_EXTENSION",e[e.REDUNDANT_PACKAGE_EXTENSION=69]="REDUNDANT_PACKAGE_EXTENSION"}(A||(A={}))},27092:(e,t,r)=>{"use strict";r.d(t,{B:()=>n});var A=r(54143);class n{constructor(e){this.resolvers=e.filter(e=>e)}supportsDescriptor(e,t){return!!this.tryResolverByDescriptor(e,t)}supportsLocator(e,t){return!!this.tryResolverByLocator(e,t)}shouldPersistResolution(e,t){return this.getResolverByLocator(e,t).shouldPersistResolution(e,t)}bindDescriptor(e,t,r){return this.getResolverByDescriptor(e,r).bindDescriptor(e,t,r)}getResolutionDependencies(e,t){return this.getResolverByDescriptor(e,t).getResolutionDependencies(e,t)}async getCandidates(e,t,r){const A=this.getResolverByDescriptor(e,r);return await A.getCandidates(e,t,r)}async getSatisfying(e,t,r){return this.getResolverByDescriptor(e,r).getSatisfying(e,t,r)}async resolve(e,t){const r=this.getResolverByLocator(e,t);return await r.resolve(e,t)}tryResolverByDescriptor(e,t){const r=this.resolvers.find(r=>r.supportsDescriptor(e,t));return r||null}getResolverByDescriptor(e,t){const r=this.resolvers.find(r=>r.supportsDescriptor(e,t));if(!r)throw new Error(A.prettyDescriptor(t.project.configuration,e)+" isn't supported by any available resolver");return r}tryResolverByLocator(e,t){const r=this.resolvers.find(r=>r.supportsLocator(e,t));return r||null}getResolverByLocator(e,t){const r=this.resolvers.find(r=>r.supportsLocator(e,t));if(!r)throw new Error(A.prettyLocator(t.project.configuration,e)+" isn't supported by any available resolver");return r}}},85824:(e,t,r)=>{"use strict";r.d(t,{I:()=>ie});var A=r(43896),n=r(46009),o=r(5944),i=r(11640),s=r(40822),a=r(76417);function c(){}function g(e,t,r,A,n){for(var o=0,i=t.length,s=0,a=0;oe.length?r:e})),c.value=e.join(l)}else c.value=e.join(r.slice(s,s+c.count));s+=c.count,c.added||(a+=c.count)}}var u=t[i-1];return i>1&&"string"==typeof u.value&&(u.added||u.removed)&&e.equals("",u.value)&&(t[i-2].value+=u.value,t.pop()),t}function l(e){return{newPos:e.newPos,components:e.components.slice(0)}}c.prototype={diff:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},A=r.callback;"function"==typeof r&&(A=r,r={}),this.options=r;var n=this;function o(e){return A?(setTimeout((function(){A(void 0,e)}),0),!0):e}e=this.castInput(e),t=this.castInput(t),e=this.removeEmpty(this.tokenize(e));var i=(t=this.removeEmpty(this.tokenize(t))).length,s=e.length,a=1,c=i+s,u=[{newPos:-1,components:[]}],h=this.extractCommon(u[0],t,e,0);if(u[0].newPos+1>=i&&h+1>=s)return o([{value:this.join(t),count:t.length}]);function p(){for(var r=-1*a;r<=a;r+=2){var A=void 0,c=u[r-1],h=u[r+1],p=(h?h.newPos:0)-r;c&&(u[r-1]=void 0);var d=c&&c.newPos+1=i&&p+1>=s)return o(g(n,A.components,t,e,n.useLongestToken));u[r]=A}else u[r]=void 0}a++}if(A)!function e(){setTimeout((function(){if(a>c)return A();p()||e()}),0)}();else for(;a<=c;){var d=p();if(d)return d}},pushComponent:function(e,t,r){var A=e[e.length-1];A&&A.added===t&&A.removed===r?e[e.length-1]={count:A.count+1,added:t,removed:r}:e.push({count:1,added:t,removed:r})},extractCommon:function(e,t,r,A){for(var n=t.length,o=r.length,i=e.newPos,s=i-A,a=0;i+10?a(d.lines.slice(-i.context)):[],g-=u.length,l-=u.length)}(o=u).push.apply(o,E(n.map((function(e){return(t.added?"+":"-")+e})))),t.added?p+=n.length:h+=n.length}else{if(g)if(n.length<=2*i.context&&e=s.length-2&&n.length<=i.context){var y=/\n$/.test(r),m=/\n$/.test(A),w=0==n.length&&u.length>B.oldLines;!y&&w&&u.splice(B.oldLines,0,"\\ No newline at end of file"),(y||w)&&m||u.push("\\ No newline at end of file")}c.push(B),g=0,l=0,u=[]}h+=n.length,p+=n.length}},f=0;f`${r}#commit=${A}`],[/^https:\/\/((?:[^/]+?)@)?codeload\.github\.com\/([^/]+\/[^/]+)\/tar\.gz\/([0-9a-f]+)$/,(e,t,r="",A,n)=>`https://${r}github.com/${A}.git#commit=${n}`],[/^https:\/\/((?:[^/]+?)@)?github\.com\/([^/]+\/[^/]+?)(?:\.git)?#([0-9a-f]+)$/,(e,t,r="",A,n)=>`https://${r}github.com/${A}.git#commit=${n}`],[/^https?:\/\/[^/]+\/(?:[^/]+\/)*(?:@[^/]+\/)?([^/]+)\/(?:-|download)\/\1-[^/]+\.tgz(?:#|$)/,e=>"npm:"+e],[/^https:\/\/npm\.pkg\.github\.com\/download\/(?:@[^/]+)\/(?:[^/]+)\/(?:[^/]+)\/(?:[0-9a-f]+)$/,e=>"npm:"+e],[/^https:\/\/npm\.fontawesome\.com\/(?:@[^/]+)\/([^/]+)\/-\/([^/]+)\/\1-\2.tgz(?:#|$)/,e=>"npm:"+e],[/^[^/]+\.tgz#[0-9a-f]+$/,e=>"npm:"+e]];class T{constructor(){this.resolutions=null}async setup(e,{report:t}){const r=n.y1.join(e.cwd,e.configuration.get("lockfileFilename"));if(!A.xfs.existsSync(r))return;const o=await A.xfs.readFilePromise(r,"utf8"),s=(0,i.parseSyml)(o);if(Object.prototype.hasOwnProperty.call(s,"__metadata"))return;const a=this.resolutions=new Map;for(const r of Object.keys(s)){let A=O.tryParseDescriptor(r);if(!A){t.reportWarning(P.b.YARN_IMPORT_FAILED,`Failed to parse the string "${r}" into a proper descriptor`);continue}k().validRange(A.range)&&(A=O.makeDescriptor(A,"npm:"+A.range));const{version:n,resolved:o}=s[r];if(!o)continue;let i;for(const[e,t]of U){const r=o.match(e);if(r){i=t(n,...r);break}}if(!i){t.reportWarning(P.b.YARN_IMPORT_FAILED,`${O.prettyDescriptor(e.configuration,A)}: Only some patterns can be imported from legacy lockfiles (not "${o}")`);continue}const c=O.makeLocator(A,i);a.set(A.descriptorHash,c)}}supportsDescriptor(e,t){return!!this.resolutions&&this.resolutions.has(e.descriptorHash)}supportsLocator(e,t){return!1}shouldPersistResolution(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){if(!this.resolutions)throw new Error("Assertion failed: The resolution store should have been setup");const A=this.resolutions.get(e.descriptorHash);if(!A)throw new Error("Assertion failed: The resolution should have been registered");return[A]}async getSatisfying(e,t,r){return null}async resolve(e,t){throw new Error("Assertion failed: This resolver doesn't support resolving locators to packages")}}class j{supportsDescriptor(e,t){return!!t.project.storedResolutions.get(e.descriptorHash)||!!t.project.originalPackages.has(O.convertDescriptorToLocator(e).locatorHash)}supportsLocator(e,t){return!!t.project.originalPackages.has(e.locatorHash)}shouldPersistResolution(e,t){throw new Error("The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes")}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){let A=r.project.originalPackages.get(O.convertDescriptorToLocator(e).locatorHash);if(A)return[A];const n=r.project.storedResolutions.get(e.descriptorHash);if(!n)throw new Error("Expected the resolution to have been successful - resolution not found");if(A=r.project.originalPackages.get(n),!A)throw new Error("Expected the resolution to have been successful - package not found");return[A]}async getSatisfying(e,t,r){return null}async resolve(e,t){const r=t.project.originalPackages.get(e.locatorHash);if(!r)throw new Error("The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache");return r}}var Y=r(46611),G=r(27092),H=r(35691);class J{constructor(e){this.resolver=e}supportsDescriptor(e,t){return this.resolver.supportsDescriptor(e,t)}supportsLocator(e,t){return this.resolver.supportsLocator(e,t)}shouldPersistResolution(e,t){return this.resolver.shouldPersistResolution(e,t)}bindDescriptor(e,t,r){return this.resolver.bindDescriptor(e,t,r)}getResolutionDependencies(e,t){return this.resolver.getResolutionDependencies(e,t)}async getCandidates(e,t,r){throw new H.lk(P.b.MISSING_LOCKFILE_ENTRY,"This package doesn't seem to be present in your lockfile; try to make an install to update your resolutions")}async getSatisfying(e,t,r){throw new H.lk(P.b.MISSING_LOCKFILE_ENTRY,"This package doesn't seem to be present in your lockfile; try to make an install to update your resolutions")}async resolve(e,t){throw new H.lk(P.b.MISSING_LOCKFILE_ENTRY,"This package doesn't seem to be present in your lockfile; try to make an install to update your resolutions")}}var q=r(33720),z=r(17722),W=r(81111),V=r(71643),X=r(20624),_=r(73632),Z=r(63088),$=r(36545),ee=r(32485);const te=/ *, */g,re=/\/$/,Ae=(0,N.promisify)(R().gzip),ne=(0,N.promisify)(R().gunzip),oe={restoreInstallersCustomData:["installersCustomData"],restoreResolutions:["accessibleLocators","optionalBuilds","storedDescriptors","storedResolutions","storedPackages","lockFileChecksum"]};class ie{constructor(e,{configuration:t}){this.resolutionAliases=new Map,this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map,this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.storedChecksums=new Map,this.accessibleLocators=new Set,this.originalPackages=new Map,this.optionalBuilds=new Set,this.peerRequirements=new Map,this.installersCustomData=new Map,this.lockFileChecksum=null,this.configuration=t,this.cwd=e}static async find(e,t){var r,o,i;if(!e.projectCwd)throw new s.UsageError("No project found in "+t);let a=e.projectCwd,c=t,g=null;for(;g!==e.projectCwd;){if(g=c,A.xfs.existsSync(n.y1.join(g,n.QS.manifest))){a=g;break}c=n.y1.dirname(g)}const l=new ie(e.projectCwd,{configuration:e});null===(r=x.VK.telemetry)||void 0===r||r.reportProject(l.cwd),await l.setupResolutions(),await l.setupWorkspaces(),null===(o=x.VK.telemetry)||void 0===o||o.reportWorkspaceCount(l.workspaces.length),null===(i=x.VK.telemetry)||void 0===i||i.reportDependencyCount(l.workspaces.reduce((e,t)=>e+t.manifest.dependencies.size+t.manifest.devDependencies.size,0));const u=l.tryWorkspaceByCwd(a);if(u)return{project:l,workspace:u,locator:u.anchoredLocator};const h=await l.findLocatorForLocation(a+"/",{strict:!0});if(h)return{project:l,locator:h,workspace:null};throw new s.UsageError(`The nearest package directory (${V.pretty(e,a,V.Type.PATH)}) doesn't seem to be part of the project declared in ${V.pretty(e,l.cwd,V.Type.PATH)}.\n\n- If the project directory is right, it might be that you forgot to list ${V.pretty(e,n.y1.relative(l.cwd,a),V.Type.PATH)} as a workspace.\n- If it isn't, it's likely because you have a yarn.lock or package.json file there, confusing the project root detection.`)}static generateBuildStateFile(e,t){let r="# Warning: This file is automatically generated. Removing it is fine, but will\n# cause all your builds to become invalidated.\n";const A=[...e].map(([e,r])=>{const A=t.get(e);if(void 0===A)throw new Error("Assertion failed: The locator should have been registered");return[O.stringifyLocator(A),A.locatorHash,r]});for(const[e,t,n]of _.sortMap(A,[e=>e[0],e=>e[1]]))r+="\n",r+=`# ${e}\n`,r+=JSON.stringify(t)+":\n",r+=` ${n}\n`;return r}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;const e=n.y1.join(this.cwd,this.configuration.get("lockfileFilename")),t=this.configuration.get("defaultLanguageName");if(A.xfs.existsSync(e)){const r=await A.xfs.readFilePromise(e,"utf8");this.lockFileChecksum=X.makeHash("1",r);const n=(0,i.parseSyml)(r);if(n.__metadata){const e=n.__metadata.version,r=n.__metadata.cacheKey;for(const A of Object.keys(n)){if("__metadata"===A)continue;const o=n[A];if(void 0===o.resolution)throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${A})`);const i=O.parseLocator(o.resolution,!0),s=new Y.G;s.load(o,{yamlCompatibilityMode:!0});const a=s.version,c=s.languageName||t,g=o.linkType.toUpperCase(),l=s.dependencies,u=s.peerDependencies,h=s.dependenciesMeta,p=s.peerDependenciesMeta,d=s.bin;if(null!=o.checksum){const e=void 0===r||o.checksum.includes("/")?o.checksum:`${r}/${o.checksum}`;this.storedChecksums.set(i.locatorHash,e)}if(e>=4){const e={...i,version:a,languageName:c,linkType:g,dependencies:l,peerDependencies:u,dependenciesMeta:h,peerDependenciesMeta:p,bin:d};this.originalPackages.set(e.locatorHash,e)}for(const t of A.split(te)){const r=O.parseDescriptor(t);if(this.storedDescriptors.set(r.descriptorHash,r),e>=4)this.storedResolutions.set(r.descriptorHash,i.locatorHash);else{const e=O.convertLocatorToDescriptor(i);e.descriptorHash!==r.descriptorHash&&(this.storedDescriptors.set(e.descriptorHash,e),this.resolutionAliases.set(r.descriptorHash,e.descriptorHash))}}}}}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=[this.cwd];for(;e.length>0;){const t=e;e=[];for(const r of t){if(this.workspacesByCwd.has(r))continue;const t=await this.addWorkspace(r),A=this.storedPackages.get(t.anchoredLocator.locatorHash);A&&(t.dependencies=A.dependencies);for(const r of t.workspacesCwds)e.push(r)}}}async addWorkspace(e){const t=new z.j(e,{project:this});await t.setup();const r=this.workspacesByIdent.get(t.locator.identHash);if(void 0!==r)throw new Error(`Duplicate workspace name ${O.prettyIdent(this.configuration,t.locator)}: ${e} conflicts with ${r.cwd}`);return this.workspaces.push(t),this.workspacesByCwd.set(e,t),this.workspacesByIdent.set(t.locator.identHash,t),t}get topLevelWorkspace(){return this.getWorkspaceByCwd(this.cwd)}tryWorkspaceByCwd(e){n.y1.isAbsolute(e)||(e=n.y1.resolve(this.cwd,e)),e=n.y1.normalize(e).replace(/\/+$/,"");const t=this.workspacesByCwd.get(e);return t||null}getWorkspaceByCwd(e){const t=this.tryWorkspaceByCwd(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByFilePath(e){let t=null;for(const r of this.workspaces){n.y1.relative(r.cwd,e).startsWith("../")||(t&&t.cwd.length>=r.cwd.length||(t=r))}return t||null}getWorkspaceByFilePath(e){const t=this.tryWorkspaceByFilePath(e);if(!t)throw new Error(`Workspace not found (${e})`);return t}tryWorkspaceByIdent(e){const t=this.workspacesByIdent.get(e.identHash);return void 0===t?null:t}getWorkspaceByIdent(e){const t=this.tryWorkspaceByIdent(e);if(!t)throw new Error(`Workspace not found (${O.prettyIdent(this.configuration,e)})`);return t}tryWorkspaceByDescriptor(e){const t=this.tryWorkspaceByIdent(e);return null!==t&&t.accepts(e.range)?t:null}getWorkspaceByDescriptor(e){const t=this.tryWorkspaceByDescriptor(e);if(null===t)throw new Error(`Workspace not found (${O.prettyDescriptor(this.configuration,e)})`);return t}tryWorkspaceByLocator(e){O.isVirtualLocator(e)&&(e=O.devirtualizeLocator(e));const t=this.tryWorkspaceByIdent(e);return null===t||t.locator.locatorHash!==e.locatorHash&&t.anchoredLocator.locatorHash!==e.locatorHash?null:t}getWorkspaceByLocator(e){const t=this.tryWorkspaceByLocator(e);if(!t)throw new Error(`Workspace not found (${O.prettyLocator(this.configuration,e)})`);return t}refreshWorkspaceDependencies(){for(const e of this.workspaces){const t=this.storedPackages.get(e.anchoredLocator.locatorHash);if(!t)throw new Error("Assertion failed: Expected workspace to have been resolved");e.dependencies=new Map(t.dependencies)}}forgetResolution(e){const t=e=>{this.storedResolutions.delete(e),this.storedDescriptors.delete(e)},r=e=>{this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)};if("descriptorHash"in e){const A=this.storedResolutions.get(e.descriptorHash);t(e.descriptorHash);const n=new Set(this.storedResolutions.values());void 0===A||n.has(A)||r(A)}if("locatorHash"in e){r(e.locatorHash);for(const[r,A]of this.storedResolutions)A===e.locatorHash&&t(r)}}forgetTransientResolutions(){const e=this.configuration.makeResolver();for(const t of this.originalPackages.values()){let r;try{r=e.shouldPersistResolution(t,{project:this,resolver:e})}catch(e){r=!1}r||this.forgetResolution(t)}}forgetVirtualResolutions(){for(const e of this.storedPackages.values())for(const[t,r]of e.dependencies)O.isVirtualDescriptor(r)&&e.dependencies.set(t,O.devirtualizeDescriptor(r))}getDependencyMeta(e,t){const r={},A=this.topLevelWorkspace.manifest.dependenciesMeta.get(O.stringifyIdent(e));if(!A)return r;const n=A.get(null);if(n&&Object.assign(r,n),null===t||!k().valid(t))return r;for(const[e,n]of A)null!==e&&e===t&&Object.assign(r,n);return r}async findLocatorForLocation(e,{strict:t=!1}={}){const r=new q.$,A=this.configuration.getLinkers(),n={project:this,report:r};for(const r of A){const A=await r.findPackageLocator(e,n);if(A){if(t){if((await r.findPackageLocation(A,n)).replace(re,"")!==e.replace(re,""))continue}return A}}return null}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error("Workspaces must have been setup before calling this function");this.forgetVirtualResolutions(),e.lockfileOnly||this.forgetTransientResolutions();const t=e.resolver||this.configuration.makeResolver(),r=new T;await r.setup(this,{report:e.report});const o=e.lockfileOnly?new G.B([new j,new J(t)]):new G.B([new j,r,t]),i=this.configuration.makeFetcher(),s=e.lockfileOnly?{project:this,report:e.report,resolver:o}:{project:this,report:e.report,resolver:o,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:i}},a=new Map,c=new Map,g=new Map,l=new Map,u=new Map,h=new Map,p=[],d=async e=>{const t=await _.prettifyAsyncErrors(async()=>await o.resolve(e,s),t=>`${O.prettyLocator(this.configuration,e)}: ${t}`);if(!O.areLocatorsEqual(e,t))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${O.prettyLocator(this.configuration,e)} to ${O.prettyLocator(this.configuration,t)})`);l.set(t.locatorHash,t);const r=this.configuration.normalizePackage(t);for(const[t,A]of r.dependencies){const n=await this.configuration.reduceHook(e=>e.reduceDependency,A,this,r,A,{resolver:o,resolveOptions:s});if(!O.areIdentsEqual(A,n))throw new Error("Assertion failed: The descriptor ident cannot be changed through aliases");const i=o.bindDescriptor(n,e,s);r.dependencies.set(t,i)}return p.push(Promise.all([...r.dependencies.values()].map(e=>f(e)))),c.set(r.locatorHash,r),r},C=async e=>{const t=this.resolutionAliases.get(e.descriptorHash);if(void 0!==t)return(async(e,t)=>{const r=await f(t);return a.set(e.descriptorHash,e),g.set(e.descriptorHash,r.locatorHash),r})(e,this.storedDescriptors.get(t));const r=o.getResolutionDependencies(e,s),A=new Map(await Promise.all(r.map(async e=>[e.descriptorHash,await f(e)]))),n=(await _.prettifyAsyncErrors(async()=>await o.getCandidates(e,A,s),t=>`${O.prettyDescriptor(this.configuration,e)}: ${t}`))[0];if(void 0===n)throw new Error(O.prettyDescriptor(this.configuration,e)+": No candidates found");return a.set(e.descriptorHash,e),g.set(e.descriptorHash,n.locatorHash),(async e=>{const t=u.get(e.locatorHash);if(void 0!==t)return t;const r=Promise.resolve().then(()=>d(e));return u.set(e.locatorHash,r),r})(n)},f=e=>{const t=h.get(e.descriptorHash);if(void 0!==t)return t;a.set(e.descriptorHash,e);const r=Promise.resolve().then(()=>C(e));return h.set(e.descriptorHash,r),r};for(const e of this.workspaces){const t=e.anchoredDescriptor;p.push(f(t))}for(;p.length>0;){const e=[...p];p.length=0,await Promise.all(e)}const I=new Set(this.resolutionAliases.values()),E=new Set(c.keys()),B=new Set,y=new Map;!function({project:e,allDescriptors:t,allResolutions:r,allPackages:o,accessibleLocators:i=new Set,optionalBuilds:s=new Set,volatileDescriptors:a=new Set,peerRequirements:c=new Map,report:g,tolerateMissingPackages:l=!1}){var u;const h=new Map,p=[],d=new Map,C=new Map,f=new Map,I=new Map,E=new Map,B=new Map(e.workspaces.map(e=>{const t=e.anchoredLocator.locatorHash,r=o.get(t);if(void 0===r){if(l)return[t,null];throw new Error("Assertion failed: The workspace should have an associated package")}return[t,O.copyPackage(r)]})),y=()=>{const e=A.xfs.mktempSync(),t=n.y1.join(e,"stacktrace.log"),r=String(p.length+1).length,o=p.map((e,t)=>`${(t+1+".").padStart(r," ")} ${O.stringifyLocator(e)}\n`).join("");throw A.xfs.writeFileSync(t,o),new H.lk(P.b.STACK_OVERFLOW_RESOLUTION,"Encountered a stack overflow when resolving peer dependencies; cf "+t)},m=e=>{const t=r.get(e.descriptorHash);if(void 0===t)throw new Error("Assertion failed: The resolution should have been registered");const A=o.get(t);if(!A)throw new Error("Assertion failed: The package could not be found");return A},w=(e,t,{first:r,optional:A})=>{p.length>1e3&&y(),p.push(e);const n=Q(e,t,{first:r,optional:A});return p.pop(),n},Q=(A,n,{first:c,optional:g})=>{if(i.has(A.locatorHash))return;i.add(A.locatorHash),g||s.delete(A.locatorHash);const u=o.get(A.locatorHash);if(!u){if(l)return;throw new Error(`Assertion failed: The package (${O.prettyLocator(e.configuration,A)}) should have been registered`)}const p=[],m=[],Q=[],D=[],b=[];for(const i of Array.from(u.dependencies.values())){if(u.peerDependencies.has(i.identHash)&&!c)continue;if(O.isVirtualDescriptor(i))throw new Error("Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch");a.delete(i.descriptorHash);let s=g;if(!s){const e=u.dependenciesMeta.get(O.stringifyIdent(i));if(void 0!==e){const t=e.get(null);void 0!==t&&t.optional&&(s=!0)}}const C=r.get(i.descriptorHash);if(!C){if(l)continue;throw new Error(`Assertion failed: The resolution (${O.prettyDescriptor(e.configuration,i)}) should have been registered`)}const v=B.get(C)||o.get(C);if(!v)throw new Error(`Assertion failed: The package (${C}, resolved from ${O.prettyDescriptor(e.configuration,i)}) should have been registered`);if(0===v.peerDependencies.size){w(v,new Map,{first:!1,optional:s});continue}const S=h.get(v.locatorHash);let k,N;"number"==typeof S&&S>=2&&y();const F=new Set;let K;m.push(()=>{k=O.virtualizeDescriptor(i,A.locatorHash),N=O.virtualizePackage(v,A.locatorHash),u.dependencies.delete(i.identHash),u.dependencies.set(k.identHash,k),r.set(k.descriptorHash,N.locatorHash),t.set(k.descriptorHash,k),o.set(N.locatorHash,N),p.push([v,k,N])}),Q.push(()=>{var e;K=new Map;for(const o of N.peerDependencies.values()){let i=u.dependencies.get(o.identHash);if(!i&&O.areIdentsEqual(A,o)&&(i=O.convertLocatorToDescriptor(A),t.set(i.descriptorHash,i),r.set(i.descriptorHash,A.locatorHash),a.delete(i.descriptorHash)),i||!N.dependencies.has(o.identHash)){if(i||(i=O.makeDescriptor(o,"missing:")),N.dependencies.set(i.identHash,i),O.isVirtualDescriptor(i)){_.getSetWithDefault(f,i.descriptorHash).add(N.locatorHash)}d.set(i.identHash,i),"missing:"===i.range&&F.add(i.identHash),K.set(o.identHash,null!==(e=n.get(o.identHash))&&void 0!==e?e:N.locatorHash)}else N.peerDependencies.delete(o.identHash)}N.dependencies=new Map(_.sortMap(N.dependencies,([e,t])=>O.stringifyIdent(t)))}),D.push(()=>{if(!o.has(N.locatorHash))return;const e=h.get(v.locatorHash),t=void 0!==e?e+1:1;h.set(v.locatorHash,t),w(N,K,{first:!1,optional:s}),h.set(v.locatorHash,t-1)}),b.push(()=>{const e=u.dependencies.get(i.identHash);if(void 0===e)throw new Error("Assertion failed: Expected the peer dependency to have been turned into a dependency");const t=r.get(e.descriptorHash);if(void 0===t)throw new Error("Assertion failed: Expected the descriptor to be registered");if(_.getSetWithDefault(E,t).add(A.locatorHash),o.has(N.locatorHash)){for(const e of N.peerDependencies.values()){const t=K.get(e.identHash);if(void 0===t)throw new Error("Assertion failed: Expected the peer dependency ident to be registered");_.getArrayWithDefault(_.getMapWithDefault(I,t),O.stringifyIdent(e)).push(N.locatorHash)}for(const e of F)N.dependencies.delete(e)}})}for(const e of[...m,...Q])e();let v;do{v=!0;for(const[A,n,s]of p){if(!o.has(s.locatorHash))continue;const a=_.getMapWithDefault(C,A.locatorHash),c=X.makeHash(...[...s.dependencies.values()].map(t=>{const A="missing:"!==t.range?r.get(t.descriptorHash):"missing:";if(void 0===A)throw new Error(`Assertion failed: Expected the resolution for ${O.prettyDescriptor(e.configuration,t)} to have been registered`);return A}),n.identHash),g=a.get(c);if(void 0===g){a.set(c,n);continue}if(g===n)continue;v=!1,o.delete(s.locatorHash),t.delete(n.descriptorHash),r.delete(n.descriptorHash),i.delete(s.locatorHash);const l=f.get(n.descriptorHash)||[],h=[u.locatorHash,...l];f.delete(n.descriptorHash);for(const e of h){const t=o.get(e);void 0!==t&&t.dependencies.set(n.identHash,g)}}}while(!v);for(const e of[...D,...b])e()};for(const t of e.workspaces)a.delete(t.anchoredDescriptor.descriptorHash),w(t.anchoredLocator,new Map,{first:!0,optional:!1});let D;!function(e){e[e.NotProvided=0]="NotProvided",e[e.NotCompatible=1]="NotCompatible"}(D||(D={}));const b=[];for(const[e,t]of E){const r=o.get(e);if(void 0===r)throw new Error("Assertion failed: Expected the root to be registered");const A=I.get(e);if(void 0!==A)for(const n of t){const t=o.get(n);if(void 0!==t)for(const[i,s]of A){const A=O.parseIdent(i);if(t.peerDependencies.has(A.identHash))continue;const a="p"+X.makeHash(n,i,e).slice(0,5);c.set(a,{subject:n,requested:A,rootRequester:e,allRequesters:s});const g=r.dependencies.get(A.identHash);if(void 0!==g){const e=m(g),n=null!==(u=e.version)&&void 0!==u?u:"0.0.0",i=new Set;for(const e of s){const t=o.get(e);if(void 0===t)throw new Error("Assertion failed: Expected the link to be registered");const r=t.peerDependencies.get(A.identHash);if(void 0===r)throw new Error("Assertion failed: Expected the ident to be registered");i.add(r.range)}[...i].every(e=>$.satisfiesWithPrereleases(n,e))||b.push({type:D.NotCompatible,subject:t,requested:A,requester:r,version:n,hash:a,requirementCount:s.length})}else{const e=r.peerDependenciesMeta.get(i);(null==e?void 0:e.optional)||b.push({type:D.NotProvided,subject:t,requested:A,requester:r,hash:a})}}}}const v=[e=>O.prettyLocatorNoColors(e.subject),e=>O.stringifyIdent(e.requested),e=>""+e.type];for(const t of _.sortMap(b,v))switch(t.type){case D.NotProvided:null==g||g.reportWarning(P.b.MISSING_PEER_DEPENDENCY,`${O.prettyLocator(e.configuration,t.subject)} doesn't provide ${O.prettyIdent(e.configuration,t.requested)} (${V.pretty(e.configuration,t.hash,V.Type.CODE)}), requested by ${O.prettyIdent(e.configuration,t.requester)}`);break;case D.NotCompatible:{const r=t.requirementCount>1?"and some of its descendants request":"requests";null==g||g.reportWarning(P.b.INCOMPATIBLE_PEER_DEPENDENCY,`${O.prettyLocator(e.configuration,t.subject)} provides ${O.prettyIdent(e.configuration,t.requested)} (${V.pretty(e.configuration,t.hash,V.Type.CODE)}) with version ${O.prettyReference(e.configuration,t.version)}, which doesn't satisfy what ${O.prettyIdent(e.configuration,t.requester)} ${r}`)}}b.length>0&&(null==g||g.reportWarning(P.b.UNNAMED,`Some peer dependencies are incorrectly met; run ${V.pretty(e.configuration,"yarn explain peer-requirements ",V.Type.CODE)} for details, where ${V.pretty(e.configuration,"",V.Type.CODE)} is the six-letter p-prefixed code`))}({project:this,report:e.report,accessibleLocators:B,volatileDescriptors:I,optionalBuilds:E,peerRequirements:y,allDescriptors:a,allResolutions:g,allPackages:c});for(const e of I)a.delete(e),g.delete(e);this.storedResolutions=g,this.storedDescriptors=a,this.storedPackages=c,this.accessibleLocators=B,this.originalPackages=l,this.optionalBuilds=E,this.peerRequirements=y,this.refreshWorkspaceDependencies()}async fetchEverything({cache:e,report:t,fetcher:r}){const A=r||this.configuration.makeFetcher(),n={checksums:this.storedChecksums,project:this,cache:e,fetcher:A,report:t},o=Array.from(new Set(_.sortMap(this.storedResolutions.values(),[e=>{const t=this.storedPackages.get(e);if(!t)throw new Error("Assertion failed: The locator should have been registered");return O.stringifyLocator(t)}])));let i=!1;const s=H.yG.progressViaCounter(o.length);t.reportProgress(s);const a=v()(32);if(await t.startCacheReport(async()=>{await Promise.all(o.map(e=>a(async()=>{const r=this.storedPackages.get(e);if(!r)throw new Error("Assertion failed: The locator should have been registered");if(O.isVirtualLocator(r))return;let o;try{o=await A.fetch(r,n)}catch(e){return e.message=`${O.prettyLocator(this.configuration,r)}: ${e.message}`,t.reportExceptionOnce(e),void(i=e)}o.checksum?this.storedChecksums.set(r.locatorHash,o.checksum):this.storedChecksums.delete(r.locatorHash),o.releaseFs&&o.releaseFs()}).finally(()=>{s.tick()})))}),i)throw i}async linkEverything({cache:e,report:t,fetcher:r,skipBuild:o}){var s;const c=r||this.configuration.makeFetcher(),g={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:t,skipIntegrityCheck:!0},l=this.configuration.getLinkers(),u={project:this,report:t},h=new Map(l.map(e=>{const t=e.makeInstaller(u),r=t.getCustomDataKey(),A=this.installersCustomData.get(r);return void 0!==A&&t.attachCustomData(A),[e,t]})),p=new Map,d=new Map,C=new Map,f=new Map(await Promise.all([...this.accessibleLocators].map(async e=>{const t=this.storedPackages.get(e);if(!t)throw new Error("Assertion failed: The locator should have been registered");return[e,await c.fetch(t,g)]})));for(const e of this.accessibleLocators){const t=this.storedPackages.get(e);if(void 0===t)throw new Error("Assertion failed: The locator should have been registered");const r=f.get(t.locatorHash);if(void 0===r)throw new Error("Assertion failed: The fetch result should have been registered");const A=this.tryWorkspaceByLocator(t);if(null!==A){const e=[],{scripts:o}=A.manifest;for(const t of["preinstall","install","postinstall"])o.has(t)&&e.push([L.k.SCRIPT,t]);try{for(const e of h.values()){if(null!==(await e.installPackage(t,r)).buildDirective)throw new Error("Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core")}}finally{r.releaseFs&&r.releaseFs()}const i=n.y1.join(r.packageFs.getRealPath(),r.prefixPath);d.set(t.locatorHash,i),e.length>0&&C.set(t.locatorHash,{directives:e,buildLocations:[i]})}else{const e=l.find(e=>e.supportsPackage(t,u));if(!e)throw new H.lk(P.b.LINKER_NOT_FOUND,O.prettyLocator(this.configuration,t)+" isn't supported by any available linker");const A=h.get(e);if(!A)throw new Error("Assertion failed: The installer should have been registered");let n;try{n=await A.installPackage(t,r)}finally{r.releaseFs&&r.releaseFs()}p.set(t.locatorHash,e),d.set(t.locatorHash,n.packageLocation),n.buildDirective&&n.packageLocation&&C.set(t.locatorHash,{directives:n.buildDirective,buildLocations:[n.packageLocation]})}}const I=new Map;for(const e of this.accessibleLocators){const t=this.storedPackages.get(e);if(!t)throw new Error("Assertion failed: The locator should have been registered");const r=null!==this.tryWorkspaceByLocator(t),A=async(e,A)=>{const n=d.get(t.locatorHash);if(void 0===n)throw new Error(`Assertion failed: The package (${O.prettyLocator(this.configuration,t)}) should have been registered`);const o=[];for(const A of t.dependencies.values()){const i=this.storedResolutions.get(A.descriptorHash);if(void 0===i)throw new Error(`Assertion failed: The resolution (${O.prettyDescriptor(this.configuration,A)}, from ${O.prettyLocator(this.configuration,t)})should have been registered`);const s=this.storedPackages.get(i);if(void 0===s)throw new Error(`Assertion failed: The package (${i}, resolved from ${O.prettyDescriptor(this.configuration,A)}) should have been registered`);const a=null===this.tryWorkspaceByLocator(s)?p.get(i):null;if(void 0===a)throw new Error(`Assertion failed: The package (${i}, resolved from ${O.prettyDescriptor(this.configuration,A)}) should have been registered`);const c=null===a;if(a===e||r||c)null!==d.get(s.locatorHash)&&o.push([A,s]);else if(null!==n){_.getArrayWithDefault(I,i).push(n)}}null!==n&&await A.attachInternalDependencies(t,o)};if(r)for(const[e,t]of h)await A(e,t);else{const e=p.get(t.locatorHash);if(!e)throw new Error("Assertion failed: The linker should have been found");const r=h.get(e);if(!r)throw new Error("Assertion failed: The installer should have been registered");await A(e,r)}}for(const[e,t]of I){const r=this.storedPackages.get(e);if(!r)throw new Error("Assertion failed: The package should have been registered");const A=p.get(r.locatorHash);if(!A)throw new Error("Assertion failed: The linker should have been found");const n=h.get(A);if(!n)throw new Error("Assertion failed: The installer should have been registered");await n.attachExternalDependents(r,t)}const E=new Map;for(const e of h.values()){const t=await e.finalizeInstall();for(const e of null!==(s=null==t?void 0:t.records)&&void 0!==s?s:[])C.set(e.locatorHash,{directives:e.buildDirective,buildLocations:e.buildLocations});void 0!==(null==t?void 0:t.customData)&&E.set(e.getCustomDataKey(),t.customData)}if(this.installersCustomData=E,await this.persistInstallStateFile(),o)return;const B=new Set(this.storedPackages.keys()),y=new Set(C.keys());for(const e of y)B.delete(e);const m=(0,a.createHash)("sha512");m.update(process.versions.node),this.configuration.triggerHook(e=>e.globalHashGeneration,this,e=>{m.update("\0"),m.update(e)});const w=m.digest("hex"),Q=new Map,D=e=>{let t=Q.get(e.locatorHash);if(void 0!==t)return t;const r=this.storedPackages.get(e.locatorHash);if(void 0===r)throw new Error("Assertion failed: The package should have been registered");const A=(0,a.createHash)("sha512");A.update(e.locatorHash),Q.set(e.locatorHash,"");for(const e of r.dependencies.values()){const t=this.storedResolutions.get(e.descriptorHash);if(void 0===t)throw new Error(`Assertion failed: The resolution (${O.prettyDescriptor(this.configuration,e)}) should have been registered`);const r=this.storedPackages.get(t);if(void 0===r)throw new Error("Assertion failed: The package should have been registered");A.update(D(r))}return t=A.digest("hex"),Q.set(e.locatorHash,t),t},b=(e,t)=>{const r=(0,a.createHash)("sha512");r.update(w),r.update(D(e));for(const e of t)r.update(e);return r.digest("hex")},v=this.configuration.get("bstatePath"),S=A.xfs.existsSync(v)?(0,i.parseSyml)(await A.xfs.readFilePromise(v,"utf8")):{},k=new Map;for(;y.size>0;){const e=y.size,r=[];for(const e of y){const o=this.storedPackages.get(e);if(!o)throw new Error("Assertion failed: The package should have been registered");let i=!0;for(const e of o.dependencies.values()){const t=this.storedResolutions.get(e.descriptorHash);if(!t)throw new Error(`Assertion failed: The resolution (${O.prettyDescriptor(this.configuration,e)}) should have been registered`);if(y.has(t)){i=!1;break}}if(!i)continue;y.delete(e);const s=C.get(o.locatorHash);if(!s)throw new Error("Assertion failed: The build directive should have been registered");const a=b(o,s.buildLocations);if(Object.prototype.hasOwnProperty.call(S,o.locatorHash)&&S[o.locatorHash]===a)k.set(o.locatorHash,a);else{Object.prototype.hasOwnProperty.call(S,o.locatorHash)?t.reportInfo(P.b.MUST_REBUILD,O.prettyLocator(this.configuration,o)+" must be rebuilt because its dependency tree changed"):t.reportInfo(P.b.MUST_BUILD,O.prettyLocator(this.configuration,o)+" must be built because it never did before or the last one failed");for(const e of s.buildLocations){if(!n.y1.isAbsolute(e))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${e})`);r.push((async()=>{for(const[r,i]of s.directives){let s=`# This file contains the result of Yarn building a package (${O.stringifyLocator(o)})\n`;switch(r){case L.k.SCRIPT:s+=`# Script name: ${i}\n`;break;case L.k.SHELLCODE:s+=`# Script code: ${i}\n`}const c=null;await A.xfs.mktempPromise(async g=>{const l=n.y1.join(g,"build.log"),{stdout:u,stderr:h}=this.configuration.getSubprocessStreams(l,{header:s,prefix:O.prettyLocator(this.configuration,o),report:t});let p;try{switch(r){case L.k.SCRIPT:p=await Z.executePackageScript(o,i,[],{cwd:e,project:this,stdin:c,stdout:u,stderr:h});break;case L.k.SHELLCODE:p=await Z.executePackageShellcode(o,i,[],{cwd:e,project:this,stdin:c,stdout:u,stderr:h})}}catch(e){h.write(e.stack),p=1}if(u.end(),h.end(),0===p)return k.set(o.locatorHash,a),!0;A.xfs.detachTemp(g);const d=`${O.prettyLocator(this.configuration,o)} couldn't be built successfully (exit code ${V.pretty(this.configuration,p,V.Type.NUMBER)}, logs can be found here: ${V.pretty(this.configuration,l,V.Type.PATH)})`;return t.reportInfo(P.b.BUILD_FAILED,d),this.optionalBuilds.has(o.locatorHash)?(k.set(o.locatorHash,a),!0):(t.reportError(P.b.BUILD_FAILED,d),!1)})}})())}}}if(await Promise.all(r),e===y.size){const e=Array.from(y).map(e=>{const t=this.storedPackages.get(e);if(!t)throw new Error("Assertion failed: The package should have been registered");return O.prettyLocator(this.configuration,t)}).join(", ");t.reportError(P.b.CYCLIC_DEPENDENCIES,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${e})`);break}}if(k.size>0){const e=this.configuration.get("bstatePath"),t=ie.generateBuildStateFile(k,this.storedPackages);await A.xfs.mkdirPromise(n.y1.dirname(e),{recursive:!0}),await A.xfs.changeFilePromise(e,t,{automaticNewlines:!0})}else await A.xfs.removePromise(v)}async install(e){var t,r;const i=this.configuration.get("nodeLinker");null===(t=x.VK.telemetry)||void 0===t||t.reportInstall(i),await e.report.startTimerPromise("Project validation",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(e=>e.validateProject,this,{reportWarning:e.report.reportWarning.bind(e.report),reportError:e.report.reportError.bind(e.report)})});for(const e of this.configuration.packageExtensions.values())for(const[,t]of e)for(const e of t)e.status=ee._u.Inactive;const s=n.y1.join(this.cwd,this.configuration.get("lockfileFilename"));let a=null;if(e.immutable)try{a=await A.xfs.readFilePromise(s,"utf8")}catch(e){throw"ENOENT"===e.code?new H.lk(P.b.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been created by this install, which is explicitly forbidden."):e}await e.report.startTimerPromise("Resolution step",async()=>{await this.resolveEverything(e)}),await e.report.startTimerPromise("Post-resolution validation",{skipIfEmpty:!0},async()=>{for(const[,t]of this.configuration.packageExtensions)for(const[,r]of t)for(const t of r)if(t.userProvided){const r=V.pretty(this.configuration,t,V.Type.PACKAGE_EXTENSION);switch(t.status){case ee._u.Inactive:e.report.reportWarning(P.b.UNUSED_PACKAGE_EXTENSION,r+": No matching package in the dependency tree; you may not need this rule anymore.");break;case ee._u.Redundant:e.report.reportWarning(P.b.REDUNDANT_PACKAGE_EXTENSION,r+": This rule seems redundant when applied on the original package; the extension may have been applied upstream.")}}if(null!==a){const t=(0,o.qH)(a,this.generateLockfile());if(t!==a){const r=w(s,s,a,t);e.report.reportSeparator();for(const t of r.hunks){e.report.reportInfo(null,`@@ -${t.oldStart},${t.oldLines} +${t.newStart},${t.newLines} @@`);for(const r of t.lines)r.startsWith("+")?e.report.reportError(P.b.FROZEN_LOCKFILE_EXCEPTION,V.pretty(this.configuration,r,V.Type.ADDED)):r.startsWith("-")?e.report.reportError(P.b.FROZEN_LOCKFILE_EXCEPTION,V.pretty(this.configuration,r,V.Type.REMOVED)):e.report.reportInfo(null,V.pretty(this.configuration,r,"grey"))}throw e.report.reportSeparator(),new H.lk(P.b.FROZEN_LOCKFILE_EXCEPTION,"The lockfile would have been modified by this install, which is explicitly forbidden.")}}});for(const e of this.configuration.packageExtensions.values())for(const[,t]of e)for(const e of t)e.userProvided&&e.status===ee._u.Active&&(null===(r=x.VK.telemetry)||void 0===r||r.reportPackageExtension(V.json(e,V.Type.PACKAGE_EXTENSION)));await e.report.startTimerPromise("Fetch step",async()=>{await this.fetchEverything(e),(void 0===e.persistProject||e.persistProject)&&await this.cacheCleanup(e)}),(void 0===e.persistProject||e.persistProject)&&await this.persist(),await e.report.startTimerPromise("Link step",async()=>{const t=e.immutable?[...new Set(this.configuration.get("immutablePatterns"))].sort():[],r=await Promise.all(t.map(async e=>X.checksumPattern(e,{cwd:this.cwd})));await this.linkEverything(e);const A=await Promise.all(t.map(async e=>X.checksumPattern(e,{cwd:this.cwd})));for(let n=0;ne.afterAllInstalled,this,e)}generateLockfile(){const e=new Map;for(const[t,r]of this.storedResolutions.entries()){let A=e.get(r);A||e.set(r,A=new Set),A.add(t)}const t={__metadata:{version:4}};for(const[r,A]of e.entries()){const e=this.originalPackages.get(r);if(!e)continue;const n=[];for(const e of A){const t=this.storedDescriptors.get(e);if(!t)throw new Error("Assertion failed: The descriptor should have been registered");n.push(t)}const o=n.map(e=>O.stringifyDescriptor(e)).sort().join(", "),i=new Y.G;let s;i.version=e.linkType===ee.Un.HARD?e.version:"0.0.0-use.local",i.languageName=e.languageName,i.dependencies=new Map(e.dependencies),i.peerDependencies=new Map(e.peerDependencies),i.dependenciesMeta=new Map(e.dependenciesMeta),i.peerDependenciesMeta=new Map(e.peerDependenciesMeta),i.bin=new Map(e.bin);const a=this.storedChecksums.get(e.locatorHash);if(void 0!==a){const e=a.indexOf("/");if(-1===e)throw new Error("Assertion failed: Expecte the checksum to reference its cache key");const r=a.slice(0,e),A=a.slice(e+1);void 0===t.__metadata.cacheKey&&(t.__metadata.cacheKey=r),s=r===t.__metadata.cacheKey?A:a}t[o]={...i.exportTo({},{compatibilityMode:!1}),linkType:e.linkType.toLowerCase(),resolution:O.stringifyLocator(e),checksum:s}}return['# This file is generated by running "yarn install" inside your project.\n',"# Manual changes might be lost - proceed with caution!\n"].join("")+"\n"+(0,i.stringifySyml)(t)}async persistLockfile(){const e=n.y1.join(this.cwd,this.configuration.get("lockfileFilename")),t=this.generateLockfile();await A.xfs.changeFilePromise(e,t,{automaticNewlines:!0})}async persistInstallStateFile(){const e=[];for(const t of Object.values(oe))e.push(...t);const t=D()(this,e),r=await Ae(K().serialize(t)),o=this.configuration.get("installStatePath");await A.xfs.mkdirPromise(n.y1.dirname(o),{recursive:!0}),await A.xfs.changeFilePromise(o,r)}async restoreInstallState({restoreInstallersCustomData:e=!0,restoreResolutions:t=!0}={}){const r=this.configuration.get("installStatePath");if(!A.xfs.existsSync(r))return void(t&&await this.applyLightResolution());const n=await A.xfs.readFilePromise(r),o=K().deserialize(await ne(n));e&&void 0!==o.installersCustomData&&(this.installersCustomData=o.installersCustomData),t&&(o.lockFileChecksum===this.lockFileChecksum?(Object.assign(this,D()(o,oe.restoreResolutions)),this.refreshWorkspaceDependencies()):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new q.$}),await this.persistInstallStateFile()}async persist(){await this.persistLockfile();for(const e of this.workspacesByCwd.values())await e.persistManifest()}async cacheCleanup({cache:e,report:t}){const r=new Set([".gitignore"]);if(A.xfs.existsSync(e.cwd)&&(0,W.isFolderInside)(e.cwd,this.cwd)){for(const o of await A.xfs.readdirPromise(e.cwd)){if(r.has(o))continue;const i=n.y1.resolve(e.cwd,o);e.markedFiles.has(i)||(e.immutable?t.reportError(P.b.IMMUTABLE_CACHE,V.pretty(this.configuration,n.y1.basename(i),"magenta")+" appears to be unused and would marked for deletion, but the cache is immutable"):(t.reportInfo(P.b.UNUSED_CACHE_ENTRY,V.pretty(this.configuration,n.y1.basename(i),"magenta")+" appears to be unused - removing"),await A.xfs.removePromise(i)))}e.markedFiles.clear()}}}},52779:(e,t,r)=>{"use strict";r.d(t,{c:()=>s,O:()=>a});var A=r(53887),n=r.n(A),o=r(36545),i=r(54143);const s=/^(?!v)[a-z0-9-.]+$/i;class a{supportsDescriptor(e,t){return!!o.validRange(e.range)||!!s.test(e.range)}supportsLocator(e,t){return!!n().valid(e.reference)||!!s.test(e.reference)}shouldPersistResolution(e,t){return t.resolver.shouldPersistResolution(this.forwardLocator(e,t),t)}bindDescriptor(e,t,r){return r.resolver.bindDescriptor(this.forwardDescriptor(e,r),t,r)}getResolutionDependencies(e,t){return t.resolver.getResolutionDependencies(this.forwardDescriptor(e,t),t)}async getCandidates(e,t,r){return await r.resolver.getCandidates(this.forwardDescriptor(e,r),t,r)}async getSatisfying(e,t,r){return await r.resolver.getSatisfying(this.forwardDescriptor(e,r),t,r)}async resolve(e,t){const r=await t.resolver.resolve(this.forwardLocator(e,t),t);return i.renamePackage(r,e)}forwardDescriptor(e,t){return i.makeDescriptor(e,`${t.project.configuration.get("defaultProtocol")}${e.range}`)}forwardLocator(e,t){return i.makeLocator(e,`${t.project.configuration.get("defaultProtocol")}${e.reference}`)}}},35691:(e,t,r)=>{"use strict";r.d(t,{lk:()=>i,yG:()=>s});var A=r(92413),n=r(24304),o=r(92659);class i extends Error{constructor(e,t,r){super(t),this.reportExtra=r,this.reportCode=e}}class s{constructor(){this.reportedInfos=new Set,this.reportedWarnings=new Set,this.reportedErrors=new Set}static progressViaCounter(e){let t,r=0,A=new Promise(e=>{t=e});const n=e=>{const n=t;A=new Promise(e=>{t=e}),r=e,n()},o=async function*(){for(;ro,set:n,tick:(e=0)=>{n(r+1)}}}reportInfoOnce(e,t,r){const A=r&&r.key?r.key:t;this.reportedInfos.has(A)||(this.reportedInfos.add(A),this.reportInfo(e,t))}reportWarningOnce(e,t,r){const A=r&&r.key?r.key:t;this.reportedWarnings.has(A)||(this.reportedWarnings.add(A),this.reportWarning(e,t))}reportErrorOnce(e,t,r){var A;const n=r&&r.key?r.key:t;this.reportedErrors.has(n)||(this.reportedErrors.add(n),this.reportError(e,t),null===(A=null==r?void 0:r.reportExtra)||void 0===A||A.call(r,this))}reportExceptionOnce(e){!function(e){return void 0!==e.reportCode}(e)?this.reportErrorOnce(o.b.EXCEPTION,e.stack||e.message,{key:e}):this.reportErrorOnce(e.reportCode,e.message,{key:e,reportExtra:e.reportExtra})}createStreamReporter(e=null){const t=new A.PassThrough,r=new n.StringDecoder;let o="";return t.on("data",t=>{let A,n=r.write(t);do{if(A=n.indexOf("\n"),-1!==A){const t=o+n.substr(0,A);n=n.substr(A+1),o="",null!==e?this.reportInfo(null,`${e} ${t}`):this.reportInfo(null,t)}}while(-1!==A);o+=n}),t.on("end",()=>{const t=r.end();""!==t&&(null!==e?this.reportInfo(null,`${e} ${t}`):this.reportInfo(null,t))}),t}}},15815:(e,t,r)=>{"use strict";r.d(t,{Qw:()=>C,Pk:()=>f});var A=r(29148),n=r.n(A),o=r(92659),i=r(35691),s=r(71643);const a=["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"],c=new Set([o.b.FETCH_NOT_CACHED,o.b.UNUSED_CACHE_ENTRY]),g=process.env.GITHUB_ACTIONS?{start:e=>`::group::${e}\n`,end:e=>"::endgroup::\n"}:process.env.TRAVIS?{start:e=>`travis_fold:start:${e}\n`,end:e=>`travis_fold:end:${e}\n`}:process.env.GITLAB_CI?{start:e=>`section_start:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}\r${e}\n`,end:e=>`section_end:${Math.floor(Date.now()/1e3)}:${e.toLowerCase().replace(/\W+/g,"_")}\r`}:null,l=new Date,u=["iTerm.app","Apple_Terminal"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,h={patrick:{date:[17,3],chars:["🍀","🌱"],size:40},simba:{date:[19,7],chars:["🦁","🌴"],size:40},jack:{date:[31,10],chars:["🎃","🦇"],size:40},hogsfather:{date:[31,12],chars:["🎉","🎄"],size:40},default:{chars:["=","-"],size:80}},p=u&&Object.keys(h).find(e=>{const t=h[e];return!t.date||t.date[0]===l.getDate()&&t.date[1]===l.getMonth()+1})||"default";function d(e,{configuration:t,json:r}){const A=null===e?0:e,n=(0,o.i)(A);return r||null!==e?n:s.pretty(t,n,"grey")}function C(e,{configuration:t,json:r}){const A=d(e,{configuration:t,json:r});if(!t.get("enableHyperlinks"))return A;if(null===e||e===o.b.UNNAMED)return A;return`]8;;${`https://yarnpkg.com/advanced/error-codes#${A}---${o.b[e]}`.toLowerCase()}${A}]8;;`}class f extends i.yG{constructor({configuration:e,stdout:t,json:r=!1,includeFooter:A=!0,includeLogs:n=!r,includeInfos:o=n,includeWarnings:i=n,forgettableBufferSize:a=5,forgettableNames:g=new Set}){super(),this.uncommitted=new Set,this.cacheHitCount=0,this.cacheMissCount=0,this.warningCount=0,this.errorCount=0,this.startTime=Date.now(),this.indent=0,this.progress=new Map,this.progressTime=0,this.progressFrame=0,this.progressTimeout=null,this.forgettableLines=[],s.addLogFilterSupport(this,{configuration:e}),this.configuration=e,this.forgettableBufferSize=a,this.forgettableNames=new Set([...g,...c]),this.includeFooter=A,this.includeInfos=o,this.includeWarnings=i,this.json=r,this.stdout=t;const l=this.configuration.get("progressBarStyle")||p;if(!Object.prototype.hasOwnProperty.call(h,l))throw new Error("Assertion failed: Invalid progress bar style");this.progressStyle=h[l];const u="➤ YN0000: ┌ ".length,d=Math.max(0,Math.min(process.stdout.columns-u,80));this.progressMaxScaledSize=Math.floor(this.progressStyle.size*d/80)}static async start(e,t){const r=new this(e),A=process.emitWarning;process.emitWarning=(e,t)=>{if("string"!=typeof e){const r=e;e=r.message,t=null!=t?t:r.name}const A=void 0!==t?`${t}: ${e}`:e;r.reportWarning(o.b.UNNAMED,A)};try{await t(r)}catch(e){r.reportExceptionOnce(e)}finally{await r.finalize(),process.emitWarning=A}return r}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(e){this.cacheHitCount+=1}reportCacheMiss(e,t){this.cacheMissCount+=1,void 0===t||this.configuration.get("preferAggregateCacheInfo")||this.reportInfo(o.b.FETCH_NOT_CACHED,t)}startTimerSync(e,t,r){const A="function"==typeof t?t:r,n={committed:!1,action:()=>{this.reportInfo(null,"┌ "+e),this.indent+=1,null!==g&&this.stdout.write(g.start(e))}};("function"==typeof t?{}:t).skipIfEmpty?this.uncommitted.add(n):(n.action(),n.committed=!0);const o=Date.now();try{return A()}catch(e){throw this.reportExceptionOnce(e),e}finally{const t=Date.now();this.uncommitted.delete(n),n.committed&&(this.indent-=1,null!==g&&this.stdout.write(g.end(e)),this.configuration.get("enableTimers")&&t-o>200?this.reportInfo(null,"└ Completed in "+s.pretty(this.configuration,t-o,s.Type.DURATION)):this.reportInfo(null,"└ Completed"))}}async startTimerPromise(e,t,r){const A="function"==typeof t?t:r,n={committed:!1,action:()=>{this.reportInfo(null,"┌ "+e),this.indent+=1,null!==g&&this.stdout.write(g.start(e))}};("function"==typeof t?{}:t).skipIfEmpty?this.uncommitted.add(n):(n.action(),n.committed=!0);const o=Date.now();try{return await A()}catch(e){throw this.reportExceptionOnce(e),e}finally{const t=Date.now();this.uncommitted.delete(n),n.committed&&(this.indent-=1,null!==g&&this.stdout.write(g.end(e)),this.configuration.get("enableTimers")&&t-o>200?this.reportInfo(null,"└ Completed in "+s.pretty(this.configuration,t-o,s.Type.DURATION)):this.reportInfo(null,"└ Completed"))}}async startCacheReport(e){const t=this.configuration.get("preferAggregateCacheInfo")?{cacheHitCount:this.cacheHitCount,cacheMissCount:this.cacheMissCount}:null;try{return await e()}catch(e){throw this.reportExceptionOnce(e),e}finally{null!==t&&this.reportCacheChanges(t)}}reportSeparator(){0===this.indent?this.writeLineWithForgettableReset(""):this.reportInfo(null,"")}reportInfo(e,t){if(!this.includeInfos)return;this.commit();const r=`${s.pretty(this.configuration,"➤","blueBright")} ${this.formatNameWithHyperlink(e)}: ${this.formatIndent()}${t}`;if(this.json)this.reportJson({type:"info",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:t});else if(this.forgettableNames.has(e))if(this.forgettableLines.push(r),this.forgettableLines.length>this.forgettableBufferSize){for(;this.forgettableLines.length>this.forgettableBufferSize;)this.forgettableLines.shift();this.writeLines(this.forgettableLines,{truncate:!0})}else this.writeLine(r,{truncate:!0});else this.writeLineWithForgettableReset(r)}reportWarning(e,t){this.warningCount+=1,this.includeWarnings&&(this.commit(),this.json?this.reportJson({type:"warning",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:t}):this.writeLineWithForgettableReset(`${s.pretty(this.configuration,"➤","yellowBright")} ${this.formatNameWithHyperlink(e)}: ${this.formatIndent()}${t}`))}reportError(e,t){this.errorCount+=1,this.commit(),this.json?this.reportJson({type:"error",name:e,displayName:this.formatName(e),indent:this.formatIndent(),data:t}):this.writeLineWithForgettableReset(`${s.pretty(this.configuration,"➤","redBright")} ${this.formatNameWithHyperlink(e)}: ${this.formatIndent()}${t}`,{truncate:!1})}reportProgress(e){let t=!1;const r=Promise.resolve().then(async()=>{const r={progress:0,title:void 0};this.progress.set(e,{definition:r,lastScaledSize:-1}),this.refreshProgress(-1);for await(const{progress:A,title:n}of e)t||r.progress===A&&r.title===n||(r.progress=A,r.title=n,this.refreshProgress());A()}),A=()=>{t||(t=!0,this.progress.delete(e),this.refreshProgress(1))};return{...r,stop:A}}reportJson(e){this.json&&this.writeLineWithForgettableReset(""+JSON.stringify(e))}async finalize(){if(!this.includeFooter)return;let e="";e=this.errorCount>0?"Failed with errors":this.warningCount>0?"Done with warnings":"Done";const t=s.pretty(this.configuration,Date.now()-this.startTime,s.Type.DURATION),r=this.configuration.get("enableTimers")?`${e} in ${t}`:e;this.errorCount>0?this.reportError(o.b.UNNAMED,r):this.warningCount>0?this.reportWarning(o.b.UNNAMED,r):this.reportInfo(o.b.UNNAMED,r)}writeLine(e,{truncate:t}={}){this.clearProgress({clear:!0}),this.stdout.write(this.truncate(e,{truncate:t})+"\n"),this.writeProgress()}writeLineWithForgettableReset(e,{truncate:t}={}){this.forgettableLines=[],this.writeLine(e,{truncate:t})}writeLines(e,{truncate:t}={}){this.clearProgress({delta:e.length});for(const r of e)this.stdout.write(this.truncate(r,{truncate:t})+"\n");this.writeProgress()}reportCacheChanges({cacheHitCount:e,cacheMissCount:t}){const r=this.cacheHitCount-e,A=this.cacheMissCount-t;if(0===r&&0===A)return;let n="";this.cacheHitCount>1?n+=this.cacheHitCount+" packages were already cached":1===this.cacheHitCount?n+=" - one package was already cached":n+="No packages were cached",this.cacheHitCount>0?this.cacheMissCount>1?n+=`, ${this.cacheMissCount} had to be fetched`:1===this.cacheMissCount&&(n+=", one had to be fetched"):this.cacheMissCount>1?n+=` - ${this.cacheMissCount} packages had to be fetched`:1===this.cacheMissCount&&(n+=" - one package had to be fetched"),this.reportInfo(o.b.FETCH_NOT_CACHED,n)}commit(){const e=this.uncommitted;this.uncommitted=new Set;for(const t of e)t.committed=!0,t.action()}clearProgress({delta:e=0,clear:t=!1}){this.configuration.get("enableProgressBars")&&!this.json&&this.progress.size+e>0&&(this.stdout.write(`[${this.progress.size+e}A`),(e>0||t)&&this.stdout.write(""))}writeProgress(){if(!this.configuration.get("enableProgressBars")||this.json)return;if(null!==this.progressTimeout&&clearTimeout(this.progressTimeout),this.progressTimeout=null,0===this.progress.size)return;const e=Date.now();e-this.progressTime>80&&(this.progressFrame=(this.progressFrame+1)%a.length,this.progressTime=e);const t=a[this.progressFrame];for(const e of this.progress.values()){const r=this.progressStyle.chars[0].repeat(e.lastScaledSize),A=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-e.lastScaledSize);this.stdout.write(`${s.pretty(this.configuration,"➤","blueBright")} ${this.formatName(null)}: ${t} ${r}${A}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress()},80)}refreshProgress(e=0){let t=!1;if(0===this.progress.size)t=!0;else for(const e of this.progress.values()){const r=Math.trunc(this.progressMaxScaledSize*e.definition.progress),A=e.lastScaledSize;if(e.lastScaledSize=r,r!==A){t=!0;break}}t&&(this.clearProgress({delta:e}),this.writeProgress())}truncate(e,{truncate:t}={}){return this.configuration.get("enableProgressBars")||(t=!1),void 0===t&&(t=this.configuration.get("preferTruncatedLines")),t&&(e=n()(e,0,process.stdout.columns-1)),e}formatName(e){return d(e,{configuration:this.configuration,json:this.json})}formatNameWithHyperlink(e){return C(e,{configuration:this.configuration,json:this.json})}formatIndent(){return"│ ".repeat(this.indent)}}},81832:(e,t,r)=>{"use strict";r.d(t,{E:()=>a});var A,n=r(43896),o=r(46009),i=r(79669),s=r(73632);!function(e){e.VERSION="version",e.COMMAND_NAME="commandName",e.PLUGIN_NAME="pluginName",e.INSTALL_COUNT="installCount",e.PROJECT_COUNT="projectCount",e.WORKSPACE_COUNT="workspaceCount",e.DEPENDENCY_COUNT="dependencyCount",e.EXTENSION="packageExtension"}(A||(A={}));class a{constructor(e,t){this.values=new Map,this.hits=new Map,this.enumerators=new Map,this.configuration=e;const r=this.getRegistryPath();this.isNew=!n.xfs.existsSync(r),this.sendReport(t),this.startBuffer()}reportVersion(e){this.reportValue(A.VERSION,e)}reportCommandName(e){this.reportValue(A.COMMAND_NAME,e||"")}reportPluginName(e){this.reportValue(A.PLUGIN_NAME,e)}reportProject(e){this.reportEnumerator(A.PROJECT_COUNT,e)}reportInstall(e){this.reportHit(A.INSTALL_COUNT,e)}reportPackageExtension(e){this.reportValue(A.EXTENSION,e)}reportWorkspaceCount(e){this.reportValue(A.WORKSPACE_COUNT,String(e))}reportDependencyCount(e){this.reportValue(A.DEPENDENCY_COUNT,String(e))}reportValue(e,t){s.getSetWithDefault(this.values,e).add(t)}reportEnumerator(e,t){s.getSetWithDefault(this.enumerators,e).add(t)}reportHit(e,t="*"){const r=s.getMapWithDefault(this.hits,e),A=s.getFactoryWithDefault(r,t,()=>0);r.set(t,A+1)}getRegistryPath(){const e=this.configuration.get("globalFolder");return o.y1.join(e,"telemetry.json")}sendReport(e){var t,r,A;const s=this.getRegistryPath();let a;try{a=n.xfs.readJsonSync(s)}catch(e){a={}}const c=Date.now(),g=24*this.configuration.get("telemetryInterval")*60*60*1e3,l=(null!==(t=a.lastUpdate)&&void 0!==t?t:c+g+Math.floor(g*Math.random()))+g;if(!(l>c&&null!=a.lastUpdate)){try{n.xfs.mkdirSync(o.y1.dirname(s),{recursive:!0}),n.xfs.writeJsonSync(s,{lastUpdate:c})}catch(e){return}if(!(l>c)&&a.blocks)for(const[t,n]of Object.entries(null!==(r=a.blocks)&&void 0!==r?r:{})){if(0===Object.keys(n).length)continue;const r=n;r.userId=t;for(const e of Object.keys(null!==(A=r.enumerators)&&void 0!==A?A:{}))r.enumerators[e]=r.enumerators[e].length;const o=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`;i.post(o,r,{configuration:this.configuration}).catch(()=>{})}}}applyChanges(){var e,t,r,A,i,s,a,c,g;const l=this.getRegistryPath();let u;try{u=n.xfs.readJsonSync(l)}catch(e){u={}}const h=null!==(e=this.configuration.get("telemetryUserId"))&&void 0!==e?e:"*",p=u.blocks=null!==(t=u.blocks)&&void 0!==t?t:{},d=p[h]=null!==(r=p[h])&&void 0!==r?r:{};for(const e of this.hits.keys()){const t=d.hits=null!==(A=d.hits)&&void 0!==A?A:{},r=t[e]=null!==(i=t[e])&&void 0!==i?i:{};for(const[t,A]of this.hits.get(e))r[t]=(null!==(s=r[t])&&void 0!==s?s:0)+A}for(const e of["values","enumerators"])for(const t of this[e].keys()){const r=d[e]=null!==(a=d[e])&&void 0!==a?a:{};r[t]=[...new Set([...null!==(c=r[t])&&void 0!==c?c:[],...null!==(g=this[e].get(t))&&void 0!==g?g:[]])]}n.xfs.mkdirSync(o.y1.dirname(l),{recursive:!0}),n.xfs.writeJsonSync(l,u)}startBuffer(){process.on("exit",()=>{try{this.applyChanges()}catch(e){}})}}},33720:(e,t,r)=>{"use strict";r.d(t,{$:()=>n});var A=r(35691);class n extends A.yG{reportCacheHit(e){}reportCacheMiss(e){}startTimerSync(e,t,r){return("function"==typeof t?t:r)()}async startTimerPromise(e,t,r){const A="function"==typeof t?t:r;return await A()}async startCacheReport(e){return await e()}reportSeparator(){}reportInfo(e,t){}reportWarning(e,t){}reportError(e,t){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(const{}of e);}),stop:()=>{}}}reportJson(e){}async finalize(){}}},60895:(e,t,r)=>{"use strict";r.d(t,{N:()=>s});var A=r(17674),n=r(14626),o=r(46009),i=r(54143);class s{supports(e){return!!e.reference.startsWith("virtual:")}getLocalPath(e,t){const r=e.reference.indexOf("#");if(-1===r)throw new Error("Invalid virtual package reference");const A=e.reference.slice(r+1),n=i.makeLocator(e,A);return t.fetcher.getLocalPath(n,t)}async fetch(e,t){const r=e.reference.indexOf("#");if(-1===r)throw new Error("Invalid virtual package reference");const A=e.reference.slice(r+1),n=i.makeLocator(e,A),o=await t.fetcher.fetch(n,t);return await this.ensureVirtualLink(e,o,t)}getLocatorFilename(e){return i.slugifyLocator(e)}async ensureVirtualLink(e,t,r){const i=t.packageFs.getRealPath(),s=r.project.configuration.get("virtualFolder"),a=this.getLocatorFilename(e),c=A.p.makeVirtualPath(s,a,i),g=new n.K(c,{baseFs:t.packageFs,pathUtils:o.y1});return{...t,packageFs:g}}}},17722:(e,t,r)=>{"use strict";r.d(t,{j:()=>h});var A=r(43896),n=r(46009),o=r(58592),i=r.n(o),s=r(53887),a=r.n(s),c=r(46611),g=r(94538),l=r(20624),u=r(54143);class h{constructor(e,{project:t}){this.workspacesCwds=new Set,this.dependencies=new Map,this.project=t,this.cwd=e}async setup(){this.manifest=A.xfs.existsSync(n.y1.join(this.cwd,c.G.fileName))?await c.G.find(this.cwd):new c.G,this.relativeCwd=n.y1.relative(this.project.cwd,this.cwd)||n.LZ.dot;const e=this.manifest.name?this.manifest.name:u.makeIdent(null,`${this.computeCandidateName()}-${l.makeHash(this.relativeCwd).substr(0,6)}`),t=this.manifest.version?this.manifest.version:"0.0.0";this.locator=u.makeLocator(e,t),this.anchoredDescriptor=u.makeDescriptor(this.locator,`${g.d.protocol}${this.relativeCwd}`),this.anchoredLocator=u.makeLocator(this.locator,`${g.d.protocol}${this.relativeCwd}`);const r=this.manifest.workspaceDefinitions.map(({pattern:e})=>e),o=await i()(r,{absolute:!0,cwd:n.cS.fromPortablePath(this.cwd),expandDirectories:!1,onlyDirectories:!0,onlyFiles:!1,ignore:["**/node_modules","**/.git","**/.yarn"]});o.sort();for(const e of o){const t=n.y1.resolve(this.cwd,n.cS.toPortablePath(e));A.xfs.existsSync(n.y1.join(t,"package.json"))&&this.workspacesCwds.add(t)}}accepts(e){const t=e.indexOf(":"),r=-1!==t?e.slice(0,t+1):null,A=-1!==t?e.slice(t+1):e;return r===g.d.protocol&&n.y1.normalize(A)===this.relativeCwd||(r===g.d.protocol&&"*"===A||!!a().validRange(A)&&(r===g.d.protocol?a().satisfies(null!==this.manifest.version?this.manifest.version:"0.0.0",A):!!this.project.configuration.get("enableTransparentWorkspaces")&&(null!==this.manifest.version&&a().satisfies(this.manifest.version,A))))}computeCandidateName(){return this.cwd===this.project.cwd?"root-workspace":""+n.y1.basename(this.cwd)||"unnamed-workspace"}async persistManifest(){const e={};this.manifest.exportTo(e);const t=n.y1.join(this.cwd,c.G.fileName),r=JSON.stringify(e,null,this.manifest.indent)+"\n";await A.xfs.changeFilePromise(t,r,{automaticNewlines:!0})}}},94538:(e,t,r)=>{"use strict";r.d(t,{d:()=>n});var A=r(32485);class n{supportsDescriptor(e,t){if(e.range.startsWith(n.protocol))return!0;return null!==t.project.tryWorkspaceByDescriptor(e)}supportsLocator(e,t){return!!e.reference.startsWith(n.protocol)}shouldPersistResolution(e,t){return!1}bindDescriptor(e,t,r){return e}getResolutionDependencies(e,t){return[]}async getCandidates(e,t,r){return[r.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,t,r){return null}async resolve(e,t){const r=t.project.getWorkspaceByCwd(e.reference.slice(n.protocol.length));return{...e,version:r.manifest.version||"0.0.0",languageName:"unknown",linkType:A.Un.SOFT,dependencies:new Map([...r.manifest.dependencies,...r.manifest.devDependencies]),peerDependencies:new Map([...r.manifest.peerDependencies]),dependenciesMeta:r.manifest.dependenciesMeta,peerDependenciesMeta:r.manifest.peerDependenciesMeta,bin:r.manifest.bin}}}n.protocol="workspace:"},59355:(e,t,r)=>{"use strict";r.d(t,{o:()=>A});const A="2.4.1"},6220:(e,t,r)=>{"use strict";r.r(t),r.d(t,{EndStrategy:()=>A,pipevp:()=>g,execvp:()=>l});var A,n=r(46009),o=r(67566),i=r.n(o);function s(e){return null!==e&&"number"==typeof e.fd}function a(){}!function(e){e[e.Never=0]="Never",e[e.ErrorCode=1]="ErrorCode",e[e.Always=2]="Always"}(A||(A={}));let c=0;async function g(e,t,{cwd:r,env:o=process.env,strict:g=!1,stdin:l=null,stdout:u,stderr:p,end:d=A.Always}){const C=["pipe","pipe","pipe"];null===l?C[0]="ignore":s(l)&&(C[0]=l),s(u)&&(C[1]=u),s(p)&&(C[2]=p),0==c++&&process.on("SIGINT",a);const f=i()(e,t,{cwd:n.cS.fromPortablePath(r),env:{...o,PWD:n.cS.fromPortablePath(r)},stdio:C});s(l)||null===l||l.pipe(f.stdin),s(u)||f.stdout.pipe(u,{end:!1}),s(p)||f.stderr.pipe(p,{end:!1});const I=()=>{for(const e of new Set([u,p]))s(e)||e.end()};return new Promise((t,r)=>{f.on("error",e=>{0==--c&&process.off("SIGINT",a),d!==A.Always&&d!==A.ErrorCode||I(),r(e)}),f.on("close",(n,o)=>{0==--c&&process.off("SIGINT",a),(d===A.Always||d===A.ErrorCode&&n>0)&&I(),0!==n&&g?r(null!==n?new Error(`Child "${e}" exited with exit code ${n}`):new Error(`Child "${e}" exited with signal ${o}`)):t({code:h(n,o)})})})}async function l(e,t,{cwd:r,env:A=process.env,encoding:o="utf8",strict:s=!1}){const a=["ignore","pipe","pipe"],c=[],g=[],l=n.cS.fromPortablePath(r);void 0!==A.PWD&&(A={...A,PWD:l});const u=i()(e,t,{cwd:l,env:A,stdio:a});return u.stdout.on("data",e=>{c.push(e)}),u.stderr.on("data",e=>{g.push(e)}),await new Promise((t,r)=>{u.on("error",r),u.on("close",(A,n)=>{const i="buffer"===o?Buffer.concat(c):Buffer.concat(c).toString(o),a="buffer"===o?Buffer.concat(g):Buffer.concat(g).toString(o);0!==A&&s?r(Object.assign(new Error(`Child "${e}" exited with exit code ${A}\n\n${a}`),{code:h(A,n),stdout:i,stderr:a})):t({code:h(A,n),stdout:i,stderr:a})})})}const u=new Map([["SIGINT",2],["SIGQUIT",3],["SIGKILL",9],["SIGTERM",15]]);function h(e,t){const r=u.get(t);return void 0!==r?128+r:null!=e?e:1}},81111:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getDefaultGlobalFolder:()=>o,getHomeFolder:()=>i,isFolderInside:()=>s});var A=r(46009),n=r(12087);function o(){if("win32"===process.platform){const e=A.cS.toPortablePath(process.env.LOCALAPPDATA||A.cS.join((0,n.homedir)(),"AppData","Local"));return A.y1.resolve(e,"Yarn/Berry")}if(process.env.XDG_DATA_HOME){const e=A.cS.toPortablePath(process.env.XDG_DATA_HOME);return A.y1.resolve(e,"yarn/berry")}return A.y1.resolve(i(),".yarn/berry")}function i(){return A.cS.toPortablePath((0,n.homedir)()||"/usr/local/share")}function s(e,t){const r=A.y1.relative(t,e);return r&&!r.startsWith("..")&&!A.y1.isAbsolute(r)}},71643:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Type:()=>A,Style:()=>n,supportsColor:()=>h,supportsHyperlinks:()=>p,tuple:()=>I,applyStyle:()=>E,applyColor:()=>B,pretty:()=>y,prettyList:()=>m,json:()=>w,mark:()=>Q,LogLevel:()=>D,addLogFilterSupport:()=>b});var A,n,o=r(46009),i=r(95882),s=r.n(i),a=r(92659),c=r(73632),g=r(54143),l=r(32485);!function(e){e.NO_HINT="NO_HINT",e.NULL="NULL",e.SCOPE="SCOPE",e.NAME="NAME",e.RANGE="RANGE",e.REFERENCE="REFERENCE",e.NUMBER="NUMBER",e.PATH="PATH",e.URL="URL",e.ADDED="ADDED",e.REMOVED="REMOVED",e.CODE="CODE",e.DURATION="DURATION",e.SIZE="SIZE",e.IDENT="IDENT",e.DESCRIPTOR="DESCRIPTOR",e.LOCATOR="LOCATOR",e.RESOLUTION="RESOLUTION",e.DEPENDENT="DEPENDENT",e.PACKAGE_EXTENSION="PACKAGE_EXTENSION"}(A||(A={})),function(e){e[e.BOLD=2]="BOLD"}(n||(n={}));const u=process.env.GITHUB_ACTIONS?{level:2}:s().supportsColor?{level:s().supportsColor.level}:{level:0},h=0!==u.level,p=h&&!process.env.GITHUB_ACTIONS,d=new(s().Instance)(u),C=new Map([[A.NO_HINT,null],[A.NULL,["#a853b5",129]],[A.SCOPE,["#d75f00",166]],[A.NAME,["#d7875f",173]],[A.RANGE,["#00afaf",37]],[A.REFERENCE,["#87afff",111]],[A.NUMBER,["#ffd700",220]],[A.PATH,["#d75fd7",170]],[A.URL,["#d75fd7",170]],[A.ADDED,["#5faf00",70]],[A.REMOVED,["#d70000",160]],[A.CODE,["#87afff",111]],[A.SIZE,["#ffd700",220]]]),f={[A.NUMBER]:{pretty:(e,t)=>""+t,json:e=>e},[A.IDENT]:{pretty:(e,t)=>g.prettyIdent(e,t),json:e=>g.stringifyIdent(e)},[A.LOCATOR]:{pretty:(e,t)=>g.prettyLocator(e,t),json:e=>g.stringifyLocator(e)},[A.DESCRIPTOR]:{pretty:(e,t)=>g.prettyDescriptor(e,t),json:e=>g.stringifyDescriptor(e)},[A.RESOLUTION]:{pretty:(e,{descriptor:t,locator:r})=>g.prettyResolution(e,t,r),json:({descriptor:e,locator:t})=>({descriptor:g.stringifyDescriptor(e),locator:null!==t?g.stringifyLocator(t):null})},[A.DEPENDENT]:{pretty:(e,{locator:t,descriptor:r})=>g.prettyDependent(e,t,r),json:({locator:e,descriptor:t})=>({locator:g.stringifyLocator(e),descriptor:g.stringifyDescriptor(t)})},[A.PACKAGE_EXTENSION]:{pretty:(e,t)=>{switch(t.type){case l.HN.Dependency:return`${g.prettyIdent(e,t.parentDescriptor)} ➤ ${B(e,"dependencies",A.CODE)} ➤ ${g.prettyIdent(e,t.descriptor)}`;case l.HN.PeerDependency:return`${g.prettyIdent(e,t.parentDescriptor)} ➤ ${B(e,"peerDependencies",A.CODE)} ➤ ${g.prettyIdent(e,t.descriptor)}`;case l.HN.PeerDependencyMeta:return`${g.prettyIdent(e,t.parentDescriptor)} ➤ ${B(e,"peerDependenciesMeta",A.CODE)} ➤ ${g.prettyIdent(e,g.parseIdent(t.selector))} ➤ ${B(e,t.key,A.CODE)}`;default:throw new Error("Assertion failed: Unsupported package extension type: "+t.type)}},json:e=>{switch(e.type){case l.HN.Dependency:return`${g.stringifyIdent(e.parentDescriptor)} > ${g.stringifyIdent(e.descriptor)}`;case l.HN.PeerDependency:return`${g.stringifyIdent(e.parentDescriptor)} >> ${g.stringifyIdent(e.descriptor)}`;case l.HN.PeerDependencyMeta:return`${g.stringifyIdent(e.parentDescriptor)} >> ${e.selector} / ${e.key}`;default:throw new Error("Assertion failed: Unsupported package extension type: "+e.type)}}},[A.DURATION]:{pretty:(e,t)=>{if(t>6e4){const e=Math.floor(t/1e3/60),r=Math.ceil((t-60*e*1e3)/1e3);return 0===r?e+"m":`${e}m ${r}s`}{const e=Math.floor(t/1e3),r=t-1e3*e;return 0===r?e+"s":`${e}s ${r}ms`}},json:e=>e},[A.SIZE]:{pretty:(e,t)=>{const r=["KB","MB","GB","TB"];let n=r.length;for(;n>1&&t<1024**n;)n-=1;const o=1024**n;return B(e,`${Math.floor(100*t/o)/100} ${r[n-1]}`,A.NUMBER)},json:e=>e},[A.PATH]:{pretty:(e,t)=>B(e,o.cS.fromPortablePath(t),A.PATH),json:e=>o.cS.fromPortablePath(e)}};function I(e,t){return[t,e]}function E(e,t,r){return e.get("enableColors")?(r&n.BOLD&&(t=s().bold(t)),t):t}function B(e,t,r){if(!e.get("enableColors"))return t;const A=C.get(r);if(null===A)return t;const n=void 0===A?r:u.level>=3?A[0]:A[1],o="number"==typeof n?d.ansi256(n):n.startsWith("#")?d.hex(n):d[n];if("function"!=typeof o)throw new Error("Invalid format type "+n);return o(t)}function y(e,t,r){if(null===t)return B(e,"null",A.NULL);if(Object.prototype.hasOwnProperty.call(f,r)){return f[r].pretty(e,t)}if("string"!=typeof t)throw new Error("Assertion failed: Expected the value to be a string, got "+typeof t);return B(e,t,r)}function m(e,t,r,{separator:A=", "}={}){return[...t].map(t=>y(e,t,r)).join(A)}function w(e,t){if(null===e)return null;if(Object.prototype.hasOwnProperty.call(f,t))return c.overrideType(t),f[t].json(e);if("string"!=typeof e)throw new Error("Assertion failed: Expected the value to be a string, got "+typeof e);return e}function Q(e){return{Check:B(e,"✓","green"),Cross:B(e,"✘","red"),Question:B(e,"?","cyan")}}var D;function b(e,{configuration:t}){const r=t.get("logFilters"),A=new Map,n=new Map;for(const e of r){const t=e.get("level");if(void 0===t)continue;const r=e.get("code");void 0!==r&&A.set(r,t);const o=e.get("text");void 0!==o&&n.set(o,t)}const o=e.reportInfo,i=e.reportWarning,c=e.reportError,g=function(e,t,r,g){switch(((e,t,r)=>{if(null===e||e===a.b.UNNAMED)return r;if(n.size>0){const e=n.get(s().reset(t));if(void 0!==e)return null!=e?e:r}if(A.size>0){const t=A.get((0,a.i)(e));if(void 0!==t)return null!=t?t:r}return r})(t,r,g)){case D.Info:o.call(e,t,r);break;case D.Warning:i.call(e,null!=t?t:a.b.UNNAMED,r);break;case D.Error:c.call(e,null!=t?t:a.b.UNNAMED,r)}};e.reportInfo=function(...e){return g(this,...e,D.Info)},e.reportWarning=function(...e){return g(this,...e,D.Warning)},e.reportError=function(...e){return g(this,...e,D.Error)}}!function(e){e.Error="error",e.Warning="warning",e.Info="info",e.Discard="discard"}(D||(D={}))},20624:(e,t,r)=>{"use strict";r.r(t),r.d(t,{makeHash:()=>a,checksumFile:()=>c,checksumPattern:()=>g});var A=r(43896),n=r(46009),o=r(76417),i=r(58592),s=r.n(i);function a(...e){const t=(0,o.createHash)("sha512");for(const r of e)t.update(r||"");return t.digest("hex")}function c(e){return new Promise((t,r)=>{const n=(0,o.createHash)("sha512"),i=A.xfs.createReadStream(e);i.on("data",e=>{n.update(e)}),i.on("error",e=>{r(e)}),i.on("end",()=>{t(n.digest("hex"))})})}async function g(e,{cwd:t}){const r=(await s()(e,{cwd:n.cS.fromPortablePath(t),expandDirectories:!1,onlyDirectories:!0,unique:!0})).map(e=>e+"/**/*"),i=await s()([e,...r],{cwd:n.cS.fromPortablePath(t),expandDirectories:!1,onlyFiles:!1,unique:!0});i.sort();const a=await Promise.all(i.map(async e=>{const t=[Buffer.from(e)],r=n.cS.toPortablePath(e),o=await A.xfs.lstatPromise(r);return o.isSymbolicLink()?t.push(Buffer.from(await A.xfs.readlinkPromise(r))):o.isFile()&&t.push(await A.xfs.readFilePromise(r)),t.join("\0")})),c=(0,o.createHash)("sha512");for(const e of a)c.update(e);return c.digest("hex")}},79669:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getNetworkSettings:()=>d,Method:()=>C,request:()=>f,get:()=>I,put:()=>E,post:()=>B,del:()=>y});var A=r(43896),n=r(57211),o=r(98605),i=r(2401),s=r.n(i),a=r(98161),c=r(78835);const g=new Map,l=new Map,u=new o.Agent({keepAlive:!0}),h=new n.Agent({keepAlive:!0});function p(e){const t=new c.URL(e),r={host:t.hostname,headers:{}};return t.port&&(r.port=Number(t.port)),{proxy:r}}function d(e,t){const r=[...t.configuration.get("networkSettings")].sort(([e],[t])=>t.length-e.length),A={enableNetwork:void 0,caFilePath:void 0,httpProxy:void 0,httpsProxy:void 0},n=Object.keys(A),o=new c.URL(e);for(const[e,t]of r)if(s().isMatch(o.hostname,e))for(const e of n){const r=t.get(e);null!==r&&void 0===A[e]&&(A[e]=r)}for(const e of n)void 0===A[e]&&(A[e]=t.configuration.get(e));return A}var C;async function f(e,t,{configuration:n,headers:o,json:i,jsonRequest:g=i,jsonResponse:f=i,method:I=C.GET}){const E=d(e,{configuration:n});if(!1===E.enableNetwork)throw new Error(`Request to '${e}' has been blocked because of your configuration settings`);const B=new c.URL(e);if("http:"===B.protocol&&!s().isMatch(B.hostname,n.get("unsafeHttpWhitelist")))throw new Error(`Unsafe http requests must be explicitly whitelisted in your configuration (${B.hostname})`);const y={agent:{http:E.httpProxy?a.httpOverHttp(p(E.httpProxy)):u,https:E.httpsProxy?a.httpsOverHttp(p(E.httpsProxy)):h},headers:o,method:I};y.responseType=f?"json":"buffer",null!==t&&(Buffer.isBuffer(t)||!g&&"string"==typeof t?y.body=t:y.json=t);const m=n.get("httpTimeout"),w=n.get("httpRetry"),Q=n.get("enableStrictSsl"),D=E.caFilePath,{default:b}=await Promise.resolve().then(r.t.bind(r,48722,7)),v=D?await async function(e){let t=l.get(e);return t||(t=A.xfs.readFilePromise(e).then(t=>(l.set(e,t),t)),l.set(e,t)),t}(D):void 0,S=b.extend({timeout:{socket:m},retry:w,https:{rejectUnauthorized:Q,certificateAuthority:v},...y});return n.getLimit("networkConcurrency")(()=>S(e))}async function I(e,{configuration:t,json:r,jsonResponse:A=r,...n}){let o=g.get(e);return o||(o=f(e,null,{configuration:t,...n}).then(t=>(g.set(e,t.body),t.body)),g.set(e,o)),!1===Buffer.isBuffer(o)&&(o=await o),A?JSON.parse(o.toString()):o}async function E(e,t,r){return(await f(e,t,{...r,method:C.PUT})).body}async function B(e,t,r){return(await f(e,t,{...r,method:C.POST})).body}async function y(e,t){return(await f(e,null,{...t,method:C.DELETE})).body}!function(e){e.GET="GET",e.PUT="PUT",e.POST="POST",e.DELETE="DELETE"}(C||(C={}))},53836:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Cache:()=>p.C,DEFAULT_RC_FILENAME:()=>d.tr,DEFAULT_LOCK_FILENAME:()=>d.nh,Configuration:()=>d.VK,FormatType:()=>d.a5,ProjectLookup:()=>d.EW,SettingsType:()=>d.a2,BuildType:()=>C.k,LightReport:()=>f.h,Manifest:()=>I.G,MessageName:()=>E.b,Project:()=>B.I,TAG_REGEXP:()=>y.c,ReportError:()=>m.lk,Report:()=>m.yG,StreamReport:()=>w.Pk,TelemetryManager:()=>Q.E,ThrowReport:()=>D.$,VirtualFetcher:()=>b.N,WorkspaceResolver:()=>v.d,Workspace:()=>S.j,YarnVersion:()=>k.o,LinkType:()=>N.Un,PackageExtensionType:()=>N.HN,PackageExtensionStatus:()=>N._u,hashUtils:()=>i,httpUtils:()=>s,execUtils:()=>A,folderUtils:()=>n,formatUtils:()=>o,miscUtils:()=>a,scriptUtils:()=>c,semverUtils:()=>g,structUtils:()=>l,tgzUtils:()=>u,treeUtils:()=>h});var A=r(6220),n=r(81111),o=r(71643),i=r(20624),s=r(79669),a=r(73632),c=r(63088),g=r(36545),l=r(54143),u=r(72785),h=r(85875),p=r(28148),d=r(39922),C=r(92409),f=r(62152),I=r(46611),E=r(92659),B=r(85824),y=r(52779),m=r(35691),w=r(15815),Q=r(81832),D=r(33720),b=r(60895),v=r(94538),S=r(17722),k=r(59355),N=r(32485)},73632:(e,t,r)=>{"use strict";r.r(t),r.d(t,{escapeRegExp:()=>a,overrideType:()=>c,assertNever:()=>g,validateEnum:()=>l,mapAndFilter:()=>u,mapAndFind:()=>p,isIndexableObject:()=>C,convertMapsToIndexableObjects:()=>f,getFactoryWithDefault:()=>I,getArrayWithDefault:()=>E,getSetWithDefault:()=>B,getMapWithDefault:()=>y,releaseAfterUseAsync:()=>m,prettifyAsyncErrors:()=>w,prettifySyncErrors:()=>Q,bufferStream:()=>D,BufferStream:()=>b,DefaultStream:()=>v,dynamicRequire:()=>S,dynamicRequireNoCache:()=>k,sortMap:()=>N,buildIgnorePattern:()=>F,replaceEnvVariables:()=>K,parseBoolean:()=>M,parseOptionalBoolean:()=>R,tryParseOptionalBoolean:()=>x});var A=r(46009),n=r(40822),o=r(2401),i=r.n(o),s=r(92413);function a(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c(e){}function g(e){throw new Error(`Assertion failed: Unexpected object '${e}'`)}function l(e,t){if(!Object.values(e).includes(t))throw new Error("Assertion failed: Invalid value for enumeration");return t}function u(e,t){const r=[];for(const A of e){const e=t(A);e!==h&&r.push(e)}return r}e=r.hmd(e);const h=Symbol();function p(e,t){for(const r of e){const e=t(r);if(e!==d)return e}}u.skip=h;const d=Symbol();function C(e){return"object"==typeof e&&null!==e}function f(e){if(e instanceof Map&&(e=Object.fromEntries(e)),C(e))for(const t of Object.keys(e)){const r=e[t];C(r)&&(e[t]=f(r))}return e}function I(e,t,r){let A=e.get(t);return void 0===A&&e.set(t,A=r()),A}function E(e,t){let r=e.get(t);return void 0===r&&e.set(t,r=[]),r}function B(e,t){let r=e.get(t);return void 0===r&&e.set(t,r=new Set),r}function y(e,t){let r=e.get(t);return void 0===r&&e.set(t,r=new Map),r}async function m(e,t){if(null==t)return await e();try{return await e()}finally{await t()}}async function w(e,t){try{return await e()}catch(e){throw e.message=t(e.message),e}}function Q(e,t){try{return e()}catch(e){throw e.message=t(e.message),e}}async function D(e){return await new Promise((t,r)=>{const A=[];e.on("error",e=>{r(e)}),e.on("data",e=>{A.push(e)}),e.on("end",()=>{t(Buffer.concat(A))})})}p.skip=d;class b extends s.Transform{constructor(){super(...arguments),this.chunks=[]}_transform(e,t,r){if("buffer"!==t||!Buffer.isBuffer(e))throw new Error("Assertion failed: BufferStream only accept buffers");this.chunks.push(e),r(null,null)}_flush(e){e(null,Buffer.concat(this.chunks))}}class v extends s.Transform{constructor(e=Buffer.alloc(0)){super(),this.active=!0,this.ifEmpty=e}_transform(e,t,r){if("buffer"!==t||!Buffer.isBuffer(e))throw new Error("Assertion failed: DefaultStream only accept buffers");this.active=!1,r(null,e)}_flush(e){this.active&&this.ifEmpty.length>0&&e(null,this.ifEmpty)}}function S(e){return"undefined"!=typeof require?require(e):r(32178)(e)}function k(t){const n=A.cS.fromPortablePath(t),o=r.c[n];let i;delete r.c[n];try{i=S(n);const t=r.c[n],A=e.children.indexOf(t);-1!==A&&e.children.splice(A,1)}finally{r.c[n]=o}return i}function N(e,t){const r=Array.from(e);Array.isArray(t)||(t=[t]);const A=[];for(const e of t)A.push(r.map(t=>e(t)));const n=r.map((e,t)=>t);return n.sort((e,t)=>{for(const r of A){const A=r[e]r[t]?1:0;if(0!==A)return A}return 0}),n.map(e=>r[e])}function F(e){return 0===e.length?null:e.map(e=>`(${i().makeRe(e,{windows:!1}).source})`).join("|")}function K(e,{env:t}){return e.replace(/\${(?[\d\w_]+)(?:)?(?:-(?[^}]*))?}/g,(...e)=>{const{variableName:r,colon:A,fallback:o}=e[e.length-1],i=Object.prototype.hasOwnProperty.call(t,r),s=t[r];if(s)return s;if(i&&!A)return s;if(null!=o)return o;throw new n.UsageError(`Environment variable not found (${r})`)})}function M(e){switch(e){case"true":case"1":case 1:case!0:return!0;case"false":case"0":case 0:case!1:return!1;default:throw new Error(`Couldn't parse "${e}" as a boolean`)}}function R(e){return void 0===e?e:M(e)}function x(e){try{return R(e)}catch(e){return null}}},63088:(e,t,r)=>{"use strict";r.r(t),r.d(t,{makeScriptEnv:()=>b,prepareExternalProject:()=>S,hasPackageScript:()=>k,executePackageScript:()=>N,executePackageShellcode:()=>F,executeWorkspaceScript:()=>M,hasWorkspaceScript:()=>R,executeWorkspaceLifecycleScript:()=>x,maybeExecuteWorkspaceLifecycleScript:()=>L,getPackageAccessibleBinaries:()=>P,getWorkspaceAccessibleBinaries:()=>O,executePackageAccessibleBinary:()=>U,executeWorkspaceAccessibleBinary:()=>T});var A,n=r(46009),o=r(53660),i=r(75448),s=r(43896),a=r(65281),c=r(76756),g=r(50730),l=r(61814),u=r.n(l),h=r(61578),p=r.n(h),d=r(92413),C=r(46611),f=r(92659),I=r(35691),E=r(15815),B=r(59355),y=r(6220),m=r(71643),w=r(73632),Q=r(54143);async function D(e,t,r,A=[]){"win32"===process.platform&&await Promise.all([s.xfs.writeFilePromise(n.y1.format({dir:e,name:t,ext:".exe"}),(0,g.O9)()),s.xfs.writeFilePromise(n.y1.format({dir:e,name:t,ext:".exe.info"}),[r,...A].join("\n")),s.xfs.writeFilePromise(n.y1.format({dir:e,name:t,ext:".cmd"}),`@"${r}" ${A.map(e=>`"${e.replace('"','""')}"`).join(" ")} %*\n`)]),await s.xfs.writeFilePromise(n.y1.join(e,t),`#!/bin/sh\nexec "${r}" ${A.map(e=>`'${e.replace(/'/g,"'\"'\"'")}'`).join(" ")} "$@"\n`),await s.xfs.chmodPromise(n.y1.join(e,t),493)}async function b({project:e,binFolder:t,lifecycleScript:r}){const A={};for(const[e,t]of Object.entries(process.env))void 0!==t&&(A["path"!==e.toLowerCase()?e:"PATH"]=t);const o=n.cS.fromPortablePath(t);A.BERRY_BIN_FOLDER=n.cS.fromPortablePath(o),await D(t,"node",process.execPath),null!==B.o&&(await D(t,"run",process.execPath,[process.argv[1],"run"]),await D(t,"yarn",process.execPath,[process.argv[1]]),await D(t,"yarnpkg",process.execPath,[process.argv[1]]),await D(t,"node-gyp",process.execPath,[process.argv[1],"run","--top-level","node-gyp"])),e&&(A.INIT_CWD=n.cS.fromPortablePath(e.configuration.startingCwd)),A.PATH=A.PATH?`${o}${n.cS.delimiter}${A.PATH}`:""+o,A.npm_execpath=`${o}${n.cS.sep}yarn`,A.npm_node_execpath=`${o}${n.cS.sep}node`;const i=null!==B.o?"yarn/"+B.o:`yarn/${w.dynamicRequire("@yarnpkg/core").version}-core`;return A.npm_config_user_agent=`${i} npm/? node/${process.versions.node} ${process.platform} ${process.arch}`,r&&(A.npm_lifecycle_event=r),e&&await e.configuration.triggerHook(e=>e.setupScriptEnvironment,e,A,async(e,r,A)=>await D(t,(0,n.Zu)(e),r,A)),A}!function(e){e.Yarn1="Yarn Classic",e.Yarn2="Yarn",e.Npm="npm",e.Pnpm="pnpm"}(A||(A={}));const v=p()(2);async function S(e,t,{configuration:r,report:o,workspace:i=null}){await v(async()=>{await s.xfs.mktempPromise(async a=>{const c=n.y1.join(a,"pack.log"),{stdout:g,stderr:l}=r.getSubprocessStreams(c,{prefix:e,report:o}),u=await async function(e){let t=null;try{t=await s.xfs.readFilePromise(n.y1.join(e,n.QS.lockfile),"utf8")}catch(e){}return null!==t?t.match(/^__metadata:$/m)?A.Yarn2:A.Yarn1:s.xfs.existsSync(n.y1.join(e,"package-lock.json"))?A.Npm:s.xfs.existsSync(n.y1.join(e,"pnpm-lock.yaml"))?A.Pnpm:null}(e);let h;null!==u?(g.write(`Installing the project using ${u}\n\n`),h=u):(g.write("No package manager detected; defaulting to Yarn\n\n"),h=A.Yarn2),await s.xfs.mktempPromise(async r=>{const o=await b({binFolder:r}),u=new Map([[A.Yarn1,async()=>{const r=null!==i?["workspace",i]:[],A=await y.pipevp("yarn",["set","version","classic","--only-if-needed"],{cwd:e,env:o,stdin:null,stdout:g,stderr:l,end:y.EndStrategy.ErrorCode});if(0!==A.code)return A.code;await s.xfs.appendFilePromise(n.y1.join(e,".npmignore"),"/.yarn\n"),g.write("\n");const a=await y.pipevp("yarn",["install"],{cwd:e,env:o,stdin:null,stdout:g,stderr:l,end:y.EndStrategy.ErrorCode});if(0!==a.code)return a.code;g.write("\n");const c=await y.pipevp("yarn",[...r,"pack","--filename",n.cS.fromPortablePath(t)],{cwd:e,env:o,stdin:null,stdout:g,stderr:l});return 0!==c.code?c.code:0}],[A.Yarn2,async()=>{const r=null!==i?["workspace",i]:[];o.YARN_ENABLE_INLINE_BUILDS="1";const A=n.y1.join(e,n.QS.lockfile);await s.xfs.existsPromise(A)||await s.xfs.writeFilePromise(A,"");const a=await y.pipevp("yarn",[...r,"pack","--install-if-needed","--filename",n.cS.fromPortablePath(t)],{cwd:e,env:o,stdin:null,stdout:g,stderr:l});return 0!==a.code?a.code:0}],[A.Npm,async()=>{if(null!==i)throw new Error("Workspaces aren't supported by npm, which has been detected as the primary package manager for "+e);delete o.npm_config_user_agent;const r=await y.pipevp("npm",["install"],{cwd:e,env:o,stdin:null,stdout:g,stderr:l,end:y.EndStrategy.ErrorCode});if(0!==r.code)return r.code;const A=new d.PassThrough,a=w.bufferStream(A);A.pipe(g);const c=await y.pipevp("npm",["pack","--silent"],{cwd:e,env:o,stdin:null,stdout:A,stderr:l});if(0!==c.code)return c.code;const u=(await a).toString().trim(),h=n.y1.resolve(e,n.cS.toPortablePath(u));return await s.xfs.renamePromise(h,t),0}]]).get(h);if(void 0===u)throw new Error("Assertion failed: Unsupported workflow");const p=await u();if(0!==p&&void 0!==p)throw s.xfs.detachTemp(a),new I.lk(f.b.PACKAGE_PREPARATION_FAILED,`Packing the package failed (exit code ${p}, logs can be found here: ${c})`)})})})}async function k(e,t,{project:r}){const A=r.storedPackages.get(e.locatorHash);if(!A)throw new Error(`Package for ${Q.prettyLocator(r.configuration,e)} not found in the project`);return await o.A.openPromise(async e=>{const o=r.configuration,s=r.configuration.getLinkers(),a={project:r,report:new E.Pk({stdout:new d.PassThrough,configuration:o})},c=s.find(e=>e.supportsPackage(A,a));if(!c)throw new Error(`The package ${Q.prettyLocator(r.configuration,A)} isn't supported by any of the available linkers`);const g=await c.findPackageLocation(A,a),l=new i.M(g,{baseFs:e});return(await C.G.find(n.LZ.dot,{baseFs:l})).scripts.has(t)},{libzip:await(0,a.getLibzipPromise)()})}async function N(e,t,r,{cwd:A,project:n,stdin:o,stdout:i,stderr:a}){return await s.xfs.mktempPromise(async s=>{const{manifest:g,env:l,cwd:u}=await K(e,{project:n,binFolder:s,cwd:A,lifecycleScript:t}),h=g.scripts.get(t);if(void 0===h)return 1;const p=await n.configuration.reduceHook(e=>e.wrapScriptExecution,async()=>await(0,c.execute)(h,r,{cwd:u,env:l,stdin:o,stdout:i,stderr:a}),n,e,t,{script:h,args:r,cwd:u,env:l,stdin:o,stdout:i,stderr:a});return await p()})}async function F(e,t,r,{cwd:A,project:n,stdin:o,stdout:i,stderr:a}){return await s.xfs.mktempPromise(async s=>{const{env:g,cwd:l}=await K(e,{project:n,binFolder:s,cwd:A});return await(0,c.execute)(t,r,{cwd:l,env:g,stdin:o,stdout:i,stderr:a})})}async function K(e,{project:t,binFolder:r,cwd:A,lifecycleScript:s}){const c=t.storedPackages.get(e.locatorHash);if(!c)throw new Error(`Package for ${Q.prettyLocator(t.configuration,e)} not found in the project`);return await o.A.openPromise(async o=>{const a=t.configuration,g=t.configuration.getLinkers(),l={project:t,report:new E.Pk({stdout:new d.PassThrough,configuration:a})},u=g.find(e=>e.supportsPackage(c,l));if(!u)throw new Error(`The package ${Q.prettyLocator(t.configuration,c)} isn't supported by any of the available linkers`);const h=await b({project:t,binFolder:r,lifecycleScript:s});await Promise.all(Array.from(await P(e,{project:t}),([e,[,t]])=>D(r,(0,n.Zu)(e),process.execPath,[t])));const p=await u.findPackageLocation(c,l),f=new i.M(p,{baseFs:o}),I=await C.G.find(n.LZ.dot,{baseFs:f});return void 0===A&&(A=p),{manifest:I,binFolder:r,env:h,cwd:A}},{libzip:await(0,a.getLibzipPromise)()})}async function M(e,t,r,{cwd:A,stdin:n,stdout:o,stderr:i}){return await N(e.anchoredLocator,t,r,{cwd:A,project:e.project,stdin:n,stdout:o,stderr:i})}function R(e,t){return e.manifest.scripts.has(t)}async function x(e,t,{cwd:r,report:A}){const{configuration:o}=e.project;await s.xfs.mktempPromise(async i=>{const a=n.y1.join(i,t+".log"),c=`# This file contains the result of Yarn calling the "${t}" lifecycle script inside a workspace ("${e.cwd}")\n`,{stdout:g,stderr:l}=o.getSubprocessStreams(a,{report:A,prefix:Q.prettyLocator(o,e.anchoredLocator),header:c});A.reportInfo(f.b.LIFECYCLE_SCRIPT,`Calling the "${t}" lifecycle script`);const h=await M(e,t,[],{cwd:r,stdin:null,stdout:g,stderr:l});if(g.end(),l.end(),0!==h)throw s.xfs.detachTemp(i),new I.lk(f.b.LIFECYCLE_SCRIPT,`${u()(t)} script failed (exit code ${m.pretty(o,h,m.Type.NUMBER)}, logs can be found here: ${m.pretty(o,a,m.Type.PATH)}); run ${m.pretty(o,"yarn "+t,m.Type.CODE)} to investigate`)})}async function L(e,t,r){R(e,t)&&await x(e,t,r)}async function P(e,{project:t}){const r=t.configuration,A=new Map,o=t.storedPackages.get(e.locatorHash);if(!o)throw new Error(`Package for ${Q.prettyLocator(r,e)} not found in the project`);const i=new d.Writable,s=r.getLinkers(),a={project:t,report:new E.Pk({configuration:r,stdout:i})},c=new Set([e.locatorHash]);for(const e of o.dependencies.values()){const A=t.storedResolutions.get(e.descriptorHash);if(!A)throw new Error(`Assertion failed: The resolution (${Q.prettyDescriptor(r,e)}) should have been registered`);c.add(A)}for(const e of c){const r=t.storedPackages.get(e);if(!r)throw new Error(`Assertion failed: The package (${e}) should have been registered`);if(0===r.bin.size)continue;const o=s.find(e=>e.supportsPackage(r,a));if(!o)continue;let i=null;try{i=await o.findPackageLocation(r,a)}catch(e){if("LOCATOR_NOT_INSTALLED"===e.code)continue;throw e}for(const[e,t]of r.bin)A.set(e,[r,n.cS.fromPortablePath(n.y1.resolve(i,t))])}return A}async function O(e){return await P(e.anchoredLocator,{project:e.project})}async function U(e,t,r,{cwd:A,project:o,stdin:i,stdout:a,stderr:c,nodeArgs:g=[]}){const l=await P(e,{project:o}),u=l.get(t);if(!u)throw new Error(`Binary not found (${t}) for ${Q.prettyLocator(o.configuration,e)}`);return await s.xfs.mktempPromise(async e=>{const[,t]=u,h=await b({project:o,binFolder:e});let p;await Promise.all(Array.from(l,([e,[,t]])=>D(h.BERRY_BIN_FOLDER,(0,n.Zu)(e),process.execPath,[t])));try{p=await y.pipevp(process.execPath,[...g,t,...r],{cwd:A,env:h,stdin:i,stdout:a,stderr:c})}finally{await s.xfs.removePromise(h.BERRY_BIN_FOLDER)}return p.code})}async function T(e,t,r,{cwd:A,stdin:n,stdout:o,stderr:i}){return await U(e.anchoredLocator,t,r,{project:e.project,cwd:A,stdin:n,stdout:o,stderr:i})}},36545:(e,t,r)=>{"use strict";r.r(t),r.d(t,{satisfiesWithPrereleases:()=>o,validRange:()=>s});var A=r(53887),n=r.n(A);function o(e,t,r=!1){let A,o;try{A=new(n().Range)(t,{includePrerelease:!0,loose:r})}catch(e){return!1}if(!e)return!1;try{o=new(n().SemVer)(e,A),o.prerelease&&(o.prerelease=[])}catch(e){return!1}return A.set.some(e=>{for(const t of e)t.semver.prerelease&&(t.semver.prerelease=[]);return e.every(e=>e.test(o))})}const i=new Map;function s(e){if(-1!==e.indexOf(":"))return null;let t=i.get(e);if(void 0!==t)return t;try{t=new(n().Range)(e)}catch(e){t=null}return i.set(e,t),t}},54143:(e,t,r)=>{"use strict";r.r(t),r.d(t,{makeIdent:()=>u,makeDescriptor:()=>h,makeLocator:()=>p,convertToIdent:()=>d,convertDescriptorToLocator:()=>C,convertLocatorToDescriptor:()=>f,convertPackageToLocator:()=>I,renamePackage:()=>E,copyPackage:()=>B,virtualizeDescriptor:()=>y,virtualizePackage:()=>m,isVirtualDescriptor:()=>w,isVirtualLocator:()=>Q,devirtualizeDescriptor:()=>D,devirtualizeLocator:()=>b,bindDescriptor:()=>v,bindLocator:()=>S,areIdentsEqual:()=>k,areDescriptorsEqual:()=>N,areLocatorsEqual:()=>F,areVirtualPackagesEquivalent:()=>K,parseIdent:()=>M,tryParseIdent:()=>R,parseDescriptor:()=>x,tryParseDescriptor:()=>L,parseLocator:()=>P,tryParseLocator:()=>O,parseRange:()=>U,parseFileStyleRange:()=>T,makeRange:()=>Y,convertToManifestRange:()=>G,requirableIdent:()=>H,stringifyIdent:()=>J,stringifyDescriptor:()=>q,stringifyLocator:()=>z,slugifyIdent:()=>W,slugifyLocator:()=>V,prettyIdent:()=>X,prettyRange:()=>Z,prettyDescriptor:()=>$,prettyReference:()=>ee,prettyLocator:()=>te,prettyLocatorNoColors:()=>re,sortDescriptors:()=>Ae,prettyWorkspace:()=>ne,prettyResolution:()=>oe,prettyDependent:()=>ie,getIdentVendorPath:()=>se});var A=r(46009),n=r(71191),o=r.n(n),i=r(53887),s=r.n(i),a=r(71643),c=r(20624),g=r(73632),l=r(54143);function u(e,t){if(null==e?void 0:e.startsWith("@"))throw new Error("Invalid scope: don't prefix it with '@'");return{identHash:c.makeHash(e,t),scope:e,name:t}}function h(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:c.makeHash(e.identHash,t),range:t}}function p(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:c.makeHash(e.identHash,t),reference:t}}function d(e){return{identHash:e.identHash,scope:e.scope,name:e.name}}function C(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.descriptorHash,reference:e.range}}function f(e){return{identHash:e.identHash,scope:e.scope,name:e.name,descriptorHash:e.locatorHash,range:e.reference}}function I(e){return{identHash:e.identHash,scope:e.scope,name:e.name,locatorHash:e.locatorHash,reference:e.reference}}function E(e,t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference,version:e.version,languageName:e.languageName,linkType:e.linkType,dependencies:new Map(e.dependencies),peerDependencies:new Map(e.peerDependencies),dependenciesMeta:new Map(e.dependenciesMeta),peerDependenciesMeta:new Map(e.peerDependenciesMeta),bin:new Map(e.bin)}}function B(e){return E(e,e)}function y(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return h(e,`virtual:${t}#${e.range}`)}function m(e,t){if(t.includes("#"))throw new Error("Invalid entropy");return E(e,p(e,`virtual:${t}#${e.reference}`))}function w(e){return e.range.startsWith("virtual:")}function Q(e){return e.reference.startsWith("virtual:")}function D(e){if(!w(e))throw new Error("Not a virtual descriptor");return h(e,e.range.replace(/^[^#]*#/,""))}function b(e){if(!Q(e))throw new Error("Not a virtual descriptor");return p(e,e.reference.replace(/^[^#]*#/,""))}function v(e,t){return e.range.includes("::")?e:h(e,`${e.range}::${o().stringify(t)}`)}function S(e,t){return e.reference.includes("::")?e:p(e,`${e.reference}::${o().stringify(t)}`)}function k(e,t){return e.identHash===t.identHash}function N(e,t){return e.descriptorHash===t.descriptorHash}function F(e,t){return e.locatorHash===t.locatorHash}function K(e,t){if(!Q(e))throw new Error("Invalid package type");if(!Q(t))throw new Error("Invalid package type");if(!k(e,t))return!1;if(e.dependencies.size!==t.dependencies.size)return!1;for(const r of e.dependencies.values()){const e=t.dependencies.get(r.identHash);if(!e)return!1;if(!N(r,e))return!1}return!0}function M(e){const t=R(e);if(!t)throw new Error(`Invalid ident (${e})`);return t}function R(e){const t=e.match(/^(?:@([^/]+?)\/)?([^/]+)$/);if(!t)return null;const[,r,A]=t;return u(void 0!==r?r:null,A)}function x(e,t=!1){const r=L(e,t);if(!r)throw new Error(`Invalid descriptor (${e})`);return r}function L(e,t=!1){const r=t?e.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):e.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;const[,A,n,o]=r;if("unknown"===o)throw new Error(`Invalid range (${e})`);const i=void 0!==o?o:"unknown";return h(u(void 0!==A?A:null,n),i)}function P(e,t=!1){const r=O(e,t);if(!r)throw new Error(`Invalid locator (${e})`);return r}function O(e,t=!1){const r=t?e.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))$/):e.match(/^(?:@([^/]+?)\/)?([^/]+?)(?:@(.+))?$/);if(!r)return null;const[,A,n,o]=r;if("unknown"===o)throw new Error(`Invalid reference (${e})`);const i=void 0!==o?o:"unknown";return p(u(void 0!==A?A:null,n),i)}function U(e,t){const r=e.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/);if(null===r)throw new Error(`Invalid range (${e})`);const A=void 0!==r[1]?r[1]:null;if("string"==typeof(null==t?void 0:t.requireProtocol)&&A!==t.requireProtocol)throw new Error(`Invalid protocol (${A})`);if((null==t?void 0:t.requireProtocol)&&null===A)throw new Error(`Missing protocol (${A})`);const n=void 0!==r[3]?decodeURIComponent(r[2]):null;if((null==t?void 0:t.requireSource)&&null===n)throw new Error(`Missing source (${e})`);const i=void 0!==r[3]?decodeURIComponent(r[3]):decodeURIComponent(r[2]);return{protocol:A,source:n,selector:(null==t?void 0:t.parseSelector)?o().parse(i):i,params:void 0!==r[4]?o().parse(r[4]):null}}function T(e,{protocol:t}){const{selector:r,params:A}=U(e,{requireProtocol:t,requireBindings:!0});if("string"!=typeof A.locator)throw new Error("Assertion failed: Invalid bindings for "+e);return{parentLocator:P(A.locator,!0),path:r}}function j(e){return e=(e=(e=e.replace(/%/g,"%25")).replace(/:/g,"%3A")).replace(/#/g,"%23")}function Y({protocol:e,source:t,selector:r,params:A}){let n="";return null!==e&&(n+=""+e),null!==t&&(n+=j(t)+"#"),n+=j(r),function(e){return null!==e&&Object.entries(e).length>0}(A)&&(n+="::"+o().stringify(A)),n}function G(e){const{params:t,protocol:r,source:A,selector:n}=U(e);for(const e in t)e.startsWith("__")&&delete t[e];return Y({protocol:r,source:A,params:t,selector:n})}function H(e){return e.scope?`@${e.scope}/${e.name}`:""+e.name}function J(e){return e.scope?`@${e.scope}/${e.name}`:""+e.name}function q(e){return e.scope?`@${e.scope}/${e.name}@${e.range}`:`${e.name}@${e.range}`}function z(e){return e.scope?`@${e.scope}/${e.name}@${e.reference}`:`${e.name}@${e.reference}`}function W(e){return null!==e.scope?`@${e.scope}-${e.name}`:e.name}function V(e){const{protocol:t,selector:r}=U(e.reference),n=null!==t?t.replace(/:$/,""):"exotic",o=s().valid(r),i=null!==o?`${n}-${o}`:""+n,a=(e.scope,`${W(e)}-${i}-${e.locatorHash.slice(0,10)}`);return(0,A.Zu)(a)}function X(e,t){return t.scope?`${a.pretty(e,`@${t.scope}/`,a.Type.SCOPE)}${a.pretty(e,t.name,a.Type.NAME)}`:""+a.pretty(e,t.name,a.Type.NAME)}function _(e){if(e.startsWith("virtual:")){return`${_(e.substr(e.indexOf("#")+1))} [${e.substr("virtual:".length,5)}]`}return e.replace(/\?.*/,"?[...]")}function Z(e,t){return""+a.pretty(e,_(t),a.Type.RANGE)}function $(e,t){return`${X(e,t)}${a.pretty(e,"@",a.Type.RANGE)}${Z(e,t.range)}`}function ee(e,t){return""+a.pretty(e,_(t),a.Type.REFERENCE)}function te(e,t){return`${X(e,t)}${a.pretty(e,"@",a.Type.REFERENCE)}${ee(e,t.reference)}`}function re(e){return`${J(e)}@${_(e.reference)}`}function Ae(e){return g.sortMap(e,[e=>J(e),e=>e.range])}function ne(e,t){return X(e,t.locator)}function oe(e,t,r){const A=w(t)?D(t):t;return null===r?`${l.prettyDescriptor(e,A)} → ${a.mark(e).Cross}`:A.identHash===r.identHash?`${l.prettyDescriptor(e,A)} → ${ee(e,r.reference)}`:`${l.prettyDescriptor(e,A)} → ${te(e,r)}`}function ie(e,t,r){return null===r?""+te(e,t):`${te(e,t)} (via ${l.prettyRange(e,r.range)})`}function se(e){return"node_modules/"+H(e)}},72785:(e,t,r)=>{"use strict";r.r(t),r.d(t,{makeArchiveFromDirectory:()=>h,convertToZip:()=>p,extractArchiveTo:()=>d});var A=r(78420),n=r(46009),o=r(90739),i=r(43896),s=r(65281),a=r(59938),c=r(31669),g=r(78761),l=r.n(g);const u=(0,c.promisify)(l().gunzip);async function h(e,{baseFs:t=new A.S,prefixPath:r=n.LZ.root,compressionLevel:a,inMemory:c=!1}={}){const g=await(0,s.getLibzipPromise)();let l;if(c)l=new o.d(null,{libzip:g,level:a});else{const e=await i.xfs.mktempPromise(),t=n.y1.join(e,"archive.zip");l=new o.d(t,{create:!0,libzip:g,level:a})}const u=n.y1.resolve(n.LZ.root,r);return await l.copyPromise(u,e,{baseFs:t,stableTime:!0,stableSort:!0}),l}async function p(e,t){const r=await i.xfs.mktempPromise(),A=n.y1.join(r,"archive.zip"),{compressionLevel:a,...c}=t;return await d(e,new o.d(A,{create:!0,libzip:await(0,s.getLibzipPromise)(),level:a}),c)}async function d(e,t,{stripComponents:r=0,prefixPath:A=n.LZ.dot}={}){const o=a.extract();o.on("entry",(e,o,i)=>{var s,a;if(function(e){if("/"===e.name[0])return!0;const t=e.name.split(/\//g);return!!t.some(e=>".."===e)||t.length<=r}(e))return void i();const c=n.y1.normalize(n.cS.toPortablePath(e.name)).replace(/\/$/,"").split(/\//g);if(c.length<=r)return o.resume(),void i();const g=c.slice(r).join("/"),l=n.y1.join(A,g);let u=420;switch("directory"!==e.type&&0==(73&(null!==(s=e.mode)&&void 0!==s?s:0))||(u|=73),e.type){case"directory":t.mkdirpSync(n.y1.dirname(l),{chmod:493,utimes:[315532800,315532800]}),t.mkdirSync(l),t.chmodSync(l,u),t.utimesSync(l,315532800,315532800),i();break;case"file":{t.mkdirpSync(n.y1.dirname(l),{chmod:493,utimes:[315532800,315532800]});const e=[];o.on("data",t=>e.push(t)),o.on("end",()=>{t.writeFileSync(l,Buffer.concat(e)),t.chmodSync(l,u),t.utimesSync(l,315532800,315532800),i()})}break;case"symlink":t.mkdirpSync(n.y1.dirname(l),{chmod:493,utimes:[315532800,315532800]}),t.symlinkSync(e.linkname,l),null===(a=t.lutimesSync)||void 0===a||a.call(t,l,315532800,315532800),i();break;default:o.resume(),i()}});const i=await u(e);return await new Promise((e,r)=>{o.on("error",e=>{r(e)}),o.on("finish",()=>{e(t)}),o.end(i)})}},85875:(e,t,r)=>{"use strict";r.r(t),r.d(t,{treeNodeToTreeify:()=>o,treeNodeToJson:()=>i,emitList:()=>s,emitTree:()=>a});var A=r(94682),n=r(71643);function o(e,{configuration:t}){const r={},A=(e,r)=>{const o=Array.isArray(e)?e.entries():Object.entries(e);for(const[e,{label:i,value:s,children:a}]of o){const o=[];void 0!==i&&o.push(n.applyStyle(t,i,n.Style.BOLD)),void 0!==s&&o.push(n.pretty(t,s[0],s[1])),0===o.length&&o.push(n.applyStyle(t,""+e,n.Style.BOLD));const c=r[o.join(": ")]={};void 0!==a&&A(a,c)}};if(void 0===e.children)throw new Error("The root node must only contain children");return A(e.children,r),r}function i(e){const t=e=>{var r;if(void 0===e.children){if(void 0===e.value)throw new Error("Assertion failed: Expected a value to be set if the children are missing");return n.json(e.value[0],e.value[1])}const A=Array.isArray(e.children)?e.children.entries():Object.entries(null!==(r=e.children)&&void 0!==r?r:{}),o=Array.isArray(e.children)?[]:{};for(const[e,r]of A)o[e]=t(r);return void 0===e.value?o:{value:n.json(e.value[0],e.value[1]),children:o}};return t(e)}function s(e,{configuration:t,stdout:r,json:A}){a({children:e.map(e=>({value:e}))},{configuration:t,stdout:r,json:A})}function a(e,{configuration:t,stdout:r,json:n,separators:s=0}){var a;if(n){const t=Array.isArray(e.children)?e.children.values():Object.values(null!==(a=e.children)&&void 0!==a?a:{});for(const e of t)r.write(JSON.stringify(i(e))+"\n");return}let c=(0,A.asTree)(o(e,{configuration:t}),!1,!1);if(s>=1&&(c=c.replace(/^([├└]─)/gm,"│\n$1").replace(/^│\n/,"")),s>=2)for(let e=0;e<2;++e)c=c.replace(/^([│ ].{2}[├│ ].{2}[^\n]+\n)(([│ ]).{2}[├└].{2}[^\n]*\n[│ ].{2}[│ ].{2}[├└]─)/gm,"$1$3 │\n$2").replace(/^│\n/,"");if(s>=3)throw new Error("Only the first two levels are accepted by treeUtils.emitTree");r.write(c)}},32485:(e,t,r)=>{"use strict";var A,n,o;r.d(t,{Un:()=>A,HN:()=>n,_u:()=>o}),function(e){e.HARD="HARD",e.SOFT="SOFT"}(A||(A={})),function(e){e.Dependency="Dependency",e.PeerDependency="PeerDependency",e.PeerDependencyMeta="PeerDependencyMeta"}(n||(n={})),function(e){e.Inactive="inactive",e.Redundant="redundant",e.Active="active"}(o||(o={}))},14626:(e,t,r)=>{"use strict";r.d(t,{K:()=>n});var A=r(42096);class n extends A.p{constructor(e,{baseFs:t,pathUtils:r}){super(r),this.target=e,this.baseFs=t}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}}},75448:(e,t,r)=>{"use strict";r.d(t,{M:()=>i});var A=r(78420),n=r(42096),o=r(46009);class i extends n.p{constructor(e,{baseFs:t=new A.S}={}){super(o.y1),this.target=this.pathUtils.normalize(e),this.baseFs=t}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?o.y1.normalize(e):this.baseFs.resolve(o.y1.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}}},5944:(e,t,r)=>{"use strict";r.d(t,{fS:()=>g,uY:()=>c,qH:()=>l});var A=r(12087),n=r(35747),o=r.n(n),i=r(46009);const s=new Date(3155328e5);async function a(e,t,r,A,n,c,g,l){var u,h;const p=await async function(e,t){try{return await e.lstatPromise(t)}catch(e){return null}}(A,n),d=await c.lstatPromise(g),C=l.stableTime?{mtime:s,atime:s}:d;let f;switch(!0){case d.isDirectory():f=await async function(e,t,r,A,n,o,i,s,c,g){if(null!==o&&!o.isDirectory()){if(!g.overwrite)return!1;e.push(async()=>A.removePromise(n)),o=null}let l=!1;null===o&&(e.push(async()=>A.mkdirPromise(n,{mode:c.mode})),l=!0);const u=await i.readdirPromise(s);if(g.stableSort)for(const o of u.sort())await a(e,t,r,A,A.pathUtils.join(n,o),i,i.pathUtils.join(s,o),g)&&(l=!0);else{(await Promise.all(u.map(async o=>{await a(e,t,r,A,A.pathUtils.join(n,o),i,i.pathUtils.join(s,o),g)}))).some(e=>e)&&(l=!0)}return l}(e,t,r,A,n,p,c,g,d,l);break;case d.isFile():f=await async function(e,t,r,A,n,i,s,a,c,g){if(null!==i){if(!g.overwrite)return!1;e.push(async()=>A.removePromise(n)),i=null}const l=A===s?async()=>A.copyFilePromise(a,n,o().constants.COPYFILE_FICLONE):async()=>A.writeFilePromise(n,await s.readFilePromise(a));return e.push(async()=>l()),!0}(e,0,0,A,n,p,c,g,0,l);break;case d.isSymbolicLink():f=await async function(e,t,r,A,n,o,s,a,c,g){if(null!==o){if(!g.overwrite)return!1;e.push(async()=>A.removePromise(n)),o=null}return e.push(async()=>{await A.symlinkPromise((0,i.CI)(A.pathUtils,await s.readlinkPromise(a)),n)}),!0}(e,0,0,A,n,p,c,g,0,l);break;default:throw new Error(`Unsupported file type (${d.mode})`)}return(f||(null===(u=null==p?void 0:p.mtime)||void 0===u?void 0:u.getTime())!==C.mtime.getTime()||(null===(h=null==p?void 0:p.atime)||void 0===h?void 0:h.getTime())!==C.atime.getTime())&&(t.push(()=>r(n,C.atime,C.mtime)),f=!0),null!==p&&(511&p.mode)==(511&d.mode)||(t.push(()=>A.chmodPromise(n,511&d.mode)),f=!0),f}class c{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:t=!1}={}){const r=[e];for(;r.length>0;){const e=r.shift();if((await this.lstatPromise(e)).isDirectory()){const A=await this.readdirPromise(e);if(!t)throw new Error("Not supported");for(const t of A.sort())r.push(this.pathUtils.join(e,t))}else yield e}}async removePromise(e,{recursive:t=!0,maxRetries:r=5}={}){let A;try{A=await this.lstatPromise(e)}catch(e){if("ENOENT"===e.code)return;throw e}if(A.isDirectory()){if(t)for(const t of await this.readdirPromise(e))await this.removePromise(this.pathUtils.resolve(e,t));let A=0;do{try{await this.rmdirPromise(e);break}catch(e){if("EBUSY"===e.code||"ENOTEMPTY"===e.code){if(0===r)break;await new Promise(e=>setTimeout(e,100*A));continue}throw e}}while(A++e()))}(this,e,r,t,{overwrite:A,stableSort:n,stableTime:o})}copySync(e,t,{baseFs:r=this,overwrite:A=!0}={}){const n=r.lstatSync(t),o=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);const n=r.readdirSync(t);for(const o of n)this.copySync(this.pathUtils.join(e,o),r.pathUtils.join(t,o),{baseFs:r,overwrite:A})}else if(n.isFile()){if(!o||A){o&&this.removeSync(e);const A=r.readFileSync(t);this.writeFileSync(e,A)}}else{if(!n.isSymbolicLink())throw new Error(`Unsupported file type (file: ${t}, mode: 0o${n.mode.toString(8).padStart(6,"0")})`);if(!o||A){o&&this.removeSync(e);const A=r.readlinkSync(t);this.symlinkSync((0,i.CI)(this.pathUtils,A),e)}}const s=511&n.mode;this.chmodSync(e,s)}async changeFilePromise(e,t,r={}){return Buffer.isBuffer(t)?this.changeFileBufferPromise(e,t):this.changeFileTextPromise(e,t,r)}async changeFileBufferPromise(e,t){let r=Buffer.alloc(0);try{r=await this.readFilePromise(e)}catch(e){}0!==Buffer.compare(r,t)&&await this.writeFilePromise(e,t)}async changeFileTextPromise(e,t,{automaticNewlines:r}={}){let A="";try{A=await this.readFilePromise(e,"utf8")}catch(e){}const n=r?l(A,t):t;A!==n&&await this.writeFilePromise(e,n)}changeFileSync(e,t,r={}){return Buffer.isBuffer(t)?this.changeFileBufferSync(e,t):this.changeFileTextSync(e,t,r)}changeFileBufferSync(e,t){let r=Buffer.alloc(0);try{r=this.readFileSync(e)}catch(e){}0!==Buffer.compare(r,t)&&this.writeFileSync(e,t)}changeFileTextSync(e,t,{automaticNewlines:r=!1}={}){let A="";try{A=this.readFileSync(e,"utf8")}catch(e){}const n=r?l(A,t):t;A!==n&&this.writeFileSync(e,n)}async movePromise(e,t){try{await this.renamePromise(e,t)}catch(r){if("EXDEV"!==r.code)throw r;await this.copyPromise(t,e),await this.removePromise(e)}}moveSync(e,t){try{this.renameSync(e,t)}catch(r){if("EXDEV"!==r.code)throw r;this.copySync(t,e),this.removeSync(e)}}async lockPromise(e,t){const r=e+".flock",A=Date.now();let n=null;const o=async()=>{let e;try{[e]=await this.readJsonPromise(r)}catch(e){return Date.now()-A<500}try{return process.kill(e,0),!0}catch(e){return!1}};for(;null===n;)try{n=await this.openPromise(r,"wx")}catch(e){if("EEXIST"!==e.code)throw e;if(!await o())try{await this.unlinkPromise(r);continue}catch(e){}if(!(Date.now()-A<6e4))throw new Error(`Couldn't acquire a lock in a reasonable time (via ${r})`);await new Promise(e=>setTimeout(e,1e3/60))}await this.writePromise(n,JSON.stringify([process.pid]));try{return await t()}finally{try{await this.closePromise(n),await this.unlinkPromise(r)}catch(e){}}}async readJsonPromise(e){const t=await this.readFilePromise(e,"utf8");try{return JSON.parse(t)}catch(t){throw t.message+=` (in ${e})`,t}}readJsonSync(e){const t=this.readFileSync(e,"utf8");try{return JSON.parse(t)}catch(t){throw t.message+=` (in ${e})`,t}}async writeJsonPromise(e,t){return await this.writeFilePromise(e,JSON.stringify(t,null,2)+"\n")}writeJsonSync(e,t){return this.writeFileSync(e,JSON.stringify(t,null,2)+"\n")}async preserveTimePromise(e,t){const r=await this.lstatPromise(e),A=await t();void 0!==A&&(e=A),this.lutimesPromise?await this.lutimesPromise(e,r.atime,r.mtime):r.isSymbolicLink()||await this.utimesPromise(e,r.atime,r.mtime)}async preserveTimeSync(e,t){const r=this.lstatSync(e),A=t();void 0!==A&&(e=A),this.lutimesSync?this.lutimesSync(e,r.atime,r.mtime):r.isSymbolicLink()||this.utimesSync(e,r.atime,r.mtime)}}c.DEFAULT_TIME=315532800;class g extends c{constructor(){super(i.y1)}}function l(e,t){return t.replace(/\r?\n/g,function(e){const t=e.match(/\r?\n/g);if(null===t)return A.EOL;const r=t.filter(e=>"\r\n"===e).length;return r>t.length-r?"\r\n":"\n"}(e))}},10489:(e,t,r)=>{"use strict";r.d(t,{n:()=>s});var A=r(78420),n=r(42096),o=r(46009);const i=o.LZ.root;class s extends n.p{constructor(e,{baseFs:t=new A.S}={}){super(o.y1),this.target=this.pathUtils.resolve(o.LZ.root,e),this.baseFs=t}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(o.LZ.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){const t=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(i,e));if(t.match(/^\.\.\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(i,this.pathUtils.relative(this.target,e))}}},15037:(e,t,r)=>{"use strict";r.d(t,{v:()=>n});var A=r(42096);class n extends A.p{constructor(e,t){super(t),this.instance=null,this.factory=e}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(e){this.instance=e}mapFromBase(e){return e}mapToBase(e){return e}}},78420:(e,t,r)=>{"use strict";r.d(t,{S:()=>a});var A=r(35747),n=r.n(A),o=r(5944),i=r(26984),s=r(46009);class a extends o.fS{constructor(e=n()){super(),this.realFs=e,void 0!==this.realFs.lutimes&&(this.lutimesPromise=this.lutimesPromiseImpl,this.lutimesSync=this.lutimesSyncImpl)}getExtractHint(){return!1}getRealPath(){return s.LZ.root}resolve(e){return s.y1.resolve(e)}async openPromise(e,t,r){return await new Promise((A,n)=>{this.realFs.open(s.cS.fromPortablePath(e),t,r,this.makeCallback(A,n))})}openSync(e,t,r){return this.realFs.openSync(s.cS.fromPortablePath(e),t,r)}async opendirPromise(e,t){return await new Promise((r,A)=>{void 0!==t?this.realFs.opendir(s.cS.fromPortablePath(e),t,this.makeCallback(r,A)):this.realFs.opendir(s.cS.fromPortablePath(e),this.makeCallback(r,A))}).then(t=>Object.defineProperty(t,"path",{value:e,configurable:!0,writable:!0}))}opendirSync(e,t){const r=void 0!==t?this.realFs.opendirSync(s.cS.fromPortablePath(e),t):this.realFs.opendirSync(s.cS.fromPortablePath(e));return Object.defineProperty(r,"path",{value:e,configurable:!0,writable:!0})}async readPromise(e,t,r=0,A=0,n=-1){return await new Promise((o,i)=>{this.realFs.read(e,t,r,A,n,(e,t)=>{e?i(e):o(t)})})}readSync(e,t,r,A,n){return this.realFs.readSync(e,t,r,A,n)}async writePromise(e,t,r,A,n){return await new Promise((o,i)=>"string"==typeof t?this.realFs.write(e,t,r,this.makeCallback(o,i)):this.realFs.write(e,t,r,A,n,this.makeCallback(o,i)))}writeSync(e,t,r,A,n){return"string"==typeof t?this.realFs.writeSync(e,t,r):this.realFs.writeSync(e,t,r,A,n)}async closePromise(e){await new Promise((t,r)=>{this.realFs.close(e,this.makeCallback(t,r))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,t){const r=null!==e?s.cS.fromPortablePath(e):e;return this.realFs.createReadStream(r,t)}createWriteStream(e,t){const r=null!==e?s.cS.fromPortablePath(e):e;return this.realFs.createWriteStream(r,t)}async realpathPromise(e){return await new Promise((t,r)=>{this.realFs.realpath(s.cS.fromPortablePath(e),{},this.makeCallback(t,r))}).then(e=>s.cS.toPortablePath(e))}realpathSync(e){return s.cS.toPortablePath(this.realFs.realpathSync(s.cS.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(t=>{this.realFs.exists(s.cS.fromPortablePath(e),t)})}accessSync(e,t){return this.realFs.accessSync(s.cS.fromPortablePath(e),t)}async accessPromise(e,t){return await new Promise((r,A)=>{this.realFs.access(s.cS.fromPortablePath(e),t,this.makeCallback(r,A))})}existsSync(e){return this.realFs.existsSync(s.cS.fromPortablePath(e))}async statPromise(e){return await new Promise((t,r)=>{this.realFs.stat(s.cS.fromPortablePath(e),this.makeCallback(t,r))})}statSync(e){return this.realFs.statSync(s.cS.fromPortablePath(e))}async lstatPromise(e){return await new Promise((t,r)=>{this.realFs.lstat(s.cS.fromPortablePath(e),this.makeCallback(t,r))})}lstatSync(e){return this.realFs.lstatSync(s.cS.fromPortablePath(e))}async chmodPromise(e,t){return await new Promise((r,A)=>{this.realFs.chmod(s.cS.fromPortablePath(e),t,this.makeCallback(r,A))})}chmodSync(e,t){return this.realFs.chmodSync(s.cS.fromPortablePath(e),t)}async chownPromise(e,t,r){return await new Promise((A,n)=>{this.realFs.chown(s.cS.fromPortablePath(e),t,r,this.makeCallback(A,n))})}chownSync(e,t,r){return this.realFs.chownSync(s.cS.fromPortablePath(e),t,r)}async renamePromise(e,t){return await new Promise((r,A)=>{this.realFs.rename(s.cS.fromPortablePath(e),s.cS.fromPortablePath(t),this.makeCallback(r,A))})}renameSync(e,t){return this.realFs.renameSync(s.cS.fromPortablePath(e),s.cS.fromPortablePath(t))}async copyFilePromise(e,t,r=0){return await new Promise((A,n)=>{this.realFs.copyFile(s.cS.fromPortablePath(e),s.cS.fromPortablePath(t),r,this.makeCallback(A,n))})}copyFileSync(e,t,r=0){return this.realFs.copyFileSync(s.cS.fromPortablePath(e),s.cS.fromPortablePath(t),r)}async appendFilePromise(e,t,r){return await new Promise((A,n)=>{const o="string"==typeof e?s.cS.fromPortablePath(e):e;r?this.realFs.appendFile(o,t,r,this.makeCallback(A,n)):this.realFs.appendFile(o,t,this.makeCallback(A,n))})}appendFileSync(e,t,r){const A="string"==typeof e?s.cS.fromPortablePath(e):e;r?this.realFs.appendFileSync(A,t,r):this.realFs.appendFileSync(A,t)}async writeFilePromise(e,t,r){return await new Promise((A,n)=>{const o="string"==typeof e?s.cS.fromPortablePath(e):e;r?this.realFs.writeFile(o,t,r,this.makeCallback(A,n)):this.realFs.writeFile(o,t,this.makeCallback(A,n))})}writeFileSync(e,t,r){const A="string"==typeof e?s.cS.fromPortablePath(e):e;r?this.realFs.writeFileSync(A,t,r):this.realFs.writeFileSync(A,t)}async unlinkPromise(e){return await new Promise((t,r)=>{this.realFs.unlink(s.cS.fromPortablePath(e),this.makeCallback(t,r))})}unlinkSync(e){return this.realFs.unlinkSync(s.cS.fromPortablePath(e))}async utimesPromise(e,t,r){return await new Promise((A,n)=>{this.realFs.utimes(s.cS.fromPortablePath(e),t,r,this.makeCallback(A,n))})}utimesSync(e,t,r){this.realFs.utimesSync(s.cS.fromPortablePath(e),t,r)}async lutimesPromiseImpl(e,t,r){const A=this.realFs.lutimes;if(void 0===A)throw(0,i.bk)("unavailable Node binding",`lutimes '${e}'`);return await new Promise((n,o)=>{A.call(this.realFs,s.cS.fromPortablePath(e),t,r,this.makeCallback(n,o))})}lutimesSyncImpl(e,t,r){const A=this.realFs.lutimesSync;if(void 0===A)throw(0,i.bk)("unavailable Node binding",`lutimes '${e}'`);A.call(this.realFs,s.cS.fromPortablePath(e),t,r)}async mkdirPromise(e,t){return await new Promise((r,A)=>{this.realFs.mkdir(s.cS.fromPortablePath(e),t,this.makeCallback(r,A))})}mkdirSync(e,t){return this.realFs.mkdirSync(s.cS.fromPortablePath(e),t)}async rmdirPromise(e,t){return await new Promise((r,A)=>{t?this.realFs.rmdir(s.cS.fromPortablePath(e),t,this.makeCallback(r,A)):this.realFs.rmdir(s.cS.fromPortablePath(e),this.makeCallback(r,A))})}rmdirSync(e,t){return this.realFs.rmdirSync(s.cS.fromPortablePath(e),t)}async linkPromise(e,t){return await new Promise((r,A)=>{this.realFs.link(s.cS.fromPortablePath(e),s.cS.fromPortablePath(t),this.makeCallback(r,A))})}linkSync(e,t){return this.realFs.linkSync(s.cS.fromPortablePath(e),s.cS.fromPortablePath(t))}async symlinkPromise(e,t,r){const A=r||(e.endsWith("/")?"dir":"file");return await new Promise((r,n)=>{this.realFs.symlink(s.cS.fromPortablePath(e.replace(/\/+$/,"")),s.cS.fromPortablePath(t),A,this.makeCallback(r,n))})}symlinkSync(e,t,r){const A=r||(e.endsWith("/")?"dir":"file");return this.realFs.symlinkSync(s.cS.fromPortablePath(e.replace(/\/+$/,"")),s.cS.fromPortablePath(t),A)}async readFilePromise(e,t){return await new Promise((r,A)=>{const n="string"==typeof e?s.cS.fromPortablePath(e):e;this.realFs.readFile(n,t,this.makeCallback(r,A))})}readFileSync(e,t){const r="string"==typeof e?s.cS.fromPortablePath(e):e;return this.realFs.readFileSync(r,t)}async readdirPromise(e,{withFileTypes:t}={}){return await new Promise((r,A)=>{t?this.realFs.readdir(s.cS.fromPortablePath(e),{withFileTypes:!0},this.makeCallback(r,A)):this.realFs.readdir(s.cS.fromPortablePath(e),this.makeCallback(e=>r(e),A))})}readdirSync(e,{withFileTypes:t}={}){return t?this.realFs.readdirSync(s.cS.fromPortablePath(e),{withFileTypes:!0}):this.realFs.readdirSync(s.cS.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((t,r)=>{this.realFs.readlink(s.cS.fromPortablePath(e),this.makeCallback(t,r))}).then(e=>s.cS.toPortablePath(e))}readlinkSync(e){return s.cS.toPortablePath(this.realFs.readlinkSync(s.cS.fromPortablePath(e)))}async truncatePromise(e,t){return await new Promise((r,A)=>{this.realFs.truncate(s.cS.fromPortablePath(e),t,this.makeCallback(r,A))})}truncateSync(e,t){return this.realFs.truncateSync(s.cS.fromPortablePath(e),t)}watch(e,t,r){return this.realFs.watch(s.cS.fromPortablePath(e),t,r)}watchFile(e,t,r){return this.realFs.watchFile(s.cS.fromPortablePath(e),t,r)}unwatchFile(e,t){return this.realFs.unwatchFile(s.cS.fromPortablePath(e),t)}makeCallback(e,t){return(r,A)=>{r?t(r):e(A)}}}},39725:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var A=r(42096),n=r(46009);class o extends A.p{constructor(e){super(n.cS),this.baseFs=e}mapFromBase(e){return n.cS.fromPortablePath(e)}mapToBase(e){return n.cS.toPortablePath(e)}}},42096:(e,t,r)=>{"use strict";r.d(t,{p:()=>n});var A=r(5944);class n extends A.uY{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,t,r){return this.baseFs.openPromise(this.mapToBase(e),t,r)}openSync(e,t,r){return this.baseFs.openSync(this.mapToBase(e),t,r)}async opendirPromise(e,t){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),t),{path:e})}opendirSync(e,t){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),t),{path:e})}async readPromise(e,t,r,A,n){return await this.baseFs.readPromise(e,t,r,A,n)}readSync(e,t,r,A,n){return this.baseFs.readSync(e,t,r,A,n)}async writePromise(e,t,r,A,n){return"string"==typeof t?await this.baseFs.writePromise(e,t,r):await this.baseFs.writePromise(e,t,r,A,n)}writeSync(e,t,r,A,n){return"string"==typeof t?this.baseFs.writeSync(e,t,r):this.baseFs.writeSync(e,t,r,A,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,t){return this.baseFs.createReadStream(null!==e?this.mapToBase(e):e,t)}createWriteStream(e,t){return this.baseFs.createWriteStream(null!==e?this.mapToBase(e):e,t)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,t){return this.baseFs.accessSync(this.mapToBase(e),t)}async accessPromise(e,t){return this.baseFs.accessPromise(this.mapToBase(e),t)}async statPromise(e){return this.baseFs.statPromise(this.mapToBase(e))}statSync(e){return this.baseFs.statSync(this.mapToBase(e))}async lstatPromise(e){return this.baseFs.lstatPromise(this.mapToBase(e))}lstatSync(e){return this.baseFs.lstatSync(this.mapToBase(e))}async chmodPromise(e,t){return this.baseFs.chmodPromise(this.mapToBase(e),t)}chmodSync(e,t){return this.baseFs.chmodSync(this.mapToBase(e),t)}async chownPromise(e,t,r){return this.baseFs.chownPromise(this.mapToBase(e),t,r)}chownSync(e,t,r){return this.baseFs.chownSync(this.mapToBase(e),t,r)}async renamePromise(e,t){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(t))}renameSync(e,t){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(t))}async copyFilePromise(e,t,r=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(t),r)}copyFileSync(e,t,r=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(t),r)}async appendFilePromise(e,t,r){return this.baseFs.appendFilePromise(this.fsMapToBase(e),t,r)}appendFileSync(e,t,r){return this.baseFs.appendFileSync(this.fsMapToBase(e),t,r)}async writeFilePromise(e,t,r){return this.baseFs.writeFilePromise(this.fsMapToBase(e),t,r)}writeFileSync(e,t,r){return this.baseFs.writeFileSync(this.fsMapToBase(e),t,r)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,t,r){return this.baseFs.utimesPromise(this.mapToBase(e),t,r)}utimesSync(e,t,r){return this.baseFs.utimesSync(this.mapToBase(e),t,r)}async mkdirPromise(e,t){return this.baseFs.mkdirPromise(this.mapToBase(e),t)}mkdirSync(e,t){return this.baseFs.mkdirSync(this.mapToBase(e),t)}async rmdirPromise(e,t){return this.baseFs.rmdirPromise(this.mapToBase(e),t)}rmdirSync(e,t){return this.baseFs.rmdirSync(this.mapToBase(e),t)}async linkPromise(e,t){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(t))}linkSync(e,t){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(t))}async symlinkPromise(e,t,r){return this.baseFs.symlinkPromise(this.mapToBase(e),this.mapToBase(t),r)}symlinkSync(e,t,r){return this.baseFs.symlinkSync(this.mapToBase(e),this.mapToBase(t),r)}async readFilePromise(e,t){return this.baseFs.readFilePromise(this.fsMapToBase(e),t)}readFileSync(e,t){return this.baseFs.readFileSync(this.fsMapToBase(e),t)}async readdirPromise(e,{withFileTypes:t}={}){return this.baseFs.readdirPromise(this.mapToBase(e),{withFileTypes:t})}readdirSync(e,{withFileTypes:t}={}){return this.baseFs.readdirSync(this.mapToBase(e),{withFileTypes:t})}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,t){return this.baseFs.truncatePromise(this.mapToBase(e),t)}truncateSync(e,t){return this.baseFs.truncateSync(this.mapToBase(e),t)}watch(e,t,r){return this.baseFs.watch(this.mapToBase(e),t,r)}watchFile(e,t,r){return this.baseFs.watchFile(this.mapToBase(e),t,r)}unwatchFile(e,t){return this.baseFs.unwatchFile(this.mapToBase(e),t)}fsMapToBase(e){return"number"==typeof e?e:this.mapToBase(e)}}},17674:(e,t,r)=>{"use strict";r.d(t,{p:()=>c});var A=r(78420),n=r(42096),o=r(46009);const i=/^[0-9]+$/,s=/^(\/(?:[^/]+\/)*?\$\$virtual)((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/,a=/^([^/]+-)?[a-f0-9]+$/;class c extends n.p{constructor({baseFs:e=new A.S}={}){super(o.y1),this.baseFs=e}static makeVirtualPath(e,t,r){if("$$virtual"!==o.y1.basename(e))throw new Error('Assertion failed: Virtual folders must be named "$$virtual"');if(!o.y1.basename(t).match(a))throw new Error("Assertion failed: Virtual components must be ended by an hexadecimal hash");const A=o.y1.relative(o.y1.dirname(e),r).split("/");let n=0;for(;n{"use strict";r.d(t,{k:()=>C,d:()=>f});var A=r(35747),n=r(92413),o=r(31669),i=r(78761),s=r.n(i),a=r(5944),c=r(78420),g=r(19697),l=r(38783),u=r(22004),h=r(26984),p=r(46009),d=r(65760);const C="mixed";class f extends a.fS{constructor(e,t){super(),this.lzSource=null,this.listings=new Map,this.entries=new Map,this.fileSources=new Map,this.fds=new Map,this.nextFd=0,this.ready=!1,this.readOnly=!1,this.libzip=t.libzip;const r=t;if(this.level=void 0!==r.level?r.level:C,null===e&&(e=Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])),"string"==typeof e){const{baseFs:t=new c.S}=r;this.baseFs=t,this.path=e}else this.path=null,this.baseFs=null;if(t.stats)this.stats=t.stats;else if("string"==typeof e)try{this.stats=this.baseFs.statSync(e)}catch(e){if("ENOENT"!==e.code||!r.create)throw e;this.stats=d.makeDefaultStats()}else this.stats=d.makeDefaultStats();const A=this.libzip.malloc(4);try{let n=0;if("string"==typeof e&&r.create&&(n|=this.libzip.ZIP_CREATE|this.libzip.ZIP_TRUNCATE),t.readOnly&&(n|=this.libzip.ZIP_RDONLY,this.readOnly=!0),"string"==typeof e)this.zip=this.libzip.open(p.cS.fromPortablePath(e),n,A);else{const t=this.allocateUnattachedSource(e);try{this.zip=this.libzip.openFromSource(t,n,A),this.lzSource=t}catch(e){throw this.libzip.source.free(t),e}}if(0===this.zip){const e=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(e,this.libzip.getValue(A,"i32")),this.makeLibzipError(e)}}finally{this.libzip.free(A)}this.listings.set(p.LZ.root,new Set);const n=this.libzip.getNumEntries(this.zip,0);for(let e=0;ee)throw new Error("Overread");const A=this.libzip.HEAPU8.subarray(t,t+e);return Buffer.from(A)}finally{this.libzip.free(t)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource),this.ready=!1}}prepareClose(){if(!this.ready)throw h.Vw("archive closed, close");(0,l.L)(this)}saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cannot be saved and must be discarded when loaded from a buffer");if(this.prepareClose(),this.readOnly)return void this.discardAndClose();const e=this.baseFs.existsSync(this.path)?511&this.baseFs.statSync(this.path).mode:null;if(-1===this.libzip.close(this.zip))throw this.makeLibzipError(this.libzip.getError(this.zip));null===e?this.baseFs.chmodSync(this.path,this.stats.mode):e!==(511&this.baseFs.statSync(this.path).mode)&&this.baseFs.chmodSync(this.path,e),this.ready=!1}discardAndClose(){this.prepareClose(),this.libzip.discard(this.zip),this.ready=!1}resolve(e){return p.y1.resolve(p.LZ.root,e)}async openPromise(e,t,r){return this.openSync(e,t,r)}openSync(e,t,r){const A=this.nextFd++;return this.fds.set(A,{cursor:0,p:e}),A}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(e,t){return this.opendirSync(e,t)}opendirSync(e,t={}){const r=this.resolveFilename(`opendir '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw h.z6(`opendir '${e}'`);const A=this.listings.get(r);if(!A)throw h.Ab(`opendir '${e}'`);const n=[...A],o=this.openSync(r,"r");return(0,g.a)(this,r,n,{onClose:()=>{this.closeSync(o)}})}async readPromise(e,t,r,A,n){return this.readSync(e,t,r,A,n)}readSync(e,t,r=0,A=0,n=-1){const o=this.fds.get(e);if(void 0===o)throw h.Ch("read");let i;i=-1===n||null===n?o.cursor:n;const s=this.readFileSync(o.p);s.copy(t,r,i,i+A);const a=Math.max(0,Math.min(s.length-i,A));return-1!==n&&null!==n||(o.cursor+=a),a}async writePromise(e,t,r,A,n){return"string"==typeof t?this.writeSync(e,t,n):this.writeSync(e,t,r,A,n)}writeSync(e,t,r,A,n){if(void 0===this.fds.get(e))throw h.Ch("read");throw new Error("Unimplemented")}async closePromise(e){return this.closeSync(e)}closeSync(e){if(void 0===this.fds.get(e))throw h.Ch("read");this.fds.delete(e)}createReadStream(e,{encoding:t}={}){if(null===e)throw new Error("Unimplemented");const r=this.openSync(e,"r"),A=Object.assign(new n.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(e,t)=>{clearImmediate(o),this.closeSync(r),t(e)}}),{close(){A.destroy()},bytesRead:0,path:e}),o=setImmediate(async()=>{try{const r=await this.readFilePromise(e,t);A.bytesRead=r.length,A.end(r)}catch(e){A.destroy(e)}});return A}createWriteStream(e,{encoding:t}={}){if(this.readOnly)throw h.YW(`open '${e}'`);if(null===e)throw new Error("Unimplemented");const r=[],A=this.openSync(e,"w"),o=Object.assign(new n.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(n,o)=>{try{n?o(n):(this.writeFileSync(e,Buffer.concat(r),t),o(null))}catch(e){o(e)}finally{this.closeSync(A)}}}),{bytesWritten:0,path:e,close(){o.destroy()}});return o.on("data",e=>{const t=Buffer.from(e);o.bytesWritten+=t.length,r.push(t)}),o}async realpathPromise(e){return this.realpathSync(e)}realpathSync(e){const t=this.resolveFilename(`lstat '${e}'`,e);if(!this.entries.has(t)&&!this.listings.has(t))throw h.z6(`lstat '${e}'`);return t}async existsPromise(e){return this.existsSync(e)}existsSync(e){if(!this.ready)throw h.Vw(`archive closed, existsSync '${e}'`);if(0===this.symlinkCount){const t=p.y1.resolve(p.LZ.root,e);return this.entries.has(t)||this.listings.has(t)}let t;try{t=this.resolveFilename(`stat '${e}'`,e)}catch(e){return!1}return this.entries.has(t)||this.listings.has(t)}async accessPromise(e,t){return this.accessSync(e,t)}accessSync(e,t=A.constants.F_OK){const r=this.resolveFilename(`access '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw h.z6(`access '${e}'`);if(this.readOnly&&t&A.constants.W_OK)throw h.YW(`access '${e}'`)}async statPromise(e){return this.statSync(e)}statSync(e){const t=this.resolveFilename(`stat '${e}'`,e);if(!this.entries.has(t)&&!this.listings.has(t))throw h.z6(`stat '${e}'`);if("/"===e[e.length-1]&&!this.listings.has(t))throw h.Ab(`stat '${e}'`);return this.statImpl(`stat '${e}'`,t)}async lstatPromise(e){return this.lstatSync(e)}lstatSync(e){const t=this.resolveFilename(`lstat '${e}'`,e,!1);if(!this.entries.has(t)&&!this.listings.has(t))throw h.z6(`lstat '${e}'`);if("/"===e[e.length-1]&&!this.listings.has(t))throw h.Ab(`lstat '${e}'`);return this.statImpl(`lstat '${e}'`,t)}statImpl(e,t){const r=this.entries.get(t);if(void 0!==r){const e=this.libzip.struct.statS();if(-1===this.libzip.statIndex(this.zip,r,0,0,e))throw this.makeLibzipError(this.libzip.getError(this.zip));const A=this.stats.uid,n=this.stats.gid,o=this.libzip.struct.statSize(e)>>>0,i=512,s=Math.ceil(o/i),a=1e3*(this.libzip.struct.statMtime(e)>>>0),c=a,g=a,l=a,h=new Date(c),p=new Date(g),C=new Date(l),f=new Date(a),I=this.listings.has(t)?u.QB:this.isSymbolicLink(r)?u.Zv:u.Pe,E=I===u.QB?493:420,B=I|511&this.getUnixMode(r,E);return Object.assign(new d.StatEntry,{uid:A,gid:n,size:o,blksize:i,blocks:s,atime:h,birthtime:p,ctime:C,mtime:f,atimeMs:c,birthtimeMs:g,ctimeMs:l,mtimeMs:a,mode:B})}if(this.listings.has(t)){const e=this.stats.uid,t=this.stats.gid,r=0,A=512,n=0,o=this.stats.mtimeMs,i=this.stats.mtimeMs,s=this.stats.mtimeMs,a=this.stats.mtimeMs,c=new Date(o),g=new Date(i),l=new Date(s),h=new Date(a),p=493|u.QB;return Object.assign(new d.StatEntry,{uid:e,gid:t,size:r,blksize:A,blocks:n,atime:c,birthtime:g,ctime:l,mtime:h,atimeMs:o,birthtimeMs:i,ctimeMs:s,mtimeMs:a,mode:p})}throw new Error("Unreachable")}getUnixMode(e,t){if(-1===this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S))throw this.makeLibzipError(this.libzip.getError(this.zip));return this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX?t:this.libzip.getValue(this.libzip.uint32S,"i32")>>>16}registerListing(e){let t=this.listings.get(e);if(t)return t;const r=this.registerListing(p.y1.dirname(e));return t=new Set,r.add(p.y1.basename(e)),this.listings.set(e,t),t}registerEntry(e,t){this.registerListing(p.y1.dirname(e)).add(p.y1.basename(e)),this.entries.set(e,t)}unregisterListing(e){this.listings.delete(e);const t=this.listings.get(p.y1.dirname(e));null==t||t.delete(p.y1.basename(e))}unregisterEntry(e){this.unregisterListing(e);const t=this.entries.get(e);this.entries.delete(e),void 0!==t&&(this.fileSources.delete(t),this.isSymbolicLink(t)&&this.symlinkCount--)}deleteEntry(e,t){this.unregisterEntry(e);if(-1===this.libzip.delete(this.zip,t))throw this.makeLibzipError(this.libzip.getError(this.zip))}resolveFilename(e,t,r=!0){if(!this.ready)throw h.Vw("archive closed, "+e);let A=p.y1.resolve(p.LZ.root,t);if("/"===A)return p.LZ.root;const n=this.entries.get(A);if(r&&void 0!==n){if(0!==this.symlinkCount&&this.isSymbolicLink(n)){const t=this.getFileSource(n).toString();return this.resolveFilename(e,p.y1.resolve(p.y1.dirname(A),t),!0)}return A}for(;;){const t=this.resolveFilename(e,p.y1.dirname(A),!0),n=this.listings.has(t),o=this.entries.has(t);if(!n&&!o)throw h.z6(e);if(!n)throw h.Ab(e);if(A=p.y1.resolve(t,p.y1.basename(A)),!r||0===this.symlinkCount)break;const i=this.libzip.name.locate(this.zip,A.slice(1));if(-1===i)break;if(!this.isSymbolicLink(i))break;{const e=this.getFileSource(i).toString();A=p.y1.resolve(p.y1.dirname(A),e)}}return A}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));const t=this.libzip.malloc(e.byteLength);if(!t)throw new Error("Couldn't allocate enough memory");return new Uint8Array(this.libzip.HEAPU8.buffer,t,e.byteLength).set(e),{buffer:t,byteLength:e.byteLength}}allocateUnattachedSource(e){const t=this.libzip.struct.errorS(),{buffer:r,byteLength:A}=this.allocateBuffer(e),n=this.libzip.source.fromUnattachedBuffer(r,A,0,!0,t);if(0===n)throw this.libzip.free(t),this.makeLibzipError(t);return n}allocateSource(e){const{buffer:t,byteLength:r}=this.allocateBuffer(e),A=this.libzip.source.fromBuffer(this.zip,t,r,0,!0);if(0===A)throw this.libzip.free(t),this.makeLibzipError(this.libzip.getError(this.zip));return A}setFileSource(e,t){const r=Buffer.isBuffer(t)?t:Buffer.from(t),A=p.y1.relative(p.LZ.root,e),n=this.allocateSource(t);try{const e=this.libzip.file.add(this.zip,A,n,this.libzip.ZIP_FL_OVERWRITE);if(-1===e)throw this.makeLibzipError(this.libzip.getError(this.zip));if("mixed"!==this.level){let t;t=0===this.level?this.libzip.ZIP_CM_STORE:this.libzip.ZIP_CM_DEFLATE;if(-1===this.libzip.file.setCompression(this.zip,e,0,t,this.level))throw this.makeLibzipError(this.libzip.getError(this.zip))}return this.fileSources.set(e,r),e}catch(e){throw this.libzip.source.free(n),e}}isSymbolicLink(e){if(0===this.symlinkCount)return!1;if(-1===this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S))throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.getValue(this.libzip.uint08S,"i8")>>>0!==this.libzip.ZIP_OPSYS_UNIX)return!1;return(this.libzip.getValue(this.libzip.uint32S,"i32")>>>16&u.wK)===u.Zv}getFileSource(e,t={asyncDecompress:!1}){const r=this.fileSources.get(e);if(void 0!==r)return r;const A=this.libzip.struct.statS();if(-1===this.libzip.statIndex(this.zip,e,0,0,A))throw this.makeLibzipError(this.libzip.getError(this.zip));const n=this.libzip.struct.statCompSize(A),o=this.libzip.struct.statCompMethod(A),i=this.libzip.malloc(n);try{const r=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(0===r)throw this.makeLibzipError(this.libzip.getError(this.zip));try{const A=this.libzip.fread(r,i,n,0);if(-1===A)throw this.makeLibzipError(this.libzip.file.getError(r));if(An)throw new Error("Overread");const a=this.libzip.HEAPU8.subarray(i,i+n),c=Buffer.from(a);if(0===o)return this.fileSources.set(e,c),c;if(t.asyncDecompress)return new Promise((t,r)=>{s().inflateRaw(c,(A,n)=>{A?r(A):(this.fileSources.set(e,n),t(n))})});{const t=s().inflateRawSync(c);return this.fileSources.set(e,t),t}}finally{this.libzip.fclose(r)}}finally{this.libzip.free(i)}}async chmodPromise(e,t){return this.chmodSync(e,t)}chmodSync(e,t){if(this.readOnly)throw h.YW(`chmod '${e}'`);t&=493;const r=this.resolveFilename(`chmod '${e}'`,e,!1),A=this.entries.get(r);if(void 0===A)throw new Error(`Assertion failed: The entry should have been registered (${r})`);const n=-512&this.getUnixMode(A,0|u.Pe)|t;if(-1===this.libzip.file.setExternalAttributes(this.zip,A,0,0,this.libzip.ZIP_OPSYS_UNIX,n<<16))throw this.makeLibzipError(this.libzip.getError(this.zip))}async chownPromise(e,t,r){return this.chownSync(e,t,r)}chownSync(e,t,r){throw new Error("Unimplemented")}async renamePromise(e,t){return this.renameSync(e,t)}renameSync(e,t){throw new Error("Unimplemented")}async copyFilePromise(e,t,r){const{indexSource:A,indexDest:n,resolvedDestP:o}=this.prepareCopyFile(e,t,r),i=await this.getFileSource(A,{asyncDecompress:!0}),s=this.setFileSource(o,i);s!==n&&this.registerEntry(o,s)}copyFileSync(e,t,r=0){const{indexSource:A,indexDest:n,resolvedDestP:o}=this.prepareCopyFile(e,t,r),i=this.getFileSource(A),s=this.setFileSource(o,i);s!==n&&this.registerEntry(o,s)}prepareCopyFile(e,t,r=0){if(this.readOnly)throw h.YW(`copyfile '${e} -> '${t}'`);if(0!=(r&A.constants.COPYFILE_FICLONE_FORCE))throw h.bk("unsupported clone operation",`copyfile '${e}' -> ${t}'`);const n=this.resolveFilename(`copyfile '${e} -> ${t}'`,e),o=this.entries.get(n);if(void 0===o)throw h.hq(`copyfile '${e}' -> '${t}'`);const i=this.resolveFilename(`copyfile '${e}' -> ${t}'`,t),s=this.entries.get(i);if(0!=(r&(A.constants.COPYFILE_EXCL|A.constants.COPYFILE_FICLONE_FORCE))&&void 0!==s)throw h.cT(`copyfile '${e}' -> '${t}'`);return{indexSource:o,resolvedDestP:i,indexDest:s}}async appendFilePromise(e,t,r){if(this.readOnly)throw h.YW(`open '${e}'`);return void 0===r?r={flag:"a"}:"string"==typeof r?r={flag:"a",encoding:r}:void 0===r.flag&&(r={flag:"a",...r}),this.writeFilePromise(e,t,r)}appendFileSync(e,t,r={}){if(this.readOnly)throw h.YW(`open '${e}'`);return void 0===r?r={flag:"a"}:"string"==typeof r?r={flag:"a",encoding:r}:void 0===r.flag&&(r={flag:"a",...r}),this.writeFileSync(e,t,r)}async writeFilePromise(e,t,r){const{encoding:A,index:n,resolvedP:o}=this.prepareWriteFile(e,r);void 0!==n&&"object"==typeof r&&r.flag&&r.flag.includes("a")&&(t=Buffer.concat([await this.getFileSource(n,{asyncDecompress:!0}),Buffer.from(t)])),null!==A&&(t=t.toString(A));const i=this.setFileSource(o,t);i!==n&&this.registerEntry(o,i)}writeFileSync(e,t,r){const{encoding:A,index:n,resolvedP:o}=this.prepareWriteFile(e,r);void 0!==n&&"object"==typeof r&&r.flag&&r.flag.includes("a")&&(t=Buffer.concat([this.getFileSource(n),Buffer.from(t)])),null!==A&&(t=t.toString(A));const i=this.setFileSource(o,t);i!==n&&this.registerEntry(o,i)}prepareWriteFile(e,t){if("string"!=typeof e)throw h.Ch("read");if(this.readOnly)throw h.YW(`open '${e}'`);const r=this.resolveFilename(`open '${e}'`,e);if(this.listings.has(r))throw h.GA(`open '${e}'`);let A=null;"string"==typeof t?A=t:"object"==typeof t&&t.encoding&&(A=t.encoding);return{encoding:A,resolvedP:r,index:this.entries.get(r)}}async unlinkPromise(e){return this.unlinkSync(e)}unlinkSync(e){if(this.readOnly)throw h.YW(`unlink '${e}'`);const t=this.resolveFilename(`unlink '${e}'`,e);if(this.listings.has(t))throw h.GA(`unlink '${e}'`);const r=this.entries.get(t);if(void 0===r)throw h.hq(`unlink '${e}'`);this.deleteEntry(t,r)}async utimesPromise(e,t,r){return this.utimesSync(e,t,r)}utimesSync(e,t,r){if(this.readOnly)throw h.YW(`utimes '${e}'`);const A=this.resolveFilename(`utimes '${e}'`,e);this.utimesImpl(A,r)}async lutimesPromise(e,t,r){return this.lutimesSync(e,t,r)}lutimesSync(e,t,r){if(this.readOnly)throw h.YW(`lutimes '${e}'`);const A=this.resolveFilename(`utimes '${e}'`,e,!1);this.utimesImpl(A,r)}utimesImpl(e,t){this.listings.has(e)&&(this.entries.has(e)||this.hydrateDirectory(e));const r=this.entries.get(e);if(void 0===r)throw new Error("Unreachable");if(-1===this.libzip.file.setMtime(this.zip,r,0,function(e){if("string"==typeof e&&String(+e)===e)return+e;if(Number.isFinite(e))return e<0?Date.now()/1e3:e;if((0,o.isDate)(e))return e.getTime()/1e3;throw new Error("Invalid time")}(t),0))throw this.makeLibzipError(this.libzip.getError(this.zip))}async mkdirPromise(e,t){return this.mkdirSync(e,t)}mkdirSync(e,{mode:t=493,recursive:r=!1}={}){if(r)return void this.mkdirpSync(e,{chmod:t});if(this.readOnly)throw h.YW(`mkdir '${e}'`);const A=this.resolveFilename(`mkdir '${e}'`,e);if(this.entries.has(A)||this.listings.has(A))throw h.cT(`mkdir '${e}'`);this.hydrateDirectory(A),this.chmodSync(A,t)}async rmdirPromise(e,t){return this.rmdirSync(e,t)}rmdirSync(e,{recursive:t=!1}={}){if(this.readOnly)throw h.YW(`rmdir '${e}'`);if(t)return void this.removeSync(e);const r=this.resolveFilename(`rmdir '${e}'`,e),A=this.listings.get(r);if(!A)throw h.Ab(`rmdir '${e}'`);if(A.size>0)throw h.re(`rmdir '${e}'`);const n=this.entries.get(r);if(void 0===n)throw h.hq(`rmdir '${e}'`);this.deleteEntry(e,n)}hydrateDirectory(e){const t=this.libzip.dir.add(this.zip,p.y1.relative(p.LZ.root,e));if(-1===t)throw this.makeLibzipError(this.libzip.getError(this.zip));return this.registerListing(e),this.registerEntry(e,t),t}async linkPromise(e,t){return this.linkSync(e,t)}linkSync(e,t){throw h.Hs(`link '${e}' -> '${t}'`)}async symlinkPromise(e,t){return this.symlinkSync(e,t)}symlinkSync(e,t){if(this.readOnly)throw h.YW(`symlink '${e}' -> '${t}'`);const r=this.resolveFilename(`symlink '${e}' -> '${t}'`,t);if(this.listings.has(r))throw h.GA(`symlink '${e}' -> '${t}'`);if(this.entries.has(r))throw h.cT(`symlink '${e}' -> '${t}'`);const A=this.setFileSource(r,e);this.registerEntry(r,A);if(-1===this.libzip.file.setExternalAttributes(this.zip,A,0,0,this.libzip.ZIP_OPSYS_UNIX,(511|u.Zv)<<16))throw this.makeLibzipError(this.libzip.getError(this.zip));this.symlinkCount+=1}async readFilePromise(e,t){"object"==typeof t&&(t=t?t.encoding:void 0);const r=await this.readFileBuffer(e,{asyncDecompress:!0});return t?r.toString(t):r}readFileSync(e,t){"object"==typeof t&&(t=t?t.encoding:void 0);const r=this.readFileBuffer(e);return t?r.toString(t):r}readFileBuffer(e,t={asyncDecompress:!1}){if("string"!=typeof e)throw h.Ch("read");const r=this.resolveFilename(`open '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw h.z6(`open '${e}'`);if("/"===e[e.length-1]&&!this.listings.has(r))throw h.Ab(`open '${e}'`);if(this.listings.has(r))throw h.GA("read");const A=this.entries.get(r);if(void 0===A)throw new Error("Unreachable");return this.getFileSource(A,t)}async readdirPromise(e,{withFileTypes:t}={}){return this.readdirSync(e,{withFileTypes:t})}readdirSync(e,{withFileTypes:t}={}){const r=this.resolveFilename(`scandir '${e}'`,e);if(!this.entries.has(r)&&!this.listings.has(r))throw h.z6(`scandir '${e}'`);const A=this.listings.get(r);if(!A)throw h.Ab(`scandir '${e}'`);const n=[...A];return t?n.map(t=>Object.assign(this.statImpl("lstat",p.y1.join(e,t)),{name:t})):n}async readlinkPromise(e){const t=this.prepareReadlink(e);return(await this.getFileSource(t,{asyncDecompress:!0})).toString()}readlinkSync(e){const t=this.prepareReadlink(e);return this.getFileSource(t).toString()}prepareReadlink(e){const t=this.resolveFilename(`readlink '${e}'`,e,!1);if(!this.entries.has(t)&&!this.listings.has(t))throw h.z6(`readlink '${e}'`);if("/"===e[e.length-1]&&!this.listings.has(t))throw h.Ab(`open '${e}'`);if(this.listings.has(t))throw h.hq(`readlink '${e}'`);const r=this.entries.get(t);if(void 0===r)throw new Error("Unreachable");if(!this.isSymbolicLink(r))throw h.hq(`readlink '${e}'`);return r}async truncatePromise(e,t=0){const r=this.resolveFilename(`open '${e}'`,e),A=this.entries.get(r);if(void 0===A)throw h.hq(`open '${e}'`);const n=await this.getFileSource(A,{asyncDecompress:!0}),o=Buffer.alloc(t,0);return n.copy(o),await this.writeFilePromise(e,o)}truncateSync(e,t=0){const r=this.resolveFilename(`open '${e}'`,e),A=this.entries.get(r);if(void 0===A)throw h.hq(`open '${e}'`);const n=this.getFileSource(A),o=Buffer.alloc(t,0);return n.copy(o),this.writeFileSync(e,o)}watch(e,t,r){let A;switch(typeof t){case"function":case"string":case"undefined":A=!0;break;default:({persistent:A=!0}=t)}if(!A)return{on:()=>{},close:()=>{}};const n=setInterval(()=>{},864e5);return{on:()=>{},close:()=>{clearInterval(n)}}}watchFile(e,t,r){const A=this.resolveFilename(`open '${e}'`,e);return(0,l._x)(this,A,t,r)}unwatchFile(e,t){const r=this.resolveFilename(`open '${e}'`,e);return(0,l.nd)(this,r,t)}}},53660:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var A=r(35747),n=r(5944),o=r(78420),i=r(90739),s=r(38783),a=r(46009);const c=2147483648,g=/.*?(?await this.baseFs.openPromise(e,t,r),async(e,{subPath:A})=>this.remapFd(e,await e.openPromise(A,t,r)))}openSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.openSync(e,t,r),(e,{subPath:A})=>this.remapFd(e,e.openSync(A,t,r)))}async opendirPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.opendirPromise(e,t),async(e,{subPath:r})=>await e.opendirPromise(r,t),{requireSubpath:!1})}opendirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.opendirSync(e,t),(e,{subPath:r})=>e.opendirSync(r,t),{requireSubpath:!1})}async readPromise(e,t,r,A,n){if(0==(e&c))return await this.baseFs.readPromise(e,t,r,A,n);const o=this.fdMap.get(e);if(void 0===o)throw Object.assign(new Error("EBADF: bad file descriptor, read"),{code:"EBADF"});const[i,s]=o;return await i.readPromise(s,t,r,A,n)}readSync(e,t,r,A,n){if(0==(e&c))return this.baseFs.readSync(e,t,r,A,n);const o=this.fdMap.get(e);if(void 0===o)throw Object.assign(new Error("EBADF: bad file descriptor, read"),{code:"EBADF"});const[i,s]=o;return i.readSync(s,t,r,A,n)}async writePromise(e,t,r,A,n){if(0==(e&c))return"string"==typeof t?await this.baseFs.writePromise(e,t,r):await this.baseFs.writePromise(e,t,r,A,n);const o=this.fdMap.get(e);if(void 0===o)throw Object.assign(new Error("EBADF: bad file descriptor, write"),{code:"EBADF"});const[i,s]=o;return"string"==typeof t?await i.writePromise(s,t,r):await i.writePromise(s,t,r,A,n)}writeSync(e,t,r,A,n){if(0==(e&c))return"string"==typeof t?this.baseFs.writeSync(e,t,r):this.baseFs.writeSync(e,t,r,A,n);const o=this.fdMap.get(e);if(void 0===o)throw Object.assign(new Error("EBADF: bad file descriptor, write"),{code:"EBADF"});const[i,s]=o;return"string"==typeof t?i.writeSync(s,t,r):i.writeSync(s,t,r,A,n)}async closePromise(e){if(0==(e&c))return await this.baseFs.closePromise(e);const t=this.fdMap.get(e);if(void 0===t)throw Object.assign(new Error("EBADF: bad file descriptor, close"),{code:"EBADF"});this.fdMap.delete(e);const[r,A]=t;return await r.closePromise(A)}closeSync(e){if(0==(e&c))return this.baseFs.closeSync(e);const t=this.fdMap.get(e);if(void 0===t)throw Object.assign(new Error("EBADF: bad file descriptor, close"),{code:"EBADF"});this.fdMap.delete(e);const[r,A]=t;return r.closeSync(A)}createReadStream(e,t){return null===e?this.baseFs.createReadStream(e,t):this.makeCallSync(e,()=>this.baseFs.createReadStream(e,t),(e,{subPath:r})=>e.createReadStream(r,t))}createWriteStream(e,t){return null===e?this.baseFs.createWriteStream(e,t):this.makeCallSync(e,()=>this.baseFs.createWriteStream(e,t),(e,{subPath:r})=>e.createWriteStream(r,t))}async realpathPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.realpathPromise(e),async(e,{archivePath:t,subPath:r})=>{let A=this.realPaths.get(t);return void 0===A&&(A=await this.baseFs.realpathPromise(t),this.realPaths.set(t,A)),this.pathUtils.join(A,this.pathUtils.relative(a.LZ.root,await e.realpathPromise(r)))})}realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSync(e),(e,{archivePath:t,subPath:r})=>{let A=this.realPaths.get(t);return void 0===A&&(A=this.baseFs.realpathSync(t),this.realPaths.set(t,A)),this.pathUtils.join(A,this.pathUtils.relative(a.LZ.root,e.realpathSync(r)))})}async existsPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.existsPromise(e),async(e,{subPath:t})=>await e.existsPromise(t))}existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e),(e,{subPath:t})=>e.existsSync(t))}async accessPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.accessPromise(e,t),async(e,{subPath:r})=>await e.accessPromise(r,t))}accessSync(e,t){return this.makeCallSync(e,()=>this.baseFs.accessSync(e,t),(e,{subPath:r})=>e.accessSync(r,t))}async statPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.statPromise(e),async(e,{subPath:t})=>await e.statPromise(t))}statSync(e){return this.makeCallSync(e,()=>this.baseFs.statSync(e),(e,{subPath:t})=>e.statSync(t))}async lstatPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.lstatPromise(e),async(e,{subPath:t})=>await e.lstatPromise(t))}lstatSync(e){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e),(e,{subPath:t})=>e.lstatSync(t))}async chmodPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.chmodPromise(e,t),async(e,{subPath:r})=>await e.chmodPromise(r,t))}chmodSync(e,t){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,t),(e,{subPath:r})=>e.chmodSync(r,t))}async chownPromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.chownPromise(e,t,r),async(e,{subPath:A})=>await e.chownPromise(A,t,r))}chownSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.chownSync(e,t,r),(e,{subPath:A})=>e.chownSync(A,t,r))}async renamePromise(e,t){return await this.makeCallPromise(e,async()=>await this.makeCallPromise(t,async()=>await this.baseFs.renamePromise(e,t),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),async(e,{subPath:r})=>await this.makeCallPromise(t,async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},async(t,{subPath:A})=>{if(e!==t)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return await e.renamePromise(r,A)}))}renameSync(e,t){return this.makeCallSync(e,()=>this.makeCallSync(t,()=>this.baseFs.renameSync(e,t),async()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})}),(e,{subPath:r})=>this.makeCallSync(t,()=>{throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"})},(t,{subPath:A})=>{if(e!==t)throw Object.assign(new Error("EEXDEV: cross-device link not permitted"),{code:"EEXDEV"});return e.renameSync(r,A)}))}async copyFilePromise(e,t,r=0){const n=async(e,t,n,o)=>{if(0!=(r&A.constants.COPYFILE_FICLONE_FORCE))throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${t}' -> ${o}'`),{code:"EXDEV"});if(r&A.constants.COPYFILE_EXCL&&await this.existsPromise(t))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${t}' -> '${o}'`),{code:"EEXIST"});let i;try{i=await e.readFilePromise(t)}catch(e){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${t}' -> '${o}'`),{code:"EINVAL"})}await n.writeFilePromise(o,i)};return await this.makeCallPromise(e,async()=>await this.makeCallPromise(t,async()=>await this.baseFs.copyFilePromise(e,t,r),async(t,{subPath:r})=>await n(this.baseFs,e,t,r)),async(e,{subPath:A})=>await this.makeCallPromise(t,async()=>await n(e,A,this.baseFs,t),async(t,{subPath:o})=>e!==t?await n(e,A,t,o):await e.copyFilePromise(A,o,r)))}copyFileSync(e,t,r=0){const n=(e,t,n,o)=>{if(0!=(r&A.constants.COPYFILE_FICLONE_FORCE))throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${t}' -> ${o}'`),{code:"EXDEV"});if(r&A.constants.COPYFILE_EXCL&&this.existsSync(t))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${t}' -> '${o}'`),{code:"EEXIST"});let i;try{i=e.readFileSync(t)}catch(e){throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${t}' -> '${o}'`),{code:"EINVAL"})}n.writeFileSync(o,i)};return this.makeCallSync(e,()=>this.makeCallSync(t,()=>this.baseFs.copyFileSync(e,t,r),(t,{subPath:r})=>n(this.baseFs,e,t,r)),(e,{subPath:A})=>this.makeCallSync(t,()=>n(e,A,this.baseFs,t),(t,{subPath:o})=>e!==t?n(e,A,t,o):e.copyFileSync(A,o,r)))}async appendFilePromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.appendFilePromise(e,t,r),async(e,{subPath:A})=>await e.appendFilePromise(A,t,r))}appendFileSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.appendFileSync(e,t,r),(e,{subPath:A})=>e.appendFileSync(A,t,r))}async writeFilePromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.writeFilePromise(e,t,r),async(e,{subPath:A})=>await e.writeFilePromise(A,t,r))}writeFileSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.writeFileSync(e,t,r),(e,{subPath:A})=>e.writeFileSync(A,t,r))}async unlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.unlinkPromise(e),async(e,{subPath:t})=>await e.unlinkPromise(t))}unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e),(e,{subPath:t})=>e.unlinkSync(t))}async utimesPromise(e,t,r){return await this.makeCallPromise(e,async()=>await this.baseFs.utimesPromise(e,t,r),async(e,{subPath:A})=>await e.utimesPromise(A,t,r))}utimesSync(e,t,r){return this.makeCallSync(e,()=>this.baseFs.utimesSync(e,t,r),(e,{subPath:A})=>e.utimesSync(A,t,r))}async mkdirPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.mkdirPromise(e,t),async(e,{subPath:r})=>await e.mkdirPromise(r,t))}mkdirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,t),(e,{subPath:r})=>e.mkdirSync(r,t))}async rmdirPromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.rmdirPromise(e,t),async(e,{subPath:r})=>await e.rmdirPromise(r,t))}rmdirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e,t),(e,{subPath:r})=>e.rmdirSync(r,t))}async linkPromise(e,t){return await this.makeCallPromise(t,async()=>await this.baseFs.linkPromise(e,t),async(t,{subPath:r})=>await t.linkPromise(e,r))}linkSync(e,t){return this.makeCallSync(t,()=>this.baseFs.linkSync(e,t),(t,{subPath:r})=>t.linkSync(e,r))}async symlinkPromise(e,t,r){return await this.makeCallPromise(t,async()=>await this.baseFs.symlinkPromise(e,t,r),async(t,{subPath:r})=>await t.symlinkPromise(e,r))}symlinkSync(e,t,r){return this.makeCallSync(t,()=>this.baseFs.symlinkSync(e,t,r),(t,{subPath:r})=>t.symlinkSync(e,r))}async readFilePromise(e,t){return this.makeCallPromise(e,async()=>{switch(t){case"utf8":default:return await this.baseFs.readFilePromise(e,t)}},async(e,{subPath:r})=>await e.readFilePromise(r,t))}readFileSync(e,t){return this.makeCallSync(e,()=>{switch(t){case"utf8":default:return this.baseFs.readFileSync(e,t)}},(e,{subPath:r})=>e.readFileSync(r,t))}async readdirPromise(e,{withFileTypes:t}={}){return await this.makeCallPromise(e,async()=>await this.baseFs.readdirPromise(e,{withFileTypes:t}),async(e,{subPath:r})=>await e.readdirPromise(r,{withFileTypes:t}),{requireSubpath:!1})}readdirSync(e,{withFileTypes:t}={}){return this.makeCallSync(e,()=>this.baseFs.readdirSync(e,{withFileTypes:t}),(e,{subPath:r})=>e.readdirSync(r,{withFileTypes:t}),{requireSubpath:!1})}async readlinkPromise(e){return await this.makeCallPromise(e,async()=>await this.baseFs.readlinkPromise(e),async(e,{subPath:t})=>await e.readlinkPromise(t))}readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSync(e),(e,{subPath:t})=>e.readlinkSync(t))}async truncatePromise(e,t){return await this.makeCallPromise(e,async()=>await this.baseFs.truncatePromise(e,t),async(e,{subPath:r})=>await e.truncatePromise(r,t))}truncateSync(e,t){return this.makeCallSync(e,()=>this.baseFs.truncateSync(e,t),(e,{subPath:r})=>e.truncateSync(r,t))}watch(e,t,r){return this.makeCallSync(e,()=>this.baseFs.watch(e,t,r),(e,{subPath:A})=>e.watch(A,t,r))}watchFile(e,t,r){return this.makeCallSync(e,()=>this.baseFs.watchFile(e,t,r),()=>(0,s._x)(this,e,t,r))}unwatchFile(e,t){return this.makeCallSync(e,()=>this.baseFs.unwatchFile(e,t),()=>(0,s.nd)(this,e,t))}async makeCallPromise(e,t,r,{requireSubpath:A=!0}={}){if("string"!=typeof e)return await t();const n=this.resolve(e),o=this.findZip(n);return o?A&&"/"===o.subPath?await t():await this.getZipPromise(o.archivePath,async e=>await r(e,o)):await t()}makeCallSync(e,t,r,{requireSubpath:A=!0}={}){if("string"!=typeof e)return t();const n=this.resolve(e),o=this.findZip(n);return o?A&&"/"===o.subPath?t():this.getZipSync(o.archivePath,e=>r(e,o)):t()}findZip(e){if(this.filter&&!this.filter.test(e))return null;let t="";for(;;){const r=g.exec(e.substr(t.length));if(!r)return null;if(t=this.pathUtils.join(t,r[0]),!1===this.isZip.has(t)){if(this.notZip.has(t))continue;try{if(!this.baseFs.lstatSync(t).isFile()){this.notZip.add(t);continue}}catch(e){return null}this.isZip.add(t)}return{archivePath:t,subPath:this.pathUtils.join(a.LZ.root,e.substr(t.length))}}}limitOpenFiles(e){if(null===this.zipInstances)return;const t=Date.now();let r=t+this.maxAge,A=null===e?0:this.zipInstances.size-e;for(const[n,{zipFs:o,expiresAt:i,refCount:s}]of this.zipInstances.entries())if(0===s&&!o.hasOpenFileHandles())if(t>=i)o.saveAndClose(),this.zipInstances.delete(n),A-=1;else{if(null===e||A<=0){r=i;break}o.saveAndClose(),this.zipInstances.delete(n),A-=1}null===this.limitOpenFilesTimeout&&(null===e&&this.zipInstances.size>0||null!==e)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},r-t).unref())}async getZipPromise(e,t){const r=async()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:await this.baseFs.statPromise(e)});if(this.zipInstances){let A=this.zipInstances.get(e);if(!A){const t=await r();A=this.zipInstances.get(e),A||(A={zipFs:new i.d(e,t),expiresAt:0,refCount:0})}this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,A),A.expiresAt=Date.now()+this.maxAge,A.refCount+=1;try{return await t(A.zipFs)}finally{A.refCount-=1}}else{const A=new i.d(e,await r());try{return await t(A)}finally{A.saveAndClose()}}}getZipSync(e,t){const r=()=>({baseFs:this.baseFs,libzip:this.libzip,readOnly:this.readOnlyArchives,stats:this.baseFs.statSync(e)});if(this.zipInstances){let A=this.zipInstances.get(e);return A||(A={zipFs:new i.d(e,r()),expiresAt:0,refCount:0}),this.zipInstances.delete(e),this.limitOpenFiles(this.maxOpenFiles-1),this.zipInstances.set(e,A),A.expiresAt=Date.now()+this.maxAge,t(A.zipFs)}{const A=new i.d(e,r());try{return t(A)}finally{A.saveAndClose()}}}}},19697:(e,t,r)=>{"use strict";r.d(t,{a:()=>o});var A=r(26984);class n{constructor(e,t,r={}){this.path=e,this.nextDirent=t,this.opts=r,this.closed=!1}throwIfClosed(){if(this.closed)throw A.Xh()}async*[Symbol.asyncIterator](){try{let e;for(;null!==(e=await this.read());)yield e}finally{await this.close()}}read(e){const t=this.readSync();return void 0!==e?e(null,t):Promise.resolve(t)}readSync(){return this.throwIfClosed(),this.nextDirent()}close(e){return this.closeSync(),void 0!==e?e(null):Promise.resolve()}closeSync(){var e,t;this.throwIfClosed(),null===(t=(e=this.opts).onClose)||void 0===t||t.call(e),this.closed=!0}}function o(e,t,r,A){return new n(t,()=>{const A=r.shift();return void 0===A?null:Object.assign(e.statSync(e.pathUtils.join(t,A)),{name:A})},A)}},38783:(e,t,r)=>{"use strict";r.d(t,{L:()=>u,nd:()=>l,_x:()=>g});var A,n,o=r(28614),i=r(65760);function s(e,t){if(e!==t)throw new Error(`Invalid StatWatcher status: expected '${t}', got '${e}'`)}!function(e){e.Change="change",e.Stop="stop"}(A||(A={})),function(e){e.Ready="ready",e.Running="running",e.Stopped="stopped"}(n||(n={}));class a extends o.EventEmitter{constructor(e,t,{bigint:r=!1}={}){super(),this.status=n.Ready,this.changeListeners=new Map,this.startTimeout=null,this.fakeFs=e,this.path=t,this.bigint=r,this.lastStats=this.stat()}static create(e,t,r){const A=new a(e,t,r);return A.start(),A}start(){s(this.status,n.Ready),this.status=n.Running,this.startTimeout=setTimeout(()=>{this.startTimeout=null,this.fakeFs.existsSync(this.path)||this.emit(A.Change,this.lastStats,this.lastStats)},3)}stop(){s(this.status,n.Running),this.status=n.Stopped,null!==this.startTimeout&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(A.Stop)}stat(){try{return this.fakeFs.statSync(this.path)}catch(e){if("ENOENT"===e.code)return i.makeEmptyStats();throw e}}makeInterval(e){const t=setInterval(()=>{const e=this.stat(),t=this.lastStats;i.areStatsEqual(e,t)||(this.lastStats=e,this.emit(A.Change,e,t))},e.interval);return e.persistent?t:t.unref()}registerChangeListener(e,t){this.addListener(A.Change,e),this.changeListeners.set(e,this.makeInterval(t))}unregisterChangeListener(e){this.removeListener(A.Change,e);const t=this.changeListeners.get(e);void 0!==t&&clearInterval(t),this.changeListeners.delete(e)}unregisterAllChangeListeners(){for(const e of this.changeListeners.keys())this.unregisterChangeListener(e)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(const e of this.changeListeners.values())e.ref();return this}unref(){for(const e of this.changeListeners.values())e.unref();return this}}const c=new WeakMap;function g(e,t,r,A){let n,o,i,s;switch(typeof r){case"function":n=!1,o=!0,i=5007,s=r;break;default:({bigint:n=!1,persistent:o=!0,interval:i=5007}=r),s=A}let g=c.get(e);void 0===g&&c.set(e,g=new Map);let l=g.get(t);return void 0===l&&(l=a.create(e,t,{bigint:n}),g.set(t,l)),l.registerChangeListener(s,{persistent:o,interval:i}),l}function l(e,t,r){const A=c.get(e);if(void 0===A)return;const n=A.get(t);void 0!==n&&(void 0===r?n.unregisterAllChangeListeners():n.unregisterChangeListener(r),n.hasChangeListeners()||(n.stop(),A.delete(t)))}function u(e){const t=c.get(e);if(void 0!==t)for(const r of t.keys())l(e,r)}},22004:(e,t,r)=>{"use strict";r.d(t,{wK:()=>A,QB:()=>n,Pe:()=>o,Zv:()=>i});const A=61440,n=16384,o=32768,i=40960},26984:(e,t,r)=>{"use strict";function A(e,t){return Object.assign(new Error(`${e}: ${t}`),{code:e})}function n(e){return A("EBUSY",e)}function o(e,t){return A("ENOSYS",`${e}, ${t}`)}function i(e){return A("EINVAL","invalid argument, "+e)}function s(e){return A("EBADF","bad file descriptor, "+e)}function a(e){return A("ENOENT","no such file or directory, "+e)}function c(e){return A("ENOTDIR","not a directory, "+e)}function g(e){return A("EISDIR","illegal operation on a directory, "+e)}function l(e){return A("EEXIST","file already exists, "+e)}function u(e){return A("EROFS","read-only filesystem, "+e)}function h(e){return A("ENOTEMPTY","directory not empty, "+e)}function p(e){return A("EOPNOTSUPP","operation not supported, "+e)}function d(){return A("ERR_DIR_CLOSED","Directory handle was closed")}r.d(t,{Vw:()=>n,bk:()=>o,hq:()=>i,Ch:()=>s,z6:()=>a,Ab:()=>c,GA:()=>g,cT:()=>l,YW:()=>u,re:()=>h,Hs:()=>p,Xh:()=>d,Yn:()=>C});class C extends Error{constructor(e,t){super(e),this.name="Libzip Error",this.code=t}}},43896:(e,t,r)=>{"use strict";r.r(t),r.d(t,{AliasFS:()=>u.K,CwdFS:()=>h.M,DEFAULT_COMPRESSION_LEVEL:()=>l.k,FakeFS:()=>g.uY,Filename:()=>s.QS,JailFS:()=>p.n,LazyFS:()=>d.v,NoFS:()=>f,NodeFS:()=>i.S,PortablePath:()=>s.LZ,PosixFS:()=>I.i,ProxiedFS:()=>E.p,VirtualFS:()=>B.p,ZipFS:()=>l.d,ZipOpenFS:()=>y.A,extendFs:()=>Q,normalizeLineEndings:()=>g.qH,npath:()=>s.cS,opendir:()=>c.a,patchFs:()=>w,ppath:()=>s.y1,statUtils:()=>a,toFilename:()=>s.Zu,xfs:()=>S});var A=r(12087),n=r.n(A),o=r(31669),i=r(78420),s=r(46009),a=r(65760),c=r(19697),g=r(5944),l=r(90739),u=r(14626),h=r(75448),p=r(10489),d=r(15037);const C=()=>Object.assign(new Error("ENOSYS: unsupported filesystem access"),{code:"ENOSYS"});class f extends g.uY{constructor(){super(s.y1)}getExtractHint(){throw C()}getRealPath(){throw C()}resolve(){throw C()}async openPromise(){throw C()}openSync(){throw C()}async opendirPromise(){throw C()}opendirSync(){throw C()}async readPromise(){throw C()}readSync(){throw C()}async writePromise(){throw C()}writeSync(){throw C()}async closePromise(){throw C()}closeSync(){throw C()}createWriteStream(){throw C()}createReadStream(){throw C()}async realpathPromise(){throw C()}realpathSync(){throw C()}async readdirPromise(){throw C()}readdirSync(){throw C()}async existsPromise(e){throw C()}existsSync(e){throw C()}async accessPromise(){throw C()}accessSync(){throw C()}async statPromise(){throw C()}statSync(){throw C()}async lstatPromise(e){throw C()}lstatSync(e){throw C()}async chmodPromise(){throw C()}chmodSync(){throw C()}async chownPromise(){throw C()}chownSync(){throw C()}async mkdirPromise(){throw C()}mkdirSync(){throw C()}async rmdirPromise(){throw C()}rmdirSync(){throw C()}async linkPromise(){throw C()}linkSync(){throw C()}async symlinkPromise(){throw C()}symlinkSync(){throw C()}async renamePromise(){throw C()}renameSync(){throw C()}async copyFilePromise(){throw C()}copyFileSync(){throw C()}async appendFilePromise(){throw C()}appendFileSync(){throw C()}async writeFilePromise(){throw C()}writeFileSync(){throw C()}async unlinkPromise(){throw C()}unlinkSync(){throw C()}async utimesPromise(){throw C()}utimesSync(){throw C()}async readFilePromise(){throw C()}readFileSync(){throw C()}async readlinkPromise(){throw C()}readlinkSync(){throw C()}async truncatePromise(){throw C()}truncateSync(){throw C()}watch(){throw C()}watchFile(){throw C()}unwatchFile(){throw C()}}f.instance=new f;var I=r(39725),E=r(42096),B=r(17674),y=r(53660);function m(e){const t=s.cS.toPortablePath(n().tmpdir()),r=Math.ceil(4294967296*Math.random()).toString(16).padStart(8,"0");return s.y1.join(t,`${e}${r}`)}function w(e,t){const r=new Set(["accessSync","appendFileSync","createReadStream","chmodSync","chownSync","closeSync","copyFileSync","linkSync","lstatSync","lutimesSync","mkdirSync","openSync","opendirSync","readSync","readlinkSync","readFileSync","readdirSync","readlinkSync","realpathSync","renameSync","rmdirSync","statSync","symlinkSync","truncateSync","unlinkSync","unwatchFile","utimesSync","watch","watchFile","writeFileSync","writeSync"]),A=new Set(["accessPromise","appendFilePromise","chmodPromise","chownPromise","closePromise","copyFilePromise","linkPromise","lstatPromise","lutimesPromise","mkdirPromise","openPromise","opendirPromise","readdirPromise","realpathPromise","readFilePromise","readdirPromise","readlinkPromise","renamePromise","rmdirPromise","statPromise","symlinkPromise","truncatePromise","unlinkPromise","utimesPromise","writeFilePromise","writeSync"]),n=new Set(["appendFilePromise","chmodPromise","chownPromise","closePromise","readPromise","readFilePromise","statPromise","truncatePromise","utimesPromise","writePromise","writeFilePromise"]),i=(e,t,r)=>{const A=e[t];e[t]=r,void 0!==(null==A?void 0:A[o.promisify.custom])&&(r[o.promisify.custom]=A[o.promisify.custom])};i(e,"exists",(e,...r)=>{const A="function"==typeof r[r.length-1]?r.pop():()=>{};process.nextTick(()=>{t.existsPromise(e).then(e=>{A(e)},()=>{A(!1)})})}),i(e,"read",(e,r,...A)=>{const n="function"==typeof A[A.length-1]?A.pop():()=>{};process.nextTick(()=>{t.readPromise(e,r,...A).then(e=>{n(null,e,r)},e=>{n(e)})})});for(const r of A){const A=r.replace(/Promise$/,"");if(void 0===e[A])continue;const n=t[r];if(void 0===n)continue;i(e,A,(...e)=>{const r="function"==typeof e[e.length-1]?e.pop():()=>{};process.nextTick(()=>{n.apply(t,e).then(e=>{r(null,e)},e=>{r(e)})})})}e.realpath.native=e.realpath,i(e,"existsSync",e=>{try{return t.existsSync(e)}catch(e){return!1}});for(const A of r){const r=A;if(void 0===e[r])continue;const n=t[A];void 0!==n&&i(e,r,n.bind(t))}e.realpathSync.native=e.realpathSync;{const r=process.emitWarning;let o;process.emitWarning=()=>{};try{o=e.promises}finally{process.emitWarning=r}if(void 0!==o){for(const e of A){const r=e.replace(/Promise$/,"");if(void 0===o[r])continue;const A=t[e];void 0!==A&&("open"!==e&&i(o,r,A.bind(t)))}class e{constructor(e){this.fd=e}}for(const r of n){const A=r.replace(/Promise$/,""),n=t[r];void 0!==n&&i(e.prototype,A,(function(...e){return n.call(t,this.fd,...e)}))}i(o,"open",async(...r)=>{const A=await t.openPromise(...r);return new e(A)})}}e.read[o.promisify.custom]=async(e,r,...A)=>{const n=t.readPromise(e,r,...A);return{bytesRead:await n,buffer:r}}}function Q(e,t){const r=Object.create(e);return w(r,t),r}const D=new Set;let b=!1;function v(){b||(b=!0,process.once("exit",()=>{S.rmtempSync()}))}const S=Object.assign(new i.S,{detachTemp(e){D.delete(e)},mktempSync(e){for(v();;){const t=m("xfs-");try{this.mkdirSync(t)}catch(e){if("EEXIST"===e.code)continue;throw e}const r=this.realpathSync(t);if(D.add(r),void 0===e)return t;try{return e(r)}finally{if(D.has(r)){D.delete(r);try{this.removeSync(r)}catch(e){}}}}},async mktempPromise(e){for(v();;){const t=m("xfs-");try{await this.mkdirPromise(t)}catch(e){if("EEXIST"===e.code)continue;throw e}const r=await this.realpathPromise(t);if(D.add(r),void 0===e)return r;try{return await e(r)}finally{if(D.has(r)){D.delete(r);try{await this.removePromise(r)}catch(e){}}}}},async rmtempPromise(){await Promise.all(Array.from(D.values()).map(async e=>{try{await S.removePromise(e,{maxRetries:0}),D.delete(e)}catch(e){}}))},rmtempSync(){for(const e of D)try{S.removeSync(e),D.delete(e)}catch(e){}}})},46009:(e,t,r)=>{"use strict";r.d(t,{LZ:()=>i,QS:()=>s,cS:()=>a,y1:()=>c,CI:()=>f,Zu:()=>I});var A,n=r(85622),o=r.n(n);!function(e){e[e.File=0]="File",e[e.Portable=1]="Portable",e[e.Native=2]="Native"}(A||(A={}));const i={root:"/",dot:"."},s={nodeModules:"node_modules",manifest:"package.json",lockfile:"yarn.lock",pnpJs:".pnp.js",rc:".yarnrc.yml"},a=Object.create(o()),c=Object.create(o().posix);a.cwd=()=>process.cwd(),c.cwd=()=>C(process.cwd()),c.resolve=(...e)=>e.length>0&&c.isAbsolute(e[0])?o().posix.resolve(...e):o().posix.resolve(c.cwd(),...e);const g=function(e,t,r){return(t=e.normalize(t))===(r=e.normalize(r))?".":(t.endsWith(e.sep)||(t+=e.sep),r.startsWith(t)?r.slice(t.length):null)};a.fromPortablePath=d,a.toPortablePath=C,a.contains=(e,t)=>g(a,e,t),c.contains=(e,t)=>g(c,e,t);const l=/^([a-zA-Z]:.*)$/,u=/^\\\\(\.\\)?(.*)$/,h=/^\/([a-zA-Z]:.*)$/,p=/^\/unc\/(\.dot\/)?(.*)$/;function d(e){if("win32"!==process.platform)return e;if(e.match(h))e=e.replace(h,"$1");else{if(!e.match(p))return e;e=e.replace(p,(e,t,r)=>`\\\\${t?".\\":""}${r}`)}return e.replace(/\//g,"\\")}function C(e){return"win32"!==process.platform?e:(e.match(l)?e=e.replace(l,"/$1"):e.match(u)&&(e=e.replace(u,(e,t,r)=>`/unc/${t?".dot/":""}${r}`)),e.replace(/\\/g,"/"))}function f(e,t){return e===a?d(t):C(t)}function I(e){if(""!==a.parse(e).dir||""!==c.parse(e).dir)throw new Error(`Invalid filename: "${e}"`);return e}},65760:(e,t,r)=>{"use strict";r.r(t),r.d(t,{DirEntry:()=>n,StatEntry:()=>o,makeDefaultStats:()=>i,makeEmptyStats:()=>s,areStatsEqual:()=>a});var A=r(22004);class n{constructor(){this.name="",this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&A.wK)===A.QB}isFIFO(){return!1}isFile(){return(this.mode&A.wK)===A.Pe}isSocket(){return!1}isSymbolicLink(){return(this.mode&A.wK)===A.Zv}}class o{constructor(){this.dev=0,this.ino=0,this.mode=0,this.nlink=1,this.rdev=0,this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&A.wK)===A.QB}isFIFO(){return!1}isFile(){return(this.mode&A.wK)===A.Pe}isSocket(){return!1}isSymbolicLink(){return(this.mode&A.wK)===A.Zv}}function i(){return Object.assign(new o,{uid:0,gid:0,size:0,blksize:0,atimeMs:0,mtimeMs:0,ctimeMs:0,birthtimeMs:0,atime:new Date(0),mtime:new Date(0),ctime:new Date(0),birthtime:new Date(0),mode:420|A.Pe})}function s(){return Object.assign(i(),{nlink:0,blocks:0,mode:0})}function a(e,t){return e.atimeMs===t.atimeMs&&(e.birthtimeMs===t.birthtimeMs&&(e.blksize===t.blksize&&(e.blocks===t.blocks&&(e.ctimeMs===t.ctimeMs&&(e.dev===t.dev&&(e.gid===t.gid&&(e.ino===t.ino&&(e.isBlockDevice()===t.isBlockDevice()&&(e.isCharacterDevice()===t.isCharacterDevice()&&(e.isDirectory()===t.isDirectory()&&(e.isFIFO()===t.isFIFO()&&(e.isFile()===t.isFile()&&(e.isSocket()===t.isSocket()&&(e.isSymbolicLink()===t.isSymbolicLink()&&(e.mode===t.mode&&(e.mtimeMs===t.mtimeMs&&(e.nlink===t.nlink&&(e.rdev===t.rdev&&(e.size===t.size&&e.uid===t.uid)))))))))))))))))))}},65281:(e,t,r)=>{"use strict";r.r(t),r.d(t,{getLibzipPromise:()=>s,getLibzipSync:()=>i});const A=["number","number"];var n;!function(e){e[e.ZIP_ER_OK=0]="ZIP_ER_OK",e[e.ZIP_ER_MULTIDISK=1]="ZIP_ER_MULTIDISK",e[e.ZIP_ER_RENAME=2]="ZIP_ER_RENAME",e[e.ZIP_ER_CLOSE=3]="ZIP_ER_CLOSE",e[e.ZIP_ER_SEEK=4]="ZIP_ER_SEEK",e[e.ZIP_ER_READ=5]="ZIP_ER_READ",e[e.ZIP_ER_WRITE=6]="ZIP_ER_WRITE",e[e.ZIP_ER_CRC=7]="ZIP_ER_CRC",e[e.ZIP_ER_ZIPCLOSED=8]="ZIP_ER_ZIPCLOSED",e[e.ZIP_ER_NOENT=9]="ZIP_ER_NOENT",e[e.ZIP_ER_EXISTS=10]="ZIP_ER_EXISTS",e[e.ZIP_ER_OPEN=11]="ZIP_ER_OPEN",e[e.ZIP_ER_TMPOPEN=12]="ZIP_ER_TMPOPEN",e[e.ZIP_ER_ZLIB=13]="ZIP_ER_ZLIB",e[e.ZIP_ER_MEMORY=14]="ZIP_ER_MEMORY",e[e.ZIP_ER_CHANGED=15]="ZIP_ER_CHANGED",e[e.ZIP_ER_COMPNOTSUPP=16]="ZIP_ER_COMPNOTSUPP",e[e.ZIP_ER_EOF=17]="ZIP_ER_EOF",e[e.ZIP_ER_INVAL=18]="ZIP_ER_INVAL",e[e.ZIP_ER_NOZIP=19]="ZIP_ER_NOZIP",e[e.ZIP_ER_INTERNAL=20]="ZIP_ER_INTERNAL",e[e.ZIP_ER_INCONS=21]="ZIP_ER_INCONS",e[e.ZIP_ER_REMOVE=22]="ZIP_ER_REMOVE",e[e.ZIP_ER_DELETED=23]="ZIP_ER_DELETED",e[e.ZIP_ER_ENCRNOTSUPP=24]="ZIP_ER_ENCRNOTSUPP",e[e.ZIP_ER_RDONLY=25]="ZIP_ER_RDONLY",e[e.ZIP_ER_NOPASSWD=26]="ZIP_ER_NOPASSWD",e[e.ZIP_ER_WRONGPASSWD=27]="ZIP_ER_WRONGPASSWD",e[e.ZIP_ER_OPNOTSUPP=28]="ZIP_ER_OPNOTSUPP",e[e.ZIP_ER_INUSE=29]="ZIP_ER_INUSE",e[e.ZIP_ER_TELL=30]="ZIP_ER_TELL",e[e.ZIP_ER_COMPRESSED_DATA=31]="ZIP_ER_COMPRESSED_DATA"}(n||(n={}));let o=null;function i(){var e;return null===o&&(e=r(3368),o={get HEAP8(){return e.HEAP8},get HEAPU8(){return e.HEAPU8},errors:n,SEEK_SET:0,SEEK_CUR:1,SEEK_END:2,ZIP_CHECKCONS:4,ZIP_CREATE:1,ZIP_EXCL:2,ZIP_TRUNCATE:8,ZIP_RDONLY:16,ZIP_FL_OVERWRITE:8192,ZIP_FL_COMPRESSED:4,ZIP_OPSYS_DOS:0,ZIP_OPSYS_AMIGA:1,ZIP_OPSYS_OPENVMS:2,ZIP_OPSYS_UNIX:3,ZIP_OPSYS_VM_CMS:4,ZIP_OPSYS_ATARI_ST:5,ZIP_OPSYS_OS_2:6,ZIP_OPSYS_MACINTOSH:7,ZIP_OPSYS_Z_SYSTEM:8,ZIP_OPSYS_CPM:9,ZIP_OPSYS_WINDOWS_NTFS:10,ZIP_OPSYS_MVS:11,ZIP_OPSYS_VSE:12,ZIP_OPSYS_ACORN_RISC:13,ZIP_OPSYS_VFAT:14,ZIP_OPSYS_ALTERNATE_MVS:15,ZIP_OPSYS_BEOS:16,ZIP_OPSYS_TANDEM:17,ZIP_OPSYS_OS_400:18,ZIP_OPSYS_OS_X:19,ZIP_CM_DEFAULT:-1,ZIP_CM_STORE:0,ZIP_CM_DEFLATE:8,uint08S:e._malloc(1),uint16S:e._malloc(2),uint32S:e._malloc(4),uint64S:e._malloc(8),malloc:e._malloc,free:e._free,getValue:e.getValue,open:e.cwrap("zip_open","number",["string","number","number"]),openFromSource:e.cwrap("zip_open_from_source","number",["number","number","number"]),close:e.cwrap("zip_close","number",["number"]),discard:e.cwrap("zip_discard",null,["number"]),getError:e.cwrap("zip_get_error","number",["number"]),getName:e.cwrap("zip_get_name","string",["number","number","number"]),getNumEntries:e.cwrap("zip_get_num_entries","number",["number","number"]),delete:e.cwrap("zip_delete","number",["number","number"]),stat:e.cwrap("zip_stat","number",["number","string","number","number"]),statIndex:e.cwrap("zip_stat_index","number",["number",...A,"number","number"]),fopen:e.cwrap("zip_fopen","number",["number","string","number"]),fopenIndex:e.cwrap("zip_fopen_index","number",["number",...A,"number"]),fread:e.cwrap("zip_fread","number",["number","number","number","number"]),fclose:e.cwrap("zip_fclose","number",["number"]),dir:{add:e.cwrap("zip_dir_add","number",["number","string"])},file:{add:e.cwrap("zip_file_add","number",["number","string","number","number"]),getError:e.cwrap("zip_file_get_error","number",["number"]),getExternalAttributes:e.cwrap("zip_file_get_external_attributes","number",["number",...A,"number","number","number"]),setExternalAttributes:e.cwrap("zip_file_set_external_attributes","number",["number",...A,"number","number","number"]),setMtime:e.cwrap("zip_file_set_mtime","number",["number",...A,"number","number"]),setCompression:e.cwrap("zip_set_file_compression","number",["number",...A,"number","number"])},ext:{countSymlinks:e.cwrap("zip_ext_count_symlinks","number",["number"])},error:{initWithCode:e.cwrap("zip_error_init_with_code",null,["number","number"]),strerror:e.cwrap("zip_error_strerror","string",["number"])},name:{locate:e.cwrap("zip_name_locate","number",["number","string","number"])},source:{fromUnattachedBuffer:e.cwrap("zip_source_buffer_create","number",["number","number","number","number"]),fromBuffer:e.cwrap("zip_source_buffer","number",["number","number",...A,"number"]),free:e.cwrap("zip_source_free",null,["number"]),keep:e.cwrap("zip_source_keep",null,["number"]),open:e.cwrap("zip_source_open","number",["number"]),close:e.cwrap("zip_source_close","number",["number"]),seek:e.cwrap("zip_source_seek","number",["number",...A,"number"]),tell:e.cwrap("zip_source_tell","number",["number"]),read:e.cwrap("zip_source_read","number",["number","number","number"]),error:e.cwrap("zip_source_error","number",["number"]),setMtime:e.cwrap("zip_source_set_mtime","number",["number","number"])},struct:{stat:e.cwrap("zipstruct_stat","number",[]),statS:e.cwrap("zipstruct_statS","number",[]),statName:e.cwrap("zipstruct_stat_name","string",["number"]),statIndex:e.cwrap("zipstruct_stat_index","number",["number"]),statSize:e.cwrap("zipstruct_stat_size","number",["number"]),statCompSize:e.cwrap("zipstruct_stat_comp_size","number",["number"]),statCompMethod:e.cwrap("zipstruct_stat_comp_method","number",["number"]),statMtime:e.cwrap("zipstruct_stat_mtime","number",["number"]),error:e.cwrap("zipstruct_error","number",[]),errorS:e.cwrap("zipstruct_errorS","number",[]),errorCodeZip:e.cwrap("zipstruct_error_code_zip","number",["number"])}}),o}async function s(){return i()}},11640:(e,t,r)=>{"use strict";r.r(t),r.d(t,{parseResolution:()=>i,parseShell:()=>n,parseSyml:()=>I,stringifyResolution:()=>s,stringifySyml:()=>d});var A=r(92962);function n(e,t={isGlobPattern:()=>!1}){try{return(0,A.parse)(e,t)}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}var o=r(98261);function i(e){const t=e.match(/^\*{1,2}\/(.*)/);if(t)throw new Error(`The override for '${e}' includes a glob pattern. Glob patterns have been removed since their behaviours don't match what you'd expect. Set the override to '${t[1]}' instead.`);try{return(0,o.parse)(e)}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}function s(e){let t="";return e.from&&(t+=e.from.fullName,e.from.description&&(t+="@"+e.from.description),t+="/"),t+=e.descriptor.fullName,e.descriptor.description&&(t+="@"+e.descriptor.description),t}var a=r(21194),c=r(85443);const g=/^(?![-?:,\][{}#&*!|>'"%@` \t\r\n]).([ \t]*(?![,\][{}:# \t\r\n]).)*$/,l=["__metadata","version","resolution","dependencies","peerDependencies","dependenciesMeta","peerDependenciesMeta","binaries"];class u{constructor(e){this.data=e}}function h(e){return e.match(g)?e:JSON.stringify(e)}function p(e,t,r){if(null===e)return"null\n";if("number"==typeof e||"boolean"==typeof e)return e.toString()+"\n";if("string"==typeof e)return h(e)+"\n";if(Array.isArray(e)){if(0===e.length)return"[]\n";const r=" ".repeat(t);return"\n"+e.map(e=>`${r}- ${p(e,t+1,!1)}`).join("")}if("object"==typeof e&&e){let A,n;e instanceof u?(A=e.data,n=!1):(A=e,n=!0);const o=" ".repeat(t),i=Object.keys(A);n&&i.sort((e,t)=>{const r=l.indexOf(e),A=l.indexOf(t);return-1===r&&-1===A?et?1:0:-1!==r&&-1===A?-1:-1===r&&-1!==A?1:r-A});const s=i.filter(e=>!function e(t){return void 0===t||"object"==typeof t&&null!==t&&Object.keys(t).every(r=>e(t[r]))}(A[e])).map((e,n)=>{const i=A[e],s=h(e),a=p(i,t+1,!0),c=n>0||r?o:"";return a.startsWith("\n")?`${c}${s}:${a}`:`${c}${s}: ${a}`}).join(0===t?"\n":"")||"\n";return r?"\n"+s:""+s}throw new Error(`Unsupported value type (${e})`)}function d(e){try{const t=p(e,0,!1);return"\n"!==t?t:""}catch(e){throw e.location&&(e.message=e.message.replace(/(\.)?$/,` (line ${e.location.start.line}, column ${e.location.start.column})$1`)),e}}d.PreserveOrdering=u;const C=/^(#.*(\r?\n))*?#\s+yarn\s+lockfile\s+v1\r?\n/i;function f(e){if(C.test(e))return function(e){return e.endsWith("\n")||(e+="\n"),(0,c.parse)(e)}(e);const t=(0,a.safeLoad)(e,{schema:a.FAILSAFE_SCHEMA});if(null==t)return{};if("object"!=typeof t)throw new Error(`Expected an indexed object, got a ${typeof t} instead. Does your file follow Yaml's rules?`);if(Array.isArray(t))throw new Error("Expected an indexed object, got an array instead. Does your file follow Yaml's rules?");return t}function I(e){return f(e)}},34432:(e,t,r)=>{"use strict";var A,n;r.d(t,{gY:()=>E,Q$:()=>B,oC:()=>F}),function(e){e.HARD="HARD",e.SOFT="SOFT"}(A||(A={})),function(e){e.DEFAULT="DEFAULT",e.TOP_LEVEL="TOP_LEVEL",e.FALLBACK_EXCLUSION_LIST="FALLBACK_EXCLUSION_LIST",e.FALLBACK_EXCLUSION_ENTRIES="FALLBACK_EXCLUSION_ENTRIES",e.FALLBACK_EXCLUSION_DATA="FALLBACK_EXCLUSION_DATA",e.PACKAGE_REGISTRY_DATA="PACKAGE_REGISTRY_DATA",e.PACKAGE_REGISTRY_ENTRIES="PACKAGE_REGISTRY_ENTRIES",e.PACKAGE_STORE_DATA="PACKAGE_STORE_DATA",e.PACKAGE_STORE_ENTRIES="PACKAGE_STORE_ENTRIES",e.PACKAGE_INFORMATION_DATA="PACKAGE_INFORMATION_DATA",e.PACKAGE_DEPENDENCIES="PACKAGE_DEPENDENCIES",e.PACKAGE_DEPENDENCY="PACKAGE_DEPENDENCY"}(n||(n={}));const o={[n.DEFAULT]:{collapsed:!1,next:{"*":n.DEFAULT}},[n.TOP_LEVEL]:{collapsed:!1,next:{fallbackExclusionList:n.FALLBACK_EXCLUSION_LIST,packageRegistryData:n.PACKAGE_REGISTRY_DATA,"*":n.DEFAULT}},[n.FALLBACK_EXCLUSION_LIST]:{collapsed:!1,next:{"*":n.FALLBACK_EXCLUSION_ENTRIES}},[n.FALLBACK_EXCLUSION_ENTRIES]:{collapsed:!0,next:{"*":n.FALLBACK_EXCLUSION_DATA}},[n.FALLBACK_EXCLUSION_DATA]:{collapsed:!0,next:{"*":n.DEFAULT}},[n.PACKAGE_REGISTRY_DATA]:{collapsed:!1,next:{"*":n.PACKAGE_REGISTRY_ENTRIES}},[n.PACKAGE_REGISTRY_ENTRIES]:{collapsed:!0,next:{"*":n.PACKAGE_STORE_DATA}},[n.PACKAGE_STORE_DATA]:{collapsed:!1,next:{"*":n.PACKAGE_STORE_ENTRIES}},[n.PACKAGE_STORE_ENTRIES]:{collapsed:!0,next:{"*":n.PACKAGE_INFORMATION_DATA}},[n.PACKAGE_INFORMATION_DATA]:{collapsed:!1,next:{packageDependencies:n.PACKAGE_DEPENDENCIES,"*":n.DEFAULT}},[n.PACKAGE_DEPENDENCIES]:{collapsed:!1,next:{"*":n.PACKAGE_DEPENDENCY}},[n.PACKAGE_DEPENDENCY]:{collapsed:!0,next:{"*":n.DEFAULT}}};function i(e,t,r,A){const{next:n}=o[r];return s(t,n[e]||n["*"],A)}function s(e,t,r){const{collapsed:A}=o[t];return Array.isArray(e)?A?function(e,t,r){let A="";A+="[";for(let n=0,o=e.length;ne(t)));const n=r.map((e,t)=>t);return n.sort((e,t)=>{for(const r of A){const A=r[e]r[t]?1:0;if(0!==A)return A}return 0}),n.map(e=>r[e])}function g(e){const t=new Map,r=c(e.fallbackExclusionList||[],[({name:e,reference:t})=>e,({name:e,reference:t})=>t]);for(const{name:e,reference:A}of r){let r=t.get(e);void 0===r&&t.set(e,r=new Set),r.add(A)}return Array.from(t).map(([e,t])=>[e,Array.from(t)])}function l(e){return c(e.fallbackPool||[],([e])=>e)}function u(e){const t=[];for(const[r,A]of c(e.packageRegistry,([e])=>null===e?"0":"1"+e)){const e=[];t.push([r,e]);for(const[t,{packageLocation:n,packageDependencies:o,packagePeers:i,linkType:s,discardFromLookup:a}]of c(A,([e])=>null===e?"0":"1"+e)){const A=[];null===r||null===t||o.has(r)||A.push([r,t]);for(const[e,t]of c(o.entries(),([e])=>e))A.push([e,t]);const g=i&&i.size>0?Array.from(i):void 0,l=a||void 0;e.push([t,{packageLocation:n,packageDependencies:A,packagePeers:g,linkType:s,discardFromLookup:l}])}}return t}function h(e){return c(e.blacklistedLocations||[],e=>e)}function p(e){return{__info:["This file is automatically generated. Do not touch it, or risk","your modifications being lost. We also recommend you not to read","it either without using the @yarnpkg/pnp package, as the data layout","is entirely unspecified and WILL change from a version to another."],dependencyTreeRoots:e.dependencyTreeRoots,enableTopLevelFallback:e.enableTopLevelFallback||!1,ignorePatternData:e.ignorePattern||null,fallbackExclusionList:g(e),fallbackPool:l(e),locationBlacklistData:h(e),packageRegistryData:u(e)}}var d=r(20103),C=r.n(d);function f(e,t){return[e?e+"\n":"","/* eslint-disable */\n\n","try {\n"," Object.freeze({}).detectStrictMode = true;\n","} catch (error) {\n"," throw new Error(`The whole PnP file got strict-mode-ified, which is known to break (Emscripten libraries aren't strict mode). This usually happens when the file goes through Babel.`);\n","}\n","\n","var __non_webpack_module__ = module;\n","\n","function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n",t.replace(/^/gm," "),"}\n","\n",C()()].join("")}function I(e){return JSON.stringify(e,null,2)}function E(e){const t=function(e){return[`return hydrateRuntimeState(${a(e)}, {basePath: basePath || __dirname});\n`].join("")}(p(e));return f(e.shebang,t)}function B(e){const t=p(e),r=(A=e.dataLocation,["var path = require('path');\n",`var dataLocation = path.resolve(__dirname, ${JSON.stringify(A)});\n`,"return hydrateRuntimeState(require(dataLocation), {basePath: basePath || path.dirname(dataLocation)});\n"].join(""));var A;const n=f(e.shebang,r);return{dataFile:I(t),loaderFile:n}}var y=r(35747),m=(r(85622),r(31669)),w=r(46009);var Q,D=r(17674),b=r(32282);!function(e){e.API_ERROR="API_ERROR",e.BLACKLISTED="BLACKLISTED",e.BUILTIN_NODE_RESOLUTION_FAILED="BUILTIN_NODE_RESOLUTION_FAILED",e.MISSING_DEPENDENCY="MISSING_DEPENDENCY",e.MISSING_PEER_DEPENDENCY="MISSING_PEER_DEPENDENCY",e.QUALIFIED_PATH_RESOLUTION_FAILED="QUALIFIED_PATH_RESOLUTION_FAILED",e.INTERNAL="INTERNAL",e.UNDECLARED_DEPENDENCY="UNDECLARED_DEPENDENCY",e.UNSUPPORTED="UNSUPPORTED"}(Q||(Q={}));const v=new Set([Q.BLACKLISTED,Q.BUILTIN_NODE_RESOLUTION_FAILED,Q.MISSING_DEPENDENCY,Q.MISSING_PEER_DEPENDENCY,Q.QUALIFIED_PATH_RESOLUTION_FAILED,Q.UNDECLARED_DEPENDENCY]);function S(e,t,r={}){const A=v.has(e)?"MODULE_NOT_FOUND":e,n={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(t),{code:{...n,value:A},pnpCode:{...n,value:e},data:{...n,value:r}})}function k(e){return w.cS.normalize(w.cS.fromPortablePath(e))}function N(e,t){const r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,A=Number(process.env.PNP_DEBUG_LEVEL),n=new Set(b.Module.builtinModules||Object.keys(process.binding("natives"))),o=/^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/,i=/^(\/|\.{1,2}(\/|$))/,s=/\/$/,a={name:null,reference:null},c=[],g=new Set;if(!0===e.enableTopLevelFallback&&c.push(a),!1!==t.compatibilityMode)for(const t of["react-scripts","gatsby"]){const r=e.packageRegistry.get(t);if(r)for(const e of r.keys()){if(null===e)throw new Error("Assertion failed: This reference shouldn't be null");c.push({name:t,reference:e})}}const{ignorePattern:l,packageRegistry:u,packageLocatorsByLocations:h,packageLocationLengths:p}=e;function d(e,t){return{fn:e,args:t,error:null,result:null}}function C(e,r){if(!1===t.allowDebug)return r;if(Number.isFinite(A)){if(A>=2)return(...t)=>{const A=d(e,t);try{return A.result=r(...t)}catch(e){throw A.error=e}finally{console.trace(A)}};if(A>=1)return(...t)=>{try{return r(...t)}catch(r){const A=d(e,t);throw A.error=r,console.trace(A),r}}}return r}function f(e){const t=y(e);if(!t)throw S(Q.INTERNAL,"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)");return t}function I(t){if(null===t.name)return!0;for(const r of e.dependencyTreeRoots)if(r.name===t.name&&r.reference===t.reference)return!0;return!1}function E(e,t){return t.endsWith("/")&&(t=w.y1.join(t,"internal.js")),b.Module._resolveFilename(w.cS.fromPortablePath(e),function(e){const t=new b.Module(e,null);return t.filename=e,t.paths=b.Module._nodeModulePaths(e),t}(w.cS.fromPortablePath(t)),!1,{plugnplay:!1})}function B(t){if(null===l)return!1;const r=w.y1.contains(e.basePath,t);return null!==r&&!!l.test(r.replace(/\/$/,""))}function y({name:e,reference:t}){const r=u.get(e);if(!r)return null;const A=r.get(t);return A||null}function m(e,t){const r=new Map,A=new Set,n=t=>{const o=JSON.stringify(t.name);if(A.has(o))return;A.add(o);const i=function({name:e,reference:t}){const r=[];for(const[A,n]of u)if(null!==A)for(const[o,i]of n){if(null===o)continue;i.packageDependencies.get(e)===t&&(A===e&&o===t||r.push({name:A,reference:o}))}return r}(t);for(const t of i){if(f(t).packagePeers.has(e))n(t);else{let e=r.get(t.name);void 0===e&&r.set(t.name,e=new Set),e.add(t.reference)}}};n(t);const o=[];for(const e of[...r.keys()].sort())for(const t of[...r.get(e)].sort())o.push({name:e,reference:t});return o}function v(t){if(B(t))return null;let r=(A=w.y1.relative(e.basePath,t),w.cS.toPortablePath(A));var A;r.match(i)||(r="./"+r),t.match(s)&&!r.endsWith("/")&&(r+="/");let n=0;for(;nr.length;)n+=1;for(let e=n;eI(e))?S(Q.MISSING_PEER_DEPENDENCY,`${s.name} tried to access ${t} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${t} (via "${l}")\nRequired by: ${s.name}@${s.reference} (via ${u})\n${e.map(e=>`Ancestor breaking the chain: ${e.name}@${e.reference}\n`).join("")}\n`,{request:l,issuer:u,issuerLocator:Object.assign({},s),dependencyName:t,brokenAncestors:e}):S(Q.MISSING_PEER_DEPENDENCY,`${s.name} tried to access ${t} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${t} (via "${l}")\nRequired by: ${s.name}@${s.reference} (via ${u})\n${e.map(e=>`Ancestor breaking the chain: ${e.name}@${e.reference}\n`).join("")}\n`,{request:l,issuer:u,issuerLocator:Object.assign({},s),dependencyName:t,brokenAncestors:e})}else void 0===d&&(B=!a&&n.has(A)?I(s)?S(Q.UNDECLARED_DEPENDENCY,`Your application tried to access ${t}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${t} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${t} (via "${l}")\nRequired by: ${u}\n`,{request:l,issuer:u,dependencyName:t}):S(Q.UNDECLARED_DEPENDENCY,`${s.name} tried to access ${t}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${t} isn't otherwise declared in ${s.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${t} (via "${l}")\nRequired by: ${u}\n`,{request:l,issuer:u,issuerLocator:Object.assign({},s),dependencyName:t}):I(s)?S(Q.UNDECLARED_DEPENDENCY,`Your application tried to access ${t}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${t} (via "${l}")\nRequired by: ${u}\n`,{request:l,issuer:u,dependencyName:t}):S(Q.UNDECLARED_DEPENDENCY,`${s.name} tried to access ${t}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${t} (via "${l}")\nRequired by: ${s.name}@${s.reference} (via ${u})\n`,{request:l,issuer:u,issuerLocator:Object.assign({},s),dependencyName:t}));if(null==d){if(null===C||null===B)throw B||new Error("Assertion failed: Expected an error to have been set");d=C;const e=B.message.replace(/\n.*/g,"");B.message=e,g.has(e)||(g.add(e),process.emitWarning(B))}const y=Array.isArray(d)?{name:d[0],reference:d[1]}:{name:t,reference:d},D=f(y);if(!D.packageLocation)throw S(Q.MISSING_DEPENDENCY,`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${y.name}@${y.reference} (via "${l}")\nRequired by: ${s.name}@${s.reference} (via ${u})\n`,{request:l,issuer:u,dependencyLocator:Object.assign({},y)});const b=D.packageLocation;h=o?w.y1.join(b,o):b}else{if(w.y1.isAbsolute(A))h=w.y1.normalize(A);else{if(!i)throw S(Q.API_ERROR,"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute",{request:l,issuer:u});const e=w.y1.resolve(i);h=i.match(s)?w.y1.normalize(w.y1.join(e,A)):w.y1.normalize(w.y1.join(w.y1.dirname(e),A))}v(h)}return w.y1.normalize(h)}function F(e,{extensions:r=Object.keys(b.Module._extensions)}={}){const A=[],n=function e(r,A,{extensions:n}){let o;try{A.push(r),o=t.fakeFs.statSync(r)}catch(e){}if(o&&!o.isDirectory())return t.fakeFs.realpathSync(r);if(o&&o.isDirectory()){let o,i;try{o=JSON.parse(t.fakeFs.readFileSync(w.y1.join(r,"package.json"),"utf8"))}catch(e){}if(o&&o.main&&(i=w.y1.resolve(r,o.main)),i&&i!==r){const t=e(i,A,{extensions:n});if(null!==t)return t}}for(let e=0,o=n.length;e`Rejected candidate: ${k(e)}\n`).join("")}`,{unqualifiedPath:t})}}return{VERSIONS:{std:3,resolveVirtual:1,getAllLocators:1},topLevel:a,getLocator:(e,t)=>Array.isArray(t)?{name:t[0],reference:t[1]}:{name:e,reference:t},getDependencyTreeRoots:()=>[...e.dependencyTreeRoots],getAllLocators(){const e=[];for(const[t,r]of u)for(const A of r.keys())null!==t&&null!==A&&e.push({name:t,reference:A});return e},getPackageInformation:e=>{const t=y(e);if(null===t)return null;const r=w.cS.fromPortablePath(t.packageLocation);return{...t,packageLocation:r}},findPackageLocator:e=>v(w.cS.toPortablePath(e)),resolveToUnqualified:C("resolveToUnqualified",(e,t,r)=>{const A=null!==t?w.cS.toPortablePath(t):null,n=N(w.cS.toPortablePath(e),A,r);return null===n?null:w.cS.fromPortablePath(n)}),resolveUnqualified:C("resolveUnqualified",(e,t)=>w.cS.fromPortablePath(F(w.cS.toPortablePath(e),t))),resolveRequest:C("resolveRequest",(e,t,r)=>{const A=null!==t?w.cS.toPortablePath(t):null,n=function(e,t,{considerBuiltins:r,extensions:A}={}){const n=N(e,t,{considerBuiltins:r});if(null===n)return null;try{return F(n,{extensions:A})}catch(r){throw"QUALIFIED_PATH_RESOLUTION_FAILED"===r.pnpCode&&Object.assign(r.data,{request:k(e),issuer:t&&k(t)}),r}}(w.cS.toPortablePath(e),A,r);return null===n?null:w.cS.fromPortablePath(n)}),resolveVirtual:C("resolveVirtual",e=>{const t=function(e){const t=w.y1.normalize(e),r=D.p.resolveVirtual(t);return r!==t?r:null}(w.cS.toPortablePath(e));return null!==t?w.cS.fromPortablePath(t):null})}}(0,m.promisify)(y.readFile);const F=(e,t,r)=>N(function(e,{basePath:t}){const r=w.cS.toPortablePath(t),A=w.y1.resolve(r),n=null!==e.ignorePatternData?new RegExp(e.ignorePatternData):null,o=new Map(e.packageRegistryData.map(([e,t])=>[e,new Map(t.map(([e,t])=>[e,{packageLocation:w.y1.join(A,t.packageLocation),packageDependencies:new Map(t.packageDependencies),packagePeers:new Set(t.packagePeers),linkType:t.linkType,discardFromLookup:t.discardFromLookup||!1}]))])),i=new Map,s=new Set;for(const[t,r]of e.packageRegistryData)for(const[e,A]of r){if(null===t!=(null===e))throw new Error("Assertion failed: The name and reference should be null, or neither should");if(A.discardFromLookup)continue;const r={name:t,reference:e};i.set(A.packageLocation,r),s.add(A.packageLocation.length)}for(const t of e.locationBlacklistData)i.set(t,null);const a=new Map(e.fallbackExclusionList.map(([e,t])=>[e,new Set(t)])),c=new Map(e.fallbackPool);return{basePath:r,dependencyTreeRoots:e.dependencyTreeRoots,enableTopLevelFallback:e.enableTopLevelFallback,fallbackExclusionList:a,fallbackPool:c,ignorePattern:n,packageLocationLengths:[...s].sort((e,t)=>t-e),packageLocatorsByLocations:i,packageRegistry:o}}(p(e),{basePath:t}),{fakeFs:r,pnpapiResolution:w.cS.join(t,".pnp.js")})},76756:(e,t,r)=>{"use strict";r.r(t),r.d(t,{ShellError:()=>c,execute:()=>Z,globUtils:()=>A});var A={};r.r(A),r.d(A,{fastGlobOptions:()=>E,isBraceExpansion:()=>m,isGlobPattern:()=>B,match:()=>y,micromatchOptions:()=>I});var n=r(46009),o=r(78420),i=r(11640),s=r(12087),a=r(92413);class c extends Error{constructor(e){super(e),this.name="ShellError"}}var g=r(43896),l=r(39725),u=r(19347),h=r.n(u),p=r(35747),d=r.n(p),C=r(2401),f=r.n(C);const I={strictBrackets:!0},E={onlyDirectories:!1,onlyFiles:!1};function B(e){if(!f().scan(e,I).isGlob)return!1;try{f().parse(e,I)}catch(e){return!1}return!0}function y(e,{cwd:t,baseFs:r}){return h()(e,{...E,cwd:n.cS.fromPortablePath(t),fs:(0,g.extendFs)(d(),new l.i(r))})}function m(e){return f().scan(e,I).isBrace}var w,Q=r(67566),D=r.n(Q);function b(){}!function(e){e[e.STDIN=0]="STDIN",e[e.STDOUT=1]="STDOUT",e[e.STDERR=2]="STDERR"}(w||(w={}));let v=0;class S{constructor(e){this.stream=e}close(){}get(){return this.stream}}class k{constructor(){this.stream=null}close(){if(null===this.stream)throw new Error("Assertion failed: No stream attached");this.stream.end()}attach(e){this.stream=e}get(){if(null===this.stream)throw new Error("Assertion failed: No stream attached");return this.stream}}class N{constructor(e,t){this.stdin=null,this.stdout=null,this.stderr=null,this.pipe=null,this.ancestor=e,this.implementation=t}static start(e,{stdin:t,stdout:r,stderr:A}){const n=new N(null,e);return n.stdin=t,n.stdout=r,n.stderr=A,n}pipeTo(e,t=w.STDOUT){const r=new N(this,e),A=new k;return r.pipe=A,r.stdout=this.stdout,r.stderr=this.stderr,(t&w.STDOUT)===w.STDOUT?this.stdout=A:null!==this.ancestor&&(this.stderr=this.ancestor.stdout),(t&w.STDERR)===w.STDERR?this.stderr=A:null!==this.ancestor&&(this.stderr=this.ancestor.stderr),r}async exec(){const e=["ignore","ignore","ignore"];if(this.pipe)e[0]="pipe";else{if(null===this.stdin)throw new Error("Assertion failed: No input stream registered");e[0]=this.stdin.get()}let t,r;if(null===this.stdout)throw new Error("Assertion failed: No output stream registered");if(t=this.stdout,e[1]=t.get(),null===this.stderr)throw new Error("Assertion failed: No error stream registered");r=this.stderr,e[2]=r.get();const A=this.implementation(e);return this.pipe&&this.pipe.attach(A.stdin),await A.promise.then(e=>(t.close(),r.close(),e))}async run(){const e=[];for(let t=this;t;t=t.ancestor)e.push(t.exec());return(await Promise.all(e))[0]}}function F(e,t){return N.start(e,t)}var K;function M(e,t,r){const A=new a.PassThrough({autoDestroy:!0});switch(e){case w.STDIN:(t&K.Readable)===K.Readable&&r.stdin.pipe(A,{end:!1}),(t&K.Writable)===K.Writable&&r.stdin instanceof a.Writable&&A.pipe(r.stdin,{end:!1});break;case w.STDOUT:(t&K.Readable)===K.Readable&&r.stdout.pipe(A,{end:!1}),(t&K.Writable)===K.Writable&&A.pipe(r.stdout,{end:!1});break;case w.STDERR:(t&K.Readable)===K.Readable&&r.stderr.pipe(A,{end:!1}),(t&K.Writable)===K.Writable&&A.pipe(r.stderr,{end:!1});break;default:throw new c(`Bad file descriptor: "${e}"`)}return A}function R(e,t={}){const r={...e,...t};return r.environment={...e.environment,...t.environment},r.variables={...e.variables,...t.variables},r}!function(e){e[e.Readable=1]="Readable",e[e.Writable=2]="Writable"}(K||(K={}));const x=new Map([["cd",async([e=(0,s.homedir)(),...t],r,A)=>{const o=n.y1.resolve(A.cwd,n.cS.toPortablePath(e));return(await r.baseFs.statPromise(o)).isDirectory()?(A.cwd=o,0):(A.stderr.write("cd: not a directory\n"),1)}],["pwd",async(e,t,r)=>(r.stdout.write(n.cS.fromPortablePath(r.cwd)+"\n"),0)],[":",async(e,t,r)=>0],["true",async(e,t,r)=>0],["false",async(e,t,r)=>1],["exit",async([e,...t],r,A)=>A.exitCode=parseInt(null!=e?e:A.variables["?"],10)],["echo",async(e,t,r)=>(r.stdout.write(e.join(" ")+"\n"),0)],["__ysh_run_procedure",async(e,t,r)=>{const A=r.procedures[e[0]];return await F(A,{stdin:new S(r.stdin),stdout:new S(r.stdout),stderr:new S(r.stderr)}).run()}],["__ysh_set_redirects",async(e,t,r)=>{let A=r.stdin,o=r.stdout;const i=r.stderr,s=[],c=[];let g=0;for(;"--"!==e[g];){const A=e[g++],o=Number(e[g++]),i=g+o;for(let o=g;ot.baseFs.createReadStream(n.y1.resolve(r.cwd,n.cS.toPortablePath(e[o]))));break;case"<<<":s.push(()=>{const t=new a.PassThrough;return process.nextTick(()=>{t.write(e[o]+"\n"),t.end()}),t});break;case"<&":s.push(()=>M(Number(e[o]),K.Readable,r));break;case">":case">>":{const i=n.y1.resolve(r.cwd,n.cS.toPortablePath(e[o]));"/dev/null"===i?c.push(new a.Writable({autoDestroy:!0,emitClose:!0,write(e,t,r){setImmediate(r)}})):c.push(t.baseFs.createWriteStream(i,">>"===A?{flags:"a"}:void 0))}break;case">&":c.push(M(Number(e[o]),K.Writable,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: "${A}"`)}}if(s.length>0){const e=new a.PassThrough;A=e;const t=r=>{if(r===s.length)e.end();else{const A=s[r]();A.pipe(e,{end:!1}),A.on("end",()=>{t(r+1)})}};t(0)}if(c.length>0){const e=new a.PassThrough;o=e;for(const t of c)e.pipe(t)}const l=await F(G(e.slice(g+1),t,r),{stdin:new S(A),stdout:new S(o),stderr:new S(i)}).run();return await Promise.all(c.map(e=>new Promise(t=>{e.on("close",()=>{t()}),e.end()}))),l}]]);async function L(e,t,r){const A=[],n=new a.PassThrough;return n.on("data",e=>A.push(e)),await W(e,t,R(r,{stdout:n})),Buffer.concat(A).toString().replace(/[\r\n]+$/,"")}async function P(e,t,r){const A=e.map(async e=>{const A=await Y(e.args,t,r);return{name:e.name,value:A.join(" ")}});return(await Promise.all(A)).reduce((e,t)=>(e[t.name]=t.value,e),{})}function O(e){return e.match(/[^ \r\n\t]+/g)||[]}async function U(e,t,r,A,n=A){switch(e.name){case"$":A(String(process.pid));break;case"#":A(String(t.args.length));break;case"@":if(e.quoted)for(const e of t.args)n(e);else for(const e of t.args){const t=O(e);for(let e=0;e=0&&ne+t,subtraction:(e,t)=>e-t,multiplication:(e,t)=>e*t,division:(e,t)=>Math.trunc(e/t)};async function j(e,t,r){if("number"===e.type){if(Number.isInteger(e.value))return e.value;throw new Error(`Invalid number: "${e.value}", only integers are allowed`)}if("variable"===e.type){const A=[];await U({...e,quoted:!0},t,r,e=>A.push(e));const n=Number(A.join(" "));return Number.isNaN(n)?j({type:"variable",name:A.join(" ")},t,r):j({type:"number",value:n},t,r)}return T[e.type](await j(e.left,t,r),await j(e.right,t,r))}async function Y(e,t,r){const A=new Map,n=[];let o=[];const i=e=>{o.push(e)},s=()=>{o.length>0&&n.push(o.join("")),o=[]},a=e=>{i(e),s()},g=(e,t)=>{let r=A.get(e);void 0===r&&A.set(e,r=[]),r.push(t)};for(const A of e){let e=!1;switch(A.type){case"redirection":{const e=await Y(A.args,t,r);for(const t of e)g(A.subtype,t)}break;case"argument":for(const n of A.segments)switch(n.type){case"text":i(n.text);break;case"glob":i(n.pattern),e=!0;break;case"shell":{const e=await L(n.shell,t,r);if(n.quoted)i(e);else{const t=O(e);for(let e=0;e0){const e=[];for(const[t,r]of A.entries())e.splice(e.length,0,t,String(r.length),...r);n.splice(0,0,"__ysh_set_redirects",...e,"--")}return n}function G(e,t,r){t.builtins.has(e[0])||(e=["command",...e]);const A=n.cS.fromPortablePath(r.cwd);let o=r.environment;void 0!==o.PWD&&(o={...o,PWD:A});const[i,...s]=e;if("command"===i)return function(e,t,r,A){return r=>{const n=r[0]instanceof a.Transform?"pipe":r[0],o=r[1]instanceof a.Transform?"pipe":r[1],i=r[2]instanceof a.Transform?"pipe":r[2],s=D()(e,t,{...A,stdio:[n,o,i]});return 0==v++&&process.on("SIGINT",b),r[0]instanceof a.Transform&&r[0].pipe(s.stdin),r[1]instanceof a.Transform&&s.stdout.pipe(r[1],{end:!1}),r[2]instanceof a.Transform&&s.stderr.pipe(r[2],{end:!1}),{stdin:s.stdin,promise:new Promise(t=>{s.on("error",A=>{switch(0==--v&&process.off("SIGINT",b),A.code){case"ENOENT":r[2].write(`command not found: ${e}\n`),t(127);break;case"EACCES":r[2].write(`permission denied: ${e}\n`),t(128);break;default:r[2].write(`uncaught error: ${A.message}\n`),t(1)}}),s.on("exit",e=>{0==--v&&process.off("SIGINT",b),t(null!==e?e:129)})})}}}(s[0],s.slice(1),0,{cwd:A,env:o});const c=t.builtins.get(i);if(void 0===c)throw new Error(`Assertion failed: A builtin should exist for "${i}"`);return function(e){return t=>{const r="pipe"===t[0]?new a.PassThrough:t[0];return{stdin:r,promise:Promise.resolve().then(()=>e({stdin:r,stdout:t[1],stderr:t[2]}))}}}(async({stdin:e,stdout:A,stderr:n})=>(r.stdin=e,r.stdout=A,r.stderr=n,await c(s,t,r)))}function H(e,t,r){return A=>{const n=new a.PassThrough;return{stdin:n,promise:W(e,t,R(r,{stdin:n}))}}}function J(e,t,r){return A=>({stdin:new a.PassThrough,promise:W(e,t,r)})}function q(e,t,r,A){if(0===t.length)return e;{let n;do{n=String(Math.random())}while(Object.prototype.hasOwnProperty.call(A.procedures,n));return A.procedures={...A.procedures},A.procedures[n]=e,G([...t,"__ysh_run_procedure",n],r,A)}}async function z(e,t,r){let A;const n=e=>{A=e,r.variables["?"]=String(e)},o=async e=>{try{return await async function(e,t,r){let A=e,n=null,o=null;for(;A;){const e=A.then?{...r}:r;let i;switch(A.type){case"command":{const n=await Y(A.args,t,r),o=await P(A.envs,t,r);i=A.envs.length?G(n,t,R(e,{environment:o})):G(n,t,e)}break;case"subshell":{const n=await Y(A.args,t,r);i=q(H(A.subshell,t,e),n,t,e)}break;case"group":{const n=await Y(A.args,t,r);i=q(J(A.group,t,e),n,t,e)}break;case"envs":{const n=await P(A.envs,t,r);e.environment={...e.environment,...n},i=G(["true"],t,e)}}if(void 0===i)throw new Error("Assertion failed: An action should have been generated");if(null===n)o=F(i,{stdin:new S(e.stdin),stdout:new S(e.stdout),stderr:new S(e.stderr)});else{if(null===o)throw new Error("Assertion failed: The execution pipeline should have been setup");switch(n){case"|":o=o.pipeTo(i,w.STDOUT);break;case"|&":o=o.pipeTo(i,w.STDOUT|w.STDERR)}}A.then?(n=A.then.type,A=A.then.chain):A=null}if(null===o)throw new Error("Assertion failed: The execution pipeline should have been setup");return await o.run()}(e,t,r)}catch(e){if(!(e instanceof c))throw e;return r.stderr.write(e.message+"\n"),1}};for(n(await o(e.chain));e.then;){if(null!==r.exitCode)return r.exitCode;switch(e.then.type){case"&&":0===A&&n(await o(e.then.line.chain));break;case"||":0!==A&&n(await o(e.then.line.chain));break;default:throw new Error(`Assertion failed: Unsupported command type: "${e.then.type}"`)}e=e.then.line}return A}async function W(e,t,r){let A=0;for(const n of e){if(A=await z(n,t,r),null!==r.exitCode)return r.exitCode;r.variables["?"]=String(A)}return A}function V(e){switch(e.type){case"variable":return"@"===e.name||"#"===e.name||"*"===e.name||Number.isFinite(parseInt(e.name,10))||"defaultValue"in e&&!!e.defaultValue&&e.defaultValue.some(e=>X(e));case"arithmetic":return function e(t){switch(t.type){case"variable":return V(t);case"number":return!1;default:return e(t.left)||e(t.right)}}(e.arithmetic);case"shell":return _(e.shell);default:return!1}}function X(e){switch(e.type){case"redirection":return e.args.some(e=>X(e));case"argument":return e.segments.some(e=>V(e));default:throw new Error(`Assertion failed: Unsupported argument type: "${e.type}"`)}}function _(e){return e.some(e=>{for(;e;){let t=e.chain;for(;t;){let e;switch(t.type){case"subshell":e=_(t.subshell);break;case"command":e=t.envs.some(e=>e.args.some(e=>X(e)))||t.args.some(e=>X(e))}if(e)return!0;if(!t.then)break;t=t.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function Z(e,t=[],{baseFs:r=new o.S,builtins:s={},cwd:c=n.cS.toPortablePath(process.cwd()),env:g=process.env,stdin:l=process.stdin,stdout:u=process.stdout,stderr:h=process.stderr,variables:p={},glob:d=A}={}){const C={};for(const[e,t]of Object.entries(g))void 0!==t&&(C[e]=t);const f=new Map(x);for(const[e,t]of Object.entries(s))f.set(e,t);null===l&&(l=new a.PassThrough).end();const I=(0,i.parseShell)(e,d);if(!_(I)&&I.length>0&&t.length>0){let e=I[I.length-1];for(;e.then;)e=e.then.line;let r=e.chain;for(;r.then;)r=r.then.chain;"command"===r.type&&(r.args=r.args.concat(t.map(e=>({type:"argument",segments:[{type:"text",text:e}]}))))}return await W(I,{args:t,baseFs:r,builtins:f,initialStdin:l,initialStdout:u,initialStderr:h,glob:d},{cwd:c,environment:C,exitCode:null,procedures:{},stdin:l,stdout:u,stderr:h,variables:Object.assign({},p,{"?":0})})}},45330:(e,t,r)=>{t.e=()=>({modules:new Map([["@yarnpkg/cli",r(25413)],["@yarnpkg/core",r(53836)],["@yarnpkg/fslib",r(43896)],["@yarnpkg/libzip",r(65281)],["@yarnpkg/parsers",r(11640)],["@yarnpkg/shell",r(76756)],["clipanion",r(40822)],["semver",r(53887)],["yup",r(15966)],["@yarnpkg/plugin-essentials",r(34777)],["@yarnpkg/plugin-compat",r(44692)],["@yarnpkg/plugin-dlx",r(10189)],["@yarnpkg/plugin-file",r(68023)],["@yarnpkg/plugin-git",r(75641)],["@yarnpkg/plugin-github",r(68126)],["@yarnpkg/plugin-http",r(99148)],["@yarnpkg/plugin-init",r(64314)],["@yarnpkg/plugin-link",r(92994)],["@yarnpkg/plugin-node-modules",r(8375)],["@yarnpkg/plugin-npm",r(14224)],["@yarnpkg/plugin-npm-cli",r(8190)],["@yarnpkg/plugin-pack",r(49881)],["@yarnpkg/plugin-patch",r(29936)],["@yarnpkg/plugin-pnp",r(83228)]]),plugins:new Set(["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-node-modules","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp"])})},29148:(e,t,r)=>{const A=r(74988),n=/^(.*?)(\x1b\[[^m]+m|\x1b\]8;;.*?(\x1b\\|\u0007))/,o=new A;e.exports=(e,t=0,r=e.length)=>{if(t<0||r<0)throw new RangeError("Negative indices aren't supported by this implementation");const A=r-t;let i="",s=0,a=0;for(;e.length>0;){const r=e.match(n)||[e,e,void 0];let c=o.splitGraphemes(r[1]);const g=Math.min(t-s,c.length);c=c.slice(g);const l=Math.min(A-a,c.length);i+=c.slice(0,l).join(""),s+=g,a+=l,void 0!==r[2]&&(i+=r[2]),e=e.slice(r[0].length)}return i}},72912:e=>{function t(){return e.exports=t=Object.assign||function(e){for(var t=1;t{e.exports=function(e){return e&&e.__esModule?e:{default:e}}},19228:(e,t,r)=>{var A=r(54694);function n(){if("function"!=typeof WeakMap)return null;var e=new WeakMap;return n=function(){return e},e}e.exports=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==A(e)&&"function"!=typeof e)return{default:e};var t=n();if(t&&t.has(e))return t.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=e[i]}return r.default=e,t&&t.set(e,r),r}},74943:e=>{e.exports=function(e,t){if(null==e)return{};var r,A,n={},o=Object.keys(e);for(A=0;A=0||(n[r]=e[r]);return n}},62407:e=>{e.exports=function(e,t){return t||(t=e.slice(0)),e.raw=t,e}},54694:e=>{function t(r){return"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?e.exports=t=function(e){return typeof e}:e.exports=t=function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(r)}e.exports=t},96117:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(35747);t.FILE_SYSTEM_ADAPTER={lstat:A.lstat,stat:A.stat,lstatSync:A.lstatSync,statSync:A.statSync,readdir:A.readdir,readdirSync:A.readdirSync},t.createFileSystemAdapter=function(e){return void 0===e?t.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},t.FILE_SYSTEM_ADAPTER),e)}},79774:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=process.versions.node.split("."),A=parseInt(r[0],10),n=parseInt(r[1],10),o=A>10,i=10===A&&n>=10;t.IS_SUPPORT_READDIR_WITH_FILE_TYPES=o||i},85670:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(31020),n=r(35516),o=r(38844);function i(e={}){return e instanceof o.default?e:new o.default(e)}t.Settings=o.default,t.scandir=function(e,t,r){if("function"==typeof t)return A.read(e,i(),t);A.read(e,i(t),r)},t.scandirSync=function(e,t){const r=i(t);return n.read(e,r)}},31020:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(53403),n=r(69078),o=r(79774),i=r(65225);function s(e,t,r){t.fs.readdir(e,{withFileTypes:!0},(A,o)=>{if(null!==A)return c(r,A);const s=o.map(r=>({dirent:r,name:r.name,path:`${e}${t.pathSegmentSeparator}${r.name}`}));if(!t.followSymbolicLinks)return g(r,s);const a=s.map(e=>function(e,t){return r=>{if(!e.dirent.isSymbolicLink())return r(null,e);t.fs.stat(e.path,(A,n)=>null!==A?t.throwErrorOnBrokenSymbolicLink?r(A):r(null,e):(e.dirent=i.fs.createDirentFromStats(e.name,n),r(null,e)))}}(e,t));n(a,(e,t)=>{if(null!==e)return c(r,e);g(r,t)})})}function a(e,t,r){t.fs.readdir(e,(o,s)=>{if(null!==o)return c(r,o);const a=s.map(r=>`${e}${t.pathSegmentSeparator}${r}`),l=a.map(e=>r=>A.stat(e,t.fsStatSettings,r));n(l,(e,A)=>{if(null!==e)return c(r,e);const n=[];s.forEach((e,r)=>{const o=A[r],s={name:e,path:a[r],dirent:i.fs.createDirentFromStats(e,o)};t.stats&&(s.stats=o),n.push(s)}),g(r,n)})})}function c(e,t){e(t)}function g(e,t){e(null,t)}t.read=function(e,t,r){return!t.stats&&o.IS_SUPPORT_READDIR_WITH_FILE_TYPES?s(e,t,r):a(e,t,r)},t.readdirWithFileTypes=s,t.readdir=a},35516:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(53403),n=r(79774),o=r(65225);function i(e,t){return t.fs.readdirSync(e,{withFileTypes:!0}).map(r=>{const A={dirent:r,name:r.name,path:`${e}${t.pathSegmentSeparator}${r.name}`};if(A.dirent.isSymbolicLink()&&t.followSymbolicLinks)try{const e=t.fs.statSync(A.path);A.dirent=o.fs.createDirentFromStats(A.name,e)}catch(e){if(t.throwErrorOnBrokenSymbolicLink)throw e}return A})}function s(e,t){return t.fs.readdirSync(e).map(r=>{const n=`${e}${t.pathSegmentSeparator}${r}`,i=A.statSync(n,t.fsStatSettings),s={name:r,path:n,dirent:o.fs.createDirentFromStats(r,i)};return t.stats&&(s.stats=i),s})}t.read=function(e,t){return!t.stats&&n.IS_SUPPORT_READDIR_WITH_FILE_TYPES?i(e,t):s(e,t)},t.readdirWithFileTypes=i,t.readdir=s},38844:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(85622),n=r(53403),o=r(96117);t.default=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=o.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,A.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new n.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return void 0===e?t:e}}},72156:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}}t.createDirentFromStats=function(e,t){return new r(e,t)}},65225:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(72156);t.fs=A},71208:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(35747);t.FILE_SYSTEM_ADAPTER={lstat:A.lstat,stat:A.stat,lstatSync:A.lstatSync,statSync:A.statSync},t.createFileSystemAdapter=function(e){return void 0===e?t.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},t.FILE_SYSTEM_ADAPTER),e)}},53403:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(17790),n=r(34846),o=r(92687);function i(e={}){return e instanceof o.default?e:new o.default(e)}t.Settings=o.default,t.stat=function(e,t,r){if("function"==typeof t)return A.read(e,i(),t);A.read(e,i(t),r)},t.statSync=function(e,t){const r=i(t);return n.read(e,r)}},17790:(e,t)=>{"use strict";function r(e,t){e(t)}function A(e,t){e(null,t)}Object.defineProperty(t,"__esModule",{value:!0}),t.read=function(e,t,n){t.fs.lstat(e,(o,i)=>null!==o?r(n,o):i.isSymbolicLink()&&t.followSymbolicLink?void t.fs.stat(e,(e,o)=>{if(null!==e)return t.throwErrorOnBrokenSymbolicLink?r(n,e):A(n,i);t.markSymbolicLink&&(o.isSymbolicLink=()=>!0),A(n,o)}):A(n,i))}},34846:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.read=function(e,t){const r=t.fs.lstatSync(e);if(!r.isSymbolicLink()||!t.followSymbolicLink)return r;try{const r=t.fs.statSync(e);return t.markSymbolicLink&&(r.isSymbolicLink=()=>!0),r}catch(e){if(!t.throwErrorOnBrokenSymbolicLink)return r;throw e}}},92687:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(71208);t.default=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=A.createFileSystemAdapter(this._options.fs),this.markSymbolicLink=this._getValue(this._options.markSymbolicLink,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0)}_getValue(e,t){return void 0===e?t:e}}},72897:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(42369),n=r(27696),o=r(22111),i=r(14954);function s(e={}){return e instanceof i.default?e:new i.default(e)}t.Settings=i.default,t.walk=function(e,t,r){if("function"==typeof t)return new A.default(e,s()).read(t);new A.default(e,s(t)).read(r)},t.walkSync=function(e,t){const r=s(t);return new o.default(e,r).read()},t.walkStream=function(e,t){const r=s(t);return new n.default(e,r).read()}},42369:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(98566);t.default=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new A.default(this._root,this._settings),this._storage=new Set}read(e){this._reader.onError(t=>{!function(e,t){e(t)}(e,t)}),this._reader.onEntry(e=>{this._storage.add(e)}),this._reader.onEnd(()=>{!function(e,t){e(null,t)}(e,[...this._storage])}),this._reader.read()}}},27696:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(92413),n=r(98566);t.default=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new n.default(this._root,this._settings),this._stream=new A.Readable({objectMode:!0,read:()=>{},destroy:this._reader.destroy.bind(this._reader)})}read(){return this._reader.onError(e=>{this._stream.emit("error",e)}),this._reader.onEntry(e=>{this._stream.push(e)}),this._reader.onEnd(()=>{this._stream.push(null)}),this._reader.read(),this._stream}}},22111:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(97835);t.default=class{constructor(e,t){this._root=e,this._settings=t,this._reader=new A.default(this._root,this._settings)}read(){return this._reader.read()}}},98566:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(28614),n=r(85670),o=r(98360),i=r(10750),s=r(75504);class a extends s.default{constructor(e,t){super(e,t),this._settings=t,this._scandir=n.scandir,this._emitter=new A.EventEmitter,this._queue=o(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit("end")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}destroy(){if(this._isDestroyed)throw new Error("The reader is already destroyed");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on("entry",e)}onError(e){this._emitter.once("error",e)}onEnd(e){this._emitter.once("end",e)}_pushToQueue(e,t){const r={directory:e,base:t};this._queue.push(r,e=>{null!==e&&this._handleError(e)})}_worker(e,t){this._scandir(e.directory,this._settings.fsScandirSettings,(r,A)=>{if(null!==r)return t(r,void 0);for(const t of A)this._handleEntry(t,e.base);t(null,void 0)})}_handleError(e){i.isFatalError(this._settings,e)&&(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit("error",e))}_handleEntry(e,t){if(this._isDestroyed||this._isFatalError)return;const r=e.path;void 0!==t&&(e.path=i.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),i.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&i.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(r,e.path)}_emitEntry(e){this._emitter.emit("entry",e)}}t.default=a},10750:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isFatalError=function(e,t){return null===e.errorFilter||!e.errorFilter(t)},t.isAppliedFilter=function(e,t){return null===e||e(t)},t.replacePathSegmentSeparator=function(e,t){return e.split(/[\\/]/).join(t)},t.joinPathSegments=function(e,t,r){return""===e?t:e+r+t}},75504:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(10750);t.default=class{constructor(e,t){this._root=e,this._settings=t,this._root=A.replacePathSegmentSeparator(e,t.pathSegmentSeparator)}}},97835:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(85670),n=r(10750),o=r(75504);class i extends o.default{constructor(){super(...arguments),this._scandir=A.scandirSync,this._storage=new Set,this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),[...this._storage]}_pushToQueue(e,t){this._queue.add({directory:e,base:t})}_handleQueue(){for(const e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,t){try{const r=this._scandir(e,this._settings.fsScandirSettings);for(const e of r)this._handleEntry(e,t)}catch(e){this._handleError(e)}}_handleError(e){if(n.isFatalError(this._settings,e))throw e}_handleEntry(e,t){const r=e.path;void 0!==t&&(e.path=n.joinPathSegments(t,e.name,this._settings.pathSegmentSeparator)),n.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&n.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(r,e.path)}_pushToStorage(e){this._storage.add(e)}}t.default=i},14954:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(85622),n=r(85670);t.default=class{constructor(e={}){this._options=e,this.basePath=this._getValue(this._options.basePath,void 0),this.concurrency=this._getValue(this._options.concurrency,1/0),this.deepFilter=this._getValue(this._options.deepFilter,null),this.entryFilter=this._getValue(this._options.entryFilter,null),this.errorFilter=this._getValue(this._options.errorFilter,null),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,A.sep),this.fsScandirSettings=new n.Settings({followSymbolicLinks:this._options.followSymbolicLinks,fs:this._options.fs,pathSegmentSeparator:this._options.pathSegmentSeparator,stats:this._options.stats,throwErrorOnBrokenSymbolicLink:this._options.throwErrorOnBrokenSymbolicLink})}_getValue(e,t){return void 0===e?t:e}}},7966:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=["Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"];const A=["Function","Generator","AsyncGenerator","GeneratorFunction","AsyncGeneratorFunction","AsyncFunction","Observable","Array","Buffer","Object","RegExp","Date","Error","Map","Set","WeakMap","WeakSet","ArrayBuffer","SharedArrayBuffer","DataView","Promise","URL","HTMLElement",...r];const n=["null","undefined","string","number","bigint","boolean","symbol"];function o(e){return t=>typeof t===e}const{toString:i}=Object.prototype,s=e=>{const t=i.call(e).slice(8,-1);return/HTML\w+Element/.test(t)&&c.domElement(e)?"HTMLElement":(r=t,A.includes(r)?t:void 0);var r},a=e=>t=>s(t)===e;function c(e){if(null===e)return"null";switch(typeof e){case"undefined":return"undefined";case"string":return"string";case"number":return"number";case"boolean":return"boolean";case"function":return"Function";case"bigint":return"bigint";case"symbol":return"symbol"}if(c.observable(e))return"Observable";if(c.array(e))return"Array";if(c.buffer(e))return"Buffer";const t=s(e);if(t)return t;if(e instanceof String||e instanceof Boolean||e instanceof Number)throw new TypeError("Please don't use object wrappers for primitive types");return"Object"}c.undefined=o("undefined"),c.string=o("string");const g=o("number");c.number=e=>g(e)&&!c.nan(e),c.bigint=o("bigint"),c.function_=o("function"),c.null_=e=>null===e,c.class_=e=>c.function_(e)&&e.toString().startsWith("class "),c.boolean=e=>!0===e||!1===e,c.symbol=o("symbol"),c.numericString=e=>c.string(e)&&!c.emptyStringOrWhitespace(e)&&!Number.isNaN(Number(e)),c.array=(e,t)=>!!Array.isArray(e)&&(!c.function_(t)||e.every(t)),c.buffer=e=>{var t,r,A,n;return null!==(n=null===(A=null===(r=null===(t=e)||void 0===t?void 0:t.constructor)||void 0===r?void 0:r.isBuffer)||void 0===A?void 0:A.call(r,e))&&void 0!==n&&n},c.nullOrUndefined=e=>c.null_(e)||c.undefined(e),c.object=e=>!c.null_(e)&&("object"==typeof e||c.function_(e)),c.iterable=e=>{var t;return c.function_(null===(t=e)||void 0===t?void 0:t[Symbol.iterator])},c.asyncIterable=e=>{var t;return c.function_(null===(t=e)||void 0===t?void 0:t[Symbol.asyncIterator])},c.generator=e=>c.iterable(e)&&c.function_(e.next)&&c.function_(e.throw),c.asyncGenerator=e=>c.asyncIterable(e)&&c.function_(e.next)&&c.function_(e.throw),c.nativePromise=e=>a("Promise")(e);c.promise=e=>c.nativePromise(e)||(e=>{var t,r;return c.function_(null===(t=e)||void 0===t?void 0:t.then)&&c.function_(null===(r=e)||void 0===r?void 0:r.catch)})(e),c.generatorFunction=a("GeneratorFunction"),c.asyncGeneratorFunction=e=>"AsyncGeneratorFunction"===s(e),c.asyncFunction=e=>"AsyncFunction"===s(e),c.boundFunction=e=>c.function_(e)&&!e.hasOwnProperty("prototype"),c.regExp=a("RegExp"),c.date=a("Date"),c.error=a("Error"),c.map=e=>a("Map")(e),c.set=e=>a("Set")(e),c.weakMap=e=>a("WeakMap")(e),c.weakSet=e=>a("WeakSet")(e),c.int8Array=a("Int8Array"),c.uint8Array=a("Uint8Array"),c.uint8ClampedArray=a("Uint8ClampedArray"),c.int16Array=a("Int16Array"),c.uint16Array=a("Uint16Array"),c.int32Array=a("Int32Array"),c.uint32Array=a("Uint32Array"),c.float32Array=a("Float32Array"),c.float64Array=a("Float64Array"),c.bigInt64Array=a("BigInt64Array"),c.bigUint64Array=a("BigUint64Array"),c.arrayBuffer=a("ArrayBuffer"),c.sharedArrayBuffer=a("SharedArrayBuffer"),c.dataView=a("DataView"),c.directInstanceOf=(e,t)=>Object.getPrototypeOf(e)===t.prototype,c.urlInstance=e=>a("URL")(e),c.urlString=e=>{if(!c.string(e))return!1;try{return new URL(e),!0}catch(e){return!1}},c.truthy=e=>Boolean(e),c.falsy=e=>!e,c.nan=e=>Number.isNaN(e),c.primitive=e=>{return c.null_(e)||(t=typeof e,n.includes(t));var t},c.integer=e=>Number.isInteger(e),c.safeInteger=e=>Number.isSafeInteger(e),c.plainObject=e=>{if("[object Object]"!==i.call(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t===Object.getPrototypeOf({})},c.typedArray=e=>{return t=s(e),r.includes(t);var t};c.arrayLike=e=>!c.nullOrUndefined(e)&&!c.function_(e)&&(e=>c.safeInteger(e)&&e>=0)(e.length),c.inRange=(e,t)=>{if(c.number(t))return e>=Math.min(0,t)&&e<=Math.max(t,0);if(c.array(t)&&2===t.length)return e>=Math.min(...t)&&e<=Math.max(...t);throw new TypeError("Invalid range: "+JSON.stringify(t))};const l=["innerHTML","ownerDocument","style","attributes","nodeValue"];c.domElement=e=>c.object(e)&&1===e.nodeType&&c.string(e.nodeName)&&!c.plainObject(e)&&l.every(t=>t in e),c.observable=e=>{var t,r,A,n;return!!e&&(e===(null===(r=(t=e)[Symbol.observable])||void 0===r?void 0:r.call(t))||e===(null===(n=(A=e)["@@observable"])||void 0===n?void 0:n.call(A)))},c.nodeStream=e=>c.object(e)&&c.function_(e.pipe)&&!c.observable(e),c.infinite=e=>e===1/0||e===-1/0;const u=e=>t=>c.integer(t)&&Math.abs(t%2)===e;c.evenInteger=u(0),c.oddInteger=u(1),c.emptyArray=e=>c.array(e)&&0===e.length,c.nonEmptyArray=e=>c.array(e)&&e.length>0,c.emptyString=e=>c.string(e)&&0===e.length,c.nonEmptyString=e=>c.string(e)&&e.length>0;c.emptyStringOrWhitespace=e=>c.emptyString(e)||(e=>c.string(e)&&!/\S/.test(e))(e),c.emptyObject=e=>c.object(e)&&!c.map(e)&&!c.set(e)&&0===Object.keys(e).length,c.nonEmptyObject=e=>c.object(e)&&!c.map(e)&&!c.set(e)&&Object.keys(e).length>0,c.emptySet=e=>c.set(e)&&0===e.size,c.nonEmptySet=e=>c.set(e)&&e.size>0,c.emptyMap=e=>c.map(e)&&0===e.size,c.nonEmptyMap=e=>c.map(e)&&e.size>0;const h=(e,t,r)=>{if(!c.function_(t))throw new TypeError("Invalid predicate: "+JSON.stringify(t));if(0===r.length)throw new TypeError("Invalid number of values");return e.call(r,t)};c.any=(e,...t)=>(c.array(e)?e:[e]).some(e=>h(Array.prototype.some,e,t)),c.all=(e,...t)=>h(Array.prototype.every,e,t);const p=(e,t,r)=>{if(!e)throw new TypeError(`Expected value which is \`${t}\`, received value of type \`${c(r)}\`.`)};t.assert={undefined:e=>p(c.undefined(e),"undefined",e),string:e=>p(c.string(e),"string",e),number:e=>p(c.number(e),"number",e),bigint:e=>p(c.bigint(e),"bigint",e),function_:e=>p(c.function_(e),"Function",e),null_:e=>p(c.null_(e),"null",e),class_:e=>p(c.class_(e),"Class",e),boolean:e=>p(c.boolean(e),"boolean",e),symbol:e=>p(c.symbol(e),"symbol",e),numericString:e=>p(c.numericString(e),"string with a number",e),array:(e,t)=>{p(c.array(e),"Array",e),t&&e.forEach(t)},buffer:e=>p(c.buffer(e),"Buffer",e),nullOrUndefined:e=>p(c.nullOrUndefined(e),"null or undefined",e),object:e=>p(c.object(e),"Object",e),iterable:e=>p(c.iterable(e),"Iterable",e),asyncIterable:e=>p(c.asyncIterable(e),"AsyncIterable",e),generator:e=>p(c.generator(e),"Generator",e),asyncGenerator:e=>p(c.asyncGenerator(e),"AsyncGenerator",e),nativePromise:e=>p(c.nativePromise(e),"native Promise",e),promise:e=>p(c.promise(e),"Promise",e),generatorFunction:e=>p(c.generatorFunction(e),"GeneratorFunction",e),asyncGeneratorFunction:e=>p(c.asyncGeneratorFunction(e),"AsyncGeneratorFunction",e),asyncFunction:e=>p(c.asyncFunction(e),"AsyncFunction",e),boundFunction:e=>p(c.boundFunction(e),"Function",e),regExp:e=>p(c.regExp(e),"RegExp",e),date:e=>p(c.date(e),"Date",e),error:e=>p(c.error(e),"Error",e),map:e=>p(c.map(e),"Map",e),set:e=>p(c.set(e),"Set",e),weakMap:e=>p(c.weakMap(e),"WeakMap",e),weakSet:e=>p(c.weakSet(e),"WeakSet",e),int8Array:e=>p(c.int8Array(e),"Int8Array",e),uint8Array:e=>p(c.uint8Array(e),"Uint8Array",e),uint8ClampedArray:e=>p(c.uint8ClampedArray(e),"Uint8ClampedArray",e),int16Array:e=>p(c.int16Array(e),"Int16Array",e),uint16Array:e=>p(c.uint16Array(e),"Uint16Array",e),int32Array:e=>p(c.int32Array(e),"Int32Array",e),uint32Array:e=>p(c.uint32Array(e),"Uint32Array",e),float32Array:e=>p(c.float32Array(e),"Float32Array",e),float64Array:e=>p(c.float64Array(e),"Float64Array",e),bigInt64Array:e=>p(c.bigInt64Array(e),"BigInt64Array",e),bigUint64Array:e=>p(c.bigUint64Array(e),"BigUint64Array",e),arrayBuffer:e=>p(c.arrayBuffer(e),"ArrayBuffer",e),sharedArrayBuffer:e=>p(c.sharedArrayBuffer(e),"SharedArrayBuffer",e),dataView:e=>p(c.dataView(e),"DataView",e),urlInstance:e=>p(c.urlInstance(e),"URL",e),urlString:e=>p(c.urlString(e),"string with a URL",e),truthy:e=>p(c.truthy(e),"truthy",e),falsy:e=>p(c.falsy(e),"falsy",e),nan:e=>p(c.nan(e),"NaN",e),primitive:e=>p(c.primitive(e),"primitive",e),integer:e=>p(c.integer(e),"integer",e),safeInteger:e=>p(c.safeInteger(e),"integer",e),plainObject:e=>p(c.plainObject(e),"plain object",e),typedArray:e=>p(c.typedArray(e),"TypedArray",e),arrayLike:e=>p(c.arrayLike(e),"array-like",e),domElement:e=>p(c.domElement(e),"HTMLElement",e),observable:e=>p(c.observable(e),"Observable",e),nodeStream:e=>p(c.nodeStream(e),"Node.js Stream",e),infinite:e=>p(c.infinite(e),"infinite number",e),emptyArray:e=>p(c.emptyArray(e),"empty array",e),nonEmptyArray:e=>p(c.nonEmptyArray(e),"non-empty array",e),emptyString:e=>p(c.emptyString(e),"empty string",e),nonEmptyString:e=>p(c.nonEmptyString(e),"non-empty string",e),emptyStringOrWhitespace:e=>p(c.emptyStringOrWhitespace(e),"empty string or whitespace",e),emptyObject:e=>p(c.emptyObject(e),"empty object",e),nonEmptyObject:e=>p(c.nonEmptyObject(e),"non-empty object",e),emptySet:e=>p(c.emptySet(e),"empty set",e),nonEmptySet:e=>p(c.nonEmptySet(e),"non-empty set",e),emptyMap:e=>p(c.emptyMap(e),"empty map",e),nonEmptyMap:e=>p(c.nonEmptyMap(e),"non-empty map",e),evenInteger:e=>p(c.evenInteger(e),"even integer",e),oddInteger:e=>p(c.oddInteger(e),"odd integer",e),directInstanceOf:(e,t)=>p(c.directInstanceOf(e,t),"T",e),inRange:(e,t)=>p(c.inRange(e,t),"in range",e),any:(e,...t)=>p(c.any(e,...t),"predicate returns truthy for any value",t),all:(e,...t)=>p(c.all(e,...t),"predicate returns truthy for all values",t)},Object.defineProperties(c,{class:{value:c.class_},function:{value:c.function_},null:{value:c.null_}}),Object.defineProperties(t.assert,{class:{value:t.assert.class_},function:{value:t.assert.function_},null:{value:t.assert.null_}}),t.default=c,e.exports=c,e.exports.default=c,e.exports.assert=t.assert},98298:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(93121),n=Number(process.versions.node.split(".")[0]),o=e=>{const t={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};e.timings=t;const r=e=>{const r=e.emit.bind(e);e.emit=(A,...n)=>("error"===A&&(t.error=Date.now(),t.phases.total=t.error-t.start,e.emit=r),r(A,...n))};r(e),e.prependOnceListener("abort",()=>{t.abort=Date.now(),(!t.response||n>=13)&&(t.phases.total=Date.now()-t.start)});const o=e=>{t.socket=Date.now(),t.phases.wait=t.socket-t.start;const r=()=>{t.lookup=Date.now(),t.phases.dns=t.lookup-t.socket};e.prependOnceListener("lookup",r),A.default(e,{connect:()=>{t.connect=Date.now(),void 0===t.lookup&&(e.removeListener("lookup",r),t.lookup=t.connect,t.phases.dns=t.lookup-t.socket),t.phases.tcp=t.connect-t.lookup},secureConnect:()=>{t.secureConnect=Date.now(),t.phases.tls=t.secureConnect-t.connect}})};e.socket?o(e.socket):e.prependOnceListener("socket",o);const i=()=>{var e;t.upload=Date.now(),t.phases.request=t.upload-(null!=(e=t.secureConnect)?e:t.connect)};return("boolean"==typeof e.writableFinished?!e.writableFinished:!e.finished||0!==e.outputSize||e.socket&&0!==e.socket.writableLength)?e.prependOnceListener("finish",i):i(),e.prependOnceListener("response",e=>{t.response=Date.now(),t.phases.firstByte=t.response-t.upload,e.timings=t,r(e),e.prependOnceListener("end",()=>{t.end=Date.now(),t.phases.download=t.end-t.response,t.phases.total=t.end-t.start})}),t};t.default=o,e.exports=o,e.exports.default=o},58069:(e,t,r)=>{"use strict";l.ifExists=function(e,t,r){return l(e,t,r).catch(()=>{})};const A=r(31669),n=r(46227),o=r(85622),i=r(97369),s=/^#!\s*(?:\/usr\/bin\/env)?\s*([^ \t]+)(.*)$/,a={createPwshFile:!0,createCmdFile:i(),fs:r(35747)},c=new Map([[".js","node"],[".cmd","cmd"],[".bat","cmd"],[".ps1","pwsh"],[".sh","sh"]]);function g(e){const t={...a,...e},r=t.fs;return t.fs_={chmod:r.chmod?A.promisify(r.chmod):async()=>{},stat:A.promisify(r.stat),unlink:A.promisify(r.unlink),readFile:A.promisify(r.readFile),writeFile:A.promisify(r.writeFile)},t}async function l(e,t,r){const A=g(r);await A.fs_.stat(e),await async function(e,t,r){const A=await async function(e,t){const r=await t.fs_.readFile(e,"utf8"),A=r.trim().split(/\r*\n/)[0].match(s);if(!A){const t=o.extname(e).toLowerCase();return{program:c.get(t)||null,additionalArgs:""}}return{program:A[1],additionalArgs:A[2]}}(e,r);return await function(e,t){return n(o.dirname(e),{fs:t.fs})}(t,r),function(e,t,r,A){const n=g(A),o=[{generator:h,extension:""}];n.createCmdFile&&o.push({generator:u,extension:".cmd"});n.createPwshFile&&o.push({generator:p,extension:".ps1"});return Promise.all(o.map(A=>async function(e,t,r,A,n){const o=n.preserveSymlinks?"--preserve-symlinks":"",i=[r.additionalArgs,o].filter(e=>e).join(" ");return n=Object.assign({},n,{prog:r.program,args:i}),await function(e,t){return function(e,t){return t.fs_.unlink(e).catch(()=>{})}(e,t)}(t,n),await n.fs_.writeFile(t,A(e,t,n),"utf8"),function(e,t){return function(e,t){return t.fs_.chmod(e,493)}(e,t)}(t,n)}(e,t+A.extension,r,A.generator,n)))}(e,t,A,r)}(e,t,A)}function u(e,t,r){let A=o.relative(o.dirname(t),e).split("/").join("\\");const n=o.isAbsolute(A)?`"${A}"`:`"%~dp0\\${A}"`;let i,s=r.prog,a=r.args||"";const c=d(r.nodePath).win32;s?(i=`"%~dp0\\${s}.exe"`,A=n):(s=n,a="",A="");let g=r.progArgs?r.progArgs.join(" ")+" ":"",l=c?`@SET NODE_PATH=${c}\r\n`:"";return l+=i?`@IF EXIST ${i} (\r\n ${i} ${a} ${A} ${g}%*\r\n) ELSE (\r\n @SETLOCAL\r\n @SET PATHEXT=%PATHEXT:;.JS;=;%\r\n ${s} ${a} ${A} ${g}%*\r\n)`:`@${s} ${a} ${A} ${g}%*\r\n`,l}function h(e,t,r){let A,n=o.relative(o.dirname(t),e),i=r.prog&&r.prog.split("\\").join("/");n=n.split("\\").join("/");const s=o.isAbsolute(n)?`"${n}"`:`"$basedir/${n}"`;let a=r.args||"";const c=d(r.nodePath).posix;i?(A=`"$basedir/${r.prog}"`,n=s):(i=s,a="",n="");let g=r.progArgs?r.progArgs.join(" ")+" ":"",l="#!/bin/sh\n";l+='basedir=$(dirname "$(echo "$0" | sed -e \'s,\\\\,/,g\')")\n\ncase `uname` in\n *CYGWIN*) basedir=`cygpath -w "$basedir"`;;\nesac\n\n';const u=r.nodePath?`export NODE_PATH="${c}"\n`:"";return l+=A?u+`if [ -x ${A} ]; then\n`+` exec ${A} ${a} ${n} ${g}"$@"\nelse \n`+` exec ${i} ${a} ${n} ${g}"$@"\nfi\n`:`${u}${i} ${a} ${n} ${g}"$@"\nexit $?\n`,l}function p(e,t,r){let A=o.relative(o.dirname(t),e);const n=r.prog&&r.prog.split("\\").join("/");let i,s=n&&`"${n}$exe"`;A=A.split("\\").join("/");const a=o.isAbsolute(A)?`"${A}"`:`"$basedir/${A}"`;let c=r.args||"",g=d(r.nodePath);const l=g.win32,u=g.posix;s?(i=`"$basedir/${r.prog}$exe"`,A=a):(s=a,c="",A="");let h=r.progArgs?r.progArgs.join(" ")+" ":"",p='#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n\n$exe=""\n'+(r.nodePath?`$env_node_path=$env:NODE_PATH\n$env:NODE_PATH="${l}"\n`:"")+'if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {\n # Fix case when both the Windows and Linux builds of Node\n # are installed in the same directory\n $exe=".exe"\n}';return r.nodePath&&(p=p+" else {\n"+` $env:NODE_PATH="${u}"\n}`),p+="\n",p=i?p+"$ret=0\n"+`if (Test-Path ${i}) {\n # Support pipeline input\n if ($MyInvocation.ExpectingInput) {\n`+` $input | & ${i} ${c} ${A} ${h}$args\n } else {\n`+` & ${i} ${c} ${A} ${h}$args\n }\n $ret=$LASTEXITCODE\n} else {\n # Support pipeline input\n if ($MyInvocation.ExpectingInput) {\n`+` $input | & ${s} ${c} ${A} ${h}$args\n } else {\n`+` & ${s} ${c} ${A} ${h}$args\n }\n $ret=$LASTEXITCODE\n}\n`+(r.nodePath?"$env:NODE_PATH=$env_node_path\n":"")+"exit $ret\n":p+"# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n"+` $input | & ${s} ${c} ${A} ${h}$args\n} else {\n`+` & ${s} ${c} ${A} ${h}$args\n}\n`+(r.nodePath?"$env:NODE_PATH=$env_node_path\n":"")+"exit $LASTEXITCODE\n",p}function d(e){if(!e)return{win32:"",posix:""};let t="string"==typeof e?e.split(o.delimiter):Array.from(e),r={};for(let e=0;e"/mnt/"+t.toLowerCase()):t[e];r.win32=r.win32?`${r.win32};${A}`:A,r.posix=r.posix?`${r.posix}:${n}`:n,r[e]={win32:A,posix:n}}return r}e.exports=l},97991:(e,t,r)=>{"use strict";const A=/[\u001b\u009b][[\]#;?()]*(?:(?:(?:[^\W_]*;?[^\W_]*)\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,n=()=>{const e={enabled:!0,visible:!0,styles:{},keys:{}};"FORCE_COLOR"in process.env&&(e.enabled="0"!==process.env.FORCE_COLOR);const t=(e,t,r)=>"function"==typeof e?e(t):e.wrap(t,r),n=(r,A)=>{if(""===r||null==r)return"";if(!1===e.enabled)return r;if(!1===e.visible)return"";let n=""+r,o=n.includes("\n"),i=A.length;for(i>0&&A.includes("unstyle")&&(A=[...new Set(["unstyle",...A])].reverse());i-- >0;)n=t(e.styles[A[i]],n,o);return n},o=(t,r,A)=>{e.styles[t]=(e=>{let t=e.open=`[${e.codes[0]}m`,r=e.close=`[${e.codes[1]}m`,A=e.regex=new RegExp(`\\u001b\\[${e.codes[1]}m`,"g");return e.wrap=(e,n)=>{e.includes(r)&&(e=e.replace(A,r+t));let o=t+e+r;return n?o.replace(/\r*\n/g,`${r}$&${t}`):o},e})({name:t,codes:r}),(e.keys[A]||(e.keys[A]=[])).push(t),Reflect.defineProperty(e,t,{configurable:!0,enumerable:!0,set(r){e.alias(t,r)},get(){let r=e=>n(e,r.stack);return Reflect.setPrototypeOf(r,e),r.stack=this.stack?this.stack.concat(t):[t],r}})};return o("reset",[0,0],"modifier"),o("bold",[1,22],"modifier"),o("dim",[2,22],"modifier"),o("italic",[3,23],"modifier"),o("underline",[4,24],"modifier"),o("inverse",[7,27],"modifier"),o("hidden",[8,28],"modifier"),o("strikethrough",[9,29],"modifier"),o("black",[30,39],"color"),o("red",[31,39],"color"),o("green",[32,39],"color"),o("yellow",[33,39],"color"),o("blue",[34,39],"color"),o("magenta",[35,39],"color"),o("cyan",[36,39],"color"),o("white",[37,39],"color"),o("gray",[90,39],"color"),o("grey",[90,39],"color"),o("bgBlack",[40,49],"bg"),o("bgRed",[41,49],"bg"),o("bgGreen",[42,49],"bg"),o("bgYellow",[43,49],"bg"),o("bgBlue",[44,49],"bg"),o("bgMagenta",[45,49],"bg"),o("bgCyan",[46,49],"bg"),o("bgWhite",[47,49],"bg"),o("blackBright",[90,39],"bright"),o("redBright",[91,39],"bright"),o("greenBright",[92,39],"bright"),o("yellowBright",[93,39],"bright"),o("blueBright",[94,39],"bright"),o("magentaBright",[95,39],"bright"),o("cyanBright",[96,39],"bright"),o("whiteBright",[97,39],"bright"),o("bgBlackBright",[100,49],"bgBright"),o("bgRedBright",[101,49],"bgBright"),o("bgGreenBright",[102,49],"bgBright"),o("bgYellowBright",[103,49],"bgBright"),o("bgBlueBright",[104,49],"bgBright"),o("bgMagentaBright",[105,49],"bgBright"),o("bgCyanBright",[106,49],"bgBright"),o("bgWhiteBright",[107,49],"bgBright"),e.ansiRegex=A,e.hasColor=e.hasAnsi=t=>(e.ansiRegex.lastIndex=0,"string"==typeof t&&""!==t&&e.ansiRegex.test(t)),e.alias=(t,r)=>{let A="string"==typeof r?e[r]:r;if("function"!=typeof A)throw new TypeError("Expected alias to be the name of an existing color (string) or a function");A.stack||(Reflect.defineProperty(A,"name",{value:t}),e.styles[t]=A,A.stack=[t]),Reflect.defineProperty(e,t,{configurable:!0,enumerable:!0,set(r){e.alias(t,r)},get(){let t=e=>n(e,t.stack);return Reflect.setPrototypeOf(t,e),t.stack=this.stack?this.stack.concat(A.stack):A.stack,t}})},e.theme=t=>{if(null===(r=t)||"object"!=typeof r||Array.isArray(r))throw new TypeError("Expected theme to be an object");var r;for(let r of Object.keys(t))e.alias(r,t[r]);return e},e.alias("unstyle",t=>"string"==typeof t&&""!==t?(e.ansiRegex.lastIndex=0,t.replace(e.ansiRegex,"")):""),e.alias("noop",e=>e),e.none=e.clear=e.noop,e.stripColor=e.unstyle,e.symbols=r(31283),e.define=o,e};e.exports=n(),e.exports.create=n},31283:e=>{"use strict";const t="Hyper"===process.env.TERM_PROGRAM,r="win32"===process.platform,A="linux"===process.platform,n={ballotDisabled:"☒",ballotOff:"☐",ballotOn:"☑",bullet:"•",bulletWhite:"◦",fullBlock:"█",heart:"❤",identicalTo:"≡",line:"─",mark:"※",middot:"·",minus:"-",multiplication:"×",obelus:"÷",pencilDownRight:"✎",pencilRight:"✏",pencilUpRight:"✐",percent:"%",pilcrow2:"❡",pilcrow:"¶",plusMinus:"±",section:"§",starsOff:"☆",starsOn:"★",upDownArrow:"↕"},o=Object.assign({},n,{check:"√",cross:"×",ellipsisLarge:"...",ellipsis:"...",info:"i",question:"?",questionSmall:"?",pointer:">",pointerSmall:"»",radioOff:"( )",radioOn:"(*)",warning:"‼"}),i=Object.assign({},n,{ballotCross:"✘",check:"✔",cross:"✖",ellipsisLarge:"⋯",ellipsis:"…",info:"ℹ",question:"?",questionFull:"?",questionSmall:"﹖",pointer:A?"▸":"❯",pointerSmall:A?"‣":"›",radioOff:"◯",radioOn:"◉",warning:"⚠"});e.exports=r&&!t?o:i,Reflect.defineProperty(e.exports,"common",{enumerable:!1,value:n}),Reflect.defineProperty(e.exports,"windows",{enumerable:!1,value:o}),Reflect.defineProperty(e.exports,"other",{enumerable:!1,value:i})},18483:(e,t,r)=>{"use strict";e=r.nmd(e);const A=(e,t)=>(...r)=>`[${e(...r)+t}m`,n=(e,t)=>(...r)=>{const A=e(...r);return`[${38+t};5;${A}m`},o=(e,t)=>(...r)=>{const A=e(...r);return`[${38+t};2;${A[0]};${A[1]};${A[2]}m`},i=e=>e,s=(e,t,r)=>[e,t,r],a=(e,t,r)=>{Object.defineProperty(e,t,{get:()=>{const A=r();return Object.defineProperty(e,t,{value:A,enumerable:!0,configurable:!0}),A},enumerable:!0,configurable:!0})};let c;const g=(e,t,A,n)=>{void 0===c&&(c=r(2744));const o=n?10:0,i={};for(const[r,n]of Object.entries(c)){const s="ansi16"===r?"ansi":r;r===t?i[s]=e(A,o):"object"==typeof n&&(i[s]=e(n[t],o))}return i};Object.defineProperty(e,"exports",{enumerable:!0,get:function(){const e=new Map,t={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(const[r,A]of Object.entries(t)){for(const[r,n]of Object.entries(A))t[r]={open:`[${n[0]}m`,close:`[${n[1]}m`},A[r]=t[r],e.set(n[0],n[1]);Object.defineProperty(t,r,{value:A,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="",t.bgColor.close="",a(t.color,"ansi",()=>g(A,"ansi16",i,!1)),a(t.color,"ansi256",()=>g(n,"ansi256",i,!1)),a(t.color,"ansi16m",()=>g(o,"rgb",s,!1)),a(t.bgColor,"ansi",()=>g(A,"ansi16",i,!0)),a(t.bgColor,"ansi256",()=>g(n,"ansi256",i,!0)),a(t.bgColor,"ansi16m",()=>g(o,"rgb",s,!0)),t}})},39920:e=>{"use strict";e.exports=(...e)=>[...new Set([].concat(...e))]},67648:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getBinjumper=void 0;const A=r(78761);let n=null;t.getBinjumper=function(){return n||(n=A.gunzipSync(Buffer.from("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","base64"))),n}},50730:(e,t,r)=>{"use strict";t.O9=void 0;const A=r(85622),n=r(35747),o=r(31669),i=r(67648);Object.defineProperty(t,"O9",{enumerable:!0,get:function(){return i.getBinjumper}})},73975:(e,t,r)=>{"use strict";var A=r(86897).Duplex;function n(e){if(!(this instanceof n))return new n(e);if(this._bufs=[],this.length=0,"function"==typeof e){this._callback=e;var t=function(e){this._callback&&(this._callback(e),this._callback=null)}.bind(this);this.on("pipe",(function(e){e.on("error",t)})),this.on("unpipe",(function(e){e.removeListener("error",t)}))}else this.append(e);A.call(this)}r(31669).inherits(n,A),n.prototype._offset=function(e){var t,r=0,A=0;if(0===e)return[0,0];for(;Athis.length||e<0)){var t=this._offset(e);return this._bufs[t[0]][t[1]]}},n.prototype.slice=function(e,t){return"number"==typeof e&&e<0&&(e+=this.length),"number"==typeof t&&t<0&&(t+=this.length),this.copy(null,0,e,t)},n.prototype.copy=function(e,t,r,A){if(("number"!=typeof r||r<0)&&(r=0),("number"!=typeof A||A>this.length)&&(A=this.length),r>=this.length)return e||Buffer.alloc(0);if(A<=0)return e||Buffer.alloc(0);var n,o,i=!!e,s=this._offset(r),a=A-r,c=a,g=i&&t||0,l=s[1];if(0===r&&A==this.length){if(!i)return 1===this._bufs.length?this._bufs[0]:Buffer.concat(this._bufs,this.length);for(o=0;o(n=this._bufs[o].length-l))){this._bufs[o].copy(e,g,l,l+c);break}this._bufs[o].copy(e,g,l),g+=n,c-=n,l&&(l=0)}return e},n.prototype.shallowSlice=function(e,t){if(e=e||0,t="number"!=typeof t?this.length:t,e<0&&(e+=this.length),t<0&&(t+=this.length),e===t)return new n;var r=this._offset(e),A=this._offset(t),o=this._bufs.slice(r[0],A[0]+1);return 0==A[1]?o.pop():o[o.length-1]=o[o.length-1].slice(0,A[1]),0!=r[1]&&(o[0]=o[0].slice(r[1])),new n(o)},n.prototype.toString=function(e,t,r){return this.slice(t,r).toString(e)},n.prototype.consume=function(e){for(;this._bufs.length;){if(!(e>=this._bufs[0].length)){this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift()}return this},n.prototype.duplicate=function(){for(var e=0,t=new n;ethis.length?this.length:t;for(var A=this._offset(t),o=A[0],i=A[1];o=e.length){var a=s.indexOf(e,i);if(-1!==a)return this._reverseOffset([o,a]);i=s.length-e.length+1}else{var c=this._reverseOffset([o,i]);if(this._match(c,e))return c;i++}}i=0}return-1},n.prototype._match=function(e,t){if(this.length-e{"use strict";const A=r(54900),n=r(44617),o=r(1495),i=r(425),s=(e,t={})=>{let r=[];if(Array.isArray(e))for(let A of e){let e=s.create(A,t);Array.isArray(e)?r.push(...e):r.push(e)}else r=[].concat(s.create(e,t));return t&&!0===t.expand&&!0===t.nodupes&&(r=[...new Set(r)]),r};s.parse=(e,t={})=>i(e,t),s.stringify=(e,t={})=>A("string"==typeof e?s.parse(e,t):e,t),s.compile=(e,t={})=>("string"==typeof e&&(e=s.parse(e,t)),n(e,t)),s.expand=(e,t={})=>{"string"==typeof e&&(e=s.parse(e,t));let r=o(e,t);return!0===t.noempty&&(r=r.filter(Boolean)),!0===t.nodupes&&(r=[...new Set(r)]),r},s.create=(e,t={})=>""===e||e.length<3?[e]:!0!==t.expand?s.compile(e,t):s.expand(e,t),e.exports=s},44617:(e,t,r)=>{"use strict";const A=r(52169),n=r(4542);e.exports=(e,t={})=>{let r=(e,o={})=>{let i=n.isInvalidBrace(o),s=!0===e.invalid&&!0===t.escapeInvalid,a=!0===i||!0===s,c=!0===t.escapeInvalid?"\\":"",g="";if(!0===e.isOpen)return c+e.value;if(!0===e.isClose)return c+e.value;if("open"===e.type)return a?c+e.value:"(";if("close"===e.type)return a?c+e.value:")";if("comma"===e.type)return"comma"===e.prev.type?"":a?e.value:"|";if(e.value)return e.value;if(e.nodes&&e.ranges>0){let r=n.reduce(e.nodes),o=A(...r,{...t,wrap:!1,toRegex:!0});if(0!==o.length)return r.length>1&&o.length>1?`(${o})`:o}if(e.nodes)for(let t of e.nodes)g+=r(t,e);return g};return r(e)}},5384:e=>{"use strict";e.exports={MAX_LENGTH:65536,CHAR_0:"0",CHAR_9:"9",CHAR_UPPERCASE_A:"A",CHAR_LOWERCASE_A:"a",CHAR_UPPERCASE_Z:"Z",CHAR_LOWERCASE_Z:"z",CHAR_LEFT_PARENTHESES:"(",CHAR_RIGHT_PARENTHESES:")",CHAR_ASTERISK:"*",CHAR_AMPERSAND:"&",CHAR_AT:"@",CHAR_BACKSLASH:"\\",CHAR_BACKTICK:"`",CHAR_CARRIAGE_RETURN:"\r",CHAR_CIRCUMFLEX_ACCENT:"^",CHAR_COLON:":",CHAR_COMMA:",",CHAR_DOLLAR:"$",CHAR_DOT:".",CHAR_DOUBLE_QUOTE:'"',CHAR_EQUAL:"=",CHAR_EXCLAMATION_MARK:"!",CHAR_FORM_FEED:"\f",CHAR_FORWARD_SLASH:"/",CHAR_HASH:"#",CHAR_HYPHEN_MINUS:"-",CHAR_LEFT_ANGLE_BRACKET:"<",CHAR_LEFT_CURLY_BRACE:"{",CHAR_LEFT_SQUARE_BRACKET:"[",CHAR_LINE_FEED:"\n",CHAR_NO_BREAK_SPACE:" ",CHAR_PERCENT:"%",CHAR_PLUS:"+",CHAR_QUESTION_MARK:"?",CHAR_RIGHT_ANGLE_BRACKET:">",CHAR_RIGHT_CURLY_BRACE:"}",CHAR_RIGHT_SQUARE_BRACKET:"]",CHAR_SEMICOLON:";",CHAR_SINGLE_QUOTE:"'",CHAR_SPACE:" ",CHAR_TAB:"\t",CHAR_UNDERSCORE:"_",CHAR_VERTICAL_LINE:"|",CHAR_ZERO_WIDTH_NOBREAK_SPACE:"\ufeff"}},1495:(e,t,r)=>{"use strict";const A=r(52169),n=r(54900),o=r(4542),i=(e="",t="",r=!1)=>{let A=[];if(e=[].concat(e),!(t=[].concat(t)).length)return e;if(!e.length)return r?o.flatten(t).map(e=>`{${e}}`):t;for(let n of e)if(Array.isArray(n))for(let e of n)A.push(i(e,t,r));else for(let e of t)!0===r&&"string"==typeof e&&(e=`{${e}}`),A.push(Array.isArray(e)?i(n,e,r):n+e);return o.flatten(A)};e.exports=(e,t={})=>{let r=void 0===t.rangeLimit?1e3:t.rangeLimit,s=(e,a={})=>{e.queue=[];let c=a,g=a.queue;for(;"brace"!==c.type&&"root"!==c.type&&c.parent;)c=c.parent,g=c.queue;if(e.invalid||e.dollar)return void g.push(i(g.pop(),n(e,t)));if("brace"===e.type&&!0!==e.invalid&&2===e.nodes.length)return void g.push(i(g.pop(),["{}"]));if(e.nodes&&e.ranges>0){let s=o.reduce(e.nodes);if(o.exceedsLimit(...s,t.step,r))throw new RangeError("expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.");let a=A(...s,t);return 0===a.length&&(a=n(e,t)),g.push(i(g.pop(),a)),void(e.nodes=[])}let l=o.encloseBrace(e),u=e.queue,h=e;for(;"brace"!==h.type&&"root"!==h.type&&h.parent;)h=h.parent,u=h.queue;for(let t=0;t{"use strict";const A=r(54900),{MAX_LENGTH:n,CHAR_BACKSLASH:o,CHAR_BACKTICK:i,CHAR_COMMA:s,CHAR_DOT:a,CHAR_LEFT_PARENTHESES:c,CHAR_RIGHT_PARENTHESES:g,CHAR_LEFT_CURLY_BRACE:l,CHAR_RIGHT_CURLY_BRACE:u,CHAR_LEFT_SQUARE_BRACKET:h,CHAR_RIGHT_SQUARE_BRACKET:p,CHAR_DOUBLE_QUOTE:d,CHAR_SINGLE_QUOTE:C,CHAR_NO_BREAK_SPACE:f,CHAR_ZERO_WIDTH_NOBREAK_SPACE:I}=r(5384);e.exports=(e,t={})=>{if("string"!=typeof e)throw new TypeError("Expected a string");let r=t||{},E="number"==typeof r.maxLength?Math.min(n,r.maxLength):n;if(e.length>E)throw new SyntaxError(`Input length (${e.length}), exceeds max characters (${E})`);let B,y={type:"root",input:e,nodes:[]},m=[y],w=y,Q=y,D=0,b=e.length,v=0,S=0;const k=()=>e[v++],N=e=>{if("text"===e.type&&"dot"===Q.type&&(Q.type="text"),!Q||"text"!==Q.type||"text"!==e.type)return w.nodes.push(e),e.parent=w,e.prev=Q,Q=e,e;Q.value+=e.value};for(N({type:"bos"});v0){if(w.ranges>0){w.ranges=0;let e=w.nodes.shift();w.nodes=[e,{type:"text",value:A(w)}]}N({type:"comma",value:B}),w.commas++}else if(B===a&&S>0&&0===w.commas){let e=w.nodes;if(0===S||0===e.length){N({type:"text",value:B});continue}if("dot"===Q.type){if(w.range=[],Q.value+=B,Q.type="range",3!==w.nodes.length&&5!==w.nodes.length){w.invalid=!0,w.ranges=0,Q.type="text";continue}w.ranges++,w.args=[];continue}if("range"===Q.type){e.pop();let t=e[e.length-1];t.value+=Q.value+B,Q=t,w.ranges--;continue}N({type:"dot",value:B})}else N({type:"text",value:B});else{if("brace"!==w.type){N({type:"text",value:B});continue}let e="close";w=m.pop(),w.close=!0,N({type:e,value:B}),S--,w=m[m.length-1]}else{S++;let e=Q.value&&"$"===Q.value.slice(-1)||!0===w.dollar;w=N({type:"brace",open:!0,close:!1,dollar:e,depth:S,commas:0,ranges:0,nodes:[]}),m.push(w),N({type:"open",value:B})}else{let e,r=B;for(!0!==t.keepQuotes&&(B="");v{e.nodes||("open"===e.type&&(e.isOpen=!0),"close"===e.type&&(e.isClose=!0),e.nodes||(e.type="text"),e.invalid=!0)});let e=m[m.length-1],t=e.nodes.indexOf(w);e.nodes.splice(t,1,...w.nodes)}}while(m.length>0);return N({type:"eos"}),y}},54900:(e,t,r)=>{"use strict";const A=r(4542);e.exports=(e,t={})=>{let r=(e,n={})=>{let o=t.escapeInvalid&&A.isInvalidBrace(n),i=!0===e.invalid&&!0===t.escapeInvalid,s="";if(e.value)return(o||i)&&A.isOpenOrClose(e)?"\\"+e.value:e.value;if(e.value)return e.value;if(e.nodes)for(let t of e.nodes)s+=r(t);return s};return r(e)}},4542:(e,t)=>{"use strict";t.isInteger=e=>"number"==typeof e?Number.isInteger(e):"string"==typeof e&&""!==e.trim()&&Number.isInteger(Number(e)),t.find=(e,t)=>e.nodes.find(e=>e.type===t),t.exceedsLimit=(e,r,A=1,n)=>!1!==n&&(!(!t.isInteger(e)||!t.isInteger(r))&&(Number(r)-Number(e))/Number(A)>=n),t.escapeNode=(e,t=0,r)=>{let A=e.nodes[t];A&&(r&&A.type===r||"open"===A.type||"close"===A.type)&&!0!==A.escaped&&(A.value="\\"+A.value,A.escaped=!0)},t.encloseBrace=e=>"brace"===e.type&&(e.commas>>0+e.ranges>>0==0&&(e.invalid=!0,!0)),t.isInvalidBrace=e=>"brace"===e.type&&(!(!0!==e.invalid&&!e.dollar)||(e.commas>>0+e.ranges>>0==0||!0!==e.open||!0!==e.close)&&(e.invalid=!0,!0)),t.isOpenOrClose=e=>"open"===e.type||"close"===e.type||(!0===e.open||!0===e.close),t.reduce=e=>e.reduce((e,t)=>("text"===t.type&&e.push(t.value),"range"===t.type&&(t.type="text"),e),[]),t.flatten=(...e)=>{const t=[],r=e=>{for(let A=0;A{"use strict";const{V4MAPPED:A,ADDRCONFIG:n,ALL:o,promises:{Resolver:i},lookup:s}=r(40881),{promisify:a}=r(31669),c=r(12087),g=Symbol("cacheableLookupCreateConnection"),l=Symbol("cacheableLookupInstance"),u=Symbol("expires"),h="number"==typeof o,p=e=>{if(!e||"function"!=typeof e.createConnection)throw new Error("Expected an Agent instance as the first argument")},d=()=>{let e=!1,t=!1;for(const r of Object.values(c.networkInterfaces()))for(const A of r)if(!A.internal&&("IPv6"===A.family?t=!0:e=!0,e&&t))return{has4:e,has6:t};return{has4:e,has6:t}},C={ttl:!0},f={all:!0};class I{constructor({cache:e=new Map,maxTtl:t=1/0,fallbackDuration:r=3600,errorTtl:A=.15,resolver:n=new i,lookup:o=s}={}){if(this.maxTtl=t,this.errorTtl=A,this._cache=e,this._resolver=n,this._dnsLookup=a(o),this._resolver instanceof i?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=a(this._resolver.resolve4.bind(this._resolver)),this._resolve6=a(this._resolver.resolve6.bind(this._resolver))),this._iface=d(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,r<1)this._fallback=!1;else{this._fallback=!0;const e=setInterval(()=>{this._hostnamesToFallback.clear()},1e3*r);e.unref&&e.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,t,r){if("function"==typeof t?(r=t,t={}):"number"==typeof t&&(t={family:t}),!r)throw new Error("Callback must be a function.");this.lookupAsync(e,t).then(e=>{t.all?r(null,e):r(null,e.address,e.family,e.expires,e.ttl)},r)}async lookupAsync(e,t={}){"number"==typeof t&&(t={family:t});let r=await this.query(e);if(6===t.family){const e=r.filter(e=>6===e.family);t.hints&A&&(h&&t.hints&o||0===e.length)?(e=>{for(const t of e)6!==t.family&&(t.address="::ffff:"+t.address,t.family=6)})(r):r=e}else 4===t.family&&(r=r.filter(e=>4===e.family));if(t.hints&n){const{_iface:e}=this;r=r.filter(t=>6===t.family?e.has6:e.has4)}if(0===r.length){const t=new Error("cacheableLookup ENOTFOUND "+e);throw t.code="ENOTFOUND",t.hostname=e,t}return t.all?r:r[0]}async query(e){let t=await this._cache.get(e);if(!t){const r=this._pending[e];if(r)t=await r;else{const r=this.queryAndCache(e);this._pending[e]=r,t=await r}}return t=t.map(e=>({...e})),t}async _resolve(e){const[t,r]=await Promise.all([this._resolve4(e,C),this._resolve6(e,C)].map(e=>(async e=>{try{return await e}catch(e){if("ENODATA"===e.code||"ENOTFOUND"===e.code)return[];throw e}})(e)));let A=0,n=0,o=0;const i=Date.now();for(const e of t)e.family=4,e.expires=i+1e3*e.ttl,A=Math.max(A,e.ttl);for(const e of r)e.family=6,e.expires=i+1e3*e.ttl,n=Math.max(n,e.ttl);return o=t.length>0?r.length>0?Math.min(A,n):A:n,{entries:[...t,...r],cacheTtl:o}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch(e){return{entries:[],cacheTtl:0}}}async _set(e,t,r){if(this.maxTtl>0&&r>0){r=1e3*Math.min(r,this.maxTtl),t[u]=Date.now()+r;try{await this._cache.set(e,t,r)}catch(e){this.lookupAsync=async()=>{const t=new Error("Cache Error. Please recreate the CacheableLookup instance.");throw t.cause=e,t}}A=this._cache,Symbol.iterator in A&&this._tick(r)}var A}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,f);try{let t=await this._resolve(e);0===t.entries.length&&this._fallback&&(t=await this._lookup(e),0!==t.entries.length&&this._hostnamesToFallback.add(e));const r=0===t.entries.length?this.errorTtl:t.cacheTtl;return await this._set(e,t.entries,r),delete this._pending[e],t.entries}catch(t){throw delete this._pending[e],t}}_tick(e){const t=this._nextRemovalTime;(!t||e{this._nextRemovalTime=!1;let e=1/0;const t=Date.now();for(const[r,A]of this._cache){const n=A[u];t>=n?this._cache.delete(r):n("lookup"in t||(t.lookup=this.lookup),e[g](t,r))}uninstall(e){if(p(e),e[g]){if(e[l]!==this)throw new Error("The agent is not owned by this CacheableLookup instance");e.createConnection=e[g],delete e[g],delete e[l]}}updateInterfaceInfo(){const{_iface:e}=this;this._iface=d(),(e.has4&&!this._iface.has4||e.has6&&!this._iface.has6)&&this._cache.clear()}clear(e){e?this._cache.delete(e):this._cache.clear()}}e.exports=I,e.exports.default=I},11200:(e,t,r)=>{"use strict";const A=r(28614),n=r(78835),o=r(19793),i=r(58764),s=r(86834),a=r(48491),c=r(55737),g=r(15751),l=r(72515);class u{constructor(e,t){if("function"!=typeof e)throw new TypeError("Parameter `request` must be a function");return this.cache=new l({uri:"string"==typeof t&&t,store:"string"!=typeof t&&t,namespace:"cacheable-request"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(t,r)=>{let l;if("string"==typeof t)l=p(n.parse(t)),t={};else if(t instanceof n.URL)l=p(n.parse(t.toString())),t={};else{const[e,...r]=(t.path||"").split("?"),A=r.length>0?"?"+r.join("?"):"";l=p({...t,pathname:e,search:A})}(t={headers:{},method:"GET",cache:!0,strictTtl:!1,automaticFailover:!1,...t,...h(l)}).headers=c(t.headers);const d=new A,C=o(n.format(l),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${t.method}:${C}`;let I=!1,E=!1;const B=t=>{E=!0;let A,n=!1;const o=new Promise(e=>{A=()=>{n||(n=!0,e())}}),c=e=>{if(I&&!t.forceRefresh){e.status=e.statusCode;const r=s.fromObject(I.cachePolicy).revalidatedPolicy(t,e);if(!r.modified){const t=r.policy.responseHeaders();(e=new a(I.statusCode,t,I.body,I.url)).cachePolicy=r.policy,e.fromCache=!0}}let A;e.fromCache||(e.cachePolicy=new s(t,e,t),e.fromCache=!1),t.cache&&e.cachePolicy.storable()?(A=g(e),(async()=>{try{const r=i.buffer(e);if(await Promise.race([o,new Promise(t=>e.once("end",t))]),n)return;const A=await r,s={cachePolicy:e.cachePolicy.toObject(),url:e.url,statusCode:e.fromCache?I.statusCode:e.statusCode,body:A};let a=t.strictTtl?e.cachePolicy.timeToLive():void 0;t.maxTtl&&(a=a?Math.min(a,t.maxTtl):t.maxTtl),await this.cache.set(f,s,a)}catch(e){d.emit("error",new u.CacheError(e))}})()):t.cache&&I&&(async()=>{try{await this.cache.delete(f)}catch(e){d.emit("error",new u.CacheError(e))}})(),d.emit("response",A||e),"function"==typeof r&&r(A||e)};try{const r=e(t,c);r.once("error",A),r.once("abort",A),d.emit("request",r)}catch(e){d.emit("error",new u.RequestError(e))}};return(async()=>{const e=async e=>{await Promise.resolve();const t=e.cache?await this.cache.get(f):void 0;if(void 0===t)return B(e);const A=s.fromObject(t.cachePolicy);if(A.satisfiesWithoutRevalidation(e)&&!e.forceRefresh){const e=A.responseHeaders(),n=new a(t.statusCode,e,t.body,t.url);n.cachePolicy=A,n.fromCache=!0,d.emit("response",n),"function"==typeof r&&r(n)}else I=t,e.headers=A.revalidationHeaders(e),B(e)},A=e=>d.emit("error",new u.CacheError(e));this.cache.once("error",A),d.on("response",()=>this.cache.removeListener("error",A));try{await e(t)}catch(e){t.automaticFailover&&!E&&B(t),d.emit("error",new u.CacheError(e))}})(),d}}}function h(e){const t={...e};return t.path=`${e.pathname||"/"}${e.search||""}`,delete t.pathname,delete t.search,t}function p(e){return{protocol:e.protocol,auth:e.auth,hostname:e.hostname||e.host||"localhost",port:e.port,pathname:e.pathname,search:e.search}}u.RequestError=class extends Error{constructor(e){super(e.message),this.name="RequestError",Object.assign(this,e)}},u.CacheError=class extends Error{constructor(e){super(e.message),this.name="CacheError",Object.assign(this,e)}},e.exports=u},54738:e=>{"use strict";const t=(e,t)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected the input to be `string | string[]`");t=Object.assign({pascalCase:!1},t);if(0===(e=Array.isArray(e)?e.map(e=>e.trim()).filter(e=>e.length).join("-"):e.trim()).length)return"";if(1===e.length)return t.pascalCase?e.toUpperCase():e.toLowerCase();return e!==e.toLowerCase()&&(e=(e=>{let t=!1,r=!1,A=!1;for(let n=0;nt.toUpperCase()).replace(/\d+(\w|$)/g,e=>e.toUpperCase()),r=e,t.pascalCase?r.charAt(0).toUpperCase()+r.slice(1):r;var r};e.exports=t,e.exports.default=t},95882:(e,t,r)=>{"use strict";const A=r(18483),{stdout:n,stderr:o}=r(59428),{stringReplaceAll:i,stringEncaseCRLFWithFirstIndex:s}=r(73327),a=["ansi","ansi","ansi256","ansi16m"],c=Object.create(null);class g{constructor(e){return l(e)}}const l=e=>{const t={};return((e,t={})=>{if(t.level>3||t.level<0)throw new Error("The `level` option should be an integer from 0 to 3");const r=n?n.level:0;e.level=void 0===t.level?r:t.level})(t,e),t.template=(...e)=>E(t.template,...e),Object.setPrototypeOf(t,u.prototype),Object.setPrototypeOf(t.template,t),t.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},t.template.Instance=g,t.template};function u(e){return l(e)}for(const[e,t]of Object.entries(A))c[e]={get(){const r=C(this,d(t.open,t.close,this._styler),this._isEmpty);return Object.defineProperty(this,e,{value:r}),r}};c.visible={get(){const e=C(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:e}),e}};const h=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(const e of h)c[e]={get(){const{level:t}=this;return function(...r){const n=d(A.color[a[t]][e](...r),A.color.close,this._styler);return C(this,n,this._isEmpty)}}};for(const e of h){c["bg"+e[0].toUpperCase()+e.slice(1)]={get(){const{level:t}=this;return function(...r){const n=d(A.bgColor[a[t]][e](...r),A.bgColor.close,this._styler);return C(this,n,this._isEmpty)}}}}const p=Object.defineProperties(()=>{},{...c,level:{enumerable:!0,get(){return this._generator.level},set(e){this._generator.level=e}}}),d=(e,t,r)=>{let A,n;return void 0===r?(A=e,n=t):(A=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:A,closeAll:n,parent:r}},C=(e,t,r)=>{const A=(...e)=>f(A,1===e.length?""+e[0]:e.join(" "));return A.__proto__=p,A._generator=e,A._styler=t,A._isEmpty=r,A},f=(e,t)=>{if(e.level<=0||!t)return e._isEmpty?"":t;let r=e._styler;if(void 0===r)return t;const{openAll:A,closeAll:n}=r;if(-1!==t.indexOf(""))for(;void 0!==r;)t=i(t,r.close,r.open),r=r.parent;const o=t.indexOf("\n");return-1!==o&&(t=s(t,n,A,o)),A+t+n};let I;const E=(e,...t)=>{const[A]=t;if(!Array.isArray(A))return t.join(" ");const n=t.slice(1),o=[A.raw[0]];for(let e=1;e{"use strict";const t=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,r=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,A=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,n=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,o=new Map([["n","\n"],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e",""],["a",""]]);function i(e){const t="u"===e[0],r="{"===e[1];return t&&!r&&5===e.length||"x"===e[0]&&3===e.length?String.fromCharCode(parseInt(e.slice(1),16)):t&&r?String.fromCodePoint(parseInt(e.slice(2,-1),16)):o.get(e)||e}function s(e,t){const r=[],o=t.trim().split(/\s*,\s*/g);let s;for(const t of o){const o=Number(t);if(Number.isNaN(o)){if(!(s=t.match(A)))throw new Error(`Invalid Chalk template style argument: ${t} (in style '${e}')`);r.push(s[2].replace(n,(e,t,r)=>t?i(t):r))}else r.push(o)}return r}function a(e){r.lastIndex=0;const t=[];let A;for(;null!==(A=r.exec(e));){const e=A[1];if(A[2]){const r=s(e,A[2]);t.push([e].concat(r))}else t.push([e])}return t}function c(e,t){const r={};for(const e of t)for(const t of e.styles)r[t[0]]=e.inverse?null:t.slice(1);let A=e;for(const[e,t]of Object.entries(r))if(Array.isArray(t)){if(!(e in A))throw new Error("Unknown Chalk style: "+e);A=t.length>0?A[e](...t):A[e]}return A}e.exports=(e,r)=>{const A=[],n=[];let o=[];if(r.replace(t,(t,r,s,g,l,u)=>{if(r)o.push(i(r));else if(g){const t=o.join("");o=[],n.push(0===A.length?t:c(e,A)(t)),A.push({inverse:s,styles:a(g)})}else if(l){if(0===A.length)throw new Error("Found extraneous } in Chalk template literal");n.push(c(e,A)(o.join(""))),o=[],A.pop()}else o.push(u)}),n.push(o.join("")),A.length>0){const e=`Chalk template literal is missing ${A.length} closing bracket${1===A.length?"":"s"} (\`}\`)`;throw new Error(e)}return n.join("")}},73327:e=>{"use strict";e.exports={stringReplaceAll:(e,t,r)=>{let A=e.indexOf(t);if(-1===A)return e;const n=t.length;let o=0,i="";do{i+=e.substr(o,A-o)+t+r,o=A+n,A=e.indexOf(t,o)}while(-1!==A);return i+=e.substr(o),i},stringEncaseCRLFWithFirstIndex:(e,t,r,A)=>{let n=0,o="";do{const i="\r"===e[A-1];o+=e.substr(n,(i?A-1:A)-n)+t+(i?"\r\n":"\n")+r,n=A+1,A=e.indexOf("\n",n)}while(-1!==A);return o+=e.substr(n),o}}},5864:(e,t,r)=>{"use strict";var A=r(85832),n=process.env;function o(e){return"string"==typeof e?!!n[e]:Object.keys(e).every((function(t){return n[t]===e[t]}))}Object.defineProperty(t,"_vendors",{value:A.map((function(e){return e.constant}))}),t.name=null,t.isPR=null,A.forEach((function(e){var r=(Array.isArray(e.env)?e.env:[e.env]).every((function(e){return o(e)}));if(t[e.constant]=r,r)switch(t.name=e.name,typeof e.pr){case"string":t.isPR=!!n[e.pr];break;case"object":"env"in e.pr?t.isPR=e.pr.env in n&&n[e.pr.env]!==e.pr.ne:"any"in e.pr?t.isPR=e.pr.any.some((function(e){return!!n[e]})):t.isPR=o(e.pr);break;default:t.isPR=null}})),t.isCI=!!(n.CI||n.CONTINUOUS_INTEGRATION||n.BUILD_NUMBER||n.RUN_ID||t.name)},85832:e=>{"use strict";e.exports=JSON.parse('[{"name":"AppVeyor","constant":"APPVEYOR","env":"APPVEYOR","pr":"APPVEYOR_PULL_REQUEST_NUMBER"},{"name":"Azure Pipelines","constant":"AZURE_PIPELINES","env":"SYSTEM_TEAMFOUNDATIONCOLLECTIONURI","pr":"SYSTEM_PULLREQUEST_PULLREQUESTID"},{"name":"Bamboo","constant":"BAMBOO","env":"bamboo_planKey"},{"name":"Bitbucket Pipelines","constant":"BITBUCKET","env":"BITBUCKET_COMMIT","pr":"BITBUCKET_PR_ID"},{"name":"Bitrise","constant":"BITRISE","env":"BITRISE_IO","pr":"BITRISE_PULL_REQUEST"},{"name":"Buddy","constant":"BUDDY","env":"BUDDY_WORKSPACE_ID","pr":"BUDDY_EXECUTION_PULL_REQUEST_ID"},{"name":"Buildkite","constant":"BUILDKITE","env":"BUILDKITE","pr":{"env":"BUILDKITE_PULL_REQUEST","ne":"false"}},{"name":"CircleCI","constant":"CIRCLE","env":"CIRCLECI","pr":"CIRCLE_PULL_REQUEST"},{"name":"Cirrus CI","constant":"CIRRUS","env":"CIRRUS_CI","pr":"CIRRUS_PR"},{"name":"AWS CodeBuild","constant":"CODEBUILD","env":"CODEBUILD_BUILD_ARN"},{"name":"Codeship","constant":"CODESHIP","env":{"CI_NAME":"codeship"}},{"name":"Drone","constant":"DRONE","env":"DRONE","pr":{"DRONE_BUILD_EVENT":"pull_request"}},{"name":"dsari","constant":"DSARI","env":"DSARI"},{"name":"GitLab CI","constant":"GITLAB","env":"GITLAB_CI"},{"name":"GoCD","constant":"GOCD","env":"GO_PIPELINE_LABEL"},{"name":"Hudson","constant":"HUDSON","env":"HUDSON_URL"},{"name":"Jenkins","constant":"JENKINS","env":["JENKINS_URL","BUILD_ID"],"pr":{"any":["ghprbPullId","CHANGE_ID"]}},{"name":"Magnum CI","constant":"MAGNUM","env":"MAGNUM"},{"name":"Netlify CI","constant":"NETLIFY","env":"NETLIFY_BUILD_BASE","pr":{"env":"PULL_REQUEST","ne":"false"}},{"name":"Sail CI","constant":"SAIL","env":"SAILCI","pr":"SAIL_PULL_REQUEST_NUMBER"},{"name":"Semaphore","constant":"SEMAPHORE","env":"SEMAPHORE","pr":"PULL_REQUEST_NUMBER"},{"name":"Shippable","constant":"SHIPPABLE","env":"SHIPPABLE","pr":{"IS_PULL_REQUEST":"true"}},{"name":"Solano CI","constant":"SOLANO","env":"TDDIUM","pr":"TDDIUM_PR_ID"},{"name":"Strider CD","constant":"STRIDER","env":"STRIDER"},{"name":"TaskCluster","constant":"TASKCLUSTER","env":["TASK_ID","RUN_ID"]},{"name":"TeamCity","constant":"TEAMCITY","env":"TEAMCITY_VERSION"},{"name":"Travis CI","constant":"TRAVIS","env":"TRAVIS","pr":{"env":"TRAVIS_PULL_REQUEST","ne":"false"}}]')},40822:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Cli:()=>Y,Command:()=>M,UsageError:()=>a});const A=/^(-h|--help)(?:=([0-9]+))?$/,n=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,o=/^-[a-zA-Z]{2,}$/,i=/^([^=]+)=([\s\S]*)$/,s="1"===process.env.DEBUG_CLI;class a extends Error{constructor(e){super(e),this.clipanion={type:"usage"},this.name="UsageError"}}class c extends Error{constructor(e,t){if(super(),this.input=e,this.candidates=t,this.clipanion={type:"none"},this.name="UnknownSyntaxError",0===this.candidates.length)this.message="Command not found, but we're not sure what's the alternative.";else if(1===this.candidates.length&&null!==this.candidates[0].reason){const[{usage:e,reason:t}]=this.candidates;this.message=`${t}\n\n$ ${e}`}else if(1===this.candidates.length){const[{usage:t}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${t}\n${l(e)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:e},t)=>`${(t+".").padStart(4)} ${e}`).join("\n")}\n\n${l(e)}`}}class g extends Error{constructor(e,t){super(),this.input=e,this.usages=t,this.clipanion={type:"none"},this.name="AmbiguousSyntaxError",this.message=`Cannot find who to pick amongst the following alternatives:\n\n${this.usages.map((e,t)=>`${(t+".").padStart(4)} ${e}`).join("\n")}\n\n${l(e)}`}}const l=e=>"While running "+e.filter(e=>"\0"!==e).map(e=>{const t=JSON.stringify(e);return e.match(/\s/)||0===e.length||t!==`"${e}"`?t:e}).join(" ");function u(e){s&&console.log(e)}const h={candidateUsage:null,errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:-1};function p(e,t){return e.nodes.push(t),e.nodes.length-1}function d(e,t,r=!1){u("Running a vm on "+JSON.stringify(t));let A=[{node:0,state:{candidateUsage:null,errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null}}];!function(e,{prefix:t=""}={}){u(t+"Nodes are:");for(let r=0;r2!==e).map(({state:e})=>({usage:e.candidateUsage,reason:null})));if(s.every(({node:e})=>2===e))throw new c(t,s.map(({state:e})=>({usage:e.candidateUsage,reason:e.errorMessage})));A=I(s)}if(A.length>0){u(" Results:");for(const e of A)u(` - ${e.node} -> ${JSON.stringify(e.state)}`)}else u(" No results");return A}function C(e,t){if(null!==t.selectedIndex)return!0;if(Object.prototype.hasOwnProperty.call(e.statics,"\0"))for(const{to:t}of e.statics["\0"])if(1===t)return!0;return!1}function f(e,t){return function(e,t){const r=t.filter(e=>null!==e.selectedIndex);if(0===r.length)throw new Error;let A=0;for(const e of r)e.path.length>A&&(A=e.path.length);const n=r.filter(e=>e.path.length===A),o=e=>e.positionals.filter(({extra:e})=>!e).length+e.options.length,i=n.map(e=>({state:e,positionalCount:o(e)}));let s=0;for(const{positionalCount:e}of i)e>s&&(s=e);const a=function(e){const t=[],r=[];for(const A of e)-1===A.selectedIndex?r.push(A):t.push(A);r.length>0&&t.push(Object.assign(Object.assign({},h),{path:E(...r.map(e=>e.path)),options:r.reduce((e,t)=>e.concat(t.options),[])}));return t}(i.filter(({positionalCount:e})=>e===s).map(({state:e})=>e));if(a.length>1)throw new g(e,a.map(e=>e.candidateUsage));return a[0]}(t,d(e,[...t,"\0"]).map(({state:e})=>e))}function I(e){let t=0;for(const{state:r}of e)r.path.length>t&&(t=r.path.length);return e.filter(({state:e})=>e.path.length===t)}function E(e,t,...r){return void 0===t?Array.from(e):E(e.filter((e,r)=>e===t[r]),...r)}function B(e){return 1===e||2===e}function y(e,t=0){return{to:B(e.to)?e.to:e.to>2?e.to+t-2:e.to+t,reducer:e.reducer}}function m(e,t=0){const r={dynamics:[],shortcuts:[],statics:{}};for(const[A,n]of e.dynamics)r.dynamics.push([A,y(n,t)]);for(const A of e.shortcuts)r.shortcuts.push(y(A,t));for(const[A,n]of Object.entries(e.statics))r.statics[A]=n.map(e=>y(e,t));return r}function w(e,t,r,A,n){e.nodes[t].dynamics.push([r,{to:A,reducer:n}])}function Q(e,t,r,A){e.nodes[t].shortcuts.push({to:r,reducer:A})}function D(e,t,r,A,n){(Object.prototype.hasOwnProperty.call(e.nodes[t].statics,r)?e.nodes[t].statics[r]:e.nodes[t].statics[r]=[]).push({to:A,reducer:n})}function b(e,t,r,A){if(Array.isArray(t)){const[n,...o]=t;return e[n](r,A,...o)}return e[t](r,A)}function v(e,t){const r=Array.isArray(e)?S[e[0]]:S[e];if(void 0===r.suggest)return null;const A=Array.isArray(e)?e.slice(1):[];return r.suggest(t,...A)}const S={always:()=>!0,isOptionLike:(e,t)=>!e.ignoreOptions&&t.startsWith("-"),isNotOptionLike:(e,t)=>e.ignoreOptions||!t.startsWith("-"),isOption:(e,t,r,A)=>!e.ignoreOptions&&t===r,isBatchOption:(e,t,r)=>!e.ignoreOptions&&o.test(t)&&[...t.slice(1)].every(e=>r.includes("-"+e)),isBoundOption:(e,t,r,A)=>{const o=t.match(i);return!e.ignoreOptions&&!!o&&n.test(o[1])&&r.includes(o[1])&&A.filter(e=>e.names.includes(o[1])).every(e=>e.allowBinding)},isNegatedOption:(e,t,r)=>!e.ignoreOptions&&t==="--no-"+r.slice(2),isHelp:(e,t)=>!e.ignoreOptions&&A.test(t),isUnsupportedOption:(e,t,r)=>!e.ignoreOptions&&t.startsWith("-")&&n.test(t)&&!r.includes(t),isInvalidOption:(e,t)=>!e.ignoreOptions&&t.startsWith("-")&&!n.test(t)};S.isOption.suggest=(e,t,r=!0)=>r?null:[t];const k={setCandidateUsage:(e,t,r)=>Object.assign(Object.assign({},e),{candidateUsage:r}),setSelectedIndex:(e,t,r)=>Object.assign(Object.assign({},e),{selectedIndex:r}),pushBatch:(e,t)=>Object.assign(Object.assign({},e),{options:e.options.concat([...t.slice(1)].map(e=>({name:"-"+e,value:!0})))}),pushBound:(e,t)=>{const[,r,A]=t.match(i);return Object.assign(Object.assign({},e),{options:e.options.concat({name:r,value:A})})},pushPath:(e,t)=>Object.assign(Object.assign({},e),{path:e.path.concat(t)}),pushPositional:(e,t)=>Object.assign(Object.assign({},e),{positionals:e.positionals.concat({value:t,extra:!1})}),pushExtra:(e,t)=>Object.assign(Object.assign({},e),{positionals:e.positionals.concat({value:t,extra:!0})}),pushExtraNoLimits:(e,t)=>Object.assign(Object.assign({},e),{positionals:e.positionals.concat({value:t,extra:N})}),pushTrue:(e,t,r=t)=>Object.assign(Object.assign({},e),{options:e.options.concat({name:t,value:!0})}),pushFalse:(e,t,r=t)=>Object.assign(Object.assign({},e),{options:e.options.concat({name:r,value:!1})}),pushUndefined:(e,t)=>Object.assign(Object.assign({},e),{options:e.options.concat({name:t,value:void 0})}),pushStringValue:(e,t)=>{var r;const A=Object.assign(Object.assign({},e),{options:[...e.options]}),n=e.options[e.options.length-1];return n.value=(null!==(r=n.value)&&void 0!==r?r:[]).concat([t]),A},setStringValue:(e,t)=>{const r=Object.assign(Object.assign({},e),{options:[...e.options]});return e.options[e.options.length-1].value=t,r},inhibateOptions:e=>Object.assign(Object.assign({},e),{ignoreOptions:!0}),useHelp:(e,t,r)=>{const[,n,o]=t.match(A);return void 0!==o?Object.assign(Object.assign({},e),{options:[{name:"-c",value:String(r)},{name:"-i",value:o}]}):Object.assign(Object.assign({},e),{options:[{name:"-c",value:String(r)}]})},setError:(e,t,r)=>"\0"===t?Object.assign(Object.assign({},e),{errorMessage:r+"."}):Object.assign(Object.assign({},e),{errorMessage:`${r} ("${t}").`}),setOptionArityError:(e,t)=>{const r=e.options[e.options.length-1];return Object.assign(Object.assign({},e),{errorMessage:`Not enough arguments to option ${r.name}.`})}},N=Symbol();class F{constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=t}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,extra:r=this.arity.extra,proxy:A=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:t,extra:r,proxy:A})}addPositional({name:e="arg",required:t=!0}={}){if(!t&&this.arity.extra===N)throw new Error("Optional parameters cannot be declared when using .rest() or .proxy()");if(!t&&this.arity.trailing.length>0)throw new Error("Optional parameters cannot be declared after the required trailing positional arguments");t||this.arity.extra===N?this.arity.extra!==N&&0===this.arity.extra.length?this.arity.leading.push(e):this.arity.trailing.push(e):this.arity.extra.push(e)}addRest({name:e="arg",required:t=0}={}){if(this.arity.extra===N)throw new Error("Infinite lists cannot be declared multiple times in the same command");if(this.arity.trailing.length>0)throw new Error("Infinite lists cannot be declared after the required trailing positional arguments");for(let r=0;r1)throw new Error("The arity cannot be higher than 1 when the option only supports the --arg=value syntax");if(!Number.isInteger(r))throw new Error("The arity must be an integer, got "+r);if(r<0)throw new Error("The arity must be positive, got "+r);this.allOptionNames.push(...e),this.options.push({names:e,description:t,arity:r,hidden:A,allowBinding:n})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:t=!0}={}){const r=[this.cliOpts.binaryName],A=[];if(this.paths.length>0&&r.push(...this.paths[0]),e){for(const{names:e,arity:n,hidden:o,description:i}of this.options){if(o)continue;const s=[];for(let e=0;e`<${e}>`)),this.arity.extra===N?r.push("..."):r.push(...this.arity.extra.map(e=>`[${e}]`)),r.push(...this.arity.trailing.map(e=>`<${e}>`))}return{usage:r.join(" "),options:A}}compile(){if(void 0===this.context)throw new Error("Assertion failed: No context attached");const e={nodes:[{dynamics:[],shortcuts:[],statics:{}},{dynamics:[],shortcuts:[],statics:{}},{dynamics:[],shortcuts:[],statics:{}}]};let t=0;t=p(e,{dynamics:[],shortcuts:[],statics:{}}),D(e,0,"",t,["setCandidateUsage",this.usage().usage]);const r=this.arity.proxy?"always":"isNotOptionLike",A=this.paths.length>0?this.paths:[[]];for(const n of A){let A=t;if(n.length>0){const t=p(e,{dynamics:[],shortcuts:[],statics:{}});Q(e,A,t),this.registerOptions(e,t),A=t}for(let t=0;t0||!this.arity.proxy){const t=p(e,{dynamics:[],shortcuts:[],statics:{}});w(e,A,"isHelp",t,["useHelp",this.cliIndex]),D(e,t,"\0",1,["setSelectedIndex",-1]),this.registerOptions(e,A)}this.arity.leading.length>0&&D(e,A,"\0",2,["setError","Not enough positional arguments"]);let o=A;for(let t=0;t0||t+1!==this.arity.leading.length)&&D(e,r,"\0",2,["setError","Not enough positional arguments"]),w(e,o,"isNotOptionLike",r,"pushPositional"),o=r}let i=o;if(this.arity.extra===N||this.arity.extra.length>0){const t=p(e,{dynamics:[],shortcuts:[],statics:{}});if(Q(e,o,t),this.arity.extra===N){const A=p(e,{dynamics:[],shortcuts:[],statics:{}});this.arity.proxy||this.registerOptions(e,A),w(e,o,r,A,"pushExtraNoLimits"),w(e,A,r,A,"pushExtraNoLimits"),Q(e,A,t)}else for(let A=0;A0&&D(e,i,"\0",2,["setError","Not enough positional arguments"]);let s=i;for(let t=0;tt.length>e.length?t:e,"");if(0===r.arity)for(const n of r.names)w(e,t,["isOption",n,r.hidden||n!==A],t,"pushTrue"),n.startsWith("--")&&!n.startsWith("--no-")&&w(e,t,["isNegatedOption",n],t,["pushFalse",n]);else{let n=p(e,{dynamics:[],shortcuts:[],statics:{}});for(const o of r.names)w(e,t,["isOption",o,r.hidden||o!==A],n,"pushUndefined");for(let t=0;t=0&&e{if(t.has(A))return;t.add(A);const n=e.nodes[A];for(const e of Object.values(n.statics))for(const{to:t}of e)r(t);for(const[,{to:e}]of n.dynamics)r(e);for(const{to:e}of n.shortcuts)r(e);const o=new Set(n.shortcuts.map(({to:e})=>e));for(;n.shortcuts.length>0;){const{to:t}=n.shortcuts.shift(),r=e.nodes[t];for(const[e,t]of Object.entries(r.statics)){let r=Object.prototype.hasOwnProperty.call(n.statics,e)?n.statics[e]:n.statics[e]=[];for(const e of t)r.some(({to:t})=>e.to===t)||r.push(e)}for(const[e,t]of r.dynamics)n.dynamics.some(([r,{to:A}])=>e===r&&t.to===A)||n.dynamics.push([e,t]);for(const e of r.shortcuts)o.has(e.to)||(n.shortcuts.push(e),o.add(e.to))}};r(0)}(r),{machine:r,contexts:t,process:e=>f(r,e),suggest:(e,t)=>function(e,t,r){const A=r&&t.length>0?[""]:[],n=d(e,t,r),o=[],i=new Set,s=(t,r,A=!0)=>{let n=[r];for(;n.length>0;){const r=n;n=[];for(const o of r){const r=e.nodes[o],i=Object.keys(r.statics);for(const e of Object.keys(r.statics)){const e=i[0];for(const{to:o,reducer:i}of r.statics[e])"pushPath"===i&&(A||t.push(e),n.push(o))}}A=!1}const s=JSON.stringify(t);i.has(s)||(o.push(t),i.add(s))};for(const{node:t,state:r}of n){if(null!==r.remainder){s([r.remainder],t);continue}const n=e.nodes[t],o=C(n,r);for(const[e,r]of Object.entries(n.statics))(o&&"\0"!==e||!e.startsWith("-")&&r.some(({reducer:e})=>"pushPath"===e))&&s([...A,e],t);if(o)for(const[e,{to:o}]of n.dynamics){if(2===o)continue;const n=v(e,r);if(null!==n)for(const e of n)s([...A,e],t)}}return[...o].sort()}(r,e,t)}}}class M{constructor(){this.help=!1}static getMeta(e){const t=e.constructor;return t.meta=Object.prototype.hasOwnProperty.call(t,"meta")?t.meta:{definitions:[],transformers:[(e,t)=>{for(const{name:r,value:A}of e.options)"-h"!==r&&"--help"!==r||(t.help=A)}]}}static resolveMeta(e){const t=[],r=[];for(let A=e;A instanceof M;A=A.__proto__){const e=this.getMeta(A);for(const r of e.definitions)t.push(r);for(const t of e.transformers)r.push(t)}return{definitions:t,transformers:r}}static registerDefinition(e,t){this.getMeta(e).definitions.push(t)}static registerTransformer(e,t){this.getMeta(e).transformers.push(t)}static addPath(...e){this.Path(...e)(this.prototype,"execute")}static addOption(e,t){t(this.prototype,e)}static Path(...e){return(t,r)=>{this.registerDefinition(t,t=>{t.addPath(e)})}}static Boolean(e,{hidden:t=!1,description:r}={}){return(A,n)=>{const o=e.split(",");this.registerDefinition(A,e=>{e.addOption({names:o,arity:0,hidden:t,allowBinding:!1,description:r})}),this.registerTransformer(A,(e,t)=>{for(const{name:r,value:A}of e.options)o.includes(r)&&(t[n]=A)})}}static Counter(e,{hidden:t=!1,description:r}={}){return(A,n)=>{const o=e.split(",");this.registerDefinition(A,e=>{e.addOption({names:o,arity:0,hidden:t,allowBinding:!1,description:r})}),this.registerTransformer(A,(e,t)=>{var r;for(const{name:A,value:i}of e.options)o.includes(A)&&(null!==(r=t[n])&&void 0!==r||(t[n]=0),i?t[n]++:t[n]=0)})}}static String(e={},{arity:t=1,tolerateBoolean:r=!1,hidden:A=!1,description:n}={}){return(o,i)=>{if("string"==typeof e){const s=e.split(",");this.registerDefinition(o,e=>{e.addOption({names:s,arity:r?0:t,hidden:A,description:n})}),this.registerTransformer(o,(e,t)=>{for(const{name:r,value:A}of e.options)s.includes(r)&&(t[i]=A)})}else{const{name:t=i,required:r=!0}=e;this.registerDefinition(o,e=>{e.addPositional({name:t,required:r})}),this.registerTransformer(o,(e,t)=>{for(let A=0;A{if(0===t)throw new Error("Array options are expected to have at least an arity of 1");const i=e.split(",");this.registerDefinition(n,e=>{e.addOption({names:i,arity:t,hidden:r,description:A})}),this.registerTransformer(n,(e,t)=>{for(const{name:r,value:A}of e.options)i.includes(r)&&(t[o]=t[o]||[],t[o].push(A))})}}static Rest({required:e=0}={}){return(t,r)=>{this.registerDefinition(t,t=>{t.addRest({name:r,required:e})}),this.registerTransformer(t,(e,t,A)=>{const n=t=>{const r=e.positionals[t];return r.extra===N||!1===r.extra&&te)})}}static Proxy({required:e=0}={}){return(t,r)=>{this.registerDefinition(t,t=>{t.addProxy({required:e})}),this.registerTransformer(t,(e,t)=>{t[r]=e.positionals.map(({value:e})=>e)})}}static Usage(e){return e}static Schema(e){return e}async catch(e){throw e}async validateAndExecute(){const e=this.constructor.schema;if(void 0!==e)try{await e.validate(this)}catch(e){throw"ValidationError"===e.name&&(e.clipanion={type:"usage"}),e}const t=await this.execute();return void 0!==t?t:0}} +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +function R(e,t,r,A){var n,o=arguments.length,i=o<3?t:null===A?A=Object.getOwnPropertyDescriptor(t,r):A;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,A);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(i=(o<3?n(i):o>3?n(t,r,i):n(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i}M.Entries={};class x extends M{async execute(){this.context.stdout.write(this.cli.usage(null))}}R([M.Path("--help"),M.Path("-h")],x.prototype,"execute",null);class L extends M{async execute(){var e;this.context.stdout.write((null!==(e=this.cli.binaryVersion)&&void 0!==e?e:"")+"\n")}}R([M.Path("--version"),M.Path("-v")],L.prototype,"execute",null);const P={bold:e=>`${e}`,error:e=>`${e}`,code:e=>`${e}`},O={bold:e=>e,error:e=>e,code:e=>e};function U(e,{format:t,paragraphs:r}){return e=(e=(e=(e=(e=e.replace(/\r\n?/g,"\n")).replace(/^[\t ]+|[\t ]+$/gm,"")).replace(/^\n+|\n+$/g,"")).replace(/^-([^\n]*?)\n+/gm,"-$1\n\n")).replace(/\n(\n)?\n*/g,"$1"),r&&(e=e.split(/\n/).map((function(e){let t=e.match(/^[*-][\t ]+(.*)/);return t?t[1].match(/(.{1,78})(?: |$)/g).map((e,t)=>(0===t?"- ":" ")+e).join("\n"):e.match(/(.{1,80})(?: |$)/g).join("\n")})).join("\n\n")),(e=e.replace(/(`+)((?:.|[\n])*?)\1/g,(function(e,r,A){return t.code(r+A+r)})))?e+"\n":""}class T extends M{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,t){const r=new T(t);r.path=e.path;for(const t of e.options)switch(t.name){case"-c":r.commands.push(Number(t.value));break;case"-i":r.index=Number(t.value)}return r}async execute(){let e=this.commands;if(void 0!==this.index&&this.index>=0&&this.index1){this.context.stdout.write("Multiple commands match your selection:\n"),this.context.stdout.write("\n");let e=0;for(const t of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[t].commandClass,{prefix:(e+++". ").padStart(5)}));this.context.stdout.write("\n"),this.context.stdout.write("Run again with -h= to see the longer details of any of those commands.\n")}}}function j(){return"0"!==process.env.FORCE_COLOR&&("1"===process.env.FORCE_COLOR||!(void 0===process.stdout||!process.stdout.isTTY))}class Y{constructor({binaryLabel:e,binaryName:t="...",binaryVersion:r,enableColors:A=j()}={}){this.registrations=new Map,this.builder=new K({binaryName:t}),this.binaryLabel=e,this.binaryName=t,this.binaryVersion=r,this.enableColors=A}static from(e,t={}){const r=new Y(t);for(const t of e)r.register(t);return r}register(e){const t=this.builder.command();this.registrations.set(e,t.cliIndex);const{definitions:r}=e.resolveMeta(e.prototype);for(const e of r)e(t);t.setContext({commandClass:e})}process(e){const{contexts:t,process:r}=this.builder.compile(),A=r(e);switch(A.selectedIndex){case-1:return T.from(A,t);default:{const{commandClass:e}=t[A.selectedIndex],r=this.registrations.get(e);if(void 0===r)throw new Error("Assertion failed: Expected the command class to have been registered.");const n=this.builder.getBuilderByIndex(r),o=new e;o.path=A.path;const{transformers:i}=e.resolveMeta(e.prototype);for(const e of i)e(A,o,n);return o}}}async run(e,t){let r,A;if(Array.isArray(e))try{r=this.process(e)}catch(e){return t.stdout.write(this.error(e)),1}else r=e;if(r.help)return t.stdout.write(this.usage(r,{detailed:!0})),0;r.context=t,r.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableColors:this.enableColors,definitions:()=>this.definitions(),error:(e,t)=>this.error(e,t),process:e=>this.process(e),run:(e,r)=>this.run(e,Object.assign(Object.assign({},t),r)),usage:(e,t)=>this.usage(e,t)};try{A=await r.validateAndExecute().catch(e=>r.catch(e).then(()=>0))}catch(e){return t.stdout.write(this.error(e,{command:r})),1}return A}async runExit(e,t){process.exitCode=await this.run(e,t)}suggest(e,t){const{contexts:r,process:A,suggest:n}=this.builder.compile();return n(e,t)}definitions({colored:e=!1}={}){const t=[];for(const[r,A]of this.registrations){if(void 0===r.usage)continue;const{usage:n}=this.getUsageByIndex(A,{detailed:!1}),{usage:o,options:i}=this.getUsageByIndex(A,{detailed:!0,inlineOptions:!1}),s=void 0!==r.usage.category?U(r.usage.category,{format:this.format(e),paragraphs:!1}):void 0,a=void 0!==r.usage.description?U(r.usage.description,{format:this.format(e),paragraphs:!1}):void 0,c=void 0!==r.usage.details?U(r.usage.details,{format:this.format(e),paragraphs:!0}):void 0,g=void 0!==r.usage.examples?r.usage.examples.map(([t,r])=>[U(t,{format:this.format(e),paragraphs:!1}),r.replace(/\$0/g,this.binaryName)]):void 0;t.push({path:n,usage:o,category:s,description:a,details:c,examples:g,options:i})}return t}usage(e=null,{colored:t,detailed:r=!1,prefix:A="$ "}={}){const n=null!==e&&void 0===e.getMeta?e.constructor:e;let o="";if(n)if(r){const{description:e="",details:r="",examples:i=[]}=n.usage||{};""!==e&&(o+=U(e,{format:this.format(t),paragraphs:!1}).replace(/^./,e=>e.toUpperCase()),o+="\n"),(""!==r||i.length>0)&&(o+=this.format(t).bold("Usage:")+"\n",o+="\n");const{usage:s,options:a}=this.getUsageByRegistration(n,{inlineOptions:!1});if(o+=`${this.format(t).bold(A)}${s}\n`,a.length>0){o+="\n",o+=P.bold("Options:")+"\n";const e=a.reduce((e,t)=>Math.max(e,t.definition.length),0);o+="\n";for(const{definition:r,description:A}of a)o+=` ${r.padEnd(e)} ${U(A,{format:this.format(t),paragraphs:!1})}`}if(""!==r&&(o+="\n",o+=this.format(t).bold("Details:")+"\n",o+="\n",o+=U(r,{format:this.format(t),paragraphs:!0})),i.length>0){o+="\n",o+=this.format(t).bold("Examples:")+"\n";for(let[e,r]of i)o+="\n",o+=U(e,{format:this.format(t),paragraphs:!1}),o+=r.replace(/^/m," "+this.format(t).bold(A)).replace(/\$0/g,this.binaryName)+"\n"}}else{const{usage:e}=this.getUsageByRegistration(n);o+=`${this.format(t).bold(A)}${e}\n`}else{const e=new Map;for(const[r,A]of this.registrations.entries()){if(void 0===r.usage)continue;const n=void 0!==r.usage.category?U(r.usage.category,{format:this.format(t),paragraphs:!1}):null;let o=e.get(n);void 0===o&&e.set(n,o=[]);const{usage:i}=this.getUsageByIndex(A);o.push({commandClass:r,usage:i})}const r=Array.from(e.keys()).sort((e,t)=>null===e?-1:null===t?1:e.localeCompare(t,"en",{usage:"sort",caseFirst:"upper"})),n=void 0!==this.binaryLabel,i=void 0!==this.binaryVersion;n||i?(o+=n&&i?this.format(t).bold(`${this.binaryLabel} - ${this.binaryVersion}`)+"\n\n":n?this.format(t).bold(""+this.binaryLabel)+"\n":this.format(t).bold(""+this.binaryVersion)+"\n",o+=` ${this.format(t).bold(A)}${this.binaryName} \n`):o+=`${this.format(t).bold(A)}${this.binaryName} \n`;for(let A of r){const r=e.get(A).slice().sort((e,t)=>e.usage.localeCompare(t.usage,"en",{usage:"sort",caseFirst:"upper"})),n=null!==A?A.trim():"Where is one of";o+="\n",o+=this.format(t).bold(n+":")+"\n";for(let{commandClass:e,usage:A}of r){const r=e.usage.description||"undocumented";o+="\n",o+=` ${this.format(t).bold(A)}\n`,o+=" "+U(r,{format:this.format(t),paragraphs:!1})}}o+="\n",o+=U("You can also print more details about any of these commands by calling them after adding the `-h,--help` flag right after the command name.",{format:this.format(t),paragraphs:!0})}return o}error(e,{colored:t,command:r=null}={}){e instanceof Error||(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let A="",n=e.name.replace(/([a-z])([A-Z])/g,"$1 $2");"Error"===n&&(n="Internal Error"),A+=`${this.format(t).error(n)}: ${e.message}\n`;const o=e.clipanion;return void 0!==o?"usage"===o.type&&(A+="\n",A+=this.usage(r)):e.stack&&(A+=e.stack.replace(/^.*\n/,"")+"\n"),A}getUsageByRegistration(e,t){const r=this.registrations.get(e);if(void 0===r)throw new Error("Assertion failed: Unregistered command");return this.getUsageByIndex(r,t)}getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}format(e=this.enableColors){return e?P:O}}Y.defaultContext={stdin:process.stdin,stdout:process.stdout,stderr:process.stderr},M.Entries.Help=x,M.Entries.Version=L},15751:(e,t,r)=>{"use strict";const A=r(92413).PassThrough,n=r(65007);e.exports=e=>{if(!e||!e.pipe)throw new TypeError("Parameter `response` must be a response stream.");const t=new A;return n(e,t),e.pipe(t)}},15311:(e,t,r)=>{const A=r(93300),n={};for(const e of Object.keys(A))n[A[e]]=e;const o={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};e.exports=o;for(const e of Object.keys(o)){if(!("channels"in o[e]))throw new Error("missing channels property: "+e);if(!("labels"in o[e]))throw new Error("missing channel labels property: "+e);if(o[e].labels.length!==o[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:t,labels:r}=o[e];delete o[e].channels,delete o[e].labels,Object.defineProperty(o[e],"channels",{value:t}),Object.defineProperty(o[e],"labels",{value:r})}o.rgb.hsl=function(e){const t=e[0]/255,r=e[1]/255,A=e[2]/255,n=Math.min(t,r,A),o=Math.max(t,r,A),i=o-n;let s,a;o===n?s=0:t===o?s=(r-A)/i:r===o?s=2+(A-t)/i:A===o&&(s=4+(t-r)/i),s=Math.min(60*s,360),s<0&&(s+=360);const c=(n+o)/2;return a=o===n?0:c<=.5?i/(o+n):i/(2-o-n),[s,100*a,100*c]},o.rgb.hsv=function(e){let t,r,A,n,o;const i=e[0]/255,s=e[1]/255,a=e[2]/255,c=Math.max(i,s,a),g=c-Math.min(i,s,a),l=function(e){return(c-e)/6/g+.5};return 0===g?(n=0,o=0):(o=g/c,t=l(i),r=l(s),A=l(a),i===c?n=A-r:s===c?n=1/3+t-A:a===c&&(n=2/3+r-t),n<0?n+=1:n>1&&(n-=1)),[360*n,100*o,100*c]},o.rgb.hwb=function(e){const t=e[0],r=e[1];let A=e[2];const n=o.rgb.hsl(e)[0],i=1/255*Math.min(t,Math.min(r,A));return A=1-1/255*Math.max(t,Math.max(r,A)),[n,100*i,100*A]},o.rgb.cmyk=function(e){const t=e[0]/255,r=e[1]/255,A=e[2]/255,n=Math.min(1-t,1-r,1-A);return[100*((1-t-n)/(1-n)||0),100*((1-r-n)/(1-n)||0),100*((1-A-n)/(1-n)||0),100*n]},o.rgb.keyword=function(e){const t=n[e];if(t)return t;let r,o=1/0;for(const t of Object.keys(A)){const n=A[t],a=(s=n,((i=e)[0]-s[0])**2+(i[1]-s[1])**2+(i[2]-s[2])**2);a.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,A=A>.04045?((A+.055)/1.055)**2.4:A/12.92;return[100*(.4124*t+.3576*r+.1805*A),100*(.2126*t+.7152*r+.0722*A),100*(.0193*t+.1192*r+.9505*A)]},o.rgb.lab=function(e){const t=o.rgb.xyz(e);let r=t[0],A=t[1],n=t[2];r/=95.047,A/=100,n/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,A=A>.008856?A**(1/3):7.787*A+16/116,n=n>.008856?n**(1/3):7.787*n+16/116;return[116*A-16,500*(r-A),200*(A-n)]},o.hsl.rgb=function(e){const t=e[0]/360,r=e[1]/100,A=e[2]/100;let n,o,i;if(0===r)return i=255*A,[i,i,i];n=A<.5?A*(1+r):A+r-A*r;const s=2*A-n,a=[0,0,0];for(let e=0;e<3;e++)o=t+1/3*-(e-1),o<0&&o++,o>1&&o--,i=6*o<1?s+6*(n-s)*o:2*o<1?n:3*o<2?s+(n-s)*(2/3-o)*6:s,a[e]=255*i;return a},o.hsl.hsv=function(e){const t=e[0];let r=e[1]/100,A=e[2]/100,n=r;const o=Math.max(A,.01);A*=2,r*=A<=1?A:2-A,n*=o<=1?o:2-o;return[t,100*(0===A?2*n/(o+n):2*r/(A+r)),100*((A+r)/2)]},o.hsv.rgb=function(e){const t=e[0]/60,r=e[1]/100;let A=e[2]/100;const n=Math.floor(t)%6,o=t-Math.floor(t),i=255*A*(1-r),s=255*A*(1-r*o),a=255*A*(1-r*(1-o));switch(A*=255,n){case 0:return[A,a,i];case 1:return[s,A,i];case 2:return[i,A,a];case 3:return[i,s,A];case 4:return[a,i,A];case 5:return[A,i,s]}},o.hsv.hsl=function(e){const t=e[0],r=e[1]/100,A=e[2]/100,n=Math.max(A,.01);let o,i;i=(2-r)*A;const s=(2-r)*n;return o=r*n,o/=s<=1?s:2-s,o=o||0,i/=2,[t,100*o,100*i]},o.hwb.rgb=function(e){const t=e[0]/360;let r=e[1]/100,A=e[2]/100;const n=r+A;let o;n>1&&(r/=n,A/=n);const i=Math.floor(6*t),s=1-A;o=6*t-i,0!=(1&i)&&(o=1-o);const a=r+o*(s-r);let c,g,l;switch(i){default:case 6:case 0:c=s,g=a,l=r;break;case 1:c=a,g=s,l=r;break;case 2:c=r,g=s,l=a;break;case 3:c=r,g=a,l=s;break;case 4:c=a,g=r,l=s;break;case 5:c=s,g=r,l=a}return[255*c,255*g,255*l]},o.cmyk.rgb=function(e){const t=e[0]/100,r=e[1]/100,A=e[2]/100,n=e[3]/100;return[255*(1-Math.min(1,t*(1-n)+n)),255*(1-Math.min(1,r*(1-n)+n)),255*(1-Math.min(1,A*(1-n)+n))]},o.xyz.rgb=function(e){const t=e[0]/100,r=e[1]/100,A=e[2]/100;let n,o,i;return n=3.2406*t+-1.5372*r+-.4986*A,o=-.9689*t+1.8758*r+.0415*A,i=.0557*t+-.204*r+1.057*A,n=n>.0031308?1.055*n**(1/2.4)-.055:12.92*n,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,n=Math.min(Math.max(0,n),1),o=Math.min(Math.max(0,o),1),i=Math.min(Math.max(0,i),1),[255*n,255*o,255*i]},o.xyz.lab=function(e){let t=e[0],r=e[1],A=e[2];t/=95.047,r/=100,A/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,A=A>.008856?A**(1/3):7.787*A+16/116;return[116*r-16,500*(t-r),200*(r-A)]},o.lab.xyz=function(e){let t,r,A;r=(e[0]+16)/116,t=e[1]/500+r,A=r-e[2]/200;const n=r**3,o=t**3,i=A**3;return r=n>.008856?n:(r-16/116)/7.787,t=o>.008856?o:(t-16/116)/7.787,A=i>.008856?i:(A-16/116)/7.787,t*=95.047,r*=100,A*=108.883,[t,r,A]},o.lab.lch=function(e){const t=e[0],r=e[1],A=e[2];let n;n=360*Math.atan2(A,r)/2/Math.PI,n<0&&(n+=360);return[t,Math.sqrt(r*r+A*A),n]},o.lch.lab=function(e){const t=e[0],r=e[1],A=e[2]/360*2*Math.PI;return[t,r*Math.cos(A),r*Math.sin(A)]},o.rgb.ansi16=function(e,t=null){const[r,A,n]=e;let i=null===t?o.rgb.hsv(e)[2]:t;if(i=Math.round(i/50),0===i)return 30;let s=30+(Math.round(n/255)<<2|Math.round(A/255)<<1|Math.round(r/255));return 2===i&&(s+=60),s},o.hsv.ansi16=function(e){return o.rgb.ansi16(o.hsv.rgb(e),e[2])},o.rgb.ansi256=function(e){const t=e[0],r=e[1],A=e[2];if(t===r&&r===A)return t<8?16:t>248?231:Math.round((t-8)/247*24)+232;return 16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(A/255*5)},o.ansi16.rgb=function(e){let t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),t=t/10.5*255,[t,t,t];const r=.5*(1+~~(e>50));return[(1&t)*r*255,(t>>1&1)*r*255,(t>>2&1)*r*255]},o.ansi256.rgb=function(e){if(e>=232){const t=10*(e-232)+8;return[t,t,t]}let t;e-=16;return[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255]},o.rgb.hex=function(e){const t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},o.hex.rgb=function(e){const t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];let r=t[0];3===t[0].length&&(r=r.split("").map(e=>e+e).join(""));const A=parseInt(r,16);return[A>>16&255,A>>8&255,255&A]},o.rgb.hcg=function(e){const t=e[0]/255,r=e[1]/255,A=e[2]/255,n=Math.max(Math.max(t,r),A),o=Math.min(Math.min(t,r),A),i=n-o;let s,a;return s=i<1?o/(1-i):0,a=i<=0?0:n===t?(r-A)/i%6:n===r?2+(A-t)/i:4+(t-r)/i,a/=6,a%=1,[360*a,100*i,100*s]},o.hsl.hcg=function(e){const t=e[1]/100,r=e[2]/100,A=r<.5?2*t*r:2*t*(1-r);let n=0;return A<1&&(n=(r-.5*A)/(1-A)),[e[0],100*A,100*n]},o.hsv.hcg=function(e){const t=e[1]/100,r=e[2]/100,A=t*r;let n=0;return A<1&&(n=(r-A)/(1-A)),[e[0],100*A,100*n]},o.hcg.rgb=function(e){const t=e[0]/360,r=e[1]/100,A=e[2]/100;if(0===r)return[255*A,255*A,255*A];const n=[0,0,0],o=t%1*6,i=o%1,s=1-i;let a=0;switch(Math.floor(o)){case 0:n[0]=1,n[1]=i,n[2]=0;break;case 1:n[0]=s,n[1]=1,n[2]=0;break;case 2:n[0]=0,n[1]=1,n[2]=i;break;case 3:n[0]=0,n[1]=s,n[2]=1;break;case 4:n[0]=i,n[1]=0,n[2]=1;break;default:n[0]=1,n[1]=0,n[2]=s}return a=(1-r)*A,[255*(r*n[0]+a),255*(r*n[1]+a),255*(r*n[2]+a)]},o.hcg.hsv=function(e){const t=e[1]/100,r=t+e[2]/100*(1-t);let A=0;return r>0&&(A=t/r),[e[0],100*A,100*r]},o.hcg.hsl=function(e){const t=e[1]/100,r=e[2]/100*(1-t)+.5*t;let A=0;return r>0&&r<.5?A=t/(2*r):r>=.5&&r<1&&(A=t/(2*(1-r))),[e[0],100*A,100*r]},o.hcg.hwb=function(e){const t=e[1]/100,r=t+e[2]/100*(1-t);return[e[0],100*(r-t),100*(1-r)]},o.hwb.hcg=function(e){const t=e[1]/100,r=1-e[2]/100,A=r-t;let n=0;return A<1&&(n=(r-A)/(1-A)),[e[0],100*A,100*n]},o.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},o.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},o.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},o.gray.hsl=function(e){return[0,0,e[0]]},o.gray.hsv=o.gray.hsl,o.gray.hwb=function(e){return[0,100,e[0]]},o.gray.cmyk=function(e){return[0,0,0,e[0]]},o.gray.lab=function(e){return[e[0],0,0]},o.gray.hex=function(e){const t=255&Math.round(e[0]/100*255),r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r},o.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},2744:(e,t,r)=>{const A=r(15311),n=r(78577),o={};Object.keys(A).forEach(e=>{o[e]={},Object.defineProperty(o[e],"channels",{value:A[e].channels}),Object.defineProperty(o[e],"labels",{value:A[e].labels});const t=n(e);Object.keys(t).forEach(r=>{const A=t[r];o[e][r]=function(e){const t=function(...t){const r=t[0];if(null==r)return r;r.length>1&&(t=r);const A=e(t);if("object"==typeof A)for(let e=A.length,t=0;t1&&(t=r),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(A)})}),e.exports=o},78577:(e,t,r)=>{const A=r(15311);function n(e){const t=function(){const e={},t=Object.keys(A);for(let r=t.length,A=0;A{"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},67566:(e,t,r)=>{"use strict";const A=r(63129),n=r(14951),o=r(10779);function i(e,t,r){const i=n(e,t,r),s=A.spawn(i.command,i.args,i.options);return o.hookChildProcess(s,i),s}e.exports=i,e.exports.spawn=i,e.exports.sync=function(e,t,r){const i=n(e,t,r),s=A.spawnSync(i.command,i.args,i.options);return s.error=s.error||o.verifyENOENTSync(s.status,i),s},e.exports._parse=n,e.exports._enoent=o},10779:e=>{"use strict";const t="win32"===process.platform;function r(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function A(e,A){return t&&1===e&&!A.file?r(A.original,"spawn"):null}e.exports={hookChildProcess:function(e,r){if(!t)return;const n=e.emit;e.emit=function(t,o){if("exit"===t){const t=A(o,r);if(t)return n.call(e,"error",t)}return n.apply(e,arguments)}},verifyENOENT:A,verifyENOENTSync:function(e,A){return t&&1===e&&!A.file?r(A.original,"spawnSync"):null},notFoundError:r}},14951:(e,t,r)=>{"use strict";const A=r(85622),n=r(47447),o=r(27066),i=r(35187),s="win32"===process.platform,a=/\.(?:com|exe)$/i,c=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function g(e){if(!s)return e;const t=function(e){e.file=n(e);const t=e.file&&i(e.file);return t?(e.args.unshift(e.file),e.command=t,n(e)):e.file}(e),r=!a.test(t);if(e.options.forceShell||r){const r=c.test(t);e.command=A.normalize(e.command),e.command=o.command(e.command),e.args=e.args.map(e=>o.argument(e,r));const n=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${n}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}e.exports=function(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null);const A={command:e,args:t=t?t.slice(0):[],options:r=Object.assign({},r),file:void 0,original:{command:e,args:t}};return r.shell?A:g(A)}},27066:e=>{"use strict";const t=/([()\][%!^"`<>&|;, *?])/g;e.exports.command=function(e){return e=e.replace(t,"^$1")},e.exports.argument=function(e,r){return e=(e=`"${e=(e=(e=""+e).replace(/(\\*)"/g,'$1$1\\"')).replace(/(\\*)$/,"$1$1")}"`).replace(t,"^$1"),r&&(e=e.replace(t,"^$1")),e}},35187:(e,t,r)=>{"use strict";const A=r(35747),n=r(91470);e.exports=function(e){const t=Buffer.alloc(150);let r;try{r=A.openSync(e,"r"),A.readSync(r,t,0,150,0),A.closeSync(r)}catch(e){}return n(t.toString())}},47447:(e,t,r)=>{"use strict";const A=r(85622),n=r(87945),o=r(37127);function i(e,t){const r=e.options.env||process.env,i=process.cwd(),s=null!=e.options.cwd,a=s&&void 0!==process.chdir&&!process.chdir.disabled;if(a)try{process.chdir(e.options.cwd)}catch(e){}let c;try{c=n.sync(e.command,{path:r[o({env:r})],pathExt:t?A.delimiter:void 0})}catch(e){}finally{a&&process.chdir(i)}return c&&(c=A.resolve(s?e.options.cwd:"",c)),c}e.exports=function(e){return i(e)||i(e,!0)}},93868:(e,t,r)=>{"use strict";const{Transform:A,PassThrough:n}=r(92413),o=r(78761),i=r(33527);e.exports=e=>{const t=(e.headers["content-encoding"]||"").toLowerCase();if(!["gzip","deflate","br"].includes(t))return e;const r="br"===t;if(r&&"function"!=typeof o.createBrotliDecompress)return e.destroy(new Error("Brotli is not supported on Node.js < 12")),e;let s=!0;const a=new A({transform(e,t,r){s=!1,r(null,e)},flush(e){e()}}),c=new n({autoDestroy:!1,destroy(t,r){e.destroy(),r(t)}}),g=r?o.createBrotliDecompress():o.createUnzip();return g.once("error",t=>{!s||e.readable?c.destroy(t):c.end()}),i(e,c),e.pipe(a).pipe(g).pipe(c),c}},93121:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(4016),n=(e,t)=>{let r;if("function"==typeof t){r={connect:t}}else r=t;const n="function"==typeof r.connect,o="function"==typeof r.secureConnect,i="function"==typeof r.close,s=()=>{n&&r.connect(),e instanceof A.TLSSocket&&o&&(e.authorized?r.secureConnect():e.authorizationError||e.once("secureConnect",r.secureConnect)),i&&e.once("close",r.close)};e.writable&&!e.connecting?s():e.connecting?e.once("connect",s):e.destroyed&&i&&r.close(e._hadError)};t.default=n,e.exports=n,e.exports.default=n},66241:(e,t,r)=>{"use strict";const A=r(85622),n=r(5763),o=e=>e.length>1?`{${e.join(",")}}`:e[0],i=(e,t)=>{const r="!"===e[0]?e.slice(1):e;return A.isAbsolute(r)?r:A.join(t,r)},s=(e,t)=>{if(t.files&&!Array.isArray(t.files))throw new TypeError(`Expected \`files\` to be of type \`Array\` but received type \`${typeof t.files}\``);if(t.extensions&&!Array.isArray(t.extensions))throw new TypeError(`Expected \`extensions\` to be of type \`Array\` but received type \`${typeof t.extensions}\``);return t.files&&t.extensions?t.files.map(r=>{return A.posix.join(e,(n=r,i=t.extensions,A.extname(n)?"**/"+n:`**/${n}.${o(i)}`));var n,i}):t.files?t.files.map(t=>A.posix.join(e,"**/"+t)):t.extensions?[A.posix.join(e,"**/*."+o(t.extensions))]:[A.posix.join(e,"**")]};e.exports=async(e,t)=>{if("string"!=typeof(t={cwd:process.cwd(),...t}).cwd)throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof t.cwd}\``);const r=await Promise.all([].concat(e).map(async e=>await n.isDirectory(i(e,t.cwd))?s(e,t):e));return[].concat.apply([],r)},e.exports.sync=(e,t)=>{if("string"!=typeof(t={cwd:process.cwd(),...t}).cwd)throw new TypeError(`Expected \`cwd\` to be of type \`string\` but received type \`${typeof t.cwd}\``);const r=[].concat(e).map(e=>n.isDirectorySync(i(e,t.cwd))?s(e,t):e);return[].concat.apply([],r)}},97681:(e,t,r)=>{var A=r(91162),n=function(){},o=function(e,t,r){if("function"==typeof t)return o(e,null,t);t||(t={}),r=A(r||n);var i=e._writableState,s=e._readableState,a=t.readable||!1!==t.readable&&e.readable,c=t.writable||!1!==t.writable&&e.writable,g=function(){e.writable||l()},l=function(){c=!1,a||r()},u=function(){a=!1,c||r()},h=function(e){r(e?new Error("exited with error code: "+e):null)},p=function(){return(!a||s&&s.ended)&&(!c||i&&i.ended)?void 0:r(new Error("premature close"))},d=function(){e.req.on("finish",l)};return!function(e){return e.setHeader&&"function"==typeof e.abort}(e)?c&&!i&&(e.on("end",g),e.on("close",g)):(e.on("complete",l),e.on("abort",p),e.req?d():e.on("request",d)),function(e){return e.stdio&&Array.isArray(e.stdio)&&3===e.stdio.length}(e)&&e.on("exit",h),e.on("end",u),e.on("finish",l),!1!==t.error&&e.on("error",r),e.on("close",p),function(){e.removeListener("complete",l),e.removeListener("abort",p),e.removeListener("request",d),e.req&&e.req.removeListener("finish",l),e.removeListener("end",g),e.removeListener("close",g),e.removeListener("finish",l),e.removeListener("exit",h),e.removeListener("end",u),e.removeListener("error",r),e.removeListener("close",p)}};e.exports=o},17067:(e,t,r)=>{var A=r(27180),n=function(){},o=function(e,t,r){if("function"==typeof t)return o(e,null,t);t||(t={}),r=A(r||n);var i=e._writableState,s=e._readableState,a=t.readable||!1!==t.readable&&e.readable,c=t.writable||!1!==t.writable&&e.writable,g=function(){e.writable||l()},l=function(){c=!1,a||r.call(e)},u=function(){a=!1,c||r.call(e)},h=function(t){r.call(e,t?new Error("exited with error code: "+t):null)},p=function(t){r.call(e,t)},d=function(){return(!a||s&&s.ended)&&(!c||i&&i.ended)?void 0:r.call(e,new Error("premature close"))},C=function(){e.req.on("finish",l)};return!function(e){return e.setHeader&&"function"==typeof e.abort}(e)?c&&!i&&(e.on("end",g),e.on("close",g)):(e.on("complete",l),e.on("abort",d),e.req?C():e.on("request",C)),function(e){return e.stdio&&Array.isArray(e.stdio)&&3===e.stdio.length}(e)&&e.on("exit",h),e.on("end",u),e.on("finish",l),!1!==t.error&&e.on("error",p),e.on("close",d),function(){e.removeListener("complete",l),e.removeListener("abort",d),e.removeListener("request",C),e.req&&e.req.removeListener("finish",l),e.removeListener("end",g),e.removeListener("close",g),e.removeListener("finish",l),e.removeListener("exit",h),e.removeListener("end",u),e.removeListener("error",p),e.removeListener("close",d)}};e.exports=o},61899:(e,t,r)=>{"use strict";const A=r(42357),n=r(28614),o=r(10278);class i extends n{constructor(e,t){super(),this.options=o.merge({},e),this.answers={...t}}register(e,t){if(o.isObject(e)){for(let t of Object.keys(e))this.register(t,e[t]);return this}A.equal(typeof t,"function","expected a function");let r=e.toLowerCase();return t.prototype instanceof this.Prompt?this.prompts[r]=t:this.prompts[r]=t(this.Prompt,this),this}async prompt(e=[]){for(let t of[].concat(e))try{"function"==typeof t&&(t=await t.call(this)),await this.ask(o.merge({},this.options,t))}catch(e){return Promise.reject(e)}return this.answers}async ask(e){"function"==typeof e&&(e=await e.call(this));let t=o.merge({},this.options,e),{type:r,name:n}=e,{set:i,get:s}=o;if("function"==typeof r&&(r=await r.call(this,e,this.answers)),!r)return this.answers[n];A(this.prompts[r],`Prompt "${r}" is not registered`);let a=new this.prompts[r](t),c=s(this.answers,n);a.state.answers=this.answers,a.enquirer=this,n&&a.on("submit",e=>{this.emit("answer",n,e,a),i(this.answers,n,e)});let g=a.emit.bind(a);return a.emit=(...e)=>(this.emit.call(this,...e),g(...e)),this.emit("prompt",a,this),t.autofill&&null!=c?(a.value=a.input=c,"show"===t.autofill&&await a.submit()):c=a.value=await a.run(),c}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||r(58386)}static get prompts(){return r(53609)}static get types(){return r(13235)}static get prompt(){const e=(t,...r)=>{let A=new this(...r),n=A.emit.bind(A);return A.emit=(...t)=>(e.emit(...t),n(...t)),A.prompt(t)};return o.mixinEmitter(e,new n),e}}o.mixinEmitter(i,new n);const s=i.prompts;for(let e of Object.keys(s)){let t=e.toLowerCase(),r=t=>new s[e](t).run();i.prompt[t]=r,i[t]=r,i[e]||Reflect.defineProperty(i,e,{get:()=>s[e]})}const a=e=>{o.defineExport(i,e,()=>i.types[e])};a("ArrayPrompt"),a("AuthPrompt"),a("BooleanPrompt"),a("NumberPrompt"),a("StringPrompt"),e.exports=i},72380:(e,t,r)=>{"use strict";const A="Apple_Terminal"===process.env.TERM_PROGRAM,n=r(97991),o=r(10278),i=e.exports=t,s="[";let a=!1;const c=i.code={bell:"",beep:"",beginning:"",down:"",esc:s,getPosition:"",hide:"[?25l",line:"",lineEnd:"",lineStart:"",restorePosition:s+(A?"8":"u"),savePosition:s+(A?"7":"s"),screen:"",show:"[?25h",up:""},g=i.cursor={get hidden(){return a},hide:()=>(a=!0,c.hide),show:()=>(a=!1,c.show),forward:(e=1)=>`[${e}C`,backward:(e=1)=>`[${e}D`,nextLine:(e=1)=>"".repeat(e),prevLine:(e=1)=>"".repeat(e),up:(e=1)=>e?`[${e}A`:"",down:(e=1)=>e?`[${e}B`:"",right:(e=1)=>e?`[${e}C`:"",left:(e=1)=>e?`[${e}D`:"",to:(e,t)=>t?`[${t+1};${e+1}H`:`[${e+1}G`,move(e=0,t=0){let r="";return r+=e<0?g.left(-e):e>0?g.right(e):"",r+=t<0?g.up(-t):t>0?g.down(t):"",r},restore(e={}){let{after:t,cursor:r,initial:A,input:n,prompt:s,size:a,value:c}=e;if(A=o.isPrimitive(A)?String(A):"",n=o.isPrimitive(n)?String(n):"",c=o.isPrimitive(c)?String(c):"",a){let e=i.cursor.up(a)+i.cursor.to(s.length),t=n.length-r;return t>0&&(e+=i.cursor.left(t)),e}if(c||t){let e=!n&&A?-A.length:-n.length+r;return t&&(e-=t.length),""===n&&A&&!s.includes(A)&&(e+=A.length),i.cursor.move(e)}}},l=i.erase={screen:c.screen,up:c.up,down:c.down,line:c.line,lineEnd:c.lineEnd,lineStart:c.lineStart,lines(e){let t="";for(let r=0;r{if(!t)return l.line+g.to(0);let r=e.split(/\r?\n/),A=0;for(let e of r)A+=1+Math.floor(Math.max((o=e,[...n.unstyle(o)].length-1),0)/t);var o;return(l.line+g.prevLine()).repeat(A-1)+l.line+g.to(0)}},62475:(e,t)=>{"use strict";t.ctrl={a:"first",b:"backward",c:"cancel",d:"deleteForward",e:"last",f:"forward",g:"reset",i:"tab",k:"cutForward",l:"reset",n:"newItem",m:"cancel",j:"submit",p:"search",r:"remove",s:"save",u:"undo",w:"cutLeft",x:"toggleCursor",v:"paste"},t.shift={up:"shiftUp",down:"shiftDown",left:"shiftLeft",right:"shiftRight",tab:"prev"},t.fn={up:"pageUp",down:"pageDown",left:"pageLeft",right:"pageRight",delete:"deleteForward"},t.option={b:"backward",f:"forward",d:"cutRight",left:"cutLeft",up:"altUp",down:"altDown"},t.keys={pageup:"pageUp",pagedown:"pageDown",home:"home",end:"end",cancel:"cancel",delete:"deleteForward",backspace:"delete",down:"down",enter:"submit",escape:"cancel",left:"left",space:"space",number:"number",return:"submit",right:"right",tab:"next",up:"up"}},64083:e=>{"use strict";const t=e=>(e=>e.filter((t,r)=>e.lastIndexOf(t)===r))(e).filter(Boolean);e.exports=(e,r={},A="")=>{let n,o,{past:i=[],present:s=""}=r;switch(e){case"prev":case"undo":return n=i.slice(0,i.length-1),o=i[i.length-1]||"",{past:t([A,...n]),present:o};case"next":case"redo":return n=i.slice(1),o=i[0]||"",{past:t([...n,A]),present:o};case"save":return{past:t([...i,A]),present:""};case"remove":return o=t(i.filter(e=>e!==A)),s="",o.length&&(s=o.pop()),{past:o,present:s};default:throw new Error(`Invalid action: "${e}"`)}}},84368:(e,t,r)=>{"use strict";const A=r(97991);class n{constructor(e){this.name=e.key,this.field=e.field||{},this.value=((e="")=>"string"==typeof e?e.replace(/^['"]|['"]$/g,""):"")(e.initial||this.field.initial||""),this.message=e.message||this.name,this.cursor=0,this.input="",this.lines=[]}}function o(e,t,r,A){return(r,n,o,i)=>"function"==typeof o.field[e]?o.field[e].call(t,r,n,o,i):[A,r].find(e=>t.isValue(e))}e.exports=async e=>{let t=e.options,r=new Set(!0===t.required?[]:t.required||[]),i={...t.values,...t.initial},{tabstops:s,items:a,keys:c}=await(async(e={},t={},r=(e=>e))=>{let A=new Set,o=e.fields||[],i=e.template,s=[],a=[],c=[],g=1;"function"==typeof i&&(i=await i());let l=-1,u=()=>i[++l],h=()=>i[l+1],p=e=>{e.line=g,s.push(e)};for(p({type:"bos",value:""});le.name===s.key);s.field=o.find(e=>e.name===s.key),g||(g=new n(s),a.push(g)),g.lines.push(s.line-1);continue}let i=s[s.length-1];"text"===i.type&&i.line===g?i.value+=e:p({type:"text",value:e})}return p({type:"eos",value:""}),{input:i,tabstops:s,unique:A,keys:c,items:a}})(t,i),g=o("result",e,t),l=o("format",e,t),u=o("validate",e,t,!0),h=e.isValue.bind(e);return async(n={},o=!1)=>{let i=0;n.required=r,n.items=a,n.keys=c,n.output="";let p=async(e,t,r,A)=>{let n=await u(e,t,r,A);return!1===n?"Invalid field "+r.name:n};for(let r of s){let s=r.value,c=r.key;if("template"===r.type){if("template"===r.type){let u=a.find(e=>e.name===c);!0===t.required&&n.required.add(u.name);let d=[u.input,n.values[u.value],u.value,s].find(h),C=(u.field||{}).message||r.inner;if(o){let e=await p(n.values[c],n,u,i);if(e&&"string"==typeof e||!1===e){n.invalid.set(c,e);continue}n.invalid.delete(c);let t=await g(n.values[c],n,u,i);n.output+=A.unstyle(t);continue}u.placeholder=!1;let f=s;s=await l(s,n,u,i),d!==s?(n.values[c]=d,s=e.styles.typing(d),n.missing.delete(C)):(n.values[c]=void 0,d=`<${C}>`,s=e.styles.primary(d),u.placeholder=!0,n.required.has(c)&&n.missing.add(C)),n.missing.has(C)&&n.validating&&(s=e.styles.warning(d)),n.invalid.has(c)&&n.validating&&(s=e.styles.danger(d)),i===n.index&&(s=f!==s?e.styles.underline(s):e.styles.heading(A.unstyle(s))),i++}s&&(n.output+=s)}else s&&(n.output+=s)}let d=n.output.split("\n").map(e=>" "+e),C=a.length,f=0;for(let t of a)n.invalid.has(t.name)&&t.lines.forEach(e=>{" "===d[e][0]&&(d[e]=n.styles.danger(n.symbols.bullet)+d[e].slice(1))}),e.isValue(n.values[t.name])&&f++;return n.completed=(f/C*100).toFixed(0),n.output=d.join("\n"),n.output}}},30650:(e,t,r)=>{"use strict";const A=r(51058),n=r(62475),o=/^(?:\x1b)([a-zA-Z0-9])$/,i=/^(?:\x1b+)(O|N|\[|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/,s={OP:"f1",OQ:"f2",OR:"f3",OS:"f4","[11~":"f1","[12~":"f2","[13~":"f3","[14~":"f4","[[A":"f1","[[B":"f2","[[C":"f3","[[D":"f4","[[E":"f5","[15~":"f5","[17~":"f6","[18~":"f7","[19~":"f8","[20~":"f9","[21~":"f10","[23~":"f11","[24~":"f12","[A":"up","[B":"down","[C":"right","[D":"left","[E":"clear","[F":"end","[H":"home",OA:"up",OB:"down",OC:"right",OD:"left",OE:"clear",OF:"end",OH:"home","[1~":"home","[2~":"insert","[3~":"delete","[4~":"end","[5~":"pageup","[6~":"pagedown","[[5~":"pageup","[[6~":"pagedown","[7~":"home","[8~":"end","[a":"up","[b":"down","[c":"right","[d":"left","[e":"clear","[2$":"insert","[3$":"delete","[5$":"pageup","[6$":"pagedown","[7$":"home","[8$":"end",Oa:"up",Ob:"down",Oc:"right",Od:"left",Oe:"clear","[2^":"insert","[3^":"delete","[5^":"pageup","[6^":"pagedown","[7^":"home","[8^":"end","[Z":"tab"};const a=(e="",t={})=>{let r,A={name:t.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:e,raw:e,...t};if(Buffer.isBuffer(e)?e[0]>127&&void 0===e[1]?(e[0]-=128,e=""+String(e)):e=String(e):void 0!==e&&"string"!=typeof e?e=String(e):e||(e=A.sequence||""),A.sequence=A.sequence||e||A.name,"\r"===e)A.raw=void 0,A.name="return";else if("\n"===e)A.name="enter";else if("\t"===e)A.name="tab";else if("\b"===e||""===e||""===e||"\b"===e)A.name="backspace",A.meta=""===e.charAt(0);else if(""===e||""===e)A.name="escape",A.meta=2===e.length;else if(" "===e||" "===e)A.name="space",A.meta=2===e.length;else if(e<="")A.name=String.fromCharCode(e.charCodeAt(0)+"a".charCodeAt(0)-1),A.ctrl=!0;else if(1===e.length&&e>="0"&&e<="9")A.name="number";else if(1===e.length&&e>="a"&&e<="z")A.name=e;else if(1===e.length&&e>="A"&&e<="Z")A.name=e.toLowerCase(),A.shift=!0;else if(r=o.exec(e))A.meta=!0,A.shift=/^[A-Z]$/.test(r[1]);else if(r=i.exec(e)){let t=[...e];""===t[0]&&""===t[1]&&(A.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(""),o=(r[3]||r[5]||1)-1;A.ctrl=!!(4&o),A.meta=!!(10&o),A.shift=!!(1&o),A.code=n,A.name=s[n],A.shift=function(e){return["[a","[b","[c","[d","[e","[2$","[3$","[5$","[6$","[7$","[8$","[Z"].includes(e)}(n)||A.shift,A.ctrl=function(e){return["Oa","Ob","Oc","Od","Oe","[2^","[3^","[5^","[6^","[7^","[8^"].includes(e)}(n)||A.ctrl}return A};a.listen=(e={},t)=>{let{stdin:r}=e;if(!r||r!==process.stdin&&!r.isTTY)throw new Error("Invalid stream passed");let n=A.createInterface({terminal:!0,input:r});A.emitKeypressEvents(r,n);let o=(e,r)=>t(e,a(e,r),n),i=r.isRaw;r.isTTY&&r.setRawMode(!0),r.on("keypress",o),n.resume();return()=>{r.isTTY&&r.setRawMode(i),r.removeListener("keypress",o),n.pause(),n.close()}},a.action=(e,t,r)=>{let A={...n,...r};return t.ctrl?(t.action=A.ctrl[t.name],t):t.option&&A.option?(t.action=A.option[t.name],t):t.shift?(t.action=A.shift[t.name],t):(t.action=A.keys[t.name],t)},e.exports=a},96496:(e,t,r)=>{"use strict";const A=r(10278);e.exports=(e,t={})=>{e.cursorHide();let{input:r="",initial:n="",pos:o,showCursor:i=!0,color:s}=t,a=s||e.styles.placeholder,c=A.inverse(e.styles.primary),g=t=>c(e.styles.black(t)),l=r,u=g(" ");if(e.blink&&!0===e.blink.off&&(g=e=>e,u=""),i&&0===o&&""===n&&""===r)return g(" ");if(i&&0===o&&(r===n||""===r))return g(n[0])+a(n.slice(1));n=A.isPrimitive(n)?""+n:"",r=A.isPrimitive(r)?""+r:"";let h=n&&n.startsWith(r)&&n!==r,p=h?g(n[r.length]):u;if(o!==r.length&&!0===i&&(l=r.slice(0,o)+g(r[o])+r.slice(o+1),p=""),!1===i&&(p=""),h){let t=e.styles.unstyle(l+p);return l+p+a(n.slice(t.length))}return l+p}},58386:(e,t,r)=>{"use strict";const A=r(28614),n=r(97991),o=r(30650),i=r(47159),s=r(61807),a=r(26205),c=r(10278),g=r(72380);class l extends A{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,a(this),i(this),this.state=new s(this),this.initial=[e.initial,e.default].find(e=>null!=e),this.stdout=e.stdout||process.stdout,this.stdin=e.stdin||process.stdin,this.scale=e.scale||1,this.term=this.options.term||process.env.TERM_PROGRAM,this.margin=function(e){"number"==typeof e&&(e=[e,e,e,e]);let t=[].concat(e||[]),r=e=>e%2==0?"\n":" ",A=[];for(let e=0;e<4;e++){let n=r(e);t[e]?A.push(n.repeat(t[e])):A.push("")}return A}(this.options.margin),this.setMaxListeners(0),function(e){let t=t=>void 0===e[t]||"function"==typeof e[t],r=["actions","choices","initial","margin","roles","styles","symbols","theme","timers","value"],A=["body","footer","error","header","hint","indicator","message","prefix","separator","skip"];for(let n of Object.keys(e.options)){if(r.includes(n))continue;if(/^on[A-Z]/.test(n))continue;let o=e.options[n];"function"==typeof o&&t(n)?A.includes(n)||(e[n]=o.bind(e)):"function"!=typeof e[n]&&(e[n]=o)}}(this)}async keypress(e,t={}){this.keypressed=!0;let r=o.action(e,o(e,t),this.options.actions);this.state.keypress=r,this.emit("keypress",e,r),this.emit("state",this.state.clone());let A=this.options[r.action]||this[r.action]||this.dispatch;if("function"==typeof A)return await A.call(this,e,r);this.alert()}alert(){delete this.state.alert,!1===this.options.show?this.emit("alert"):this.stdout.write(g.code.beep)}cursorHide(){this.stdout.write(g.cursor.hide()),c.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(g.cursor.show())}write(e){e&&(this.stdout&&!1!==this.state.show&&this.stdout.write(e),this.state.buffer+=e)}clear(e=0){let t=this.state.buffer;this.state.buffer="",(t||e)&&!1!==this.options.show&&this.stdout.write(g.cursor.down(e)+g.clear(t,this.width))}restore(){if(this.state.closed||!1===this.options.show)return;let{prompt:e,after:t,rest:r}=this.sections(),{cursor:A,initial:n="",input:o="",value:i=""}=this,s={after:t,cursor:A,initial:n,input:o,prompt:e,size:this.state.size=r.length,value:i},a=g.cursor.restore(s);a&&this.stdout.write(a)}sections(){let{buffer:e,input:t,prompt:r}=this.state;r=n.unstyle(r);let A=n.unstyle(e),o=A.indexOf(r),i=A.slice(0,o),s=A.slice(o).split("\n"),a=s[0],c=s[s.length-1],g=(r+(t?" "+t:"")).length,l=ge.call(this,this.value),this.result=()=>r.call(this,this.value),"function"==typeof t.initial&&(this.initial=await t.initial.call(this,this)),"function"==typeof t.onRun&&await t.onRun.call(this,this),"function"==typeof t.onSubmit){let e=t.onSubmit.bind(this),r=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await e(this.name,this.value,this),r())}await this.start(),await this.render()}render(){throw new Error("expected prompt to have a custom render method")}run(){return new Promise(async(e,t)=>{if(this.once("submit",e),this.once("cancel",t),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit("run")})}async element(e,t,r){let{options:A,state:n,symbols:o,timers:i}=this,s=i&&i[e];n.timer=s;let a=A[e]||n[e]||o[e],c=t&&null!=t[e]?t[e]:await a;if(""===c)return c;let g=await this.resolve(c,n,t,r);return!g&&t&&t[e]?this.resolve(a,n,t,r):g}async prefix(){let e=await this.element("prefix")||this.symbols,t=this.timers&&this.timers.prefix,r=this.state;if(r.timer=t,c.isObject(e)&&(e=e[r.status]||e.pending),!c.hasColor(e)){return(this.styles[r.status]||this.styles.pending)(e)}return e}async message(){let e=await this.element("message");return c.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element("separator")||this.symbols,t=this.timers&&this.timers.separator,r=this.state;r.timer=t;let A=e[r.status]||e.pending||r.separator,n=await this.resolve(A,r);return c.isObject(n)&&(n=n[r.status]||n.pending),c.hasColor(n)?n:this.styles.muted(n)}async pointer(e,t){let r=await this.element("pointer",e,t);if("string"==typeof r&&c.hasColor(r))return r;if(r){let e=this.styles,A=this.index===t,n=A?e.primary:e=>e,o=await this.resolve(r[A?"on":"off"]||r,this.state),i=c.hasColor(o)?o:n(o);return A?i:" ".repeat(o.length)}}async indicator(e,t){let r=await this.element("indicator",e,t);if("string"==typeof r&&c.hasColor(r))return r;if(r){let t=this.styles,A=!0===e.enabled,n=A?t.success:t.dark,o=r[A?"on":"off"]||r;return c.hasColor(o)?o:n(o)}return""}body(){return null}footer(){if("pending"===this.state.status)return this.element("footer")}header(){if("pending"===this.state.status)return this.element("header")}async hint(){if("pending"===this.state.status&&!this.isValue(this.state.input)){let e=await this.element("hint");return c.hasColor(e)?e:this.styles.muted(e)}}error(e){return this.state.submitted?"":e||this.state.error}format(e){return e}result(e){return e}validate(e){return!0!==this.options.required||this.isValue(e)}isValue(e){return null!=e&&""!==e}resolve(e,...t){return c.resolve(this,e,...t)}get base(){return l.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||c.height(this.stdout,25)}get width(){return this.options.columns||c.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:t}=this.state,r=[t,e].find(this.isValue.bind(this));return this.isValue(r)?r:this.initial}static get prompt(){return e=>new this(e).run()}}e.exports=l},63310:(e,t,r)=>{"use strict";const A=r(31557);e.exports=class extends A{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:t,input:r}=this.state;return this.input=r.slice(0,t)+e+r.slice(t),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:t}=this.state;return t?(this.input=t.slice(0,e-1)+t.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:t}=this.state;return void 0===t[e]?this.alert():(this.input=(""+t).slice(0,e)+(""+t).slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,t=this.state._choices){if("function"==typeof this.options.suggest)return this.options.suggest.call(this,e,t);let r=e.toLowerCase();return t.filter(e=>e.message.toLowerCase().includes(r))}pointer(){return""}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(", ");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if("pending"!==this.state.status)return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,t=((e,t)=>{let r=e.toLowerCase();return e=>{let A=e.toLowerCase().indexOf(r),n=t(e.slice(A,A+r.length));return A>=0?e.slice(0,A)+n+e.slice(A+r.length):e}})(this.input,e),r=this.choices;this.choices=r.map(e=>({...e,message:t(e.message)})),await super.render(),this.choices=r}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}}},52810:(e,t,r)=>{"use strict";const A=r(46614);function n(e,t){return e.username===this.options.username&&e.password===this.options.password}const o=(e=n)=>{const t=[{name:"username",message:"username"},{name:"password",message:"password",format(e){if(this.options.showPassword)return e;return(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length))}}];class r extends(A.create(e)){constructor(e){super({...e,choices:t})}static create(e){return o(e)}}return r};e.exports=o()},65742:(e,t,r)=>{"use strict";const A=r(82710);e.exports=class extends A{constructor(e){super(e),this.default=this.options.default||(this.initial?"(Y/n)":"(y/N)")}}},24570:(e,t,r)=>{"use strict";const A=r(31557),n=r(71447).prototype;e.exports=class extends A{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,"left"].find(e=>null!=e),this.emptyError="",this.values={}}dispatch(e,t){let r=this.focused,A=r.parent||{};return r.editable||A.editable||"a"!==e&&"i"!==e?n.dispatch.call(this,e,t):super[e]()}append(e,t){return n.append.call(this,e,t)}delete(e,t){return n.delete.call(this,e,t)}space(e){return this.focused.editable?this.append(e):super.space()}number(e){return this.focused.editable?this.append(e):super.number(e)}next(){return this.focused.editable?n.next.call(this):super.next()}prev(){return this.focused.editable?n.prev.call(this):super.prev()}async indicator(e,t){let r=e.indicator||"",A=e.editable?r:super.indicator(e,t);return await this.resolve(A,this.state,e,t)||""}indent(e){return"heading"===e.role?"":e.editable?" ":" "}async renderChoice(e,t){return e.indent="",e.editable?n.renderChoice.call(this,e,t):super.renderChoice(e,t)}error(){return""}footer(){return this.state.error}async validate(){let e=!0;for(let t of this.choices){if("function"!=typeof t.validate)continue;if("heading"===t.role)continue;let r=t.parent?this.value[t.parent.name]:this.value;if(t.editable?r=t.value===t.name?t.initial||"":t.value:this.isDisabled(t)||(r=!0===t.enabled),e=await t.validate(r,this.state),!0!==e)break}return!0!==e&&(this.state.error="string"==typeof e?e:"Invalid Input"),e}submit(){if(!0===this.focused.newChoice)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let t=e.parent?this.value[e.parent.name]:this.value;"heading"!==e.role?e.editable?t[e.name]=e.value===e.name?e.initial||"":e.value:this.isDisabled(e)||(t[e.name]=!0===e.enabled):this.value[e.name]={}}return this.base.submit.call(this)}}},71447:(e,t,r)=>{"use strict";const A=r(97991),n=r(31557),o=r(96496);e.exports=class extends n{constructor(e){super({...e,multiple:!0}),this.type="form",this.initial=this.options.initial,this.align=[this.options.align,"right"].find(e=>null!=e),this.emptyError="",this.values={}}async reset(e){return await super.reset(),!0===e&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(e=>e.reset&&e.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let t=this.focused;if(!t)return this.alert();let{cursor:r,input:A}=t;return t.value=t.input=A.slice(0,r)+e+A.slice(r),t.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:t,input:r}=e;return e.value=e.input=r.slice(0,t-1)+r.slice(t),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:t,input:r}=e;if(void 0===r[t])return this.alert();let A=(""+r).slice(0,t)+(""+r).slice(t+1);return e.value=e.input=A,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,t){return this.dispatch(e,t)}number(e,t){return this.dispatch(e,t)}next(){let e=this.focused;if(!e)return this.alert();let{initial:t,input:r}=e;return t&&t.startsWith(r)&&r!==t?(e.value=e.input=t,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?0===e.cursor?super.prev():(e.value=e.input="",e.cursor=0,this.render()):this.alert()}separator(){return""}format(e){return this.state.submitted?"":super.format(e)}pointer(){return""}indicator(e){return e.input?"⦿":"⊙"}async choiceSeparator(e,t){let r=await this.resolve(e.separator,this.state,e,t)||":";return r?" "+this.styles.disabled(r):""}async renderChoice(e,t){await this.onChoice(e,t);let{state:r,styles:n}=this,{cursor:i,initial:s="",name:a,hint:c,input:g=""}=e,{muted:l,submitted:u,primary:h,danger:p}=n,d=c,C=this.index===t,f=e.validate||(()=>!0),I=await this.choiceSeparator(e,t),E=e.message;"right"===this.align&&(E=E.padStart(this.longest+1," ")),"left"===this.align&&(E=E.padEnd(this.longest+1," "));let B=this.values[a]=g||s,y=g?"success":"dark";!0!==await f.call(e,B,this.state)&&(y="danger");let m=(0,n[y])(await this.indicator(e,t))+(e.pad||""),w=this.indent(e),Q=()=>[w,m,E+I,g,d].filter(Boolean).join(" ");if(r.submitted)return E=A.unstyle(E),g=u(g),d="",Q();if(e.format)g=await e.format.call(this,g,e,t);else{let e=this.styles.muted;g=o(this,{input:g,initial:s,pos:i,showCursor:C,color:e})}return this.isValue(g)||(g=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[a]=await e.result.call(this,B,e,t)),C&&(E=h(E)),e.error?g+=(g?" ":"")+p(e.error.trim()):e.hint&&(g+=(g?" ":"")+l(e.hint.trim())),Q()}async submit(){return this.value=this.values,super.base.submit.call(this)}}},53609:(e,t,r)=>{"use strict";const A=r(10278),n=(e,r)=>{A.defineExport(t,e,r),A.defineExport(t,e.toLowerCase(),r)};n("AutoComplete",()=>r(63310)),n("BasicAuth",()=>r(52810)),n("Confirm",()=>r(65742)),n("Editable",()=>r(24570)),n("Form",()=>r(71447)),n("Input",()=>r(12372)),n("Invisible",()=>r(32684)),n("List",()=>r(40876)),n("MultiSelect",()=>r(42293)),n("Numeral",()=>r(42126)),n("Password",()=>r(84697)),n("Scale",()=>r(99580)),n("Select",()=>r(31557)),n("Snippet",()=>r(98094)),n("Sort",()=>r(60042)),n("Survey",()=>r(25223)),n("Text",()=>r(97298)),n("Toggle",()=>r(41817)),n("Quiz",()=>r(88677))},12372:(e,t,r)=>{"use strict";const A=r(45853),n=r(64083);e.exports=class extends A{constructor(e){super(e);let t=this.options.history;if(t&&t.store){let e=t.values||this.initial;this.autosave=!!t.autosave,this.store=t.store,this.data=this.store.get("values")||{past:[],present:e},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=n(e,this.data,this.input),this.data.present?(this.input=this.data.present,this.cursor=this.input.length,this.render()):this.alert()):this.alert()}altUp(){return this.completion("prev")}altDown(){return this.completion("next")}prev(){return this.save(),super.prev()}save(){this.store&&(this.data=n("save",this.data,this.input),this.store.set("values",this.data))}submit(){return this.store&&!0===this.autosave&&this.save(),super.submit()}}},32684:(e,t,r)=>{"use strict";const A=r(45853);e.exports=class extends A{format(){return""}}},40876:(e,t,r)=>{"use strict";const A=r(45853);e.exports=class extends A{constructor(e={}){super(e),this.sep=this.options.separator||/, */,this.initial=e.initial||""}split(e=this.value){return e?String(e).split(this.sep):[]}format(){let e=this.state.submitted?this.styles.primary:e=>e;return this.list.map(e).join(", ")}async submit(e){let t=this.state.error||await this.validate(this.list,this.state);return!0!==t?(this.state.error=t,super.submit()):(this.value=this.list,super.submit())}get list(){return this.split()}}},42293:(e,t,r)=>{"use strict";const A=r(31557);e.exports=class extends A{constructor(e){super({...e,multiple:!0})}}},42126:(e,t,r)=>{e.exports=r(64987)},84697:(e,t,r)=>{"use strict";const A=r(45853);e.exports=class extends A{constructor(e){super(e),this.cursorShow()}format(e=this.input){if(!this.keypressed)return"";return(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(e.length))}}},88677:(e,t,r)=>{"use strict";const A=r(31557);e.exports=class extends A{constructor(e){if(super(e),"number"!=typeof this.options.correctChoice||this.options.correctChoice<0)throw new Error("Please specify the index of the correct answer from the list of choices")}async toChoices(e,t){let r=await super.toChoices(e,t);if(r.length<2)throw new Error("Please give at least two choices to the user");if(this.options.correctChoice>r.length)throw new Error("Please specify the index of the correct answer from the list of choices");return r}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}}},99580:(e,t,r)=>{"use strict";const A=r(97991),n=r(14723),o=r(10278);e.exports=class extends n{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||"left"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||"\n ";let t=e.startNumber||1;"number"==typeof this.scale&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((e,r)=>({name:r+t})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(!0===this.tableized)return;this.tableized=!0;let e=0;for(let t of this.choices){e=Math.max(e,t.message.length),t.scaleIndex=t.initial||2,t.scale=[];for(let e=0;e=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return""}format(){if(this.state.submitted){return this.choices.map(e=>this.styles.info(e.index)).join(", ")}return""}pointer(){return""}renderScaleKey(){if(!1===this.scaleKey)return"";if(this.state.submitted)return"";return["",...this.scale.map(e=>` ${e.name} - ${e.message}`)].map(e=>this.styles.muted(e)).join("\n")}renderScaleHeading(e){let t=this.scale.map(e=>e.name);"function"==typeof this.options.renderScaleHeading&&(t=this.options.renderScaleHeading.call(this,e));let r=this.scaleLength-t.join("").length,A=Math.round(r/(t.length-1)),n=t.map(e=>this.styles.strong(e)).join(" ".repeat(A)),o=" ".repeat(this.widths[0]);return this.margin[3]+o+this.margin[1]+n}scaleIndicator(e,t,r){if("function"==typeof this.options.scaleIndicator)return this.options.scaleIndicator.call(this,e,t,r);let A=e.scaleIndex===t.index;return t.disabled?this.styles.hint(this.symbols.radio.disabled):A?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,t){let r=e.scale.map(r=>this.scaleIndicator(e,r,t)),A="Hyper"===this.term?"":" ";return r.join(A+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,t){await this.onChoice(e,t);let r=this.index===t,n=await this.pointer(e,t),i=await e.hint;i&&!o.hasColor(i)&&(i=this.styles.muted(i));let s=e=>this.margin[3]+e.replace(/\s+$/,"").padEnd(this.widths[0]," "),a=this.newline,c=this.indent(e),g=await this.resolve(e.message,this.state,e,t),l=await this.renderScale(e,t),u=this.margin[1]+this.margin[3];this.scaleLength=A.unstyle(l).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-u.length);let h=o.wordWrap(g,{width:this.widths[0],newline:a}).split("\n").map(e=>s(e)+this.margin[1]);return r&&(l=this.styles.info(l),h=h.map(e=>this.styles.info(e))),h[0]+=l,this.linebreak&&h.push(""),[c+n,h.join("\n")].filter(Boolean)}async renderChoices(){if(this.state.submitted)return"";this.tableize();let e=this.visible.map(async(e,t)=>await this.renderChoice(e,t)),t=await Promise.all(e),r=await this.renderScaleHeading();return this.margin[0]+[r,...t.map(e=>e.join(" "))].join("\n")}async render(){let{submitted:e,size:t}=this.state,r=await this.prefix(),A=await this.separator(),n=await this.message(),o="";!1!==this.options.promptLine&&(o=[r,n,A,""].join(" "),this.state.prompt=o);let i=await this.header(),s=await this.format(),a=await this.renderScaleKey(),c=await this.error()||await this.hint(),g=await this.renderChoices(),l=await this.footer(),u=this.emptyError;s&&(o+=s),c&&!o.includes(c)&&(o+=" "+c),e&&!s&&!g.trim()&&this.multiple&&null!=u&&(o+=this.styles.danger(u)),this.clear(t),this.write([i,o,a,g,l].filter(Boolean).join("\n")),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}}},31557:(e,t,r)=>{"use strict";const A=r(14723),n=r(10278);e.exports=class extends A{constructor(e){super(e),this.emptyError=this.options.emptyError||"No items were selected"}async dispatch(e,t){if(this.multiple)return this[t.name]?await this[t.name](e,t):await super.dispatch(e,t);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,t){return!this.multiple||this.options.pointer?super.pointer(e,t):""}indicator(e,t){return this.multiple?super.indicator(e,t):""}choiceMessage(e,t){let r=this.resolve(e.message,this.state,e,t);return"heading"!==e.role||n.hasColor(r)||(r=this.styles.strong(r)),this.resolve(r,this.state,e,t)}choiceSeparator(){return":"}async renderChoice(e,t){await this.onChoice(e,t);let r=this.index===t,A=await this.pointer(e,t),o=await this.indicator(e,t)+(e.pad||""),i=await this.resolve(e.hint,this.state,e,t);i&&!n.hasColor(i)&&(i=this.styles.muted(i));let s=this.indent(e),a=await this.choiceMessage(e,t),c=()=>[this.margin[3],s+A+o,a,this.margin[1],i].filter(Boolean).join(" ");return"heading"===e.role?c():e.disabled?(n.hasColor(a)||(a=this.styles.disabled(a)),c()):(r&&(a=this.styles.em(a)),c())}async renderChoices(){if("choices"===this.state.loading)return this.styles.warning("Loading choices");if(this.state.submitted)return"";let e=this.visible.map(async(e,t)=>await this.renderChoice(e,t)),t=await Promise.all(e);t.length||t.push(this.styles.danger("No matching choices"));let r,A=this.margin[0]+t.join("\n");return this.options.choicesHeader&&(r=await this.resolve(this.options.choicesHeader,this.state)),[r,A].filter(Boolean).join("\n")}format(){return!this.state.submitted||this.state.cancelled?"":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(", "):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:t}=this.state,r="",A=await this.header(),n=await this.prefix(),o=await this.separator(),i=await this.message();!1!==this.options.promptLine&&(r=[n,i,o,""].join(" "),this.state.prompt=r);let s=await this.format(),a=await this.error()||await this.hint(),c=await this.renderChoices(),g=await this.footer();s&&(r+=s),a&&!r.includes(a)&&(r+=" "+a),e&&!s&&!c.trim()&&this.multiple&&null!=this.emptyError&&(r+=this.styles.danger(this.emptyError)),this.clear(t),this.write([A,r,c,g].filter(Boolean).join("\n")),this.write(this.margin[2]),this.restore()}}},98094:(e,t,r)=>{"use strict";const A=r(97991),n=r(84368),o=r(58386);e.exports=class extends o{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await n(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},!0!==e&&(await this.initialize(),await this.render())}moveCursor(e){let t=this.getItem();this.cursor+=e,t.cursor+=e}dispatch(e,t){t.code||t.ctrl||null==e||!this.getItem()?this.alert():this.append(e,t)}append(e,t){let r=this.getItem(),A=r.input.slice(0,this.cursor),n=r.input.slice(this.cursor);this.input=r.input=`${A}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let t=e.input.slice(this.cursor),r=e.input.slice(0,this.cursor-1);this.input=e.input=`${r}${t}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let t=this.state.completed<100?this.styles.warning:this.styles.success;return!0===this.state.submitted&&100!==this.state.completed&&(t=this.styles.danger),t(this.state.completed+"% completed")}async render(){let{index:e,keys:t=[],submitted:r,size:A}=this.state,n=[this.options.newline,"\n"].find(e=>null!=e),o=await this.prefix(),i=await this.separator(),s=[o,await this.message(),i].filter(Boolean).join(" ");this.state.prompt=s;let a=await this.header(),c=await this.error()||"",g=await this.hint()||"",l=r?"":await this.interpolate(this.state),u=this.state.key=t[e]||"",h=await this.format(u),p=await this.footer();h&&(s+=" "+h),g&&!h&&0===this.state.completed&&(s+=" "+g),this.clear(A);let d=[a,s,l,p,c.trim()];this.write(d.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:t,keys:r,index:A}=this.state,n=t.find(e=>e.name===r[A]);return n&&null!=n.input&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){"function"!=typeof this.interpolate&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:t,output:r,values:n}=this.state;if(e.size){let t="";for(let[r,A]of e)t+=`Invalid ${r}: ${A}\n`;return this.state.error=t,super.submit()}if(t.size)return this.state.error="Required: "+[...t.keys()].join(", "),super.submit();let o=A.unstyle(r).split("\n").map(e=>e.slice(1)).join("\n");return this.value={values:n,result:o},super.submit()}}},60042:(e,t,r)=>{"use strict";const A="(Use + to sort)",n=r(31557);e.exports=class extends n{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,A].find(this.isValue.bind(this))}indicator(){return""}async renderChoice(e,t){let r=await super.renderChoice(e,t),A=this.symbols.identicalTo+" ",n=this.index===t&&this.sorting?this.styles.muted(A):" ";return!1===this.options.drag&&(n=""),!0===this.options.numbered?n+(t+1+" - ")+r:n+r}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}}},25223:(e,t,r)=>{"use strict";const A=r(14723);function n(e,t={}){if(Array.isArray(t.scale))return t.scale.map(e=>({...e}));let r=[];for(let t=1;tthis.styles.muted(e)),this.state.header=e.join("\n ")}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let t=await super.toChoices(...e);for(let e of t)e.scale=n(5,this.options),e.scaleIdx=2;return t}dispatch(){this.alert()}space(){let e=this.focused,t=e.scale[e.scaleIdx],r=t.selected;return e.scale.forEach(e=>e.selected=!1),t.selected=!r,this.render()}indicator(){return""}pointer(){return""}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return" "}async renderChoice(e,t){await this.onChoice(e,t);let r=this.index===t,A="Hyper"===this.term,n=A?9:8,o=A?"":" ",i=this.symbols.line.repeat(n),s=" ".repeat(n+(A?0:1)),a=e=>(e?this.styles.success("◉"):"◯")+o,c=t+1+".",g=r?this.styles.heading:this.styles.noop,l=await this.resolve(e.message,this.state,e,t),u=this.indent(e),h=u+e.scale.map((t,r)=>a(r===e.scaleIdx)).join(i),p=u+e.scale.map((t,r)=>(t=>t===e.scaleIdx?g(t):t)(r)).join(s);return r&&(h=this.styles.cyan(h),p=this.styles.cyan(p)),[[c,l].filter(Boolean).join(" "),h,p," "].filter(Boolean).join("\n")}async renderChoices(){if(this.state.submitted)return"";let e=this.visible.map(async(e,t)=>await this.renderChoice(e,t)),t=await Promise.all(e);return t.length||t.push(this.styles.danger("No matching choices")),t.join("\n")}format(){if(this.state.submitted){return this.choices.map(e=>this.styles.info(e.scaleIdx)).join(", ")}return""}async render(){let{submitted:e,size:t}=this.state,r=await this.prefix(),A=await this.separator(),n=[r,await this.message(),A].filter(Boolean).join(" ");this.state.prompt=n;let o=await this.header(),i=await this.format(),s=await this.error()||await this.hint(),a=await this.renderChoices(),c=await this.footer();!i&&s||(n+=" "+i),s&&!n.includes(s)&&(n+=" "+s),e&&!i&&!a&&this.multiple&&"form"!==this.type&&(n+=this.styles.danger(this.emptyError)),this.clear(t),this.write([n,o,a,c].filter(Boolean).join("\n")),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}}},97298:(e,t,r)=>{e.exports=r(12372)},41817:(e,t,r)=>{"use strict";const A=r(82710);e.exports=class extends A{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||"no",this.enabled=this.options.enabled||"yes",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(!0===this.value)return this.alert();this.value=!0,this.render()}disable(){if(!1===this.value)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e="",t){switch(e.toLowerCase()){case" ":return this.toggle();case"1":case"y":case"t":return this.enable();case"0":case"n":case"f":return this.disable();default:return this.alert()}}format(){let e=e=>this.styles.primary.underline(e);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(" / "))}async render(){let{size:e}=this.state,t=await this.header(),r=await this.prefix(),A=await this.separator(),n=await this.message(),o=await this.format(),i=await this.error()||await this.hint(),s=await this.footer(),a=[r,n,A,o].join(" ");this.state.prompt=a,i&&!a.includes(i)&&(a+=" "+i),this.clear(e),this.write([t,a,s].filter(Boolean).join("\n")),this.write(this.margin[2]),this.restore()}}},27011:(e,t,r)=>{"use strict";const A=r(10278),n={default:(e,t)=>t,checkbox(e,t){throw new Error("checkbox role is not implemented yet")},editable(e,t){throw new Error("editable role is not implemented yet")},expandable(e,t){throw new Error("expandable role is not implemented yet")},heading:(e,t)=>(t.disabled="",t.indicator=[t.indicator," "].find(e=>null!=e),t.message=t.message||"",t),input(e,t){throw new Error("input role is not implemented yet")},option:(e,t)=>n.default(e,t),radio(e,t){throw new Error("radio role is not implemented yet")},separator:(e,t)=>(t.disabled="",t.indicator=[t.indicator," "].find(e=>null!=e),t.message=t.message||e.symbols.line.repeat(5),t),spacer:(e,t)=>t};e.exports=(e,t={})=>{let r=A.merge({},n,t.roles);return r[e]||r.default}},61807:(e,t,r)=>{"use strict";const{define:A,width:n}=r(10278);e.exports=class{constructor(e){let t=e.options;A(this,"_prompt",e),this.type=e.type,this.name=e.name,this.message="",this.header="",this.footer="",this.error="",this.hint="",this.input="",this.cursor=0,this.index=0,this.lines=0,this.tick=0,this.prompt="",this.buffer="",this.width=n(t.stdout||process.stdout),Object.assign(this,t),this.name=this.name||this.message,this.message=this.message||this.name,this.symbols=e.symbols,this.styles=e.styles,this.required=new Set,this.cancelled=!1,this.submitted=!1}clone(){let e={...this};return e.status=this.status,e.buffer=Buffer.from(e.buffer),delete e.clone,e}set color(e){this._color=e}get color(){let e=this.prompt.styles;if(this.cancelled)return e.cancelled;if(this.submitted)return e.submitted;let t=this._color||e[this.status];return"function"==typeof t?t:e.pending}set loading(e){this._loading=e}get loading(){return"boolean"==typeof this._loading?this._loading:!!this.loadingChoices&&"choices"}get status(){return this.cancelled?"cancelled":this.submitted?"submitted":"pending"}}},64402:(e,t,r)=>{"use strict";const A=r(10278),n=r(97991),o={default:n.noop,noop:n.noop,set inverse(e){this._inverse=e},get inverse(){return this._inverse||A.inverse(this.primary)},set complement(e){this._complement=e},get complement(){return this._complement||A.complement(this.primary)},primary:n.cyan,success:n.green,danger:n.magenta,strong:n.bold,warning:n.yellow,muted:n.dim,disabled:n.gray,dark:n.dim.gray,underline:n.underline,set info(e){this._info=e},get info(){return this._info||this.primary},set em(e){this._em=e},get em(){return this._em||this.primary.underline},set heading(e){this._heading=e},get heading(){return this._heading||this.muted.underline},set pending(e){this._pending=e},get pending(){return this._pending||this.primary},set submitted(e){this._submitted=e},get submitted(){return this._submitted||this.success},set cancelled(e){this._cancelled=e},get cancelled(){return this._cancelled||this.danger},set typing(e){this._typing=e},get typing(){return this._typing||this.dim},set placeholder(e){this._placeholder=e},get placeholder(){return this._placeholder||this.primary.dim},set highlight(e){this._highlight=e},get highlight(){return this._highlight||this.inverse},merge:(e={})=>{e.styles&&"boolean"==typeof e.styles.enabled&&(n.enabled=e.styles.enabled),e.styles&&"boolean"==typeof e.styles.visible&&(n.visible=e.styles.visible);let t=A.merge({},o,e.styles);delete t.merge;for(let e of Object.keys(n))t.hasOwnProperty(e)||Reflect.defineProperty(t,e,{get:()=>n[e]});for(let e of Object.keys(n.styles))t.hasOwnProperty(e)||Reflect.defineProperty(t,e,{get:()=>n[e]});return t}};e.exports=o},50511:(e,t,r)=>{"use strict";const A="win32"===process.platform,n=r(97991),o=r(10278),i={...n.symbols,upDownDoubleArrow:"⇕",upDownDoubleArrow2:"⬍",upDownArrow:"↕",asterisk:"*",asterism:"⁂",bulletWhite:"◦",electricArrow:"⌁",ellipsisLarge:"⋯",ellipsisSmall:"…",fullBlock:"█",identicalTo:"≡",indicator:n.symbols.check,leftAngle:"‹",mark:"※",minus:"−",multiplication:"×",obelus:"÷",percent:"%",pilcrow:"¶",pilcrow2:"❡",pencilUpRight:"✐",pencilDownRight:"✎",pencilRight:"✏",plus:"+",plusMinus:"±",pointRight:"☞",rightAngle:"›",section:"§",hexagon:{off:"⬡",on:"⬢",disabled:"⬢"},ballot:{on:"☑",off:"☐",disabled:"☒"},stars:{on:"★",off:"☆",disabled:"☆"},folder:{on:"▼",off:"▶",disabled:"▶"},prefix:{pending:n.symbols.question,submitted:n.symbols.check,cancelled:n.symbols.cross},separator:{pending:n.symbols.pointerSmall,submitted:n.symbols.middot,cancelled:n.symbols.middot},radio:{off:A?"( )":"◯",on:A?"(*)":"◉",disabled:A?"(|)":"Ⓘ"},numbers:["⓪","①","②","③","④","⑤","⑥","⑦","⑧","⑨","⑩","⑪","⑫","⑬","⑭","⑮","⑯","⑰","⑱","⑲","⑳","㉑","㉒","㉓","㉔","㉕","㉖","㉗","㉘","㉙","㉚","㉛","㉜","㉝","㉞","㉟","㊱","㊲","㊳","㊴","㊵","㊶","㊷","㊸","㊹","㊺","㊻","㊼","㊽","㊾","㊿"]};i.merge=e=>{let t=o.merge({},n.symbols,i,e.symbols);return delete t.merge,t},e.exports=i},26205:(e,t,r)=>{"use strict";const A=r(64402),n=r(50511),o=r(10278);e.exports=e=>{e.options=o.merge({},e.options.theme,e.options),e.symbols=n.merge(e.options),e.styles=A.merge(e.options)}},47159:e=>{"use strict";function t(e,t,r={}){let A=e.timers[t]={name:t,start:Date.now(),ms:0,tick:0},n=r.interval||120;A.frames=r.frames||[],A.loading=!0;let o=setInterval(()=>{A.ms=Date.now()-A.start,A.tick++,e.render()},n);return A.stop=()=>{A.loading=!1,clearInterval(o)},Reflect.defineProperty(A,"interval",{value:o}),e.once("close",()=>A.stop()),A.stop}e.exports=e=>{e.timers=e.timers||{};let r=e.options.timers;if(r)for(let A of Object.keys(r)){let n=r[A];"number"==typeof n&&(n={interval:n}),t(e,A,n)}}},14723:(e,t,r)=>{"use strict";const A=r(97991),n=r(58386),o=r(27011),i=r(10278),{reorder:s,scrollUp:a,scrollDown:c,isObject:g,swap:l}=i;function u(e,t){if(t instanceof Promise)return t;if("function"==typeof t){if(i.isAsyncFn(t))return t;t=t.call(e,e)}for(let r of t){if(Array.isArray(r.choices)){let t=r.choices.filter(t=>!e.isDisabled(t));r.enabled=t.every(e=>!0===e.enabled)}!0===e.isDisabled(r)&&delete r.enabled}return t}e.exports=class extends n{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=""}async initialize(){"function"==typeof this.options.initial&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:t,autofocus:r,suggest:A}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(e=>e.enabled=!1),"function"!=typeof A&&0===this.selectable.length)throw new Error("At least one choice must be selectable");g(t)&&(t=Object.keys(t)),Array.isArray(t)?(null!=r&&(this.index=this.findIndex(r)),t.forEach(e=>this.enable(this.find(e))),await this.render()):(null!=r&&(t=r),"string"==typeof t&&(t=this.findIndex(t)),"number"==typeof t&&t>-1&&(this.index=Math.max(0,Math.min(t,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,t){this.state.loadingChoices=!0;let r=[],A=0,n=async(e,t)=>{"function"==typeof e&&(e=await e.call(this)),e instanceof Promise&&(e=await e);for(let o=0;o(this.state.loadingChoices=!1,e))}async toChoice(e,t,r){if("function"==typeof e&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),"string"==typeof e&&(e={name:e}),e.normalized)return e;e.normalized=!0;let n=e.value,s=o(e.role,this.options);if("string"!=typeof(e=s(this,e)).disabled||e.hint||(e.hint=e.disabled,e.disabled=!0),!0===e.disabled&&null==e.hint&&(e.hint="(disabled)"),null!=e.index)return e;e.name=e.name||e.key||e.title||e.value||e.message,e.message=e.message||e.name||"",e.value=[e.value,e.name].find(this.isValue.bind(this)),e.input="",e.index=t,e.cursor=0,i.define(e,"parent",r),e.level=r?r.level+1:1,null==e.indent&&(e.indent=r?r.indent+" ":e.indent||""),e.path=r?r.path+"."+e.name:e.name,e.enabled=!(!this.multiple||this.isDisabled(e)||!e.enabled&&!this.isSelected(e)),this.isDisabled(e)||(this.longest=Math.max(this.longest,A.unstyle(e.message).length));let a={...e};return e.reset=(t=a.input,r=a.value)=>{for(let t of Object.keys(a))e[t]=a[t];e.input=t,e.value=r},null==n&&"function"==typeof e.initial&&(e.input=await e.initial.call(this,this.state,e,t)),e}async onChoice(e,t){this.emit("choice",e,t,this),"function"==typeof e.onChoice&&await e.onChoice.call(this,this.state,e,t)}async addChoice(e,t,r){let A=await this.toChoice(e,t,r);return this.choices.push(A),this.index=this.choices.length-1,this.limit=this.choices.length,A}async newItem(e,t,r){let A={name:"New choice name?",editable:!0,newChoice:!0,...e},n=await this.addChoice(A,t,r);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input="",n.cursor=0},this.render()}indent(e){return null==e.indent?e.level>1?" ".repeat(e.level-1):"":e.indent}dispatch(e,t){if(this.multiple&&this[t.name])return this[t.name]();this.alert()}focus(e,t){return"boolean"!=typeof t&&(t=e.enabled),t&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=t&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelectede.enabled);return this.choices.forEach(t=>t.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(e=>!!e.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,t){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();"boolean"!=typeof t&&(t=!e.enabled),e.enabled=t,e.choices&&e.choices.forEach(e=>this.toggle(e,t));let r=e.parent;for(;r;){let e=r.choices.filter(e=>this.isDisabled(e));r.enabled=e.every(e=>!0===e.enabled),r=r.parent}return u(this,this.choices),this.emit("toggle",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let t=e=>{let t=Number(e);if(t>this.choices.length-1)return this.alert();let r=this.focused,A=this.choices.find(e=>t===e.index);if(!A.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(-1===this.visible.indexOf(A)){let e=s(this.choices),t=e.indexOf(A);if(r.index>t){let r=e.slice(t,t+this.limit),A=e.filter(e=>!r.includes(e));this.choices=r.concat(A)}else{let r=t-this.limit+1;this.choices=e.slice(r).concat(e.slice(0,r))}}return this.index=this.choices.indexOf(A),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(e=>{let r=this.choices.length,A=this.num,n=(r=!1,n)=>{clearTimeout(this.numberTimeout),r&&(n=t(A)),this.num="",e(n)};return"0"===A||1===A.length&&Number(A+"0")>r?n(!0):Number(A)>r?n(!1,this.alert()):void(this.numberTimeout=setTimeout(()=>n(!0),this.delay))})}home(){return this.choices=s(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,t=s(this.choices);return this.choices=t.slice(e).concat(t.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,t=this.visible.length,r=this.index;return!1===this.options.scroll&&0===r?this.alert():e>t&&0===r?this.scrollUp():(this.index=(r-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,t=this.visible.length,r=this.index;return!1===this.options.scroll&&r===t-1?this.alert():e>t&&r===t-1?this.scrollDown():(this.index=(r+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=a(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=c(this.choices),this.index=e,this.isDisabled()?this.down():this.render()}async shiftUp(){return!0===this.options.sort?(this.sorting=!0,this.swap(this.index-1),await this.up(),void(this.sorting=!1)):this.scrollUp(this.index)}async shiftDown(){return!0===this.options.sort?(this.sorting=!0,this.swap(this.index+1),await this.down(),void(this.sorting=!1)):this.scrollDown(this.index)}pageUp(){return this.visible.length<=1?this.alert():(this.limit=Math.max(this.limit-1,0),this.index=Math.min(this.limit-1,this.index),this._limit=this.limit,this.isDisabled()?this.up():this.render())}pageDown(){return this.visible.length>=this.choices.length?this.alert():(this.index=Math.max(0,this.index),this.limit=Math.min(this.limit+1,this.choices.length),this._limit=this.limit,this.isDisabled()?this.down():this.render())}swap(e){l(this.choices,this.index,e)}isDisabled(e=this.focused){return!(!e||!["disabled","collapsed","hidden","completing","readonly"].some(t=>!0===e[t]))||e&&"heading"===e.role}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(e=>this.isEnabled(e));if(e.choices){let t=e.choices.filter(e=>!this.isDisabled(e));return e.enabled&&t.every(e=>this.isEnabled(e))}return e.enabled&&!this.isDisabled(e)}isChoice(e,t){return e.name===t||e.index===Number(t)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(t=>this.isChoice(e,t)):this.isChoice(e,this.initial)}map(e=[],t="value"){return[].concat(e||[]).reduce((e,r)=>(e[r]=this.find(r,t),e),{})}filter(e,t){let r="function"==typeof e?e:(t,r)=>[t.name,r].includes(e),A=(this.options.multiple?this.state._choices:this.choices).filter(r);return t?A.map(e=>e[t]):A}find(e,t){if(g(e))return t?e[t]:e;let r="function"==typeof e?e:(t,r)=>[t.name,r].includes(e),A=this.choices.find(r);return A?t?A[t]:A:void 0}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(e=>e.newChoice))return this.alert();let{reorder:t,sort:r}=this.options,A=!0===this.multiple,n=this.selected;return void 0===n?this.alert():(Array.isArray(n)&&!1!==t&&!0!==r&&(n=i.reorder(n)),this.value=A?n.map(e=>e.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let t of e)this.state._choices.some(e=>e.name===t.name)||this.state._choices.push(t);if(!this._initial&&this.options.initial){this._initial=!0;let e=this.initial;if("string"==typeof e||"number"==typeof e){let t=this.find(e);t&&(this.initial=t.index,this.focus(t,!0))}}}get choices(){return u(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:t,choices:r}=this,A=e.limit||this._limit||t.limit||r.length;return Math.min(A,this.height)}set value(e){super.value=e}get value(){return"string"!=typeof super.value&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&!0!==this.multiple&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}}},46614:(e,t,r)=>{"use strict";const A=r(71447),n=()=>{throw new Error("expected prompt to have a custom authenticate method")},o=(e=n)=>class extends A{constructor(e){super(e)}async submit(){this.value=await e.call(this,this.values,this.state),super.base.submit.call(this)}static create(e){return o(e)}};e.exports=o()},82710:(e,t,r)=>{"use strict";const A=r(58386),{isPrimitive:n,hasColor:o}=r(10278);e.exports=class extends A{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:t,state:r}=this;return r.submitted?t.success(e):t.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return n(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if("pending"===this.state.status){let e=await this.element("hint");return o(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:t}=this.state,r=await this.prefix(),A=await this.separator(),n=[r,await this.message(),this.styles.muted(this.default),A].filter(Boolean).join(" ");this.state.prompt=n;let o=await this.header(),i=this.value=this.cast(e),s=await this.format(i),a=await this.error()||await this.hint(),c=await this.footer();a&&!n.includes(a)&&(s+=" "+a),n+=" "+s,this.clear(t),this.write([o,n,c].filter(Boolean).join("\n")),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}}},13235:(e,t,r)=>{e.exports={ArrayPrompt:r(14723),AuthPrompt:r(46614),BooleanPrompt:r(82710),NumberPrompt:r(64987),StringPrompt:r(45853)}},64987:(e,t,r)=>{"use strict";const A=r(45853);e.exports=class extends A{constructor(e={}){super({style:"number",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=null!=e.delay?e.delay:1e3,this.float=!1!==e.float,this.round=!0===e.round||!1===e.float,this.major=e.major||10,this.minor=e.minor||1,this.initial=null!=e.initial?e.initial:"",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||"."===e&&this.input.includes(".")?this.alert("invalid number"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let t=e||this.minor,r=this.toNumber(this.input);return r>this.max+t?this.alert():(this.input=""+(r+t),this.render())}down(e){let t=e||this.minor,r=this.toNumber(this.input);return rthis.isValue(e));return this.value=this.toNumber(e||0),super.submit()}}},45853:(e,t,r)=>{"use strict";const A=r(58386),n=r(96496),{isPrimitive:o}=r(10278);e.exports=class extends A{constructor(e){super(e),this.initial=o(this.initial)?String(this.initial):"",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,t={}){let r=this.state.prevKeypress;return this.state.prevKeypress=t,!0!==this.options.multiline||"return"!==t.name||r&&"return"===r.name?super.keypress(e,t):this.append("\n",t)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value="",this.cursor=0,this.render()}dispatch(e,t){if(!e||t.ctrl||t.code)return this.alert();this.append(e)}append(e){let{cursor:t,input:r}=this.state;this.input=(""+r).slice(0,t)+e+(""+r).slice(t),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:t}=this.state;if(e<=0)return this.alert();this.input=(""+t).slice(0,e-1)+(""+t).slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:t}=this.state;if(void 0===t[e])return this.alert();this.input=(""+t).slice(0,e)+(""+t).slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(0===e)return this.alert();let t=this.input.slice(0,e),r=this.input.slice(e),A=t.split(" ");this.state.clipboard.push(A.pop()),this.input=A.join(" "),this.cursor=this.input.length,this.input+=r,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=null!=this.initial?String(this.initial):"";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let t=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||t):n(this,{input:e,initial:t,pos:this.cursor})}async render(){let e=this.state.size,t=await this.prefix(),r=await this.separator(),A=[t,await this.message(),r].filter(Boolean).join(" ");this.state.prompt=A;let n=await this.header(),o=await this.format(),i=await this.error()||await this.hint(),s=await this.footer();i&&!o.includes(i)&&(o+=" "+i),A+=" "+o,this.clear(e),this.write([n,A,s].filter(Boolean).join("\n")),this.restore()}}},10278:(e,t,r)=>{"use strict";const A=Object.prototype.toString,n=r(97991);let o=!1,i=[];const s={yellow:"blue",cyan:"red",green:"magenta",black:"white",blue:"yellow",red:"cyan",magenta:"green",white:"black"};t.longest=(e,t)=>e.reduce((e,r)=>Math.max(e,t?r[t].length:r.length),0),t.hasColor=e=>!!e&&n.hasColor(e);const a=t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e);t.nativeType=e=>A.call(e).slice(8,-1).toLowerCase().replace(/\s/g,""),t.isAsyncFn=e=>"asyncfunction"===t.nativeType(e),t.isPrimitive=e=>null!=e&&"object"!=typeof e&&"function"!=typeof e,t.resolve=(e,t,...r)=>"function"==typeof t?t.call(e,...r):t,t.scrollDown=(e=[])=>[...e.slice(1),e[0]],t.scrollUp=(e=[])=>[e.pop(),...e],t.reorder=(e=[])=>{let t=e.slice();return t.sort((e,t)=>e.index>t.index?1:e.index{let A=e.length,n=r===A?0:r<0?A-1:r,o=e[t];e[t]=e[n],e[n]=o},t.width=(e,t=80)=>{let r=e&&e.columns?e.columns:t;return e&&"function"==typeof e.getWindowSize&&(r=e.getWindowSize()[0]),"win32"===process.platform?r-1:r},t.height=(e,t=20)=>{let r=e&&e.rows?e.rows:t;return e&&"function"==typeof e.getWindowSize&&(r=e.getWindowSize()[1]),r},t.wordWrap=(e,t={})=>{if(!e)return e;"number"==typeof t&&(t={width:t});let{indent:r="",newline:A="\n"+r,width:n=80}=t,o=(A+r).match(/[^\S\n]/g)||[];n-=o.length;let i=`.{1,${n}}([\\s\\u200B]+|$)|[^\\s\\u200B]+?([\\s\\u200B]+|$)`,s=e.trim(),a=new RegExp(i,"g"),c=s.match(a)||[];return c=c.map(e=>e.replace(/\n$/,"")),t.padEnd&&(c=c.map(e=>e.padEnd(n," "))),t.padStart&&(c=c.map(e=>e.padStart(n," "))),r+c.join(A)},t.unmute=e=>{let t=e.stack.find(e=>n.keys.color.includes(e));return t?n[t]:e.stack.find(e=>"bg"===e.slice(2))?n[t.slice(2)]:e=>e},t.pascal=e=>e?e[0].toUpperCase()+e.slice(1):"",t.inverse=e=>{if(!e||!e.stack)return e;let r=e.stack.find(e=>n.keys.color.includes(e));if(r){let A=n["bg"+t.pascal(r)];return A?A.black:e}let A=e.stack.find(e=>"bg"===e.slice(0,2));return A?n[A.slice(2).toLowerCase()]||e:n.none},t.complement=e=>{if(!e||!e.stack)return e;let r=e.stack.find(e=>n.keys.color.includes(e)),A=e.stack.find(e=>"bg"===e.slice(0,2));if(r&&!A)return n[s[r]||r];if(A){let r=A.slice(2).toLowerCase(),o=s[r];return o&&n["bg"+t.pascal(o)]||e}return n.none},t.meridiem=e=>{let t=e.getHours(),r=e.getMinutes(),A=t>=12?"pm":"am";return t%=12,(0===t?12:t)+":"+(r<10?"0"+r:r)+" "+A},t.set=(e={},r="",A)=>r.split(".").reduce((e,r,n,o)=>{let i=o.length-1>n?e[r]||{}:A;return!t.isObject(i)&&n{let A=null==e[t]?t.split(".").reduce((e,t)=>e&&e[t],e):e[t];return null==A?r:A},t.mixin=(e,r)=>{if(!a(e))return r;if(!a(r))return e;for(let A of Object.keys(r)){let n=Object.getOwnPropertyDescriptor(r,A);if(n.hasOwnProperty("value"))if(e.hasOwnProperty(A)&&a(n.value)){let o=Object.getOwnPropertyDescriptor(e,A);a(o.value)?e[A]=t.merge({},e[A],r[A]):Reflect.defineProperty(e,A,n)}else Reflect.defineProperty(e,A,n);else Reflect.defineProperty(e,A,n)}return e},t.merge=(...e)=>{let r={};for(let A of e)t.mixin(r,A);return r},t.mixinEmitter=(e,r)=>{let A=r.constructor.prototype;for(let n of Object.keys(A)){let o=A[n];"function"==typeof o?t.define(e,n,o.bind(r)):t.define(e,n,o)}},t.onExit=e=>{const t=(e,t)=>{o||(o=!0,i.forEach(e=>e()),!0===e&&process.exit(128+t))};0===i.length&&(process.once("SIGTERM",t.bind(null,!0,15)),process.once("SIGINT",t.bind(null,!0,2)),process.once("exit",t)),i.push(e)},t.define=(e,t,r)=>{Reflect.defineProperty(e,t,{value:r})},t.defineExport=(e,t,r)=>{let A;Reflect.defineProperty(e,t,{enumerable:!0,configurable:!0,set(e){A=e},get:()=>A?A():r()})}},19347:(e,t,r)=>{"use strict";const A=r(80598),n=r(58182),o=r(67652),i=r(81340),s=r(43754),a=r(16777);async function c(e,t){l(e);const r=g(e,n.default,t),A=await Promise.all(r);return a.array.flatten(A)}function g(e,t,r){const n=[].concat(e),o=new s.default(r),i=A.generate(n,o),a=new t(o);return i.map(a.read,a)}function l(e){if(![].concat(e).every(e=>a.string.isString(e)&&!a.string.isEmpty(e)))throw new TypeError("Patterns must be a string (non empty) or an array of strings")}!function(e){e.sync=function(e,t){l(e);const r=g(e,i.default,t);return a.array.flatten(r)},e.stream=function(e,t){l(e);const r=g(e,o.default,t);return a.stream.merge(r)},e.generateTasks=function(e,t){l(e);const r=[].concat(e),n=new s.default(t);return A.generate(r,n)},e.isDynamicPattern=function(e,t){l(e);const r=new s.default(t);return a.pattern.isDynamicPattern(e,r)},e.escapePath=function(e){return l(e),a.path.escape(e)}}(c||(c={})),e.exports=c},80598:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(16777);function n(e,t,r){const A=s(e);if("."in A){return[c(".",e,t,r)]}return a(A,t,r)}function o(e){return A.pattern.getPositivePatterns(e)}function i(e,t){return A.pattern.getNegativePatterns(e).concat(t).map(A.pattern.convertToPositivePattern)}function s(e){return e.reduce((e,t)=>{const r=A.pattern.getBaseDirectory(t);return r in e?e[r].push(t):e[r]=[t],e},{})}function a(e,t,r){return Object.keys(e).map(A=>c(A,e[A],t,r))}function c(e,t,r,n){return{dynamic:n,positive:t,negative:r,base:e,patterns:[].concat(t,r.map(A.pattern.convertToNegativePattern))}}t.generate=function(e,t){const r=o(e),s=i(e,t.ignore),a=r.filter(e=>A.pattern.isStaticPattern(e,t)),c=r.filter(e=>A.pattern.isDynamicPattern(e,t)),g=n(a,s,!1),l=n(c,s,!0);return g.concat(l)},t.convertPatternsToTasks=n,t.getPositivePatterns=o,t.getNegativePatternsAsPositive=i,t.groupPatternsByBaseDirectory=s,t.convertPatternGroupsToTasks=a,t.convertPatternGroupToTask=c},58182:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(82774),n=r(40545);class o extends n.default{constructor(){super(...arguments),this._reader=new A.default(this._settings)}read(e){const t=this._getRootDirectory(e),r=this._getReaderOptions(e),A=[];return new Promise((n,o)=>{const i=this.api(t,e,r);i.once("error",o),i.on("data",e=>A.push(r.transform(e))),i.once("end",()=>n(A))})}api(e,t,r){return t.dynamic?this._reader.dynamic(e,r):this._reader.static(t.patterns,r)}}t.default=o},65989:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(16777),n=r(42585);t.default=class{constructor(e,t){this._settings=e,this._micromatchOptions=t}getFilter(e,t,r){const A=this._getMatcher(t),n=this._getNegativePatternsRe(r);return t=>this._filter(e,t,A,n)}_getMatcher(e){return new n.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){const t=e.filter(A.pattern.isAffectDepthOfReadingPattern);return A.pattern.convertPatternsToRe(t,this._micromatchOptions)}_filter(e,t,r,n){const o=this._getEntryLevel(e,t.path);if(this._isSkippedByDeep(o))return!1;if(this._isSkippedSymbolicLink(t))return!1;const i=A.path.removeLeadingDotSegment(t.path);return!this._isSkippedByPositivePatterns(i,r)&&this._isSkippedByNegativePatterns(i,n)}_isSkippedByDeep(e){return e>=this._settings.deep}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_getEntryLevel(e,t){const r=e.split("/").length;return t.split("/").length-(""===e?0:r)}_isSkippedByPositivePatterns(e,t){return!this._settings.baseNameMatch&&!t.match(e)}_isSkippedByNegativePatterns(e,t){return!A.pattern.matchAny(e,t)}}},37338:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(16777);t.default=class{constructor(e,t){this._settings=e,this._micromatchOptions=t,this.index=new Map}getFilter(e,t){const r=A.pattern.convertPatternsToRe(e,this._micromatchOptions),n=A.pattern.convertPatternsToRe(t,this._micromatchOptions);return e=>this._filter(e,r,n)}_filter(e,t,r){if(this._settings.unique){if(this._isDuplicateEntry(e))return!1;this._createIndexRecord(e)}if(this._onlyFileFilter(e)||this._onlyDirectoryFilter(e))return!1;if(this._isSkippedByAbsoluteNegativePatterns(e,r))return!1;const A=this._settings.baseNameMatch?e.name:e.path;return this._isMatchToPatterns(A,t)&&!this._isMatchToPatterns(e.path,r)}_isDuplicateEntry(e){return this.index.has(e.path)}_createIndexRecord(e){this.index.set(e.path,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,t){if(!this._settings.absolute)return!1;const r=A.path.makeAbsolute(this._settings.cwd,e.path);return this._isMatchToPatterns(r,t)}_isMatchToPatterns(e,t){const r=A.path.removeLeadingDotSegment(e);return A.pattern.matchAny(r,t)}}},54345:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(16777);t.default=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return A.errno.isEnoentCodeError(e)||this._settings.suppressErrors}}},34789:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(16777);t.default=class{constructor(e,t,r){this._patterns=e,this._settings=t,this._micromatchOptions=r,this._storage=[],this._fillStorage()}_fillStorage(){const e=A.pattern.expandPatternsWithBraceExpansion(this._patterns);for(const t of e){const e=this._getPatternSegments(t),r=this._splitSegmentsIntoSections(e);this._storage.push({complete:r.length<=1,pattern:t,segments:e,sections:r})}}_getPatternSegments(e){return A.pattern.getPatternParts(e,this._micromatchOptions).map(e=>A.pattern.isDynamicPattern(e,this._settings)?{dynamic:!0,pattern:e,patternRe:A.pattern.makeRe(e,this._micromatchOptions)}:{dynamic:!1,pattern:e})}_splitSegmentsIntoSections(e){return A.array.splitWhen(e,e=>e.dynamic&&A.pattern.hasGlobStar(e.pattern))}}},42585:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(34789);class n extends A.default{match(e){const t=e.split("/"),r=t.length,A=this._storage.filter(e=>!e.complete||e.segments.length>r);for(const e of A){const A=e.sections[0];if(!e.complete&&r>A.length)return!0;if(t.every((t,r)=>{const A=e.segments[r];return!(!A.dynamic||!A.patternRe.test(t))||!A.dynamic&&A.pattern===t}))return!0}return!1}}t.default=n},40545:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(85622),n=r(65989),o=r(37338),i=r(54345),s=r(77541);t.default=class{constructor(e){this._settings=e,this.errorFilter=new i.default(this._settings),this.entryFilter=new o.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new n.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new s.default(this._settings)}_getRootDirectory(e){return A.resolve(this._settings.cwd,e.base)}_getReaderOptions(e){const t="."===e.base?"":e.base;return{basePath:t,pathSegmentSeparator:"/",concurrency:this._settings.concurrency,deepFilter:this.deepFilter.getFilter(t,e.positive,e.negative),entryFilter:this.entryFilter.getFilter(e.positive,e.negative),errorFilter:this.errorFilter.getFilter(),followSymbolicLinks:this._settings.followSymbolicLinks,fs:this._settings.fs,stats:this._settings.stats,throwErrorOnBrokenSymbolicLink:this._settings.throwErrorOnBrokenSymbolicLink,transform:this.entryTransformer.getTransformer()}}_getMicromatchOptions(){return{dot:this._settings.dot,matchBase:this._settings.baseNameMatch,nobrace:!this._settings.braceExpansion,nocase:!this._settings.caseSensitiveMatch,noext:!this._settings.extglob,noglobstar:!this._settings.globstar,posix:!0,strictSlashes:!1}}}},67652:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(92413),n=r(82774),o=r(40545);class i extends o.default{constructor(){super(...arguments),this._reader=new n.default(this._settings)}read(e){const t=this._getRootDirectory(e),r=this._getReaderOptions(e),n=this.api(t,e,r),o=new A.Readable({objectMode:!0,read:()=>{}});return n.once("error",e=>o.emit("error",e)).on("data",e=>o.emit("data",r.transform(e))).once("end",()=>o.emit("end")),o.once("close",()=>n.destroy()),o}api(e,t,r){return t.dynamic?this._reader.dynamic(e,r):this._reader.static(t.patterns,r)}}t.default=i},81340:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(29543),n=r(40545);class o extends n.default{constructor(){super(...arguments),this._reader=new A.default(this._settings)}read(e){const t=this._getRootDirectory(e),r=this._getReaderOptions(e);return this.api(t,e,r).map(r.transform)}api(e,t,r){return t.dynamic?this._reader.dynamic(e,r):this._reader.static(t.patterns,r)}}t.default=o},77541:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(16777);t.default=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let t=e.path;return this._settings.absolute&&(t=A.path.makeAbsolute(this._settings.cwd,t),t=A.path.unixify(t)),this._settings.markDirectories&&e.dirent.isDirectory()&&(t+="/"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:t}):t}}},99458:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(85622),n=r(53403),o=r(16777);t.default=class{constructor(e){this._settings=e,this._fsStatSettings=new n.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return A.resolve(this._settings.cwd,e)}_makeEntry(e,t){const r={name:t,path:t,dirent:o.fs.createDirentFromStats(t,e)};return this._settings.stats&&(r.stats=e),r}_isFatalError(e){return!o.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}}},82774:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(92413),n=r(53403),o=r(72897),i=r(99458);class s extends i.default{constructor(){super(...arguments),this._walkStream=o.walkStream,this._stat=n.stat}dynamic(e,t){return this._walkStream(e,t)}static(e,t){const r=e.map(this._getFullEntryPath,this),n=new A.PassThrough({objectMode:!0});n._write=(A,o,i)=>this._getEntry(r[A],e[A],t).then(e=>{null!==e&&t.entryFilter(e)&&n.push(e),A===r.length-1&&n.end(),i()}).catch(i);for(let e=0;ethis._makeEntry(e,t)).catch(e=>{if(r.errorFilter(e))return null;throw e})}_getStat(e){return new Promise((t,r)=>{this._stat(e,this._fsStatSettings,(e,A)=>null===e?t(A):r(e))})}}t.default=s},29543:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(53403),n=r(72897),o=r(99458);class i extends o.default{constructor(){super(...arguments),this._walkSync=n.walkSync,this._statSync=A.statSync}dynamic(e,t){return this._walkSync(e,t)}static(e,t){const r=[];for(const A of e){const e=this._getFullEntryPath(A),n=this._getEntry(e,A,t);null!==n&&t.entryFilter(n)&&r.push(n)}return r}_getEntry(e,t,r){try{const r=this._getStat(e);return this._makeEntry(r,t)}catch(e){if(r.errorFilter(e))return null;throw e}}_getStat(e){return this._statSync(e,this._fsStatSettings)}}t.default=i},43754:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(35747),n=r(12087).cpus().length;t.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:A.lstat,lstatSync:A.lstatSync,stat:A.stat,statSync:A.statSync,readdir:A.readdir,readdirSync:A.readdirSync};t.default=class{constructor(e={}){this._options=e,this.absolute=this._getValue(this._options.absolute,!1),this.baseNameMatch=this._getValue(this._options.baseNameMatch,!1),this.braceExpansion=this._getValue(this._options.braceExpansion,!0),this.caseSensitiveMatch=this._getValue(this._options.caseSensitiveMatch,!0),this.concurrency=this._getValue(this._options.concurrency,n),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0)}_getValue(e,t){return void 0===e?t:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},t.DEFAULT_FILE_SYSTEM_ADAPTER),e)}}},60919:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.flatten=function(e){return e.reduce((e,t)=>[].concat(e,t),[])},t.splitWhen=function(e,t){const r=[[]];let A=0;for(const n of e)t(n)?(A++,r[A]=[]):r[A].push(n);return r}},35525:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isEnoentCodeError=function(e){return"ENOENT"===e.code}},62524:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class r{constructor(e,t){this.name=e,this.isBlockDevice=t.isBlockDevice.bind(t),this.isCharacterDevice=t.isCharacterDevice.bind(t),this.isDirectory=t.isDirectory.bind(t),this.isFIFO=t.isFIFO.bind(t),this.isFile=t.isFile.bind(t),this.isSocket=t.isSocket.bind(t),this.isSymbolicLink=t.isSymbolicLink.bind(t)}}t.createDirentFromStats=function(e,t){return new r(e,t)}},16777:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(60919);t.array=A;const n=r(35525);t.errno=n;const o=r(62524);t.fs=o;const i=r(71462);t.path=i;const s=r(14659);t.pattern=s;const a=r(2042);t.stream=a;const c=r(10217);t.string=c},71462:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(85622),n=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\())/g;t.unixify=function(e){return e.replace(/\\/g,"/")},t.makeAbsolute=function(e,t){return A.resolve(e,t)},t.escape=function(e){return e.replace(n,"\\$2")},t.removeLeadingDotSegment=function(e){if("."===e.charAt(0)){const t=e.charAt(1);if("/"===t||"\\"===t)return e.slice(2)}return e}},14659:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(85622),n=r(97098),o=r(2401),i=r(54722),s=/[*?]|^!/,a=/\[.*]/,c=/(?:^|[^!*+?@])\(.*\|.*\)/,g=/[!*+?@]\(.*\)/,l=/{.*(?:,|\.\.).*}/;function u(e,t={}){return!h(e,t)}function h(e,t={}){return!(!1!==t.caseSensitiveMatch&&!e.includes("\\"))||(!!(s.test(e)||a.test(e)||c.test(e))||(!(!1===t.extglob||!g.test(e))||!(!1===t.braceExpansion||!l.test(e))))}function p(e){return e.startsWith("!")&&"("!==e[1]}function d(e){return!p(e)}function C(e){return e.endsWith("/**")}function f(e){return o.braces(e,{expand:!0,nodupes:!0})}function I(e,t){return o.makeRe(e,t)}t.isStaticPattern=u,t.isDynamicPattern=h,t.convertToPositivePattern=function(e){return p(e)?e.slice(1):e},t.convertToNegativePattern=function(e){return"!"+e},t.isNegativePattern=p,t.isPositivePattern=d,t.getNegativePatterns=function(e){return e.filter(p)},t.getPositivePatterns=function(e){return e.filter(d)},t.getBaseDirectory=function(e){return n(e,{flipBackslashes:!1})},t.hasGlobStar=function(e){return e.includes("**")},t.endsWithSlashGlobStar=C,t.isAffectDepthOfReadingPattern=function(e){const t=A.basename(e);return C(e)||u(t)},t.expandPatternsWithBraceExpansion=function(e){return e.reduce((e,t)=>e.concat(f(t)),[])},t.expandBraceExpansion=f,t.getPatternParts=function(e,t){const r=i.scan(e,Object.assign(Object.assign({},t),{parts:!0}));return 0===r.parts.length?[e]:r.parts},t.makeRe=I,t.convertPatternsToRe=function(e,t){return e.map(e=>I(e,t))},t.matchAny=function(e,t){return t.some(t=>t.test(e))}},2042:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(55598);function n(e){e.forEach(e=>e.emit("close"))}t.merge=function(e){const t=A(e);return e.forEach(e=>{e.once("error",e=>t.emit("error",e))}),t.once("close",()=>n(e)),t.once("end",()=>n(e)),t}},10217:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isString=function(e){return"string"==typeof e},t.isEmpty=function(e){return""===e}},98360:(e,t,r)=>{"use strict";var A=r(2383);function n(){}function o(){this.value=null,this.callback=n,this.next=null,this.release=n,this.context=null;var e=this;this.worked=function(t,r){var A=e.callback;e.value=null,e.callback=n,A.call(e.context,t,r),e.release(e)}}e.exports=function(e,t,r){"function"==typeof e&&(r=t,t=e,e=null);var i=A(o),s=null,a=null,c=0,g={push:function(r,A){var o=i.get();o.context=e,o.release=l,o.value=r,o.callback=A||n,c===g.concurrency||g.paused?a?(a.next=o,a=o):(s=o,a=o,g.saturated()):(c++,t.call(e,o.value,o.worked))},drain:n,saturated:n,pause:function(){g.paused=!0},paused:!1,concurrency:r,running:function(){return c},resume:function(){if(!g.paused)return;g.paused=!1;for(var e=0;e{"use strict";class A{constructor(e,t,r){this.__specs=e||{},Object.keys(this.__specs).forEach(e=>{if("string"==typeof this.__specs[e]){const t=this.__specs[e],r=this.__specs[t];if(!r)throw new Error(`Alias refers to invalid key: ${t} -> ${e}`);{const A=r.aliases||[];A.push(e,t),r.aliases=[...new Set(A)],this.__specs[e]=r}}}),this.__opts=t||{},this.__providers=s(r.filter(e=>null!=e&&"object"==typeof e)),this.__isFiggyPudding=!0}get(e){return n(this,e,!0)}get[Symbol.toStringTag](){return"FiggyPudding"}forEach(e,t=this){for(let[r,A]of this.entries())e.call(t,A,r,this)}toJSON(){const e={};return this.forEach((t,r)=>{e[r]=t}),e}*entries(e){for(let e of Object.keys(this.__specs))yield[e,this.get(e)];const t=e||this.__opts.other;if(t){const e=new Set;for(let r of this.__providers){const A=r.entries?r.entries(t):a(r);for(let[r,n]of A)t(r)&&!e.has(r)&&(e.add(r),yield[r,n])}}}*[Symbol.iterator](){for(let[e,t]of this.entries())yield[e,t]}*keys(){for(let[e]of this.entries())yield e}*values(){for(let[,e]of this.entries())yield e}concat(...e){return new Proxy(new A(this.__specs,this.__opts,s(this.__providers).concat(e)),i)}}try{const e=r(31669);A.prototype[e.inspect.custom]=function(t,r){return this[Symbol.toStringTag]+" "+e.inspect(this.toJSON(),r)}}catch(e){}function n(e,t,r){let A=e.__specs[t];if(!r||A||e.__opts.other&&e.__opts.other(t)){let r;A||(A={});for(let n of e.__providers){if(r=o(t,n),void 0===r&&A.aliases&&A.aliases.length)for(let e of A.aliases)if(e!==t&&(r=o(e,n),void 0!==r))break;if(void 0!==r)break}return void 0===r&&void 0!==A.default?"function"==typeof A.default?A.default(e):A.default:r}!function(e){throw Object.assign(new Error("invalid config key requested: "+e),{code:"EBADKEY"})}(t)}function o(e,t){let r;return r=t.__isFiggyPudding?n(t,e,!1):"function"==typeof t.get?t.get(e):t[e],r}const i={has:(e,t)=>t in e.__specs&&void 0!==n(e,t,!1),ownKeys:e=>Object.keys(e.__specs),get:(e,t)=>"symbol"==typeof t||"__"===t.slice(0,2)||t in A.prototype?e[t]:e.get(t),set(e,t,r){if("symbol"==typeof t||"__"===t.slice(0,2))return e[t]=r,!0;throw new Error("figgyPudding options cannot be modified. Use .concat() instead.")},deleteProperty(){throw new Error("figgyPudding options cannot be deleted. Use .concat() and shadow them instead.")}};function s(e){const t=[];return e.forEach(e=>t.unshift(e)),t}function a(e){return Object.keys(e).map(t=>[t,e[t]])}e.exports=function(e,t){return function(...r){return new Proxy(new A(e,t,r),i)}}},52169:(e,t,r)=>{"use strict"; +/*! + * fill-range + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Licensed under the MIT License. + */const A=r(31669),n=r(84615),o=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),i=e=>"number"==typeof e||"string"==typeof e&&""!==e,s=e=>Number.isInteger(+e),a=e=>{let t=""+e,r=-1;if("-"===t[0]&&(t=t.slice(1)),"0"===t)return!1;for(;"0"===t[++r];);return r>0},c=(e,t,r)=>{if(t>0){let r="-"===e[0]?"-":"";r&&(e=e.slice(1)),e=r+e.padStart(r?t-1:t,"0")}return!1===r?String(e):e},g=(e,t)=>{let r="-"===e[0]?"-":"";for(r&&(e=e.slice(1),t--);e.length{if(r)return n(e,t,{wrap:!1,...A});let o=String.fromCharCode(e);return e===t?o:`[${o}-${String.fromCharCode(t)}]`},u=(e,t,r)=>{if(Array.isArray(e)){let t=!0===r.wrap,A=r.capture?"":"?:";return t?`(${A}${e.join("|")})`:e.join("|")}return n(e,t,r)},h=(...e)=>new RangeError("Invalid range arguments: "+A.inspect(...e)),p=(e,t,r)=>{if(!0===r.strictRanges)throw h([e,t]);return[]},d=(e,t,r=1,A={})=>{let n=Number(e),o=Number(t);if(!Number.isInteger(n)||!Number.isInteger(o)){if(!0===A.strictRanges)throw h([e,t]);return[]}0===n&&(n=0),0===o&&(o=0);let i=n>o,s=String(e),p=String(t),d=String(r);r=Math.max(Math.abs(r),1);let C=a(s)||a(p)||a(d),f=C?Math.max(s.length,p.length,d.length):0,I=!1===C&&!1===((e,t,r)=>"string"==typeof e||"string"==typeof t||!0===r.stringify)(e,t,A),E=A.transform||(e=>t=>!0===e?Number(t):String(t))(I);if(A.toRegex&&1===r)return l(g(e,f),g(t,f),!0,A);let B={negatives:[],positives:[]},y=[],m=0;for(;i?n>=o:n<=o;)!0===A.toRegex&&r>1?B[(w=n)<0?"negatives":"positives"].push(Math.abs(w)):y.push(c(E(n,m),f,I)),n=i?n-r:n+r,m++;var w;return!0===A.toRegex?r>1?((e,t)=>{e.negatives.sort((e,t)=>et?1:0),e.positives.sort((e,t)=>et?1:0);let r,A=t.capture?"":"?:",n="",o="";return e.positives.length&&(n=e.positives.join("|")),e.negatives.length&&(o=`-(${A}${e.negatives.join("|")})`),r=n&&o?`${n}|${o}`:n||o,t.wrap?`(${A}${r})`:r})(B,A):u(y,null,{wrap:!1,...A}):y},C=(e,t,r,A={})=>{if(null==t&&i(e))return[e];if(!i(e)||!i(t))return p(e,t,A);if("function"==typeof r)return C(e,t,1,{transform:r});if(o(r))return C(e,t,0,r);let n={...A};return!0===n.capture&&(n.wrap=!0),r=r||n.step||1,s(r)?s(e)&&s(t)?d(e,t,r,n):((e,t,r=1,A={})=>{if(!s(e)&&e.length>1||!s(t)&&t.length>1)return p(e,t,A);let n=A.transform||(e=>String.fromCharCode(e)),o=(""+e).charCodeAt(0),i=(""+t).charCodeAt(0),a=o>i,c=Math.min(o,i),g=Math.max(o,i);if(A.toRegex&&1===r)return l(c,g,!1,A);let h=[],d=0;for(;a?o>=i:o<=i;)h.push(n(o,d)),o=a?o-r:o+r,d++;return!0===A.toRegex?u(h,null,{wrap:!1,options:A}):h})(e,t,Math.max(Math.abs(r),1),n):null==r||o(r)?C(e,t,1,r):((e,t)=>{if(!0===t.strictRanges)throw new TypeError(`Expected step "${e}" to be a number`);return[]})(r,n)};e.exports=C},50683:e=>{e.exports=function(e){return[...e].reduce((e,[t,r])=>(e[t]=r,e),{})}},13302:(e,t,r)=>{e.exports=r(35747).constants||r(27619)},72137:(e,t,r)=>{"use strict";const{PassThrough:A}=r(92413);e.exports=e=>{e={...e};const{array:t}=e;let{encoding:r}=e;const n="buffer"===r;let o=!1;t?o=!(r||n):r=r||"utf8",n&&(r=null);const i=new A({objectMode:o});r&&i.setEncoding(r);let s=0;const a=[];return i.on("data",e=>{a.push(e),o?s=a.length:s+=e.length}),i.getBufferedValue=()=>t?a:n?Buffer.concat(a,s):a.join(""),i.getBufferedLength=()=>s,i}},58764:(e,t,r)=>{"use strict";const A=r(50372),n=r(72137);class o extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}async function i(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t={maxBuffer:1/0,...t};const{maxBuffer:r}=t;let i;return await new Promise((s,a)=>{const c=e=>{e&&(e.bufferedData=i.getBufferedValue()),a(e)};i=A(e,n(t),e=>{e?c(e):s()}),i.on("data",()=>{i.getBufferedLength()>r&&c(new o)})}),i.getBufferedValue()}e.exports=i,e.exports.default=i,e.exports.buffer=(e,t)=>i(e,{...t,encoding:"buffer"}),e.exports.array=(e,t)=>i(e,{...t,array:!0}),e.exports.MaxBufferError=o},97098:(e,t,r)=>{"use strict";var A=r(18193),n=r(85622).posix.dirname,o="win32"===r(12087).platform(),i=/\\/g,s=/[\{\[].*[\/]*.*[\}\]]$/,a=/(^|[^\\])([\{\[]|\([^\)]+$)/,c=/\\([\*\?\|\[\]\(\)\{\}])/g;e.exports=function(e,t){Object.assign({flipBackslashes:!0},t).flipBackslashes&&o&&e.indexOf("/")<0&&(e=e.replace(i,"/")),s.test(e)&&(e+="/"),e+="a";do{e=n(e)}while(A(e)||a.test(e));return e.replace(c,"$1")}},90734:(e,t,r)=>{"use strict";const{promisify:A}=r(31669),n=r(35747),o=r(85622),i=r(19347),s=r(46458),a=r(17234),c=["**/node_modules/**","**/flow-typed/**","**/coverage/**","**/.git"],g=A(n.readFile),l=(e,t)=>{const r=a(o.relative(t.cwd,o.dirname(t.fileName)));return e.split(/\r?\n/).filter(Boolean).filter(e=>!e.startsWith("#")).map((e=>t=>t.startsWith("!")?"!"+o.posix.join(e,t.slice(1)):o.posix.join(e,t))(r))},u=e=>e.reduce((e,t)=>(e.add(l(t.content,{cwd:t.cwd,fileName:t.filePath})),e),s()),h=(e,t)=>r=>e.ignores(a(o.relative(t,((e,t)=>{if(e=a(e),o.isAbsolute(t)){if(t.startsWith(e))return t;throw new Error(`Path ${t} is not in cwd ${e}`)}return o.join(e,t)})(t,r)))),p=({ignore:e=[],cwd:t=a(process.cwd())}={})=>({ignore:e,cwd:t});e.exports=async e=>{e=p(e);const t=await i("**/.gitignore",{ignore:c.concat(e.ignore),cwd:e.cwd}),r=await Promise.all(t.map(t=>(async(e,t)=>{const r=o.join(t,e);return{cwd:t,filePath:r,content:await g(r,"utf8")}})(t,e.cwd))),A=u(r);return h(A,e.cwd)},e.exports.sync=e=>{e=p(e);const t=i.sync("**/.gitignore",{ignore:c.concat(e.ignore),cwd:e.cwd}).map(t=>((e,t)=>{const r=o.join(t,e);return{cwd:t,filePath:r,content:n.readFileSync(r,"utf8")}})(t,e.cwd)),r=u(t);return h(r,e.cwd)}},58592:(e,t,r)=>{"use strict";const A=r(35747),n=r(39920),o=r(55598),i=r(19347),s=r(66241),a=r(90734),{FilterStream:c,UniqueStream:g}=r(66160),l=()=>!1,u=e=>"!"===e[0],h=(e,t)=>{(e=>{if(!e.every(e=>"string"==typeof e))throw new TypeError("Patterns must be a string or an array of strings")})(e=n([].concat(e))),((e={})=>{if(!e.cwd)return;let t;try{t=A.statSync(e.cwd)}catch(e){return}if(!t.isDirectory())throw new Error("The `cwd` option must be a path to a directory")})(t);const r=[];t={ignore:[],expandDirectories:!0,...t};for(const[A,n]of e.entries()){if(u(n))continue;const o=e.slice(A).filter(u).map(e=>e.slice(1)),i={...t,ignore:t.ignore.concat(o)};r.push({pattern:n,options:i})}return r},p=(e,t)=>e.options.expandDirectories?((e,t)=>{let r={};return e.options.cwd&&(r.cwd=e.options.cwd),Array.isArray(e.options.expandDirectories)?r={...r,files:e.options.expandDirectories}:"object"==typeof e.options.expandDirectories&&(r={...r,...e.options.expandDirectories}),t(e.pattern,r)})(e,t):[e.pattern],d=e=>e&&e.gitignore?a.sync({cwd:e.cwd,ignore:e.ignore}):l,C=e=>t=>{const{options:r}=e;return r.ignore&&Array.isArray(r.ignore)&&r.expandDirectories&&(r.ignore=s.sync(r.ignore)),{pattern:t,options:r}};e.exports=async(e,t)=>{const r=h(e,t),[o,c]=await Promise.all([(async()=>t&&t.gitignore?a({cwd:t.cwd,ignore:t.ignore}):l)(),(async()=>{const e=await Promise.all(r.map(async e=>{const t=await p(e,s);return Promise.all(t.map(C(e)))}));return n(...e)})()]),g=await Promise.all(c.map(e=>i(e.pattern,e.options)));return n(...g).filter(e=>{return!o((t=e,t.stats instanceof A.Stats?t.path:t));var t})},e.exports.sync=(e,t)=>{const r=h(e,t).reduce((e,t)=>{const r=p(t,s.sync).map(C(t));return e.concat(r)},[]),A=d(t);return r.reduce((e,t)=>n(e,i.sync(t.pattern,t.options)),[]).filter(e=>!A(e))},e.exports.stream=(e,t)=>{const r=h(e,t).reduce((e,t)=>{const r=p(t,s.sync).map(C(t));return e.concat(r)},[]),A=d(t),n=new c(e=>!A(e)),a=new g;return o(r.map(e=>i.stream(e.pattern,e.options))).pipe(n).pipe(a)},e.exports.generateGlobTasks=h,e.exports.hasMagic=(e,t)=>[].concat(e).some(e=>i.isDynamicPattern(e,t)),e.exports.gitignore=a},66160:(e,t,r)=>{"use strict";const{Transform:A}=r(92413);class n extends A{constructor(){super({objectMode:!0})}}e.exports={FilterStream:class extends n{constructor(e){super(),this._filter=e}_transform(e,t,r){this._filter(e)&&this.push(e),r()}},UniqueStream:class extends n{constructor(){super(),this._pushed=new Set}_transform(e,t,r){this._pushed.has(e)||(this.push(e),this._pushed.add(e)),r()}}}},93576:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(14756);t.default=function(e,...t){const r=(async()=>{if(e instanceof A.RequestError)try{for(const r of t)if(r)for(const t of r)e=await t(e)}catch(t){e=t}throw e})(),n=()=>r;return r.json=n,r.text=n,r.buffer=n,r.on=n,r}},81588:function(e,t,r){"use strict";var A=this&&this.__createBinding||(Object.create?function(e,t,r,A){void 0===A&&(A=r),Object.defineProperty(e,A,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,A){void 0===A&&(A=r),e[A]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||A(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0});const o=r(28614),i=r(7966),s=r(59351),a=r(14756),c=r(54718),g=r(9048),l=r(51743),u=r(57854),h=r(38206),p=["request","response","redirect","uploadProgress","downloadProgress"];t.default=function e(t){let r,A;const n=new o.EventEmitter,d=new s((o,s,C)=>{const f=I=>{const E=new g.default(void 0,t);E.retryCount=I,E._noPipe=!0,C(()=>E.destroy()),C.shouldReject=!1,C(()=>s(new a.CancelError(E))),r=E,E.once("response",async t=>{var r;if(t.retryCount=I,t.request.aborted)return;let n;try{n=await u.default(E),t.rawBody=n}catch(e){return}if(E._isAboutToError)return;const i=(null!==(r=t.headers["content-encoding"])&&void 0!==r?r:"").toLowerCase(),s=["gzip","deflate","br"].includes(i),{options:l}=E;if(s&&!l.decompress)t.body=n;else try{t.body=c.default(t,l.responseType,l.parseJson,l.encoding)}catch(e){if(t.body=n.toString(),h.isResponseOk(t))return void E._beforeError(e)}try{for(const[r,A]of l.hooks.afterResponse.entries())t=await A(t,async t=>{const A=g.default.normalizeArguments(void 0,{...t,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},l);A.hooks.afterResponse=A.hooks.afterResponse.slice(0,r);for(const e of A.hooks.beforeRetry)await e(A);const n=e(A);return C(()=>{n.catch(()=>{}),n.cancel()}),n})}catch(e){return void E._beforeError(new a.RequestError(e.message,e,E))}h.isResponseOk(t)?(A=t,o(E.options.resolveBodyOnly?t.body:t)):E._beforeError(new a.HTTPError(t))});const B=e=>{if(d.isCanceled)return;const{options:t}=E;if(e instanceof a.HTTPError&&!t.throwHttpErrors){const{response:t}=e;o(E.options.resolveBodyOnly?t.body:t)}else s(e)};E.once("error",B),E.once("retry",(e,t)=>{var r;i.default.nodeStream(null===(r=t.request)||void 0===r?void 0:r.options.body)?B(t):f(e)}),l.default(E,n,p)};f(0)});d.on=(e,t)=>(n.on(e,t),d);const C=e=>{const t=(async()=>{await d;const{options:t}=A.request;return c.default(A,e,t.parseJson,t.encoding)})();return Object.defineProperties(t,Object.getOwnPropertyDescriptors(d)),t};return d.json=()=>{const{headers:e}=r.options;return r.writableFinished||void 0!==e.accept||(e.accept="application/json"),C("json")},d.buffer=()=>C("buffer"),d.text=()=>C("text"),d},n(r(14756),t)},41514:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(7966);t.default=(e,t)=>{if(A.default.null_(e.encoding))throw new TypeError("To get a Buffer, set `options.responseType` to `buffer` instead");A.assert.any([A.default.string,A.default.undefined],e.encoding),A.assert.any([A.default.boolean,A.default.undefined],e.resolveBodyOnly),A.assert.any([A.default.boolean,A.default.undefined],e.methodRewriting),A.assert.any([A.default.boolean,A.default.undefined],e.isStream),A.assert.any([A.default.string,A.default.undefined],e.responseType),void 0===e.responseType&&(e.responseType="text");const{retry:r}=e;if(e.retry=t?{...t.retry}:{calculateDelay:e=>e.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},A.default.object(r)?(e.retry={...e.retry,...r},e.retry.methods=[...new Set(e.retry.methods.map(e=>e.toUpperCase()))],e.retry.statusCodes=[...new Set(e.retry.statusCodes)],e.retry.errorCodes=[...new Set(e.retry.errorCodes)]):A.default.number(r)&&(e.retry.limit=r),A.default.undefined(e.retry.maxRetryAfter)&&(e.retry.maxRetryAfter=Math.min(...[e.timeout.request,e.timeout.connect].filter(A.default.number))),A.default.object(e.pagination)){t&&(e.pagination={...t.pagination,...e.pagination});const{pagination:r}=e;if(!A.default.function_(r.transform))throw new Error("`options.pagination.transform` must be implemented");if(!A.default.function_(r.shouldContinue))throw new Error("`options.pagination.shouldContinue` must be implemented");if(!A.default.function_(r.filter))throw new TypeError("`options.pagination.filter` must be implemented");if(!A.default.function_(r.paginate))throw new Error("`options.pagination.paginate` must be implemented")}return"json"===e.responseType&&void 0===e.headers.accept&&(e.headers.accept="application/json"),e}},54718:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(14756);t.default=(e,t,r,n)=>{const{rawBody:o}=e;try{if("text"===t)return o.toString(n);if("json"===t)return 0===o.length?"":r(o.toString());if("buffer"===t)return o;throw new A.ParseError({message:`Unknown body type '${t}'`,name:"Error"},e)}catch(t){throw new A.ParseError(t,e)}}},14756:function(e,t,r){"use strict";var A=this&&this.__createBinding||(Object.create?function(e,t,r,A){void 0===A&&(A=r),Object.defineProperty(e,A,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,A){void 0===A&&(A=r),e[A]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||A(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.CancelError=t.ParseError=void 0;const o=r(9048);class i extends o.RequestError{constructor(e,t){const{options:r}=t.request;super(`${e.message} in "${r.url.toString()}"`,e,t.request),this.name="ParseError"}}t.ParseError=i;class s extends o.RequestError{constructor(e){super("Promise was canceled",{},e),this.name="CancelError"}get isCanceled(){return!0}}t.CancelError=s,n(r(9048),t)},53843:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.retryAfterStatusCodes=void 0,t.retryAfterStatusCodes=new Set([413,429,503]);t.default=({attemptCount:e,retryOptions:t,error:r,retryAfter:A})=>{if(e>t.limit)return 0;const n=t.methods.includes(r.options.method),o=t.errorCodes.includes(r.code),i=r.response&&t.statusCodes.includes(r.response.statusCode);if(!n||!o&&!i)return 0;if(r.response){if(A)return void 0===t.maxRetryAfter||A>t.maxRetryAfter?0:A;if(413===r.response.statusCode)return 0}return 2**(e-1)*1e3+100*Math.random()}},9048:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.UnsupportedProtocolError=t.ReadError=t.TimeoutError=t.UploadError=t.CacheError=t.HTTPError=t.MaxRedirectsError=t.RequestError=t.setNonEnumerableProperties=t.knownHookEvents=t.withoutBody=t.kIsNormalizedAlready=void 0;const A=r(31669),n=r(92413),o=r(35747),i=r(78835),s=r(98605),a=r(98605),c=r(57211),g=r(98298),l=r(30093),u=r(11200),h=r(93868),p=r(92353),d=r(55737),C=r(7966),f=r(78586),I=r(2920),E=r(51743),B=r(44947),y=r(50116),m=r(82524),w=r(85551),Q=r(57854),D=r(11338),b=r(38206),v=r(54595),S=r(41514),k=r(53843),N=new l.default,F=Symbol("request"),K=Symbol("response"),M=Symbol("responseSize"),R=Symbol("downloadedSize"),x=Symbol("bodySize"),L=Symbol("uploadedSize"),P=Symbol("serverResponsesPiped"),O=Symbol("unproxyEvents"),U=Symbol("isFromCache"),T=Symbol("cancelTimeouts"),j=Symbol("startedReading"),Y=Symbol("stopReading"),G=Symbol("triggerRead"),H=Symbol("body"),J=Symbol("jobs"),q=Symbol("originalResponse"),z=Symbol("retryTimeout");t.kIsNormalizedAlready=Symbol("isNormalizedAlready");const W=C.default.string(process.versions.brotli);t.withoutBody=new Set(["GET","HEAD"]),t.knownHookEvents=["init","beforeRequest","beforeRedirect","beforeError","beforeRetry","afterResponse"];const V=new w.default,X=new Set([300,301,302,303,304,307,308]),_=["context","body","json","form"];t.setNonEnumerableProperties=(e,t)=>{const r={};for(const t of e)if(t)for(const e of _)e in t&&(r[e]={writable:!0,configurable:!0,enumerable:!1,value:t[e]});Object.defineProperties(t,r)};class Z extends Error{constructor(e,t,r){var A;if(super(e),Error.captureStackTrace(this,this.constructor),this.name="RequestError",this.code=t.code,r instanceof se?(Object.defineProperty(this,"request",{enumerable:!1,value:r}),Object.defineProperty(this,"response",{enumerable:!1,value:r[K]}),Object.defineProperty(this,"options",{enumerable:!1,value:r.options})):Object.defineProperty(this,"options",{enumerable:!1,value:r}),this.timings=null===(A=this.request)||void 0===A?void 0:A.timings,!C.default.undefined(t.stack)){const e=this.stack.indexOf(this.message)+this.message.length,r=this.stack.slice(e).split("\n").reverse(),A=t.stack.slice(t.stack.indexOf(t.message)+t.message.length).split("\n").reverse();for(;0!==A.length&&A[0]===r[0];)r.shift();this.stack=`${this.stack.slice(0,e)}${r.reverse().join("\n")}${A.reverse().join("\n")}`}}}t.RequestError=Z;class $ extends Z{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name="MaxRedirectsError"}}t.MaxRedirectsError=$;class ee extends Z{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name="HTTPError"}}t.HTTPError=ee;class te extends Z{constructor(e,t){super(e.message,e,t),this.name="CacheError"}}t.CacheError=te;class re extends Z{constructor(e,t){super(e.message,e,t),this.name="UploadError"}}t.UploadError=re;class Ae extends Z{constructor(e,t,r){super(e.message,e,r),this.name="TimeoutError",this.event=e.event,this.timings=t}}t.TimeoutError=Ae;class ne extends Z{constructor(e,t){super(e.message,e,t),this.name="ReadError"}}t.ReadError=ne;class oe extends Z{constructor(e){super(`Unsupported protocol "${e.url.protocol}"`,{},e),this.name="UnsupportedProtocolError"}}t.UnsupportedProtocolError=oe;const ie=["socket","connect","continue","information","upgrade","timeout"];class se extends n.Duplex{constructor(e,r={},A){super({autoDestroy:!1,highWaterMark:0}),this[R]=0,this[L]=0,this.requestInitialized=!1,this[P]=new Set,this.redirects=[],this[Y]=!1,this[G]=!1,this[J]=[],this.retryCount=0,this._progressCallbacks=[];const n=()=>this._unlockWrite(),i=()=>this._lockWrite();this.on("pipe",e=>{e.prependListener("data",n),e.on("data",i),e.prependListener("end",n),e.on("end",i)}),this.on("unpipe",e=>{e.off("data",n),e.off("data",i),e.off("end",n),e.off("end",i)}),this.on("pipe",e=>{e instanceof a.IncomingMessage&&(this.options.headers={...e.headers,...this.options.headers})});const{json:s,body:c,form:g}=r;if((s||c||g)&&this._lockWrite(),t.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,A)}catch(e){return C.default.nodeStream(r.body)&&r.body.destroy(),void this.destroy(e)}(async()=>{var e;try{this.options.body instanceof o.ReadStream&&await(async e=>new Promise((t,r)=>{const A=e=>{r(e)};e.pending||t(),e.once("error",A),e.once("ready",()=>{e.off("error",A),t()})}))(this.options.body);const{url:t}=this.options;if(!t)throw new TypeError("Missing `url` property");if(this.requestUrl=t.toString(),decodeURI(this.requestUrl),await this._finalizeBody(),await this._makeRequest(),this.destroyed)return void(null===(e=this[F])||void 0===e||e.destroy());for(const e of this[J])e();this[J].length=0,this.requestInitialized=!0}catch(e){if(e instanceof Z)return void this._beforeError(e);this.destroyed||this.destroy(e)}})()}static normalizeArguments(e,r,n){var o,s,a,c,g;const l=r;if(C.default.object(e)&&!C.default.urlInstance(e))r={...n,...e,...r};else{if(e&&r&&void 0!==r.url)throw new TypeError("The `url` option is mutually exclusive with the `input` argument");r={...n,...r},void 0!==e&&(r.url=e),C.default.urlInstance(r.url)&&(r.url=new i.URL(r.url.toString()))}if(!1===r.cache&&(r.cache=void 0),!1===r.dnsCache&&(r.dnsCache=void 0),C.assert.any([C.default.string,C.default.undefined],r.method),C.assert.any([C.default.object,C.default.undefined],r.headers),C.assert.any([C.default.string,C.default.urlInstance,C.default.undefined],r.prefixUrl),C.assert.any([C.default.object,C.default.undefined],r.cookieJar),C.assert.any([C.default.object,C.default.string,C.default.undefined],r.searchParams),C.assert.any([C.default.object,C.default.string,C.default.undefined],r.cache),C.assert.any([C.default.object,C.default.number,C.default.undefined],r.timeout),C.assert.any([C.default.object,C.default.undefined],r.context),C.assert.any([C.default.object,C.default.undefined],r.hooks),C.assert.any([C.default.boolean,C.default.undefined],r.decompress),C.assert.any([C.default.boolean,C.default.undefined],r.ignoreInvalidCookies),C.assert.any([C.default.boolean,C.default.undefined],r.followRedirect),C.assert.any([C.default.number,C.default.undefined],r.maxRedirects),C.assert.any([C.default.boolean,C.default.undefined],r.throwHttpErrors),C.assert.any([C.default.boolean,C.default.undefined],r.http2),C.assert.any([C.default.boolean,C.default.undefined],r.allowGetBody),C.assert.any([C.default.string,C.default.undefined],r.localAddress),C.assert.any([D.isDnsLookupIpVersion,C.default.undefined],r.dnsLookupIpVersion),C.assert.any([C.default.object,C.default.undefined],r.https),C.assert.any([C.default.boolean,C.default.undefined],r.rejectUnauthorized),r.https&&(C.assert.any([C.default.boolean,C.default.undefined],r.https.rejectUnauthorized),C.assert.any([C.default.function_,C.default.undefined],r.https.checkServerIdentity),C.assert.any([C.default.string,C.default.object,C.default.array,C.default.undefined],r.https.certificateAuthority),C.assert.any([C.default.string,C.default.object,C.default.array,C.default.undefined],r.https.key),C.assert.any([C.default.string,C.default.object,C.default.array,C.default.undefined],r.https.certificate),C.assert.any([C.default.string,C.default.undefined],r.https.passphrase),C.assert.any([C.default.string,C.default.buffer,C.default.array,C.default.undefined],r.https.pfx)),C.assert.any([C.default.object,C.default.undefined],r.cacheOptions),C.default.string(r.method)?r.method=r.method.toUpperCase():r.method="GET",r.headers===(null==n?void 0:n.headers)?r.headers={...r.headers}:r.headers=d({...null==n?void 0:n.headers,...r.headers}),"slashes"in r)throw new TypeError("The legacy `url.Url` has been deprecated. Use `URL` instead.");if("auth"in r)throw new TypeError("Parameter `auth` is deprecated. Use `username` / `password` instead.");if("searchParams"in r&&r.searchParams&&r.searchParams!==(null==n?void 0:n.searchParams)){let e;if(C.default.string(r.searchParams)||r.searchParams instanceof i.URLSearchParams)e=new i.URLSearchParams(r.searchParams);else{!function(e){for(const t in e){const r=e[t];if(!(C.default.string(r)||C.default.number(r)||C.default.boolean(r)||C.default.null_(r)||C.default.undefined(r)))throw new TypeError(`The \`searchParams\` value '${String(r)}' must be a string, number, boolean or null`)}}(r.searchParams),e=new i.URLSearchParams;for(const t in r.searchParams){const A=r.searchParams[t];null===A?e.append(t,""):void 0!==A&&e.append(t,A)}}null===(o=null==n?void 0:n.searchParams)||void 0===o||o.forEach((t,r)=>{e.has(r)||e.append(r,t)}),r.searchParams=e}if(r.username=null!==(s=r.username)&&void 0!==s?s:"",r.password=null!==(a=r.password)&&void 0!==a?a:"",C.default.undefined(r.prefixUrl)?r.prefixUrl=null!==(c=null==n?void 0:n.prefixUrl)&&void 0!==c?c:"":(r.prefixUrl=r.prefixUrl.toString(),""===r.prefixUrl||r.prefixUrl.endsWith("/")||(r.prefixUrl+="/")),C.default.string(r.url)){if(r.url.startsWith("/"))throw new Error("`input` must not start with a slash when using `prefixUrl`");r.url=m.default(r.prefixUrl+r.url,r)}else(C.default.undefined(r.url)&&""!==r.prefixUrl||r.protocol)&&(r.url=m.default(r.prefixUrl,r));if(r.url){"port"in r&&delete r.port;let{prefixUrl:e}=r;Object.defineProperty(r,"prefixUrl",{set:t=>{const A=r.url;if(!A.href.startsWith(t))throw new Error(`Cannot change \`prefixUrl\` from ${e} to ${t}: ${A.href}`);r.url=new i.URL(t+A.href.slice(e.length)),e=t},get:()=>e});let{protocol:t}=r.url;if("unix:"===t&&(t="http:",r.url=new i.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),"http:"!==t&&"https:"!==t)throw new oe(r);""===r.username?r.username=r.url.username:r.url.username=r.username,""===r.password?r.password=r.url.password:r.url.password=r.password}const{cookieJar:h}=r;if(h){let{setCookie:e,getCookieString:t}=h;C.assert.function_(e),C.assert.function_(t),4===e.length&&0===t.length&&(e=A.promisify(e.bind(r.cookieJar)),t=A.promisify(t.bind(r.cookieJar)),r.cookieJar={setCookie:e,getCookieString:t})}const{cache:p}=r;if(p&&(V.has(p)||V.set(p,new u((e,t)=>{const r=e[F](e,t);return C.default.promise(r)&&(r.once=(e,t)=>{if("error"===e)r.catch(t);else{if("abort"!==e)throw new Error("Unknown HTTP2 promise event: "+e);(async()=>{try{(await r).once("abort",t)}catch(e){}})()}return r}),r},p))),r.cacheOptions={...r.cacheOptions},!0===r.dnsCache)r.dnsCache=N;else if(!C.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError("Parameter `dnsCache` must be a CacheableLookup instance or a boolean, got "+C.default(r.dnsCache));C.default.number(r.timeout)?r.timeout={request:r.timeout}:n&&r.timeout!==n.timeout?r.timeout={...n.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});const f=r.hooks===(null==n?void 0:n.hooks);r.hooks={...r.hooks};for(const e of t.knownHookEvents)if(e in r.hooks){if(!C.default.array(r.hooks[e]))throw new TypeError(`Parameter \`${e}\` must be an Array, got ${C.default(r.hooks[e])}`);r.hooks[e]=[...r.hooks[e]]}else r.hooks[e]=[];if(n&&!f)for(const e of t.knownHookEvents){0!==n.hooks[e].length&&(r.hooks[e]=[...n.hooks[e],...r.hooks[e]])}if("family"in r&&v.default('"options.family" was never documented, please use "options.dnsLookupIpVersion"'),(null==n?void 0:n.https)&&(r.https={...n.https,...r.https}),"rejectUnauthorized"in r&&v.default('"options.rejectUnauthorized" is now deprecated, please use "options.https.rejectUnauthorized"'),"checkServerIdentity"in r&&v.default('"options.checkServerIdentity" was never documented, please use "options.https.checkServerIdentity"'),"ca"in r&&v.default('"options.ca" was never documented, please use "options.https.certificateAuthority"'),"key"in r&&v.default('"options.key" was never documented, please use "options.https.key"'),"cert"in r&&v.default('"options.cert" was never documented, please use "options.https.certificate"'),"passphrase"in r&&v.default('"options.passphrase" was never documented, please use "options.https.passphrase"'),"pfx"in r&&v.default('"options.pfx" was never documented, please use "options.https.pfx"'),"followRedirects"in r)throw new TypeError("The `followRedirects` option does not exist. Use `followRedirect` instead.");if(r.agent)for(const e in r.agent)if("http"!==e&&"https"!==e&&"http2"!==e)throw new TypeError(`Expected the \`options.agent\` properties to be \`http\`, \`https\` or \`http2\`, got \`${e}\``);return r.maxRedirects=null!==(g=r.maxRedirects)&&void 0!==g?g:0,t.setNonEnumerableProperties([n,l],r),S.default(r,n)}_lockWrite(){const e=()=>{throw new TypeError("The payload has been already provided")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){const{options:e}=this,{headers:r}=e,A=!C.default.undefined(e.form),o=!C.default.undefined(e.json),s=!C.default.undefined(e.body),a=A||o||s,c=t.withoutBody.has(e.method)&&!("GET"===e.method&&e.allowGetBody);if(this._cannotHaveBody=c,a){if(c)throw new TypeError(`The \`${e.method}\` method cannot be used with a body`);if([s,A,o].filter(e=>e).length>1)throw new TypeError("The `body`, `json` and `form` options are mutually exclusive");if(s&&!(e.body instanceof n.Readable)&&!C.default.string(e.body)&&!C.default.buffer(e.body)&&!I.default(e.body))throw new TypeError("The `body` option must be a stream.Readable, string or Buffer");if(A&&!C.default.object(e.form))throw new TypeError("The `form` option must be an Object");{const t=!C.default.string(r["content-type"]);s?(I.default(e.body)&&t&&(r["content-type"]="multipart/form-data; boundary="+e.body.getBoundary()),this[H]=e.body):A?(t&&(r["content-type"]="application/x-www-form-urlencoded"),this[H]=new i.URLSearchParams(e.form).toString()):(t&&(r["content-type"]="application/json"),this[H]=e.stringifyJson(e.json));const n=await f.default(this[H],e.headers);C.default.undefined(r["content-length"])&&C.default.undefined(r["transfer-encoding"])&&(c||C.default.undefined(n)||(r["content-length"]=String(n)))}}else c?this._lockWrite():this._unlockWrite();this[x]=Number(r["content-length"])||void 0}async _onResponseBase(e){const{options:t}=this,{url:r}=t;this[q]=e,t.decompress&&(e=h(e));const A=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:s.STATUS_CODES[A],n.url=t.url.toString(),n.requestUrl=this.requestUrl,n.redirectUrls=this.redirects,n.request=this,n.isFromCache=e.fromCache||!1,n.ip=this.ip,n.retryCount=this.retryCount,this[U]=n.isFromCache,this[M]=Number(e.headers["content-length"])||void 0,this[K]=e,e.once("end",()=>{this[M]=this[R],this.emit("downloadProgress",this.downloadProgress)}),e.once("error",t=>{e.destroy(),this._beforeError(new ne(t,this))}),e.once("aborted",()=>{this._beforeError(new ne({name:"Error",message:"The server aborted pending request",code:"ECONNRESET"},this))}),this.emit("downloadProgress",this.downloadProgress);const o=e.headers["set-cookie"];if(C.default.object(t.cookieJar)&&o){let e=o.map(async e=>t.cookieJar.setCookie(e,r.toString()));t.ignoreInvalidCookies&&(e=e.map(async e=>e.catch(()=>{})));try{await Promise.all(e)}catch(e){return void this._beforeError(e)}}if(t.followRedirect&&e.headers.location&&X.has(A)){e.resume(),this[F]&&(this[T](),delete this[F],this[O]());if(!(303===A&&"GET"!==t.method&&"HEAD"!==t.method)&&t.methodRewriting||(t.method="GET","body"in t&&delete t.body,"json"in t&&delete t.json,"form"in t&&delete t.form,this[H]=void 0,delete t.headers["content-length"]),this.redirects.length>=t.maxRedirects)return void this._beforeError(new $(this));try{const A=Buffer.from(e.headers.location,"binary").toString(),o=new i.URL(A,r),s=o.toString();decodeURI(s),o.hostname!==r.hostname||o.port!==r.port?("host"in t.headers&&delete t.headers.host,"cookie"in t.headers&&delete t.headers.cookie,"authorization"in t.headers&&delete t.headers.authorization,(t.username||t.password)&&(t.username="",t.password="")):(o.username=t.username,o.password=t.password),this.redirects.push(s),t.url=o;for(const e of t.hooks.beforeRedirect)await e(t,n);this.emit("redirect",n,t),await this._makeRequest()}catch(e){return void this._beforeError(e)}}else if(t.isStream&&t.throwHttpErrors&&!b.isResponseOk(n))this._beforeError(new ee(n));else{e.on("readable",()=>{this[G]&&this._read()}),this.on("resume",()=>{e.resume()}),this.on("pause",()=>{e.pause()}),e.once("end",()=>{this.push(null)}),this.emit("response",e);for(const r of this[P])if(!r.headersSent){for(const A in e.headers){const n=!t.decompress||"content-encoding"!==A,o=e.headers[A];n&&r.setHeader(A,o)}r.statusCode=A}}}async _onResponse(e){try{await this._onResponseBase(e)}catch(e){this._beforeError(e)}}_onRequest(e){const{options:t}=this,{timeout:r,url:A}=t;g.default(e),this[T]=B.default(e,r,A);const n=t.cache?"cacheableResponse":"response";e.once(n,e=>{this._onResponse(e)}),e.once("error",t=>{var r;e.destroy(),null===(r=e.res)||void 0===r||r.removeAllListeners("end"),t=t instanceof B.TimeoutError?new Ae(t,this.timings,this):new Z(t.message,t,this),this._beforeError(t)}),this[O]=E.default(e,this,ie),this[F]=e,this.emit("uploadProgress",this.uploadProgress);const o=this[H],i=0===this.redirects.length?this:e;C.default.nodeStream(o)?(o.pipe(i),o.once("error",e=>{this._beforeError(new re(e,this))})):(this._unlockWrite(),C.default.undefined(o)?(this._cannotHaveBody||this._noPipe)&&(i.end(),this._lockWrite()):(this._writeRequest(o,void 0,()=>{}),i.end(),this._lockWrite())),this.emit("request",e)}async _createCacheableRequest(e,t){return new Promise((r,A)=>{let n;Object.assign(t,y.default(e)),delete t.url;const o=V.get(t.cache)(t,async e=>{e._readableState.autoDestroy=!1,n&&(await n).emit("cacheableResponse",e),r(e)});t.url=e,o.once("error",A),o.once("request",async e=>{n=e,r(n)})})}async _makeRequest(){var e,t,r,A,n;const{options:o}=this,{headers:i}=o;for(const e in i)if(C.default.undefined(i[e]))delete i[e];else if(C.default.null_(i[e]))throw new TypeError(`Use \`undefined\` instead of \`null\` to delete the \`${e}\` header`);if(o.decompress&&C.default.undefined(i["accept-encoding"])&&(i["accept-encoding"]=W?"gzip, deflate, br":"gzip, deflate"),o.cookieJar){const e=await o.cookieJar.getCookieString(o.url.toString());C.default.nonEmptyString(e)&&(o.headers.cookie=e)}for(const e of o.hooks.beforeRequest){const t=await e(o);if(!C.default.undefined(t)){o.request=()=>t;break}}o.body&&this[H]!==o.body&&(this[H]=o.body);const{agent:a,request:g,timeout:l,url:h}=o;if(o.dnsCache&&!("lookup"in o)&&(o.lookup=o.dnsCache.lookup),"unix"===h.hostname){const e=/(?.+?):(?.+)/.exec(`${h.pathname}${h.search}`);if(null==e?void 0:e.groups){const{socketPath:t,path:r}=e.groups;Object.assign(o,{socketPath:t,path:r,host:""})}}const d="https:"===h.protocol;let f;f=o.http2?p.auto:d?c.request:s.request;const I=null!==(e=o.request)&&void 0!==e?e:f,E=o.cache?this._createCacheableRequest:I;a&&!o.http2&&(o.agent=a[d?"https":"http"]),o[F]=I,delete o.request,delete o.timeout;const B=o;if(B.shared=null===(t=o.cacheOptions)||void 0===t?void 0:t.shared,B.cacheHeuristic=null===(r=o.cacheOptions)||void 0===r?void 0:r.cacheHeuristic,B.immutableMinTimeToLive=null===(A=o.cacheOptions)||void 0===A?void 0:A.immutableMinTimeToLive,B.ignoreCargoCult=null===(n=o.cacheOptions)||void 0===n?void 0:n.ignoreCargoCult,void 0!==o.dnsLookupIpVersion)try{B.family=D.dnsLookupIpVersionToFamily(o.dnsLookupIpVersion)}catch(e){throw new Error("Invalid `dnsLookupIpVersion` option value")}o.https&&("rejectUnauthorized"in o.https&&(B.rejectUnauthorized=o.https.rejectUnauthorized),o.https.checkServerIdentity&&(B.checkServerIdentity=o.https.checkServerIdentity),o.https.certificateAuthority&&(B.ca=o.https.certificateAuthority),o.https.certificate&&(B.cert=o.https.certificate),o.https.key&&(B.key=o.https.key),o.https.passphrase&&(B.passphrase=o.https.passphrase),o.https.pfx&&(B.pfx=o.https.pfx));try{let e=await E(h,B);C.default.undefined(e)&&(e=f(h,B)),o.request=g,o.timeout=l,o.agent=a,o.https&&("rejectUnauthorized"in o.https&&delete B.rejectUnauthorized,o.https.checkServerIdentity&&delete B.checkServerIdentity,o.https.certificateAuthority&&delete B.ca,o.https.certificate&&delete B.cert,o.https.key&&delete B.key,o.https.passphrase&&delete B.passphrase,o.https.pfx&&delete B.pfx),y=e,C.default.object(y)&&!("statusCode"in y)?this._onRequest(e):this.writable?(this.once("finish",()=>{this._onResponse(e)}),this._unlockWrite(),this.end(),this._lockWrite()):this._onResponse(e)}catch(e){if(e instanceof u.CacheError)throw new te(e,this);throw new Z(e.message,e,this)}var y}async _error(e){try{for(const t of this.options.hooks.beforeError)e=await t(e)}catch(t){e=new Z(t.message,t,this)}this.destroy(e)}_beforeError(e){if(this[Y])return;const{options:t}=this,r=this.retryCount+1;this[Y]=!0,e instanceof Z||(e=new Z(e.message,e,this));const A=e,{response:n}=A;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Q.default(n),n.body=n.rawBody.toString()}catch(e){}}if(0!==this.listenerCount("retry")){let o;try{let e;n&&"retry-after"in n.headers&&(e=Number(n.headers["retry-after"]),Number.isNaN(e)?(e=Date.parse(n.headers["retry-after"])-Date.now(),e<=0&&(e=1)):e*=1e3),o=await t.retry.calculateDelay({attemptCount:r,retryOptions:t.retry,error:A,retryAfter:e,computedValue:k.default({attemptCount:r,retryOptions:t.retry,error:A,retryAfter:e,computedValue:0})})}catch(e){return void this._error(new Z(e.message,e,this))}if(o){const t=async()=>{try{for(const e of this.options.hooks.beforeRetry)await e(this.options,A,r)}catch(t){return void this._error(new Z(t.message,e,this))}this.destroyed||(this.destroy(),this.emit("retry",r,e))};return void(this[z]=setTimeout(t,o))}}this._error(A)})()}_read(){this[G]=!0;const e=this[K];if(e&&!this[Y]){let t;for(e.readableLength&&(this[G]=!1);null!==(t=e.read());){this[R]+=t.length,this[j]=!0;const e=this.downloadProgress;e.percent<1&&this.emit("downloadProgress",e),this.push(t)}}}_write(e,t,r){const A=()=>{this._writeRequest(e,t,r)};this.requestInitialized?A():this[J].push(A)}_writeRequest(e,t,r){this[F].destroyed||(this._progressCallbacks.push(()=>{this[L]+=Buffer.byteLength(e,t);const r=this.uploadProgress;r.percent<1&&this.emit("uploadProgress",r)}),this[F].write(e,t,e=>{e||0===this._progressCallbacks.length||this._progressCallbacks.shift()(),r(e)}))}_final(e){const t=()=>{for(;0!==this._progressCallbacks.length;)this._progressCallbacks.shift()();F in this?this[F].destroyed?e():this[F].end(t=>{t||(this[x]=this[L],this.emit("uploadProgress",this.uploadProgress),this[F].emit("upload-complete")),e(t)}):e()};this.requestInitialized?t():this[J].push(t)}_destroy(e,t){var r;this[Y]=!0,clearTimeout(this[z]),F in this&&(this[T](),(null===(r=this[K])||void 0===r?void 0:r.complete)||this[F].destroy()),null===e||C.default.undefined(e)||e instanceof Z||(e=new Z(e.message,e,this)),t(e)}get _isAboutToError(){return this[Y]}get ip(){var e;return null===(e=this[F])||void 0===e?void 0:e.socket.remoteAddress}get aborted(){var e,t,r;return(null!==(t=null===(e=this[F])||void 0===e?void 0:e.destroyed)&&void 0!==t?t:this.destroyed)&&!(null===(r=this[q])||void 0===r?void 0:r.complete)}get socket(){var e;return null===(e=this[F])||void 0===e?void 0:e.socket}get downloadProgress(){let e;return e=this[M]?this[R]/this[M]:this[M]===this[R]?1:0,{percent:e,transferred:this[R],total:this[M]}}get uploadProgress(){let e;return e=this[x]?this[L]/this[x]:this[x]===this[L]?1:0,{percent:e,transferred:this[L],total:this[x]}}get timings(){var e;return null===(e=this[F])||void 0===e?void 0:e.timings}get isFromCache(){return this[U]}pipe(e,t){if(this[j])throw new Error("Failed to pipe. The response has been emitted already.");return e instanceof a.ServerResponse&&this[P].add(e),super.pipe(e,t)}unpipe(e){return e instanceof a.ServerResponse&&this[P].delete(e),super.unpipe(e),this}}t.default=se},11338:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dnsLookupIpVersionToFamily=t.isDnsLookupIpVersion=void 0;const r={auto:0,ipv4:4,ipv6:6};t.isDnsLookupIpVersion=e=>e in r,t.dnsLookupIpVersionToFamily=e=>{if(t.isDnsLookupIpVersion(e))return r[e];throw new Error("Invalid DNS lookup IP version")}},78586:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(35747),n=r(31669),o=r(7966),i=r(2920),s=n.promisify(A.stat);t.default=async(e,t)=>{if(t&&"content-length"in t)return Number(t["content-length"]);if(!e)return 0;if(o.default.string(e))return Buffer.byteLength(e);if(o.default.buffer(e))return e.length;if(i.default(e))return n.promisify(e.getLength.bind(e))();if(e instanceof A.ReadStream){const{size:t}=await s(e.path);return t}}},57854:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default=async e=>{const t=[];let r=0;for await(const A of e)t.push(A),r+=Buffer.byteLength(A);return Buffer.isBuffer(t[0])?Buffer.concat(t,r):Buffer.from(t.join(""))}},2920:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(7966);t.default=e=>A.default.nodeStream(e)&&A.default.function_(e.getBoundary)},38206:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isResponseOk=void 0,t.isResponseOk=e=>{const{statusCode:t}=e,r=e.request.options.followRedirect?299:399;return t>=200&&t<=r||304===t}},82524:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(78835),n=["protocol","host","hostname","port","pathname","search"];t.default=(e,t)=>{var r,o;if(t.path){if(t.pathname)throw new TypeError("Parameters `path` and `pathname` are mutually exclusive.");if(t.search)throw new TypeError("Parameters `path` and `search` are mutually exclusive.");if(t.searchParams)throw new TypeError("Parameters `path` and `searchParams` are mutually exclusive.")}if(t.search&&t.searchParams)throw new TypeError("Parameters `search` and `searchParams` are mutually exclusive.");if(!e){if(!t.protocol)throw new TypeError("No URL protocol specified");e=`${t.protocol}//${null!==(o=null!==(r=t.hostname)&&void 0!==r?r:t.host)&&void 0!==o?o:""}`}const i=new A.URL(e);if(t.path){const e=t.path.indexOf("?");-1===e?t.pathname=t.path:(t.pathname=t.path.slice(0,e),t.search=t.path.slice(e+1)),delete t.path}for(const e of n)t[e]&&(i[e]=t[e].toString());return i}},51743:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,r){const A={};for(const n of r)A[n]=(...e)=>{t.emit(n,...e)},e.on(n,A[n]);return()=>{for(const t of r)e.off(t,A[t])}}},44947:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeoutError=void 0;const A=r(11631),n=r(70148),o=Symbol("reentry"),i=()=>{};class s extends Error{constructor(e,t){super(`Timeout awaiting '${t}' for ${e}ms`),this.event=t,this.name="TimeoutError",this.code="ETIMEDOUT"}}t.TimeoutError=s,t.default=(e,t,r)=>{if(o in e)return i;e[o]=!0;const a=[],{once:c,unhandleAll:g}=n.default(),l=(e,t,r)=>{var A;const n=setTimeout(t,e,e,r);null===(A=n.unref)||void 0===A||A.call(n);const o=()=>{clearTimeout(n)};return a.push(o),o},{host:u,hostname:h}=r,p=(t,r)=>{e.destroy(new s(t,r))},d=()=>{for(const e of a)e();g()};if(e.once("error",t=>{if(d(),0===e.listenerCount("error"))throw t}),e.once("close",d),c(e,"response",e=>{c(e,"end",d)}),void 0!==t.request&&l(t.request,p,"request"),void 0!==t.socket){const r=()=>{p(t.socket,"socket")};e.setTimeout(t.socket,r),a.push(()=>{e.removeListener("timeout",r)})}return c(e,"socket",n=>{var o;const{socketPath:i}=e;if(n.connecting){const e=Boolean(null!=i?i:0!==A.isIP(null!==(o=null!=h?h:u)&&void 0!==o?o:""));if(void 0!==t.lookup&&!e&&void 0===n.address().address){const e=l(t.lookup,p,"lookup");c(n,"lookup",e)}if(void 0!==t.connect){const r=()=>l(t.connect,p,"connect");e?c(n,"connect",r()):c(n,"lookup",e=>{null===e&&c(n,"connect",r())})}void 0!==t.secureConnect&&"https:"===r.protocol&&c(n,"connect",()=>{const e=l(t.secureConnect,p,"secureConnect");c(n,"secureConnect",e)})}if(void 0!==t.send){const r=()=>l(t.send,p,"send");n.connecting?c(n,"connect",()=>{c(e,"upload-complete",r())}):c(e,"upload-complete",r())}}),void 0!==t.response&&c(e,"upload-complete",()=>{const r=l(t.response,p,"response");c(e,"response",r)}),d}},70148:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=()=>{const e=[];return{once(t,r,A){t.once(r,A),e.push({origin:t,event:r,fn:A})},unhandleAll(){for(const t of e){const{origin:e,event:r,fn:A}=t;e.removeListener(r,A)}e.length=0}}}},50116:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(7966);t.default=e=>{const t={protocol:(e=e).protocol,hostname:A.default.string(e.hostname)&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return A.default.string(e.port)&&0!==e.port.length&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}},85551:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default=class{constructor(){this.weakMap=new WeakMap,this.map=new Map}set(e,t){"object"==typeof e?this.weakMap.set(e,t):this.map.set(e,t)}get(e){return"object"==typeof e?this.weakMap.get(e):this.map.get(e)}has(e){return"object"==typeof e?this.weakMap.has(e):this.map.has(e)}}},39226:function(e,t,r){"use strict";var A=this&&this.__createBinding||(Object.create?function(e,t,r,A){void 0===A&&(A=r),Object.defineProperty(e,A,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,A){void 0===A&&(A=r),e[A]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||A(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.defaultHandler=void 0;const o=r(7966),i=r(81588),s=r(93576),a=r(9048),c=r(9743),g={RequestError:i.RequestError,CacheError:i.CacheError,ReadError:i.ReadError,HTTPError:i.HTTPError,MaxRedirectsError:i.MaxRedirectsError,TimeoutError:i.TimeoutError,ParseError:i.ParseError,CancelError:i.CancelError,UnsupportedProtocolError:i.UnsupportedProtocolError,UploadError:i.UploadError},l=async e=>new Promise(t=>{setTimeout(t,e)}),{normalizeArguments:u}=a.default,h=(...e)=>{let t;for(const r of e)t=u(void 0,r,t);return t},p=e=>e.isStream?new a.default(void 0,e):i.default(e),d=e=>"defaults"in e&&"options"in e.defaults,C=["get","post","put","patch","head","delete"];t.defaultHandler=(e,t)=>t(e);const f=(e,t)=>{if(e)for(const r of e)r(t)},I=e=>{e._rawHandlers=e.handlers,e.handlers=e.handlers.map(e=>(t,r)=>{let A;const n=e(t,e=>(A=r(e),A));if(n!==A&&!t.isStream&&A){const e=n,{then:t,catch:r,finally:o}=e;Object.setPrototypeOf(e,Object.getPrototypeOf(A)),Object.defineProperties(e,Object.getOwnPropertyDescriptors(A)),e.then=t,e.catch=r,e.finally=o}return n});const r=(t,r,A)=>{var n,c;let g=0;const l=t=>e.handlers[g++](t,g===e.handlers.length?p:l);if(o.default.plainObject(t)){const e={...t,...r};a.setNonEnumerableProperties([t,r],e),r=e,t=void 0}try{let o;try{f(e.options.hooks.init,r),f(null===(n=null==r?void 0:r.hooks)||void 0===n?void 0:n.init,r)}catch(e){o=e}const s=u(t,r,null!=A?A:e.options);if(s[a.kIsNormalizedAlready]=!0,o)throw new i.RequestError(o.message,o,s);return l(s)}catch(t){if(null==r?void 0:r.isStream)throw t;return s.default(t,e.options.hooks.beforeError,null===(c=null==r?void 0:r.hooks)||void 0===c?void 0:c.beforeError)}};r.extend=(...r)=>{const A=[e.options];let n,o=[...e._rawHandlers];for(const e of r)d(e)?(A.push(e.defaults.options),o.push(...e.defaults._rawHandlers),n=e.defaults.mutableDefaults):(A.push(e),"handlers"in e&&o.push(...e.handlers),n=e.mutableDefaults);return o=o.filter(e=>e!==t.defaultHandler),0===o.length&&o.push(t.defaultHandler),I({options:h(...A),handlers:o,mutableDefaults:Boolean(n)})};const A=async function*(t,A){let n=u(t,A,e.options);n.resolveBodyOnly=!1;const i=n.pagination;if(!o.default.object(i))throw new TypeError("`options.pagination` must be implemented");const s=[];let{countLimit:a}=i,c=0;for(;c{const r=[];for await(const n of A(e,t))r.push(n);return r},r.paginate.each=A,r.stream=(e,t)=>r(e,{...t,isStream:!0});for(const e of C)r[e]=(t,A)=>r(t,{...A,method:e}),r.stream[e]=(t,A)=>r(t,{...A,method:e,isStream:!0});return Object.assign(r,g),Object.defineProperty(r,"defaults",{value:e.mutableDefaults?e:c.default(e),writable:e.mutableDefaults,configurable:e.mutableDefaults,enumerable:!0}),r.mergeOptions=h,r};t.default=I,n(r(69022),t)},48722:function(e,t,r){"use strict";var A=this&&this.__createBinding||(Object.create?function(e,t,r,A){void 0===A&&(A=r),Object.defineProperty(e,A,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,A){void 0===A&&(A=r),e[A]=t[r]}),n=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||A(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0});const o=r(78835),i=r(39226),s={options:{method:"GET",retry:{limit:2,methods:["GET","PUT","HEAD","DELETE","OPTIONS","TRACE"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:["ETIMEDOUT","ECONNRESET","EADDRINUSE","ECONNREFUSED","EPIPE","ENOTFOUND","ENETUNREACH","EAI_AGAIN"],maxRetryAfter:void 0,calculateDelay:({computedValue:e})=>e},timeout:{},headers:{"user-agent":"got (https://github.com/sindresorhus/got)"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:"text",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:"",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:e=>"json"===e.request.options.responseType?e.body:JSON.parse(e.body),paginate:e=>{if(!Reflect.has(e.headers,"link"))return!1;const t=e.headers.link.split(",");let r;for(const e of t){const t=e.split(";");if(t[1].includes("next")){r=t[0].trimStart().trim(),r=r.slice(1,-1);break}}if(r){return{url:new o.URL(r)}}return!1},filter:()=>!0,shouldContinue:()=>!0,countLimit:1/0,backoff:0,requestLimit:1e4,stackAllItems:!0},parseJson:e=>JSON.parse(e),stringifyJson:e=>JSON.stringify(e),cacheOptions:{}},handlers:[i.defaultHandler],mutableDefaults:!1},a=i.default(s);t.default=a,e.exports=a,e.exports.default=a,e.exports.__esModule=!0,n(r(39226),t),n(r(81588),t)},69022:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},9743:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const A=r(7966);t.default=function e(t){for(const r of Object.values(t))(A.default.plainObject(r)||A.default.array(r))&&e(r);return Object.freeze(t)}},54595:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=new Set;t.default=e=>{r.has(e)||(r.add(e),process.emitWarning("Got: "+e,{type:"DeprecationWarning"}))}},74988:e=>{e.exports&&(e.exports=function(){var e=3,t=4,r=12,A=13,n=16,o=17;function i(e,t){void 0===t&&(t=0);var r=e.charCodeAt(t);if(55296<=r&&r<=56319&&t=1){var n=r;return 55296<=(A=e.charCodeAt(t-1))&&A<=56319?1024*(A-55296)+(n-56320)+65536:n}return r}function s(i,s,a){var c=[i].concat(s).concat([a]),g=c[c.length-2],l=a,u=c.lastIndexOf(14);if(u>1&&c.slice(1,u).every((function(t){return t==e}))&&-1==[e,A,o].indexOf(i))return 2;var h=c.lastIndexOf(t);if(h>0&&c.slice(1,h).every((function(e){return e==t}))&&-1==[r,t].indexOf(g))return c.filter((function(e){return e==t})).length%2==1?3:4;if(0==g&&1==l)return 0;if(2==g||0==g||1==g)return 14==l&&s.every((function(t){return t==e}))?2:1;if(2==l||0==l||1==l)return 1;if(6==g&&(6==l||7==l||9==l||10==l))return 0;if(!(9!=g&&7!=g||7!=l&&8!=l))return 0;if((10==g||8==g)&&8==l)return 0;if(l==e||15==l)return 0;if(5==l)return 0;if(g==r)return 0;var p=-1!=c.indexOf(e)?c.lastIndexOf(e)-1:c.length-2;return-1!=[A,o].indexOf(c[p])&&c.slice(p+1,-1).every((function(t){return t==e}))&&14==l||15==g&&-1!=[n,o].indexOf(l)?0:-1!=s.indexOf(t)?2:g==t&&l==t?0:1}function a(i){return 1536<=i&&i<=1541||1757==i||1807==i||2274==i||3406==i||69821==i||70082<=i&&i<=70083||72250==i||72326<=i&&i<=72329||73030==i?r:13==i?0:10==i?1:0<=i&&i<=9||11<=i&&i<=12||14<=i&&i<=31||127<=i&&i<=159||173==i||1564==i||6158==i||8203==i||8206<=i&&i<=8207||8232==i||8233==i||8234<=i&&i<=8238||8288<=i&&i<=8292||8293==i||8294<=i&&i<=8303||55296<=i&&i<=57343||65279==i||65520<=i&&i<=65528||65529<=i&&i<=65531||113824<=i&&i<=113827||119155<=i&&i<=119162||917504==i||917505==i||917506<=i&&i<=917535||917632<=i&&i<=917759||918e3<=i&&i<=921599?2:768<=i&&i<=879||1155<=i&&i<=1159||1160<=i&&i<=1161||1425<=i&&i<=1469||1471==i||1473<=i&&i<=1474||1476<=i&&i<=1477||1479==i||1552<=i&&i<=1562||1611<=i&&i<=1631||1648==i||1750<=i&&i<=1756||1759<=i&&i<=1764||1767<=i&&i<=1768||1770<=i&&i<=1773||1809==i||1840<=i&&i<=1866||1958<=i&&i<=1968||2027<=i&&i<=2035||2070<=i&&i<=2073||2075<=i&&i<=2083||2085<=i&&i<=2087||2089<=i&&i<=2093||2137<=i&&i<=2139||2260<=i&&i<=2273||2275<=i&&i<=2306||2362==i||2364==i||2369<=i&&i<=2376||2381==i||2385<=i&&i<=2391||2402<=i&&i<=2403||2433==i||2492==i||2494==i||2497<=i&&i<=2500||2509==i||2519==i||2530<=i&&i<=2531||2561<=i&&i<=2562||2620==i||2625<=i&&i<=2626||2631<=i&&i<=2632||2635<=i&&i<=2637||2641==i||2672<=i&&i<=2673||2677==i||2689<=i&&i<=2690||2748==i||2753<=i&&i<=2757||2759<=i&&i<=2760||2765==i||2786<=i&&i<=2787||2810<=i&&i<=2815||2817==i||2876==i||2878==i||2879==i||2881<=i&&i<=2884||2893==i||2902==i||2903==i||2914<=i&&i<=2915||2946==i||3006==i||3008==i||3021==i||3031==i||3072==i||3134<=i&&i<=3136||3142<=i&&i<=3144||3146<=i&&i<=3149||3157<=i&&i<=3158||3170<=i&&i<=3171||3201==i||3260==i||3263==i||3266==i||3270==i||3276<=i&&i<=3277||3285<=i&&i<=3286||3298<=i&&i<=3299||3328<=i&&i<=3329||3387<=i&&i<=3388||3390==i||3393<=i&&i<=3396||3405==i||3415==i||3426<=i&&i<=3427||3530==i||3535==i||3538<=i&&i<=3540||3542==i||3551==i||3633==i||3636<=i&&i<=3642||3655<=i&&i<=3662||3761==i||3764<=i&&i<=3769||3771<=i&&i<=3772||3784<=i&&i<=3789||3864<=i&&i<=3865||3893==i||3895==i||3897==i||3953<=i&&i<=3966||3968<=i&&i<=3972||3974<=i&&i<=3975||3981<=i&&i<=3991||3993<=i&&i<=4028||4038==i||4141<=i&&i<=4144||4146<=i&&i<=4151||4153<=i&&i<=4154||4157<=i&&i<=4158||4184<=i&&i<=4185||4190<=i&&i<=4192||4209<=i&&i<=4212||4226==i||4229<=i&&i<=4230||4237==i||4253==i||4957<=i&&i<=4959||5906<=i&&i<=5908||5938<=i&&i<=5940||5970<=i&&i<=5971||6002<=i&&i<=6003||6068<=i&&i<=6069||6071<=i&&i<=6077||6086==i||6089<=i&&i<=6099||6109==i||6155<=i&&i<=6157||6277<=i&&i<=6278||6313==i||6432<=i&&i<=6434||6439<=i&&i<=6440||6450==i||6457<=i&&i<=6459||6679<=i&&i<=6680||6683==i||6742==i||6744<=i&&i<=6750||6752==i||6754==i||6757<=i&&i<=6764||6771<=i&&i<=6780||6783==i||6832<=i&&i<=6845||6846==i||6912<=i&&i<=6915||6964==i||6966<=i&&i<=6970||6972==i||6978==i||7019<=i&&i<=7027||7040<=i&&i<=7041||7074<=i&&i<=7077||7080<=i&&i<=7081||7083<=i&&i<=7085||7142==i||7144<=i&&i<=7145||7149==i||7151<=i&&i<=7153||7212<=i&&i<=7219||7222<=i&&i<=7223||7376<=i&&i<=7378||7380<=i&&i<=7392||7394<=i&&i<=7400||7405==i||7412==i||7416<=i&&i<=7417||7616<=i&&i<=7673||7675<=i&&i<=7679||8204==i||8400<=i&&i<=8412||8413<=i&&i<=8416||8417==i||8418<=i&&i<=8420||8421<=i&&i<=8432||11503<=i&&i<=11505||11647==i||11744<=i&&i<=11775||12330<=i&&i<=12333||12334<=i&&i<=12335||12441<=i&&i<=12442||42607==i||42608<=i&&i<=42610||42612<=i&&i<=42621||42654<=i&&i<=42655||42736<=i&&i<=42737||43010==i||43014==i||43019==i||43045<=i&&i<=43046||43204<=i&&i<=43205||43232<=i&&i<=43249||43302<=i&&i<=43309||43335<=i&&i<=43345||43392<=i&&i<=43394||43443==i||43446<=i&&i<=43449||43452==i||43493==i||43561<=i&&i<=43566||43569<=i&&i<=43570||43573<=i&&i<=43574||43587==i||43596==i||43644==i||43696==i||43698<=i&&i<=43700||43703<=i&&i<=43704||43710<=i&&i<=43711||43713==i||43756<=i&&i<=43757||43766==i||44005==i||44008==i||44013==i||64286==i||65024<=i&&i<=65039||65056<=i&&i<=65071||65438<=i&&i<=65439||66045==i||66272==i||66422<=i&&i<=66426||68097<=i&&i<=68099||68101<=i&&i<=68102||68108<=i&&i<=68111||68152<=i&&i<=68154||68159==i||68325<=i&&i<=68326||69633==i||69688<=i&&i<=69702||69759<=i&&i<=69761||69811<=i&&i<=69814||69817<=i&&i<=69818||69888<=i&&i<=69890||69927<=i&&i<=69931||69933<=i&&i<=69940||70003==i||70016<=i&&i<=70017||70070<=i&&i<=70078||70090<=i&&i<=70092||70191<=i&&i<=70193||70196==i||70198<=i&&i<=70199||70206==i||70367==i||70371<=i&&i<=70378||70400<=i&&i<=70401||70460==i||70462==i||70464==i||70487==i||70502<=i&&i<=70508||70512<=i&&i<=70516||70712<=i&&i<=70719||70722<=i&&i<=70724||70726==i||70832==i||70835<=i&&i<=70840||70842==i||70845==i||70847<=i&&i<=70848||70850<=i&&i<=70851||71087==i||71090<=i&&i<=71093||71100<=i&&i<=71101||71103<=i&&i<=71104||71132<=i&&i<=71133||71219<=i&&i<=71226||71229==i||71231<=i&&i<=71232||71339==i||71341==i||71344<=i&&i<=71349||71351==i||71453<=i&&i<=71455||71458<=i&&i<=71461||71463<=i&&i<=71467||72193<=i&&i<=72198||72201<=i&&i<=72202||72243<=i&&i<=72248||72251<=i&&i<=72254||72263==i||72273<=i&&i<=72278||72281<=i&&i<=72283||72330<=i&&i<=72342||72344<=i&&i<=72345||72752<=i&&i<=72758||72760<=i&&i<=72765||72767==i||72850<=i&&i<=72871||72874<=i&&i<=72880||72882<=i&&i<=72883||72885<=i&&i<=72886||73009<=i&&i<=73014||73018==i||73020<=i&&i<=73021||73023<=i&&i<=73029||73031==i||92912<=i&&i<=92916||92976<=i&&i<=92982||94095<=i&&i<=94098||113821<=i&&i<=113822||119141==i||119143<=i&&i<=119145||119150<=i&&i<=119154||119163<=i&&i<=119170||119173<=i&&i<=119179||119210<=i&&i<=119213||119362<=i&&i<=119364||121344<=i&&i<=121398||121403<=i&&i<=121452||121461==i||121476==i||121499<=i&&i<=121503||121505<=i&&i<=121519||122880<=i&&i<=122886||122888<=i&&i<=122904||122907<=i&&i<=122913||122915<=i&&i<=122916||122918<=i&&i<=122922||125136<=i&&i<=125142||125252<=i&&i<=125258||917536<=i&&i<=917631||917760<=i&&i<=917999?e:127462<=i&&i<=127487?t:2307==i||2363==i||2366<=i&&i<=2368||2377<=i&&i<=2380||2382<=i&&i<=2383||2434<=i&&i<=2435||2495<=i&&i<=2496||2503<=i&&i<=2504||2507<=i&&i<=2508||2563==i||2622<=i&&i<=2624||2691==i||2750<=i&&i<=2752||2761==i||2763<=i&&i<=2764||2818<=i&&i<=2819||2880==i||2887<=i&&i<=2888||2891<=i&&i<=2892||3007==i||3009<=i&&i<=3010||3014<=i&&i<=3016||3018<=i&&i<=3020||3073<=i&&i<=3075||3137<=i&&i<=3140||3202<=i&&i<=3203||3262==i||3264<=i&&i<=3265||3267<=i&&i<=3268||3271<=i&&i<=3272||3274<=i&&i<=3275||3330<=i&&i<=3331||3391<=i&&i<=3392||3398<=i&&i<=3400||3402<=i&&i<=3404||3458<=i&&i<=3459||3536<=i&&i<=3537||3544<=i&&i<=3550||3570<=i&&i<=3571||3635==i||3763==i||3902<=i&&i<=3903||3967==i||4145==i||4155<=i&&i<=4156||4182<=i&&i<=4183||4228==i||6070==i||6078<=i&&i<=6085||6087<=i&&i<=6088||6435<=i&&i<=6438||6441<=i&&i<=6443||6448<=i&&i<=6449||6451<=i&&i<=6456||6681<=i&&i<=6682||6741==i||6743==i||6765<=i&&i<=6770||6916==i||6965==i||6971==i||6973<=i&&i<=6977||6979<=i&&i<=6980||7042==i||7073==i||7078<=i&&i<=7079||7082==i||7143==i||7146<=i&&i<=7148||7150==i||7154<=i&&i<=7155||7204<=i&&i<=7211||7220<=i&&i<=7221||7393==i||7410<=i&&i<=7411||7415==i||43043<=i&&i<=43044||43047==i||43136<=i&&i<=43137||43188<=i&&i<=43203||43346<=i&&i<=43347||43395==i||43444<=i&&i<=43445||43450<=i&&i<=43451||43453<=i&&i<=43456||43567<=i&&i<=43568||43571<=i&&i<=43572||43597==i||43755==i||43758<=i&&i<=43759||43765==i||44003<=i&&i<=44004||44006<=i&&i<=44007||44009<=i&&i<=44010||44012==i||69632==i||69634==i||69762==i||69808<=i&&i<=69810||69815<=i&&i<=69816||69932==i||70018==i||70067<=i&&i<=70069||70079<=i&&i<=70080||70188<=i&&i<=70190||70194<=i&&i<=70195||70197==i||70368<=i&&i<=70370||70402<=i&&i<=70403||70463==i||70465<=i&&i<=70468||70471<=i&&i<=70472||70475<=i&&i<=70477||70498<=i&&i<=70499||70709<=i&&i<=70711||70720<=i&&i<=70721||70725==i||70833<=i&&i<=70834||70841==i||70843<=i&&i<=70844||70846==i||70849==i||71088<=i&&i<=71089||71096<=i&&i<=71099||71102==i||71216<=i&&i<=71218||71227<=i&&i<=71228||71230==i||71340==i||71342<=i&&i<=71343||71350==i||71456<=i&&i<=71457||71462==i||72199<=i&&i<=72200||72249==i||72279<=i&&i<=72280||72343==i||72751==i||72766==i||72873==i||72881==i||72884==i||94033<=i&&i<=94078||119142==i||119149==i?5:4352<=i&&i<=4447||43360<=i&&i<=43388?6:4448<=i&&i<=4519||55216<=i&&i<=55238?7:4520<=i&&i<=4607||55243<=i&&i<=55291?8:44032==i||44060==i||44088==i||44116==i||44144==i||44172==i||44200==i||44228==i||44256==i||44284==i||44312==i||44340==i||44368==i||44396==i||44424==i||44452==i||44480==i||44508==i||44536==i||44564==i||44592==i||44620==i||44648==i||44676==i||44704==i||44732==i||44760==i||44788==i||44816==i||44844==i||44872==i||44900==i||44928==i||44956==i||44984==i||45012==i||45040==i||45068==i||45096==i||45124==i||45152==i||45180==i||45208==i||45236==i||45264==i||45292==i||45320==i||45348==i||45376==i||45404==i||45432==i||45460==i||45488==i||45516==i||45544==i||45572==i||45600==i||45628==i||45656==i||45684==i||45712==i||45740==i||45768==i||45796==i||45824==i||45852==i||45880==i||45908==i||45936==i||45964==i||45992==i||46020==i||46048==i||46076==i||46104==i||46132==i||46160==i||46188==i||46216==i||46244==i||46272==i||46300==i||46328==i||46356==i||46384==i||46412==i||46440==i||46468==i||46496==i||46524==i||46552==i||46580==i||46608==i||46636==i||46664==i||46692==i||46720==i||46748==i||46776==i||46804==i||46832==i||46860==i||46888==i||46916==i||46944==i||46972==i||47e3==i||47028==i||47056==i||47084==i||47112==i||47140==i||47168==i||47196==i||47224==i||47252==i||47280==i||47308==i||47336==i||47364==i||47392==i||47420==i||47448==i||47476==i||47504==i||47532==i||47560==i||47588==i||47616==i||47644==i||47672==i||47700==i||47728==i||47756==i||47784==i||47812==i||47840==i||47868==i||47896==i||47924==i||47952==i||47980==i||48008==i||48036==i||48064==i||48092==i||48120==i||48148==i||48176==i||48204==i||48232==i||48260==i||48288==i||48316==i||48344==i||48372==i||48400==i||48428==i||48456==i||48484==i||48512==i||48540==i||48568==i||48596==i||48624==i||48652==i||48680==i||48708==i||48736==i||48764==i||48792==i||48820==i||48848==i||48876==i||48904==i||48932==i||48960==i||48988==i||49016==i||49044==i||49072==i||49100==i||49128==i||49156==i||49184==i||49212==i||49240==i||49268==i||49296==i||49324==i||49352==i||49380==i||49408==i||49436==i||49464==i||49492==i||49520==i||49548==i||49576==i||49604==i||49632==i||49660==i||49688==i||49716==i||49744==i||49772==i||49800==i||49828==i||49856==i||49884==i||49912==i||49940==i||49968==i||49996==i||50024==i||50052==i||50080==i||50108==i||50136==i||50164==i||50192==i||50220==i||50248==i||50276==i||50304==i||50332==i||50360==i||50388==i||50416==i||50444==i||50472==i||50500==i||50528==i||50556==i||50584==i||50612==i||50640==i||50668==i||50696==i||50724==i||50752==i||50780==i||50808==i||50836==i||50864==i||50892==i||50920==i||50948==i||50976==i||51004==i||51032==i||51060==i||51088==i||51116==i||51144==i||51172==i||51200==i||51228==i||51256==i||51284==i||51312==i||51340==i||51368==i||51396==i||51424==i||51452==i||51480==i||51508==i||51536==i||51564==i||51592==i||51620==i||51648==i||51676==i||51704==i||51732==i||51760==i||51788==i||51816==i||51844==i||51872==i||51900==i||51928==i||51956==i||51984==i||52012==i||52040==i||52068==i||52096==i||52124==i||52152==i||52180==i||52208==i||52236==i||52264==i||52292==i||52320==i||52348==i||52376==i||52404==i||52432==i||52460==i||52488==i||52516==i||52544==i||52572==i||52600==i||52628==i||52656==i||52684==i||52712==i||52740==i||52768==i||52796==i||52824==i||52852==i||52880==i||52908==i||52936==i||52964==i||52992==i||53020==i||53048==i||53076==i||53104==i||53132==i||53160==i||53188==i||53216==i||53244==i||53272==i||53300==i||53328==i||53356==i||53384==i||53412==i||53440==i||53468==i||53496==i||53524==i||53552==i||53580==i||53608==i||53636==i||53664==i||53692==i||53720==i||53748==i||53776==i||53804==i||53832==i||53860==i||53888==i||53916==i||53944==i||53972==i||54e3==i||54028==i||54056==i||54084==i||54112==i||54140==i||54168==i||54196==i||54224==i||54252==i||54280==i||54308==i||54336==i||54364==i||54392==i||54420==i||54448==i||54476==i||54504==i||54532==i||54560==i||54588==i||54616==i||54644==i||54672==i||54700==i||54728==i||54756==i||54784==i||54812==i||54840==i||54868==i||54896==i||54924==i||54952==i||54980==i||55008==i||55036==i||55064==i||55092==i||55120==i||55148==i||55176==i?9:44033<=i&&i<=44059||44061<=i&&i<=44087||44089<=i&&i<=44115||44117<=i&&i<=44143||44145<=i&&i<=44171||44173<=i&&i<=44199||44201<=i&&i<=44227||44229<=i&&i<=44255||44257<=i&&i<=44283||44285<=i&&i<=44311||44313<=i&&i<=44339||44341<=i&&i<=44367||44369<=i&&i<=44395||44397<=i&&i<=44423||44425<=i&&i<=44451||44453<=i&&i<=44479||44481<=i&&i<=44507||44509<=i&&i<=44535||44537<=i&&i<=44563||44565<=i&&i<=44591||44593<=i&&i<=44619||44621<=i&&i<=44647||44649<=i&&i<=44675||44677<=i&&i<=44703||44705<=i&&i<=44731||44733<=i&&i<=44759||44761<=i&&i<=44787||44789<=i&&i<=44815||44817<=i&&i<=44843||44845<=i&&i<=44871||44873<=i&&i<=44899||44901<=i&&i<=44927||44929<=i&&i<=44955||44957<=i&&i<=44983||44985<=i&&i<=45011||45013<=i&&i<=45039||45041<=i&&i<=45067||45069<=i&&i<=45095||45097<=i&&i<=45123||45125<=i&&i<=45151||45153<=i&&i<=45179||45181<=i&&i<=45207||45209<=i&&i<=45235||45237<=i&&i<=45263||45265<=i&&i<=45291||45293<=i&&i<=45319||45321<=i&&i<=45347||45349<=i&&i<=45375||45377<=i&&i<=45403||45405<=i&&i<=45431||45433<=i&&i<=45459||45461<=i&&i<=45487||45489<=i&&i<=45515||45517<=i&&i<=45543||45545<=i&&i<=45571||45573<=i&&i<=45599||45601<=i&&i<=45627||45629<=i&&i<=45655||45657<=i&&i<=45683||45685<=i&&i<=45711||45713<=i&&i<=45739||45741<=i&&i<=45767||45769<=i&&i<=45795||45797<=i&&i<=45823||45825<=i&&i<=45851||45853<=i&&i<=45879||45881<=i&&i<=45907||45909<=i&&i<=45935||45937<=i&&i<=45963||45965<=i&&i<=45991||45993<=i&&i<=46019||46021<=i&&i<=46047||46049<=i&&i<=46075||46077<=i&&i<=46103||46105<=i&&i<=46131||46133<=i&&i<=46159||46161<=i&&i<=46187||46189<=i&&i<=46215||46217<=i&&i<=46243||46245<=i&&i<=46271||46273<=i&&i<=46299||46301<=i&&i<=46327||46329<=i&&i<=46355||46357<=i&&i<=46383||46385<=i&&i<=46411||46413<=i&&i<=46439||46441<=i&&i<=46467||46469<=i&&i<=46495||46497<=i&&i<=46523||46525<=i&&i<=46551||46553<=i&&i<=46579||46581<=i&&i<=46607||46609<=i&&i<=46635||46637<=i&&i<=46663||46665<=i&&i<=46691||46693<=i&&i<=46719||46721<=i&&i<=46747||46749<=i&&i<=46775||46777<=i&&i<=46803||46805<=i&&i<=46831||46833<=i&&i<=46859||46861<=i&&i<=46887||46889<=i&&i<=46915||46917<=i&&i<=46943||46945<=i&&i<=46971||46973<=i&&i<=46999||47001<=i&&i<=47027||47029<=i&&i<=47055||47057<=i&&i<=47083||47085<=i&&i<=47111||47113<=i&&i<=47139||47141<=i&&i<=47167||47169<=i&&i<=47195||47197<=i&&i<=47223||47225<=i&&i<=47251||47253<=i&&i<=47279||47281<=i&&i<=47307||47309<=i&&i<=47335||47337<=i&&i<=47363||47365<=i&&i<=47391||47393<=i&&i<=47419||47421<=i&&i<=47447||47449<=i&&i<=47475||47477<=i&&i<=47503||47505<=i&&i<=47531||47533<=i&&i<=47559||47561<=i&&i<=47587||47589<=i&&i<=47615||47617<=i&&i<=47643||47645<=i&&i<=47671||47673<=i&&i<=47699||47701<=i&&i<=47727||47729<=i&&i<=47755||47757<=i&&i<=47783||47785<=i&&i<=47811||47813<=i&&i<=47839||47841<=i&&i<=47867||47869<=i&&i<=47895||47897<=i&&i<=47923||47925<=i&&i<=47951||47953<=i&&i<=47979||47981<=i&&i<=48007||48009<=i&&i<=48035||48037<=i&&i<=48063||48065<=i&&i<=48091||48093<=i&&i<=48119||48121<=i&&i<=48147||48149<=i&&i<=48175||48177<=i&&i<=48203||48205<=i&&i<=48231||48233<=i&&i<=48259||48261<=i&&i<=48287||48289<=i&&i<=48315||48317<=i&&i<=48343||48345<=i&&i<=48371||48373<=i&&i<=48399||48401<=i&&i<=48427||48429<=i&&i<=48455||48457<=i&&i<=48483||48485<=i&&i<=48511||48513<=i&&i<=48539||48541<=i&&i<=48567||48569<=i&&i<=48595||48597<=i&&i<=48623||48625<=i&&i<=48651||48653<=i&&i<=48679||48681<=i&&i<=48707||48709<=i&&i<=48735||48737<=i&&i<=48763||48765<=i&&i<=48791||48793<=i&&i<=48819||48821<=i&&i<=48847||48849<=i&&i<=48875||48877<=i&&i<=48903||48905<=i&&i<=48931||48933<=i&&i<=48959||48961<=i&&i<=48987||48989<=i&&i<=49015||49017<=i&&i<=49043||49045<=i&&i<=49071||49073<=i&&i<=49099||49101<=i&&i<=49127||49129<=i&&i<=49155||49157<=i&&i<=49183||49185<=i&&i<=49211||49213<=i&&i<=49239||49241<=i&&i<=49267||49269<=i&&i<=49295||49297<=i&&i<=49323||49325<=i&&i<=49351||49353<=i&&i<=49379||49381<=i&&i<=49407||49409<=i&&i<=49435||49437<=i&&i<=49463||49465<=i&&i<=49491||49493<=i&&i<=49519||49521<=i&&i<=49547||49549<=i&&i<=49575||49577<=i&&i<=49603||49605<=i&&i<=49631||49633<=i&&i<=49659||49661<=i&&i<=49687||49689<=i&&i<=49715||49717<=i&&i<=49743||49745<=i&&i<=49771||49773<=i&&i<=49799||49801<=i&&i<=49827||49829<=i&&i<=49855||49857<=i&&i<=49883||49885<=i&&i<=49911||49913<=i&&i<=49939||49941<=i&&i<=49967||49969<=i&&i<=49995||49997<=i&&i<=50023||50025<=i&&i<=50051||50053<=i&&i<=50079||50081<=i&&i<=50107||50109<=i&&i<=50135||50137<=i&&i<=50163||50165<=i&&i<=50191||50193<=i&&i<=50219||50221<=i&&i<=50247||50249<=i&&i<=50275||50277<=i&&i<=50303||50305<=i&&i<=50331||50333<=i&&i<=50359||50361<=i&&i<=50387||50389<=i&&i<=50415||50417<=i&&i<=50443||50445<=i&&i<=50471||50473<=i&&i<=50499||50501<=i&&i<=50527||50529<=i&&i<=50555||50557<=i&&i<=50583||50585<=i&&i<=50611||50613<=i&&i<=50639||50641<=i&&i<=50667||50669<=i&&i<=50695||50697<=i&&i<=50723||50725<=i&&i<=50751||50753<=i&&i<=50779||50781<=i&&i<=50807||50809<=i&&i<=50835||50837<=i&&i<=50863||50865<=i&&i<=50891||50893<=i&&i<=50919||50921<=i&&i<=50947||50949<=i&&i<=50975||50977<=i&&i<=51003||51005<=i&&i<=51031||51033<=i&&i<=51059||51061<=i&&i<=51087||51089<=i&&i<=51115||51117<=i&&i<=51143||51145<=i&&i<=51171||51173<=i&&i<=51199||51201<=i&&i<=51227||51229<=i&&i<=51255||51257<=i&&i<=51283||51285<=i&&i<=51311||51313<=i&&i<=51339||51341<=i&&i<=51367||51369<=i&&i<=51395||51397<=i&&i<=51423||51425<=i&&i<=51451||51453<=i&&i<=51479||51481<=i&&i<=51507||51509<=i&&i<=51535||51537<=i&&i<=51563||51565<=i&&i<=51591||51593<=i&&i<=51619||51621<=i&&i<=51647||51649<=i&&i<=51675||51677<=i&&i<=51703||51705<=i&&i<=51731||51733<=i&&i<=51759||51761<=i&&i<=51787||51789<=i&&i<=51815||51817<=i&&i<=51843||51845<=i&&i<=51871||51873<=i&&i<=51899||51901<=i&&i<=51927||51929<=i&&i<=51955||51957<=i&&i<=51983||51985<=i&&i<=52011||52013<=i&&i<=52039||52041<=i&&i<=52067||52069<=i&&i<=52095||52097<=i&&i<=52123||52125<=i&&i<=52151||52153<=i&&i<=52179||52181<=i&&i<=52207||52209<=i&&i<=52235||52237<=i&&i<=52263||52265<=i&&i<=52291||52293<=i&&i<=52319||52321<=i&&i<=52347||52349<=i&&i<=52375||52377<=i&&i<=52403||52405<=i&&i<=52431||52433<=i&&i<=52459||52461<=i&&i<=52487||52489<=i&&i<=52515||52517<=i&&i<=52543||52545<=i&&i<=52571||52573<=i&&i<=52599||52601<=i&&i<=52627||52629<=i&&i<=52655||52657<=i&&i<=52683||52685<=i&&i<=52711||52713<=i&&i<=52739||52741<=i&&i<=52767||52769<=i&&i<=52795||52797<=i&&i<=52823||52825<=i&&i<=52851||52853<=i&&i<=52879||52881<=i&&i<=52907||52909<=i&&i<=52935||52937<=i&&i<=52963||52965<=i&&i<=52991||52993<=i&&i<=53019||53021<=i&&i<=53047||53049<=i&&i<=53075||53077<=i&&i<=53103||53105<=i&&i<=53131||53133<=i&&i<=53159||53161<=i&&i<=53187||53189<=i&&i<=53215||53217<=i&&i<=53243||53245<=i&&i<=53271||53273<=i&&i<=53299||53301<=i&&i<=53327||53329<=i&&i<=53355||53357<=i&&i<=53383||53385<=i&&i<=53411||53413<=i&&i<=53439||53441<=i&&i<=53467||53469<=i&&i<=53495||53497<=i&&i<=53523||53525<=i&&i<=53551||53553<=i&&i<=53579||53581<=i&&i<=53607||53609<=i&&i<=53635||53637<=i&&i<=53663||53665<=i&&i<=53691||53693<=i&&i<=53719||53721<=i&&i<=53747||53749<=i&&i<=53775||53777<=i&&i<=53803||53805<=i&&i<=53831||53833<=i&&i<=53859||53861<=i&&i<=53887||53889<=i&&i<=53915||53917<=i&&i<=53943||53945<=i&&i<=53971||53973<=i&&i<=53999||54001<=i&&i<=54027||54029<=i&&i<=54055||54057<=i&&i<=54083||54085<=i&&i<=54111||54113<=i&&i<=54139||54141<=i&&i<=54167||54169<=i&&i<=54195||54197<=i&&i<=54223||54225<=i&&i<=54251||54253<=i&&i<=54279||54281<=i&&i<=54307||54309<=i&&i<=54335||54337<=i&&i<=54363||54365<=i&&i<=54391||54393<=i&&i<=54419||54421<=i&&i<=54447||54449<=i&&i<=54475||54477<=i&&i<=54503||54505<=i&&i<=54531||54533<=i&&i<=54559||54561<=i&&i<=54587||54589<=i&&i<=54615||54617<=i&&i<=54643||54645<=i&&i<=54671||54673<=i&&i<=54699||54701<=i&&i<=54727||54729<=i&&i<=54755||54757<=i&&i<=54783||54785<=i&&i<=54811||54813<=i&&i<=54839||54841<=i&&i<=54867||54869<=i&&i<=54895||54897<=i&&i<=54923||54925<=i&&i<=54951||54953<=i&&i<=54979||54981<=i&&i<=55007||55009<=i&&i<=55035||55037<=i&&i<=55063||55065<=i&&i<=55091||55093<=i&&i<=55119||55121<=i&&i<=55147||55149<=i&&i<=55175||55177<=i&&i<=55203?10:9757==i||9977==i||9994<=i&&i<=9997||127877==i||127938<=i&&i<=127940||127943==i||127946<=i&&i<=127948||128066<=i&&i<=128067||128070<=i&&i<=128080||128110==i||128112<=i&&i<=128120||128124==i||128129<=i&&i<=128131||128133<=i&&i<=128135||128170==i||128372<=i&&i<=128373||128378==i||128400==i||128405<=i&&i<=128406||128581<=i&&i<=128583||128587<=i&&i<=128591||128675==i||128692<=i&&i<=128694||128704==i||128716==i||129304<=i&&i<=129308||129310<=i&&i<=129311||129318==i||129328<=i&&i<=129337||129341<=i&&i<=129342||129489<=i&&i<=129501?A:127995<=i&&i<=127999?14:8205==i?15:9792==i||9794==i||9877<=i&&i<=9878||9992==i||10084==i||127752==i||127806==i||127859==i||127891==i||127908==i||127912==i||127979==i||127981==i||128139==i||128187<=i&&i<=128188||128295==i||128300==i||128488==i||128640==i||128658==i?n:128102<=i&&i<=128105?o:11}return this.nextBreak=function(e,t){if(void 0===t&&(t=0),t<0)return 0;if(t>=e.length-1)return e.length;for(var r,A,n=a(i(e,t)),o=[],c=t+1;c{"use strict";e.exports=(e,t=process.argv)=>{const r=e.startsWith("-")?"":1===e.length?"-":"--",A=t.indexOf(r+e),n=t.indexOf("--");return-1!==A&&(-1===n||A{"use strict";const t=[200,203,204,206,300,301,404,405,410,414,501],r=[200,203,204,300,301,302,303,307,308,404,405,410,414,501],A={date:!0,connection:!0,"keep-alive":!0,"proxy-authenticate":!0,"proxy-authorization":!0,te:!0,trailer:!0,"transfer-encoding":!0,upgrade:!0},n={"content-length":!0,"content-encoding":!0,"transfer-encoding":!0,"content-range":!0};function o(e){const t={};if(!e)return t;const r=e.trim().split(/\s*,\s*/);for(const e of r){const[r,A]=e.split(/\s*=\s*/,2);t[r]=void 0===A||A.replace(/^"|"$/g,"")}return t}function i(e){let t=[];for(const r in e){const A=e[r];t.push(!0===A?r:r+"="+A)}if(t.length)return t.join(", ")}e.exports=class{constructor(e,t,{shared:r,cacheHeuristic:A,immutableMinTimeToLive:n,ignoreCargoCult:s,trustServerDate:a,_fromObject:c}={}){if(c)this._fromObject(c);else{if(!t||!t.headers)throw Error("Response headers missing");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=!1!==r,this._trustServerDate=void 0===a||a,this._cacheHeuristic=void 0!==A?A:.1,this._immutableMinTtl=void 0!==n?n:864e5,this._status="status"in t?t.status:200,this._resHeaders=t.headers,this._rescc=o(t.headers["cache-control"]),this._method="method"in e?e.method:"GET",this._url=e.url,this._host=e.headers.host,this._noAuthorization=!e.headers.authorization,this._reqHeaders=t.headers.vary?e.headers:null,this._reqcc=o(e.headers["cache-control"]),s&&"pre-check"in this._rescc&&"post-check"in this._rescc&&(delete this._rescc["pre-check"],delete this._rescc["post-check"],delete this._rescc["no-cache"],delete this._rescc["no-store"],delete this._rescc["must-revalidate"],this._resHeaders=Object.assign({},this._resHeaders,{"cache-control":i(this._rescc)}),delete this._resHeaders.expires,delete this._resHeaders.pragma),!t.headers["cache-control"]&&/no-cache/.test(t.headers.pragma)&&(this._rescc["no-cache"]=!0)}}now(){return Date.now()}storable(){return!(this._reqcc["no-store"]||!("GET"===this._method||"HEAD"===this._method||"POST"===this._method&&this._hasExplicitExpiration())||-1===r.indexOf(this._status)||this._rescc["no-store"]||this._isShared&&this._rescc.private||this._isShared&&!this._noAuthorization&&!this._allowsStoringAuthenticated()||!(this._resHeaders.expires||this._rescc.public||this._rescc["max-age"]||this._rescc["s-maxage"]||-1!==t.indexOf(this._status)))}_hasExplicitExpiration(){return this._isShared&&this._rescc["s-maxage"]||this._rescc["max-age"]||this._resHeaders.expires}_assertRequestHasHeaders(e){if(!e||!e.headers)throw Error("Request headers missing")}satisfiesWithoutRevalidation(e){this._assertRequestHasHeaders(e);const t=o(e.headers["cache-control"]);if(t["no-cache"]||/no-cache/.test(e.headers.pragma))return!1;if(t["max-age"]&&this.age()>t["max-age"])return!1;if(t["min-fresh"]&&this.timeToLive()<1e3*t["min-fresh"])return!1;if(this.stale()){if(!(t["max-stale"]&&!this._rescc["must-revalidate"]&&(!0===t["max-stale"]||t["max-stale"]>this.age()-this.maxAge())))return!1}return this._requestMatches(e,!1)}_requestMatches(e,t){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||t&&"HEAD"===e.method)&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc["must-revalidate"]||this._rescc.public||this._rescc["s-maxage"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if("*"===this._resHeaders.vary)return!1;const t=this._resHeaders.vary.trim().toLowerCase().split(/\s*,\s*/);for(const r of t)if(e.headers[r]!==this._reqHeaders[r])return!1;return!0}_copyWithoutHopByHopHeaders(e){const t={};for(const r in e)A[r]||(t[r]=e[r]);if(e.connection){const r=e.connection.trim().split(/\s*,\s*/);for(const e of r)delete t[e]}if(t.warning){const e=t.warning.split(/,/).filter(e=>!/^\s*1[0-9][0-9]/.test(e));e.length?t.warning=e.join(",").trim():delete t.warning}return t}responseHeaders(){const e=this._copyWithoutHopByHopHeaders(this._resHeaders),t=this.age();return t>86400&&!this._hasExplicitExpiration()&&this.maxAge()>86400&&(e.warning=(e.warning?e.warning+", ":"")+'113 - "rfc7234 5.5.4"'),e.age=""+Math.round(t),e.date=new Date(this.now()).toUTCString(),e}date(){return this._trustServerDate?this._serverDate():this._responseTime}_serverDate(){const e=Date.parse(this._resHeaders.date);if(isFinite(e)){const t=288e5;if(Math.abs(this._responseTime-e)e&&(e=t)}return e+(this.now()-this._responseTime)/1e3}_ageValue(){const e=parseInt(this._resHeaders.age);return isFinite(e)?e:0}maxAge(){if(!this.storable()||this._rescc["no-cache"])return 0;if(this._isShared&&this._resHeaders["set-cookie"]&&!this._rescc.public&&!this._rescc.immutable)return 0;if("*"===this._resHeaders.vary)return 0;if(this._isShared){if(this._rescc["proxy-revalidate"])return 0;if(this._rescc["s-maxage"])return parseInt(this._rescc["s-maxage"],10)}if(this._rescc["max-age"])return parseInt(this._rescc["max-age"],10);const e=this._rescc.immutable?this._immutableMinTtl:0,t=this._serverDate();if(this._resHeaders.expires){const r=Date.parse(this._resHeaders.expires);return Number.isNaN(r)||rr)return Math.max(e,(t-r)/1e3*this._cacheHeuristic)}return e}timeToLive(){return 1e3*Math.max(0,this.maxAge()-this.age())}stale(){return this.maxAge()<=this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error("Reinitialized");if(!e||1!==e.v)throw Error("Invalid serialization");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=void 0!==e.imm?e.imm:864e5,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);const t=this._copyWithoutHopByHopHeaders(e.headers);if(delete t["if-range"],!this._requestMatches(e,!0)||!this.storable())return delete t["if-none-match"],delete t["if-modified-since"],t;this._resHeaders.etag&&(t["if-none-match"]=t["if-none-match"]?`${t["if-none-match"]}, ${this._resHeaders.etag}`:this._resHeaders.etag);if(t["accept-ranges"]||t["if-match"]||t["if-unmodified-since"]||this._method&&"GET"!=this._method){if(delete t["if-modified-since"],t["if-none-match"]){const e=t["if-none-match"].split(/,/).filter(e=>!/^\s*W\//.test(e));e.length?t["if-none-match"]=e.join(",").trim():delete t["if-none-match"]}}else this._resHeaders["last-modified"]&&!t["if-modified-since"]&&(t["if-modified-since"]=this._resHeaders["last-modified"]);return t}revalidatedPolicy(e,t){if(this._assertRequestHasHeaders(e),!t||!t.headers)throw Error("Response headers missing");let r=!1;if(void 0!==t.status&&304!=t.status?r=!1:t.headers.etag&&!/^\s*W\//.test(t.headers.etag)?r=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag:this._resHeaders.etag&&t.headers.etag?r=this._resHeaders.etag.replace(/^\s*W\//,"")===t.headers.etag.replace(/^\s*W\//,""):this._resHeaders["last-modified"]?r=this._resHeaders["last-modified"]===t.headers["last-modified"]:this._resHeaders.etag||this._resHeaders["last-modified"]||t.headers.etag||t.headers["last-modified"]||(r=!0),!r)return{policy:new this.constructor(e,t),modified:304!=t.status,matches:!1};const A={};for(const e in this._resHeaders)A[e]=e in t.headers&&!n[e]?t.headers[e]:this._resHeaders[e];const o=Object.assign({},t,{status:this._status,method:this._method,headers:A});return{policy:new this.constructor(e,o,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl,trustServerDate:this._trustServerDate}),modified:!1,matches:!0}}}},94935:(e,t,r)=>{"use strict";const A=r(28614),n=r(4016),o=r(97565),i=r(49601),s=Symbol("currentStreamsCount"),a=Symbol("request"),c=Symbol("cachedOriginSet"),g=Symbol("gracefullyClosing"),l=["maxDeflateDynamicTableSize","maxSessionMemory","maxHeaderListPairs","maxOutstandingPings","maxReservedRemoteStreams","maxSendHeaderBlockLength","paddingStrategy","localAddress","path","rejectUnauthorized","minDHSize","ca","cert","clientCertEngine","ciphers","key","pfx","servername","minVersion","maxVersion","secureProtocol","crl","honorCipherOrder","ecdhCurve","dhparam","secureOptions","sessionIdContext"],u=(e,t)=>e.remoteSettings.maxConcurrentStreams>t.remoteSettings.maxConcurrentStreams,h=(e,t)=>{for(const r of e)r[c].lengtht[c].includes(e))&&r[s]+t[s]<=t.remoteSettings.maxConcurrentStreams&&d(r)},p=({agent:e,isFree:t})=>{const r={};for(const A in e.sessions){const n=e.sessions[A].filter(e=>{const r=e[C.kCurrentStreamsCount]{e[g]=!0,0===e[s]&&e.close()};class C extends A{constructor({timeout:e=6e4,maxSessions:t=1/0,maxFreeSessions:r=10,maxCachedTlsSessions:A=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=t,this.maxFreeSessions=r,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new i({maxSize:A})}static normalizeOrigin(e,t){return"string"==typeof e&&(e=new URL(e)),t&&e.hostname!==t&&(e.hostname=t),e.origin}normalizeOptions(e){let t="";if(e)for(const r of l)e[r]&&(t+=":"+e[r]);return t}_tryToCreateNewSession(e,t){if(!(e in this.queue)||!(t in this.queue[e]))return;const r=this.queue[e][t];this._sessionsCount{Array.isArray(r)?(r=[...r],A()):r=[{resolve:A,reject:n}];const i=this.normalizeOptions(t),l=C.normalizeOrigin(e,t&&t.servername);if(void 0===l){for(const{reject:e}of r)e(new TypeError("The `origin` argument needs to be a string or an URL object"));return}if(i in this.sessions){const e=this.sessions[i];let t,A=-1,n=-1;for(const r of e){const e=r.remoteSettings.maxConcurrentStreams;if(e=e||r[g]||r.destroyed)continue;t||(A=e),o>n&&(t=r,n=o)}}if(t){if(1!==r.length){for(const{reject:e}of r){e(new Error(`Expected the length of listeners to be 1, got ${r.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`))}return}return void r[0].resolve(t)}}if(i in this.queue){if(l in this.queue[i])return this.queue[i][l].listeners.push(...r),void this._tryToCreateNewSession(i,l)}else this.queue[i]={};const p=()=>{i in this.queue&&this.queue[i][l]===f&&(delete this.queue[i][l],0===Object.keys(this.queue[i]).length&&delete this.queue[i])},f=()=>{const A=`${l}:${i}`;let n=!1;try{const C=o.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(A),...t});C[s]=0,C[g]=!1;const I=()=>C[s]{this.tlsSessionCache.set(A,e)}),C.once("error",e=>{for(const{reject:t}of r)t(e);this.tlsSessionCache.delete(A)}),C.setTimeout(this.timeout,()=>{C.destroy()}),C.once("close",()=>{if(n){E&&this._freeSessionsCount--,this._sessionsCount--;const e=this.sessions[i];e.splice(e.indexOf(C),1),0===e.length&&delete this.sessions[i]}else{const e=new Error("Session closed without receiving a SETTINGS frame");e.code="HTTP2WRAPPER_NOSETTINGS";for(const{reject:t}of r)t(e);p()}this._tryToCreateNewSession(i,l)});const B=()=>{if(i in this.queue&&I())for(const e of C[c])if(e in this.queue[i]){const{listeners:t}=this.queue[i][e];for(;0!==t.length&&I();)t.shift().resolve(C);const r=this.queue[i];if(0===r[e].listeners.length&&(delete r[e],0===Object.keys(r).length)){delete this.queue[i];break}if(!I())break}};C.on("origin",()=>{C[c]=C.originSet,I()&&(B(),h(this.sessions[i],C))}),C.once("remoteSettings",()=>{if(C.ref(),C.unref(),this._sessionsCount++,f.destroyed){const e=new Error("Agent has been destroyed");for(const t of r)t.reject(e);C.destroy()}else{C[c]=C.originSet;{const e=this.sessions;if(i in e){const t=e[i];t.splice(((e,t,r)=>{let A=0,n=e.length;for(;A>>1;r(e[o],t)?A=o+1:n=o}return A})(t,C,u),0,C)}else e[i]=[C]}this._freeSessionsCount+=1,n=!0,this.emit("session",C),B(),p(),0===C[s]&&this._freeSessionsCount>this.maxFreeSessions&&C.close(),0!==r.length&&(this.getSession(l,t,r),r.length=0),C.on("remoteSettings",()=>{B(),h(this.sessions[i],C)})}}),C[a]=C.request,C.request=(e,t)=>{if(C[g])throw new Error("The session is gracefully closing. No new streams are allowed.");const r=C[a](e,t);return C.ref(),++C[s],C[s]===C.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,r.once("close",()=>{if(E=I(),--C[s],!C.destroyed&&!C.closed&&(((e,t)=>{for(const r of e)t[c].lengthr[c].includes(e))&&t[s]+r[s]<=r.remoteSettings.maxConcurrentStreams&&d(t)})(this.sessions[i],C),I()&&!C.closed)){E||(this._freeSessionsCount++,E=!0);const e=0===C[s];e&&C.unref(),e&&(this._freeSessionsCount>this.maxFreeSessions||C[g])?C.close():(h(this.sessions[i],C),B())}}),r}}catch(e){for(const t of r)t.reject(e);p()}};f.listeners=r,f.completed=!1,f.destroyed=!1,this.queue[i][l]=f,this._tryToCreateNewSession(i,l)})}request(e,t,r,A){return new Promise((n,o)=>{this.getSession(e,t,[{reject:o,resolve:e=>{try{n(e.request(r,A))}catch(e){o(e)}}}])})}createConnection(e,t){return C.connect(e,t)}static connect(e,t){t.ALPNProtocols=["h2"];const r=e.port||443,A=e.hostname||e.host;return void 0===t.servername&&(t.servername=A),n.connect(r,A,t)}closeFreeSessions(){for(const e of Object.values(this.sessions))for(const t of e)0===t[s]&&t.close()}destroy(e){for(const t of Object.values(this.sessions))for(const r of t)r.destroy(e);for(const e of Object.values(this.queue))for(const t of Object.values(e))t.destroyed=!0;this.queue={}}get freeSessions(){return p({agent:this,isFree:!0})}get busySessions(){return p({agent:this,isFree:!1})}}C.kCurrentStreamsCount=s,C.kGracefullyClosing=g,e.exports={Agent:C,globalAgent:new C}},2398:(e,t,r)=>{"use strict";const A=r(98605),n=r(57211),o=r(19476),i=r(49601),s=r(33134),a=r(5209),c=r(50075),g=new i({maxSize:100}),l=new Map,u=(e,t,r)=>{t._httpMessage={shouldKeepAlive:!0};const A=()=>{e.emit("free",t,r)};t.on("free",A);const n=()=>{e.removeSocket(t,r)};t.on("close",n);const o=()=>{e.removeSocket(t,r),t.off("close",n),t.off("free",A),t.off("agentRemove",o)};t.on("agentRemove",o),e.emit("free",t,r)};e.exports=async(e,t,r)=>{if(("string"==typeof e||e instanceof URL)&&(e=c(new URL(e))),"function"==typeof t&&(r=t,t=void 0),t={ALPNProtocols:["h2","http/1.1"],...e,...t,resolveSocket:!0},!Array.isArray(t.ALPNProtocols)||0===t.ALPNProtocols.length)throw new Error("The `ALPNProtocols` option must be an Array with at least one entry");t.protocol=t.protocol||"https:";const i="https:"===t.protocol;t.host=t.hostname||t.host||"localhost",t.session=t.tlsSession,t.servername=t.servername||a(t),t.port=t.port||(i?443:80),t._defaultAgent=i?n.globalAgent:A.globalAgent;const h=t.agent;if(h){if(h.addRequest)throw new Error("The `options.agent` object can contain only `http`, `https` or `http2` properties");t.agent=h[i?"https":"http"]}if(i){if("h2"===await(async e=>{const t=`${e.host}:${e.port}:${e.ALPNProtocols.sort()}`;if(!g.has(t)){if(l.has(t)){return(await l.get(t)).alpnProtocol}const{path:r,agent:A}=e;e.path=e.socketPath;const i=o(e);l.set(t,i);try{const{socket:o,alpnProtocol:s}=await i;if(g.set(t,s),e.path=r,"h2"===s)o.destroy();else{const{globalAgent:t}=n,r=n.Agent.prototype.createConnection;A?A.createConnection===r?u(A,o,e):o.destroy():t.createConnection===r?u(t,o,e):o.destroy()}return l.delete(t),s}catch(e){throw l.delete(t),e}}return g.get(t)})(t))return h&&(t.agent=h.http2),new s(t,r)}return A.request(t,r)},e.exports.protocolCache=g},33134:(e,t,r)=>{"use strict";const A=r(97565),{Writable:n}=r(92413),{Agent:o,globalAgent:i}=r(94935),s=r(53433),a=r(50075),c=r(66192),g=r(50978),{ERR_INVALID_ARG_TYPE:l,ERR_INVALID_PROTOCOL:u,ERR_HTTP_HEADERS_SENT:h,ERR_INVALID_HTTP_TOKEN:p,ERR_HTTP_INVALID_HEADER_VALUE:d,ERR_INVALID_CHAR:C}=r(64080),{HTTP2_HEADER_STATUS:f,HTTP2_HEADER_METHOD:I,HTTP2_HEADER_PATH:E,HTTP2_METHOD_CONNECT:B}=A.constants,y=Symbol("headers"),m=Symbol("origin"),w=Symbol("session"),Q=Symbol("options"),D=Symbol("flushedHeaders"),b=Symbol("jobs"),v=/^[\^`\-\w!#$%&*+.|~]+$/,S=/[^\t\u0020-\u007E\u0080-\u00FF]/;e.exports=class extends n{constructor(e,t,r){super({autoDestroy:!1});const A="string"==typeof e||e instanceof URL;if(A&&(e=a(e instanceof URL?e:new URL(e))),"function"==typeof t||void 0===t?(r=t,t=A?e:{...e}):t={...e,...t},t.h2session)this[w]=t.h2session;else if(!1===t.agent)this.agent=new o({maxFreeSessions:0});else if(void 0===t.agent||null===t.agent)"function"==typeof t.createConnection?(this.agent=new o({maxFreeSessions:0}),this.agent.createConnection=t.createConnection):this.agent=i;else{if("function"!=typeof t.agent.request)throw new l("options.agent",["Agent-like Object","undefined","false"],t.agent);this.agent=t.agent}if(t.protocol&&"https:"!==t.protocol)throw new u(t.protocol,"https:");const n=t.port||t.defaultPort||this.agent&&this.agent.defaultPort||443,s=t.hostname||t.host||"localhost";delete t.hostname,delete t.host,delete t.port;const{timeout:c}=t;if(t.timeout=void 0,this[y]=Object.create(null),this[b]=[],this.socket=null,this.connection=null,this.method=t.method||"GET",this.path=t.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,t.headers)for(const[e,r]of Object.entries(t.headers))this.setHeader(e,r);t.auth&&!("authorization"in this[y])&&(this[y].authorization="Basic "+Buffer.from(t.auth).toString("base64")),t.session=t.tlsSession,t.path=t.socketPath,this[Q]=t,443===n?(this[m]="https://"+s,":authority"in this[y]||(this[y][":authority"]=s)):(this[m]=`https://${s}:${n}`,":authority"in this[y]||(this[y][":authority"]=`${s}:${n}`)),c&&this.setTimeout(c),r&&this.once("response",r),this[D]=!1}get method(){return this[y][I]}set method(e){e&&(this[y][I]=e.toUpperCase())}get path(){return this[y][E]}set path(e){e&&(this[y][E]=e)}get _mustNotHaveABody(){return"GET"===this.method||"HEAD"===this.method||"DELETE"===this.method}_write(e,t,r){if(this._mustNotHaveABody)return void r(new Error("The GET, HEAD and DELETE methods must NOT have a body"));this.flushHeaders();const A=()=>this._request.write(e,t,r);this._request?A():this[b].push(A)}_final(e){if(this.destroyed)return;this.flushHeaders();const t=()=>{this._mustNotHaveABody?e():this._request.end(e)};this._request?t():this[b].push(t)}abort(){this.res&&this.res.complete||(this.aborted||process.nextTick(()=>this.emit("abort")),this.aborted=!0,this.destroy())}_destroy(e,t){this.res&&this.res._dump(),this._request&&this._request.destroy(),t(e)}async flushHeaders(){if(this[D]||this.destroyed)return;this[D]=!0;const e=this.method===B,t=t=>{if(this._request=t,this.destroyed)return void t.destroy();e||c(t,this,["timeout","continue","close","error"]);const r=e=>(...t)=>{this.writable||this.destroyed?this.once("finish",()=>{e(...t)}):e(...t)};t.once("response",r((r,A,n)=>{const o=new s(this.socket,t.readableHighWaterMark);this.res=o,o.req=this,o.statusCode=r[f],o.headers=r,o.rawHeaders=n,o.once("end",()=>{this.aborted?(o.aborted=!0,o.emit("aborted")):(o.complete=!0,o.socket=null,o.connection=null)}),e?(o.upgrade=!0,this.emit("connect",o,t,Buffer.alloc(0))?this.emit("close"):t.destroy()):(t.on("data",e=>{o._dumped||o.push(e)||t.pause()}),t.once("end",()=>{o.push(null)}),this.emit("response",o)||o._dump())})),t.once("headers",r(e=>this.emit("information",{statusCode:e[f]}))),t.once("trailers",r((e,t,r)=>{const{res:A}=this;A.trailers=e,A.rawTrailers=r}));const{socket:A}=t.session;this.socket=A,this.connection=A;for(const e of this[b])e();this.emit("socket",this.socket)};if(this[w])try{t(this[w].request(this[y]))}catch(e){this.emit("error",e)}else{this.reusedSocket=!0;try{t(await this.agent.request(this[m],this[Q],this[y]))}catch(e){this.emit("error",e)}}}getHeader(e){if("string"!=typeof e)throw new l("name","string",e);return this[y][e.toLowerCase()]}get headersSent(){return this[D]}removeHeader(e){if("string"!=typeof e)throw new l("name","string",e);if(this.headersSent)throw new h("remove");delete this[y][e.toLowerCase()]}setHeader(e,t){if(this.headersSent)throw new h("set");if("string"!=typeof e||!v.test(e)&&!g(e))throw new p("Header name",e);if(void 0===t)throw new d(t,e);if(S.test(t))throw new C("header content",e);this[y][e.toLowerCase()]=t}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,t){const r=()=>this._request.setTimeout(e,t);return this._request?r():this[b].push(r),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}}},53433:(e,t,r)=>{"use strict";const{Readable:A}=r(92413);e.exports=class extends A{constructor(e,t){super({highWaterMark:t,autoDestroy:!1}),this.statusCode=null,this.statusMessage="",this.httpVersion="2.0",this.httpVersionMajor=2,this.httpVersionMinor=0,this.headers={},this.trailers={},this.req=null,this.aborted=!1,this.complete=!1,this.upgrade=null,this.rawHeaders=[],this.rawTrailers=[],this.socket=e,this.connection=e,this._dumped=!1}_destroy(e){this.req._request.destroy(e)}setTimeout(e,t){return this.req.setTimeout(e,t),this}_dump(){this._dumped||(this._dumped=!0,this.removeAllListeners("data"),this.resume())}_read(){this.req&&this.req._request.resume()}}},92353:(e,t,r)=>{"use strict";const A=r(97565),n=r(94935),o=r(33134),i=r(53433),s=r(2398);e.exports={...A,ClientRequest:o,IncomingMessage:i,...n,request:(e,t,r)=>new o(e,t,r),get:(e,t,r)=>{const A=new o(e,t,r);return A.end(),A},auto:s}},5209:(e,t,r)=>{"use strict";const A=r(11631);e.exports=e=>{let t=e.host;const r=e.headers&&e.headers.host;if(r)if(r.startsWith("[")){t=-1===r.indexOf("]")?r:r.slice(1,-1)}else t=r.split(":",1)[0];return A.isIP(t)?"":t}},64080:e=>{"use strict";const t=(t,r,A)=>{e.exports[r]=class extends t{constructor(...e){super("string"==typeof A?A:A(e)),this.name=`${super.name} [${r}]`,this.code=r}}};t(TypeError,"ERR_INVALID_ARG_TYPE",e=>{const t=e[0].includes(".")?"property":"argument";let r=e[1];const A=Array.isArray(r);return A&&(r=`${r.slice(0,-1).join(", ")} or ${r.slice(-1)}`),`The "${e[0]}" ${t} must be ${A?"one of":"of"} type ${r}. Received ${typeof e[2]}`}),t(TypeError,"ERR_INVALID_PROTOCOL",e=>`Protocol "${e[0]}" not supported. Expected "${e[1]}"`),t(Error,"ERR_HTTP_HEADERS_SENT",e=>`Cannot ${e[0]} headers after they are sent to the client`),t(TypeError,"ERR_INVALID_HTTP_TOKEN",e=>`${e[0]} must be a valid HTTP token [${e[1]}]`),t(TypeError,"ERR_HTTP_INVALID_HEADER_VALUE",e=>`Invalid value "${e[0]} for header "${e[1]}"`),t(TypeError,"ERR_INVALID_CHAR",e=>`Invalid character in ${e[0]} [${e[1]}]`)},50978:e=>{"use strict";e.exports=e=>{switch(e){case":method":case":scheme":case":authority":case":path":return!0;default:return!1}}},66192:e=>{"use strict";e.exports=(e,t,r)=>{for(const A of r)e.on(A,(...e)=>t.emit(A,...e))}},50075:e=>{"use strict";e.exports=e=>{const t={protocol:e.protocol,hostname:"string"==typeof e.hostname&&e.hostname.startsWith("[")?e.hostname.slice(1,-1):e.hostname,host:e.host,hash:e.hash,search:e.search,pathname:e.pathname,href:e.href,path:`${e.pathname||""}${e.search||""}`};return"string"==typeof e.port&&0!==e.port.length&&(t.port=Number(e.port)),(e.username||e.password)&&(t.auth=`${e.username||""}:${e.password||""}`),t}},46458:e=>{function t(e){return Array.isArray(e)?e:[e]}const r=/^\s+$/,A=/^\\!/,n=/^\\#/,o=/\r?\n/g,i=/^\.*\/|^\.+$/,s="undefined"!=typeof Symbol?Symbol.for("node-ignore"):"node-ignore",a=/([0-z])-([0-z])/g,c=[[/\\?\s+$/,e=>0===e.indexOf("\\")?" ":""],[/\\\s/g,()=>" "],[/[\\^$.|*+(){]/g,e=>"\\"+e],[/\[([^\]/]*)($|\])/g,(e,t,r)=>{return"]"===r?`[${A=t,A.replace(a,(e,t,r)=>t.charCodeAt(0)<=r.charCodeAt(0)?e:"")}]`:"\\"+e;var A}],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/(?:[^*])$/,e=>/\/$/.test(e)?e+"$":e+"(?=$|\\/$)"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(e,t,r)=>t+6t+"[^\\/]*"],[/(\^|\\\/)?\\\*$/,(e,t)=>(t?t+"[^/]+":"[^/]*")+"(?=$|\\/$)"],[/\\\\\\/g,()=>"\\"]],g=Object.create(null),l=e=>"string"==typeof e;class u{constructor(e,t,r,A){this.origin=e,this.pattern=t,this.negative=r,this.regex=A}}const h=(e,t)=>{const r=e;let o=!1;0===e.indexOf("!")&&(o=!0,e=e.substr(1));const i=((e,t,r)=>{const A=g[e];if(A)return A;const n=c.reduce((t,r)=>t.replace(r[0],r[1].bind(e)),e);return g[e]=r?new RegExp(n,"i"):new RegExp(n)})(e=e.replace(A,"!").replace(n,"#"),0,t);return new u(r,e,o,i)},p=(e,t)=>{throw new t(e)},d=(e,t,r)=>{if(!l(e))return r(`path must be a string, but got \`${t}\``,TypeError);if(!e)return r("path must not be empty",TypeError);if(d.isNotRelative(e)){return r(`path should be a ${"`path.relative()`d"} string, but got "${t}"`,RangeError)}return!0},C=e=>i.test(e);d.isNotRelative=C,d.convert=e=>e;class f{constructor({ignorecase:e=!0}={}){var t,r,A;this._rules=[],this._ignorecase=e,t=this,r=s,A=!0,Object.defineProperty(t,r,{value:A}),this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[s])return this._rules=this._rules.concat(e._rules),void(this._added=!0);if((e=>e&&l(e)&&!r.test(e)&&0!==e.indexOf("#"))(e)){const t=h(e,this._ignorecase);this._added=!0,this._rules.push(t)}}add(e){return this._added=!1,t(l(e)?(e=>e.split(o))(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,t){let r=!1,A=!1;return this._rules.forEach(n=>{const{negative:o}=n;if(A===o&&r!==A||o&&!r&&!A&&!t)return;n.regex.test(e)&&(r=!o,A=o)}),{ignored:r,unignored:A}}_test(e,t,r,A){const n=e&&d.convert(e);return d(n,e,p),this._t(n,t,r,A)}_t(e,t,r,A){if(e in t)return t[e];if(A||(A=e.split("/")),A.pop(),!A.length)return t[e]=this._testOne(e,r);const n=this._t(A.join("/")+"/",t,r,A);return t[e]=n.ignored?n:this._testOne(e,r)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return t(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}}const I=e=>new f(e),E=()=>!1;if(I.isPathValid=e=>d(e&&d.convert(e),e,E),I.default=I,e.exports=I,"undefined"!=typeof process&&(process.env&&process.env.IGNORE_TEST_WIN32||"win32"===process.platform)){const e=e=>/^\\\\\?\\/.test(e)||/["<>|\u0000-\u001F]+/u.test(e)?e:e.replace(/\\/g,"/");d.convert=e;const t=/^[a-z]:\//i;d.isNotRelative=e=>t.test(e)||C(e)}},85870:(e,t,r)=>{try{var A=r(31669);if("function"!=typeof A.inherits)throw"";e.exports=A.inherits}catch(t){e.exports=r(48145)}},48145:e=>{"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},44486:e=>{ +/*! + * is-extglob + * + * Copyright (c) 2014-2016, Jon Schlinkert. + * Licensed under the MIT License. + */ +e.exports=function(e){if("string"!=typeof e||""===e)return!1;for(var t;t=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(t[2])return!0;e=e.slice(t.index+t[0].length)}return!1}},18193:(e,t,r)=>{ +/*! + * is-glob + * + * Copyright (c) 2014-2017, Jon Schlinkert. + * Released under the MIT License. + */ +var A=r(44486),n={"{":"}","(":")","[":"]"},o=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,i=/\\(.)|(^!|[*?{}()[\]]|\(\?)/;e.exports=function(e,t){if("string"!=typeof e||""===e)return!1;if(A(e))return!0;var r,s=o;for(t&&!1===t.strict&&(s=i);r=s.exec(e);){if(r[2])return!0;var a=r.index+r[0].length,c=r[1],g=c?n[c]:null;if(c&&g){var l=e.indexOf(g,a);-1!==l&&(a=l+1)}e=e.slice(a)}return!1}},59235:e=>{"use strict"; +/*! + * is-number + * + * Copyright (c) 2014-present, Jon Schlinkert. + * Released under the MIT License. + */e.exports=function(e){return"number"==typeof e?e-e==0:"string"==typeof e&&""!==e.trim()&&(Number.isFinite?Number.isFinite(+e):isFinite(+e))}},97369:(e,t)=>{var r,A,n,o; +/*! + * is-windows + * + * Copyright © 2015-2018, Jon Schlinkert. + * Released under the MIT License. + */o=function(){"use strict";return function(){return process&&("win32"===process.platform||/^(msys|cygwin)$/.test(process.env.OSTYPE))}},t&&"object"==typeof t?e.exports=o():(A=[],void 0===(n="function"==typeof(r=o)?r.apply(t,A):r)||(e.exports=n))},64151:(e,t,r)=>{var A;r(35747);function n(e,t,r){if("function"==typeof t&&(r=t,t={}),!r){if("function"!=typeof Promise)throw new TypeError("callback not provided");return new Promise((function(r,A){n(e,t||{},(function(e,t){e?A(e):r(t)}))}))}A(e,t||{},(function(e,A){e&&("EACCES"===e.code||t&&t.ignoreErrors)&&(e=null,A=!1),r(e,A)}))}A="win32"===process.platform||global.TESTING_WINDOWS?r(3202):r(2151),e.exports=n,n.sync=function(e,t){try{return A.sync(e,t||{})}catch(e){if(t&&t.ignoreErrors||"EACCES"===e.code)return!1;throw e}}},2151:(e,t,r)=>{e.exports=n,n.sync=function(e,t){return o(A.statSync(e),t)};var A=r(35747);function n(e,t,r){A.stat(e,(function(e,A){r(e,!e&&o(A,t))}))}function o(e,t){return e.isFile()&&function(e,t){var r=e.mode,A=e.uid,n=e.gid,o=void 0!==t.uid?t.uid:process.getuid&&process.getuid(),i=void 0!==t.gid?t.gid:process.getgid&&process.getgid(),s=parseInt("100",8),a=parseInt("010",8),c=parseInt("001",8),g=s|a;return r&c||r&a&&n===i||r&s&&A===o||r&g&&0===o}(e,t)}},3202:(e,t,r)=>{e.exports=o,o.sync=function(e,t){return n(A.statSync(e),e,t)};var A=r(35747);function n(e,t,r){return!(!e.isSymbolicLink()&&!e.isFile())&&function(e,t){var r=void 0!==t.pathExt?t.pathExt:process.env.PATHEXT;if(!r)return!0;if(-1!==(r=r.split(";")).indexOf(""))return!0;for(var A=0;A{"use strict";var A=r(40744);e.exports=A},40744:(e,t,r)=>{"use strict";var A=r(55384),n=r(24129);function o(e){return function(){throw new Error("Function "+e+" is deprecated and cannot be used.")}}e.exports.Type=r(81704),e.exports.Schema=r(8212),e.exports.FAILSAFE_SCHEMA=r(44413),e.exports.JSON_SCHEMA=r(45247),e.exports.CORE_SCHEMA=r(8769),e.exports.DEFAULT_SAFE_SCHEMA=r(65483),e.exports.DEFAULT_FULL_SCHEMA=r(5235),e.exports.load=A.load,e.exports.loadAll=A.loadAll,e.exports.safeLoad=A.safeLoad,e.exports.safeLoadAll=A.safeLoadAll,e.exports.dump=n.dump,e.exports.safeDump=n.safeDump,e.exports.YAMLException=r(17345),e.exports.MINIMAL_SCHEMA=r(44413),e.exports.SAFE_SCHEMA=r(65483),e.exports.DEFAULT_SCHEMA=r(5235),e.exports.scan=o("scan"),e.exports.parse=o("parse"),e.exports.compose=o("compose"),e.exports.addConstructor=o("addConstructor")},28149:e=>{"use strict";function t(e){return null==e}e.exports.isNothing=t,e.exports.isObject=function(e){return"object"==typeof e&&null!==e},e.exports.toArray=function(e){return Array.isArray(e)?e:t(e)?[]:[e]},e.exports.repeat=function(e,t){var r,A="";for(r=0;r{"use strict";var A=r(28149),n=r(17345),o=r(5235),i=r(65483),s=Object.prototype.toString,a=Object.prototype.hasOwnProperty,c={0:"\\0",7:"\\a",8:"\\b",9:"\\t",10:"\\n",11:"\\v",12:"\\f",13:"\\r",27:"\\e",34:'\\"',92:"\\\\",133:"\\N",160:"\\_",8232:"\\L",8233:"\\P"},g=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"];function l(e){var t,r,o;if(t=e.toString(16).toUpperCase(),e<=255)r="x",o=2;else if(e<=65535)r="u",o=4;else{if(!(e<=4294967295))throw new n("code point within a string may not be greater than 0xFFFFFFFF");r="U",o=8}return"\\"+r+A.repeat("0",o-t.length)+t}function u(e){this.schema=e.schema||o,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=A.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=function(e,t){var r,A,n,o,i,s,c;if(null===t)return{};for(r={},n=0,o=(A=Object.keys(t)).length;nA&&" "!==e[l+1],l=o);else if(!C(i))return 5;u=u&&f(i)}c=c||g&&o-l-1>A&&" "!==e[l+1]}return a||c?r>9&&I(e)?5:c?4:3:u&&!n(e)?1:2}function B(e,t,r,A){e.dump=function(){if(0===t.length)return"''";if(!e.noCompatMode&&-1!==g.indexOf(t))return"'"+t+"'";var o=e.indent*Math.max(1,r),i=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),s=A||e.flowLevel>-1&&r>=e.flowLevel;switch(E(t,s,e.indent,i,(function(t){return function(e,t){var r,A;for(r=0,A=e.implicitTypes.length;r"+y(t,e.indent)+m(h(function(e,t){var r,A,n=/(\n+)([^\n]*)/g,o=(s=e.indexOf("\n"),s=-1!==s?s:e.length,n.lastIndex=s,w(e.slice(0,s),t)),i="\n"===e[0]||" "===e[0];var s;for(;A=n.exec(e);){var a=A[1],c=A[2];r=" "===c[0],o+=a+(i||r||""===c?"":"\n")+w(c,t),i=r}return o}(t,i),o));case 5:return'"'+function(e){for(var t,r,A,n="",o=0;o=55296&&t<=56319&&(r=e.charCodeAt(o+1))>=56320&&r<=57343?(n+=l(1024*(t-55296)+r-56320+65536),o++):(A=c[t],n+=!A&&C(t)?e[o]:A||l(t));return n}(t)+'"';default:throw new n("impossible error: invalid scalar style")}}()}function y(e,t){var r=I(e)?String(t):"",A="\n"===e[e.length-1];return r+(A&&("\n"===e[e.length-2]||"\n"===e)?"+":A?"":"-")+"\n"}function m(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function w(e,t){if(""===e||" "===e[0])return e;for(var r,A,n=/ [^ ]/g,o=0,i=0,s=0,a="";r=n.exec(e);)(s=r.index)-o>t&&(A=i>o?i:s,a+="\n"+e.slice(o,A),o=A+1),i=s;return a+="\n",e.length-o>t&&i>o?a+=e.slice(o,i)+"\n"+e.slice(i+1):a+=e.slice(o),a.slice(1)}function Q(e,t,r){var A,o,i,c,g,l;for(i=0,c=(o=r?e.explicitTypes:e.implicitTypes).length;i tag resolver accepts not "'+l+'" style');A=g.represent[l](t,l)}e.dump=A}return!0}return!1}function D(e,t,r,A,o,i){e.tag=null,e.dump=r,Q(e,r,!1)||Q(e,r,!0);var a=s.call(e.dump);A&&(A=e.flowLevel<0||e.flowLevel>t);var c,g,l="[object Object]"===a||"[object Array]"===a;if(l&&(g=-1!==(c=e.duplicates.indexOf(r))),(null!==e.tag&&"?"!==e.tag||g||2!==e.indent&&t>0)&&(o=!1),g&&e.usedDuplicates[c])e.dump="*ref_"+c;else{if(l&&g&&!e.usedDuplicates[c]&&(e.usedDuplicates[c]=!0),"[object Object]"===a)A&&0!==Object.keys(e.dump).length?(!function(e,t,r,A){var o,i,s,a,c,g,l="",u=e.tag,h=Object.keys(r);if(!0===e.sortKeys)h.sort();else if("function"==typeof e.sortKeys)h.sort(e.sortKeys);else if(e.sortKeys)throw new n("sortKeys must be a boolean or a function");for(o=0,i=h.length;o1024)&&(e.dump&&10===e.dump.charCodeAt(0)?g+="?":g+="? "),g+=e.dump,c&&(g+=p(e,t)),D(e,t+1,a,!0,c)&&(e.dump&&10===e.dump.charCodeAt(0)?g+=":":g+=": ",l+=g+=e.dump));e.tag=u,e.dump=l||"{}"}(e,t,e.dump,o),g&&(e.dump="&ref_"+c+e.dump)):(!function(e,t,r){var A,n,o,i,s,a="",c=e.tag,g=Object.keys(r);for(A=0,n=g.length;A1024&&(s+="? "),s+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),D(e,t,i,!1,!1)&&(a+=s+=e.dump));e.tag=c,e.dump="{"+a+"}"}(e,t,e.dump),g&&(e.dump="&ref_"+c+" "+e.dump));else if("[object Array]"===a){var u=e.noArrayIndent&&t>0?t-1:t;A&&0!==e.dump.length?(!function(e,t,r,A){var n,o,i="",s=e.tag;for(n=0,o=r.length;n "+e.dump)}return!0}function b(e,t){var r,A,n=[],o=[];for(function e(t,r,A){var n,o,i;if(null!==t&&"object"==typeof t)if(-1!==(o=r.indexOf(t)))-1===A.indexOf(o)&&A.push(o);else if(r.push(t),Array.isArray(t))for(o=0,i=t.length;o{"use strict";function t(e,t){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=t,this.message=(this.reason||"(unknown reason)")+(this.mark?" "+this.mark.toString():""),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||""}t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t.prototype.toString=function(e){var t=this.name+": ";return t+=this.reason||"(unknown reason)",!e&&this.mark&&(t+=" "+this.mark.toString()),t},e.exports=t},55384:(e,t,r)=>{"use strict";var A=r(28149),n=r(17345),o=r(30399),i=r(65483),s=r(5235),a=Object.prototype.hasOwnProperty,c=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g=/[\x85\u2028\u2029]/,l=/[,\[\]\{\}]/,u=/^(?:!|!!|![a-z\-]+!)$/i,h=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function p(e){return 10===e||13===e}function d(e){return 9===e||32===e}function C(e){return 9===e||32===e||10===e||13===e}function f(e){return 44===e||91===e||93===e||123===e||125===e}function I(e){var t;return 48<=e&&e<=57?e-48:97<=(t=32|e)&&t<=102?t-97+10:-1}function E(e){return 48===e?"\0":97===e?"":98===e?"\b":116===e||9===e?"\t":110===e?"\n":118===e?"\v":102===e?"\f":114===e?"\r":101===e?"":32===e?" ":34===e?'"':47===e?"/":92===e?"\\":78===e?"…":95===e?" ":76===e?"\u2028":80===e?"\u2029":""}function B(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10),56320+(e-65536&1023))}for(var y=new Array(256),m=new Array(256),w=0;w<256;w++)y[w]=E(w)?1:0,m[w]=E(w);function Q(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||s,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function D(e,t){return new n(t,new o(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function b(e,t){throw D(e,t)}function v(e,t){e.onWarning&&e.onWarning.call(null,D(e,t))}var S={YAML:function(e,t,r){var A,n,o;null!==e.version&&b(e,"duplication of %YAML directive"),1!==r.length&&b(e,"YAML directive accepts exactly one argument"),null===(A=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&b(e,"ill-formed argument of the YAML directive"),n=parseInt(A[1],10),o=parseInt(A[2],10),1!==n&&b(e,"unacceptable YAML version of the document"),e.version=r[0],e.checkLineBreaks=o<2,1!==o&&2!==o&&v(e,"unsupported YAML version of the document")},TAG:function(e,t,r){var A,n;2!==r.length&&b(e,"TAG directive accepts exactly two arguments"),A=r[0],n=r[1],u.test(A)||b(e,"ill-formed tag handle (first argument) of the TAG directive"),a.call(e.tagMap,A)&&b(e,'there is a previously declared suffix for "'+A+'" tag handle'),h.test(n)||b(e,"ill-formed tag prefix (second argument) of the TAG directive"),e.tagMap[A]=n}};function k(e,t,r,A){var n,o,i,s;if(t1&&(e.result+=A.repeat("\n",t-1))}function L(e,t){var r,A,n=e.tag,o=e.anchor,i=[],s=!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=i),A=e.input.charCodeAt(e.position);0!==A&&45===A&&C(e.input.charCodeAt(e.position+1));)if(s=!0,e.position++,M(e,!0,-1)&&e.lineIndent<=t)i.push(null),A=e.input.charCodeAt(e.position);else if(r=e.line,U(e,t,3,!1,!0),i.push(e.result),M(e,!0,-1),A=e.input.charCodeAt(e.position),(e.line===r||e.lineIndent>t)&&0!==A)b(e,"bad indentation of a sequence entry");else if(e.lineIndentt?w=1:e.lineIndent===t?w=0:e.lineIndentt?w=1:e.lineIndent===t?w=0:e.lineIndentt)&&(U(e,t,4,!0,n)&&(f?h=e.result:p=e.result),f||(F(e,g,l,u,h,p,o,i),u=h=p=null),M(e,!0,-1),s=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==s)b(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===o?b(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):g?b(e,"repeat of an indentation width identifier"):(l=t+o-1,g=!0)}if(d(i)){do{i=e.input.charCodeAt(++e.position)}while(d(i));if(35===i)do{i=e.input.charCodeAt(++e.position)}while(!p(i)&&0!==i)}for(;0!==i;){for(K(e),e.lineIndent=0,i=e.input.charCodeAt(e.position);(!g||e.lineIndentl&&(l=e.lineIndent),p(i))u++;else{if(e.lineIndent0){for(n=i,o=0;n>0;n--)(i=I(s=e.input.charCodeAt(++e.position)))>=0?o=(o<<4)+i:b(e,"expected hexadecimal character");e.result+=B(o),e.position++}else b(e,"unknown escape sequence");r=A=e.position}else p(s)?(k(e,r,A,!0),x(e,M(e,!1,t)),r=A=e.position):e.position===e.lineStart&&R(e)?b(e,"unexpected end of the document within a double quoted scalar"):(e.position++,A=e.position)}b(e,"unexpected end of the stream within a double quoted scalar")}(e,h)?D=!0:!function(e){var t,r,A;if(42!==(A=e.input.charCodeAt(e.position)))return!1;for(A=e.input.charCodeAt(++e.position),t=e.position;0!==A&&!C(A)&&!f(A);)A=e.input.charCodeAt(++e.position);return e.position===t&&b(e,"name of an alias node must contain at least one character"),r=e.input.slice(t,e.position),e.anchorMap.hasOwnProperty(r)||b(e,'unidentified alias "'+r+'"'),e.result=e.anchorMap[r],M(e,!0,-1),!0}(e)?function(e,t,r){var A,n,o,i,s,a,c,g,l=e.kind,u=e.result;if(C(g=e.input.charCodeAt(e.position))||f(g)||35===g||38===g||42===g||33===g||124===g||62===g||39===g||34===g||37===g||64===g||96===g)return!1;if((63===g||45===g)&&(C(A=e.input.charCodeAt(e.position+1))||r&&f(A)))return!1;for(e.kind="scalar",e.result="",n=o=e.position,i=!1;0!==g;){if(58===g){if(C(A=e.input.charCodeAt(e.position+1))||r&&f(A))break}else if(35===g){if(C(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&R(e)||r&&f(g))break;if(p(g)){if(s=e.line,a=e.lineStart,c=e.lineIndent,M(e,!1,-1),e.lineIndent>=t){i=!0,g=e.input.charCodeAt(e.position);continue}e.position=o,e.line=s,e.lineStart=a,e.lineIndent=c;break}}i&&(k(e,n,o,!1),x(e,e.line-s),n=o=e.position,i=!1),d(g)||(o=e.position+1),g=e.input.charCodeAt(++e.position)}return k(e,n,o,!1),!!e.result||(e.kind=l,e.result=u,!1)}(e,h,1===r)&&(D=!0,null===e.tag&&(e.tag="?")):(D=!0,null===e.tag&&null===e.anchor||b(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===w&&(D=c&&L(e,E))),null!==e.tag&&"!"!==e.tag)if("?"===e.tag){for(g=0,l=e.implicitTypes.length;g tag; it should be "'+u.kind+'", not "'+e.kind+'"'),u.resolve(e.result)?(e.result=u.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):b(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):b(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||D}function T(e){var t,r,A,n,o=e.position,i=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(n=e.input.charCodeAt(e.position))&&(M(e,!0,-1),n=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==n));){for(i=!0,n=e.input.charCodeAt(++e.position),t=e.position;0!==n&&!C(n);)n=e.input.charCodeAt(++e.position);for(A=[],(r=e.input.slice(t,e.position)).length<1&&b(e,"directive name must not be less than one character in length");0!==n;){for(;d(n);)n=e.input.charCodeAt(++e.position);if(35===n){do{n=e.input.charCodeAt(++e.position)}while(0!==n&&!p(n));break}if(p(n))break;for(t=e.position;0!==n&&!C(n);)n=e.input.charCodeAt(++e.position);A.push(e.input.slice(t,e.position))}0!==n&&K(e),a.call(S,r)?S[r](e,r,A):v(e,'unknown document directive "'+r+'"')}M(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,M(e,!0,-1)):i&&b(e,"directives end mark is expected"),U(e,e.lineIndent-1,4,!1,!0),M(e,!0,-1),e.checkLineBreaks&&g.test(e.input.slice(o,e.position))&&v(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&R(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,M(e,!0,-1)):e.position{"use strict";var A=r(28149);function n(e,t,r,A,n){this.name=e,this.buffer=t,this.position=r,this.line=A,this.column=n}n.prototype.getSnippet=function(e,t){var r,n,o,i,s;if(!this.buffer)return null;for(e=e||4,t=t||75,r="",n=this.position;n>0&&-1==="\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(n-1));)if(n-=1,this.position-n>t/2-1){r=" ... ",n+=5;break}for(o="",i=this.position;it/2-1){o=" ... ",i-=5;break}return s=this.buffer.slice(n,i),A.repeat(" ",e)+r+s+o+"\n"+A.repeat(" ",e+this.position-n+r.length)+"^"},n.prototype.toString=function(e){var t,r="";return this.name&&(r+='in "'+this.name+'" '),r+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet())&&(r+=":\n"+t),r},e.exports=n},8212:(e,t,r)=>{"use strict";var A=r(28149),n=r(17345),o=r(81704);function i(e,t,r){var A=[];return e.include.forEach((function(e){r=i(e,t,r)})),e[t].forEach((function(e){r.forEach((function(t,r){t.tag===e.tag&&t.kind===e.kind&&A.push(r)})),r.push(e)})),r.filter((function(e,t){return-1===A.indexOf(t)}))}function s(e){this.include=e.include||[],this.implicit=e.implicit||[],this.explicit=e.explicit||[],this.implicit.forEach((function(e){if(e.loadKind&&"scalar"!==e.loadKind)throw new n("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.")})),this.compiledImplicit=i(this,"implicit",[]),this.compiledExplicit=i(this,"explicit",[]),this.compiledTypeMap=function(){var e,t,r={scalar:{},sequence:{},mapping:{},fallback:{}};function A(e){r[e.kind][e.tag]=r.fallback[e.tag]=e}for(e=0,t=arguments.length;e{"use strict";var A=r(8212);e.exports=new A({include:[r(45247)]})},5235:(e,t,r)=>{"use strict";var A=r(8212);e.exports=A.DEFAULT=new A({include:[r(65483)],explicit:[r(61425),r(61872),r(79982)]})},65483:(e,t,r)=>{"use strict";var A=r(8212);e.exports=new A({include:[r(8769)],implicit:[r(83516),r(95441)],explicit:[r(34836),r(6847),r(65173),r(92025)]})},44413:(e,t,r)=>{"use strict";var A=r(8212);e.exports=new A({explicit:[r(19952),r(46557),r(90173)]})},45247:(e,t,r)=>{"use strict";var A=r(8212);e.exports=new A({include:[r(44413)],implicit:[r(40188),r(58357),r(82106),r(71945)]})},81704:(e,t,r)=>{"use strict";var A=r(17345),n=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],o=["scalar","sequence","mapping"];e.exports=function(e,t){var r,i;if(t=t||{},Object.keys(t).forEach((function(t){if(-1===n.indexOf(t))throw new A('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.defaultStyle=t.defaultStyle||null,this.styleAliases=(r=t.styleAliases||null,i={},null!==r&&Object.keys(r).forEach((function(e){r[e].forEach((function(t){i[String(t)]=e}))})),i),-1===o.indexOf(this.kind))throw new A('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}},34836:(e,t,r)=>{"use strict";var A;try{A=r(64293).Buffer}catch(e){}var n=r(81704),o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";e.exports=new n("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,r,A=0,n=e.length,i=o;for(r=0;r64)){if(t<0)return!1;A+=6}return A%8==0},construct:function(e){var t,r,n=e.replace(/[\r\n=]/g,""),i=n.length,s=o,a=0,c=[];for(t=0;t>16&255),c.push(a>>8&255),c.push(255&a)),a=a<<6|s.indexOf(n.charAt(t));return 0===(r=i%4*6)?(c.push(a>>16&255),c.push(a>>8&255),c.push(255&a)):18===r?(c.push(a>>10&255),c.push(a>>2&255)):12===r&&c.push(a>>4&255),A?A.from?A.from(c):new A(c):c},predicate:function(e){return A&&A.isBuffer(e)},represent:function(e){var t,r,A="",n=0,i=e.length,s=o;for(t=0;t>18&63],A+=s[n>>12&63],A+=s[n>>6&63],A+=s[63&n]),n=(n<<8)+e[t];return 0===(r=i%3)?(A+=s[n>>18&63],A+=s[n>>12&63],A+=s[n>>6&63],A+=s[63&n]):2===r?(A+=s[n>>10&63],A+=s[n>>4&63],A+=s[n<<2&63],A+=s[64]):1===r&&(A+=s[n>>2&63],A+=s[n<<4&63],A+=s[64],A+=s[64]),A}})},58357:(e,t,r)=>{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:bool",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)},construct:function(e){return"true"===e||"True"===e||"TRUE"===e},predicate:function(e){return"[object Boolean]"===Object.prototype.toString.call(e)},represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},71945:(e,t,r)=>{"use strict";var A=r(28149),n=r(81704),o=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var i=/^[-+]?[0-9]+e/;e.exports=new n("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!o.test(e)||"_"===e[e.length-1])},construct:function(e){var t,r,A,n;return r="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,n=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:t.indexOf(":")>=0?(t.split(":").forEach((function(e){n.unshift(parseFloat(e,10))})),t=0,A=1,n.forEach((function(e){t+=e*A,A*=60})),r*t):r*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||A.isNegativeZero(e))},represent:function(e,t){var r;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(A.isNegativeZero(e))return"-0.0";return r=e.toString(10),i.test(r)?r.replace("e",".e"):r},defaultStyle:"lowercase"})},82106:(e,t,r)=>{"use strict";var A=r(28149),n=r(81704);function o(e){return 48<=e&&e<=55}function i(e){return 48<=e&&e<=57}e.exports=new n("tag:yaml.org,2002:int",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,r,A=e.length,n=0,s=!1;if(!A)return!1;if("-"!==(t=e[n])&&"+"!==t||(t=e[++n]),"0"===t){if(n+1===A)return!0;if("b"===(t=e[++n])){for(n++;n=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0"+e.toString(8):"-0"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}})},79982:(e,t,r)=>{"use strict";var A;try{A=r(Object(function(){var e=new Error("Cannot find module 'esprima'");throw e.code="MODULE_NOT_FOUND",e}()))}catch(e){"undefined"!=typeof window&&(A=window.esprima)}var n=r(81704);e.exports=new n("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:function(e){if(null===e)return!1;try{var t="("+e+")",r=A.parse(t,{range:!0});return"Program"===r.type&&1===r.body.length&&"ExpressionStatement"===r.body[0].type&&("ArrowFunctionExpression"===r.body[0].expression.type||"FunctionExpression"===r.body[0].expression.type)}catch(e){return!1}},construct:function(e){var t,r="("+e+")",n=A.parse(r,{range:!0}),o=[];if("Program"!==n.type||1!==n.body.length||"ExpressionStatement"!==n.body[0].type||"ArrowFunctionExpression"!==n.body[0].expression.type&&"FunctionExpression"!==n.body[0].expression.type)throw new Error("Failed to resolve function");return n.body[0].expression.params.forEach((function(e){o.push(e.name)})),t=n.body[0].expression.body.range,"BlockStatement"===n.body[0].expression.body.type?new Function(o,r.slice(t[0]+1,t[1]-1)):new Function(o,"return "+r.slice(t[0],t[1]))},predicate:function(e){return"[object Function]"===Object.prototype.toString.call(e)},represent:function(e){return e.toString()}})},61872:(e,t,r)=>{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:function(e){if(null===e)return!1;if(0===e.length)return!1;var t=e,r=/\/([gim]*)$/.exec(e),A="";if("/"===t[0]){if(r&&(A=r[1]),A.length>3)return!1;if("/"!==t[t.length-A.length-1])return!1}return!0},construct:function(e){var t=e,r=/\/([gim]*)$/.exec(e),A="";return"/"===t[0]&&(r&&(A=r[1]),t=t.slice(1,t.length-A.length-1)),new RegExp(t,A)},predicate:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},represent:function(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}})},61425:(e,t,r)=>{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:function(){return!0},construct:function(){},predicate:function(e){return void 0===e},represent:function(){return""}})},90173:(e,t,r)=>{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},95441:(e,t,r)=>{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}})},40188:(e,t,r)=>{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:null",{kind:"scalar",resolve:function(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)},construct:function(){return null},predicate:function(e){return null===e},represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},6847:(e,t,r)=>{"use strict";var A=r(81704),n=Object.prototype.hasOwnProperty,o=Object.prototype.toString;e.exports=new A("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,r,A,i,s,a=[],c=e;for(t=0,r=c.length;t{"use strict";var A=r(81704),n=Object.prototype.toString;e.exports=new A("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,r,A,o,i,s=e;for(i=new Array(s.length),t=0,r=s.length;t{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return null!==e?e:[]}})},92025:(e,t,r)=>{"use strict";var A=r(81704),n=Object.prototype.hasOwnProperty;e.exports=new A("tag:yaml.org,2002:set",{kind:"mapping",resolve:function(e){if(null===e)return!0;var t,r=e;for(t in r)if(n.call(r,t)&&null!==r[t])return!1;return!0},construct:function(e){return null!==e?e:{}}})},19952:(e,t,r)=>{"use strict";var A=r(81704);e.exports=new A("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return null!==e?e:""}})},83516:(e,t,r)=>{"use strict";var A=r(81704),n=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),o=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");e.exports=new A("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==n.exec(e)||null!==o.exec(e))},construct:function(e){var t,r,A,i,s,a,c,g,l=0,u=null;if(null===(t=n.exec(e))&&(t=o.exec(e)),null===t)throw new Error("Date resolve error");if(r=+t[1],A=+t[2]-1,i=+t[3],!t[4])return new Date(Date.UTC(r,A,i));if(s=+t[4],a=+t[5],c=+t[6],t[7]){for(l=t[7].slice(0,3);l.length<3;)l+="0";l=+l}return t[9]&&(u=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(u=-u)),g=new Date(Date.UTC(r,A,i,s,a,c,l)),u&&g.setTime(g.getTime()-u),g},instanceOf:Date,represent:function(e){return e.toISOString()}})},7427:(e,t)=>{t.stringify=function e(t){if(void 0===t)return t;if(t&&Buffer.isBuffer(t))return JSON.stringify(":base64:"+t.toString("base64"));if(t&&t.toJSON&&(t=t.toJSON()),t&&"object"==typeof t){var r="",A=Array.isArray(t);r=A?"[":"{";var n=!0;for(var o in t){var i="function"==typeof t[o]||!A&&void 0===t[o];Object.hasOwnProperty.call(t,o)&&!i&&(n||(r+=","),n=!1,A?null==t[o]?r+="null":r+=e(t[o]):void 0!==t[o]&&(r+=e(o)+":"+e(t[o])))}return r+=A?"]":"}"}return"string"==typeof t?JSON.stringify(/^:/.test(t)?":"+t:t):void 0===t?"null":JSON.stringify(t)},t.parse=function(e){return JSON.parse(e,(function(e,t){return"string"==typeof t?/^:base64:/.test(t)?Buffer.from(t.substring(8),"base64"):/^:/.test(t)?t.substring(1):t:t}))}},72515:(e,t,r)=>{"use strict";const A=r(28614),n=r(7427);e.exports=class extends A{constructor(e,t){if(super(),this.opts=Object.assign({namespace:"keyv",serialize:n.stringify,deserialize:n.parse},"string"==typeof e?{uri:e}:e,t),!this.opts.store){const e=Object.assign({},this.opts);this.opts.store=(e=>{const t={redis:"@keyv/redis",mongodb:"@keyv/mongo",mongo:"@keyv/mongo",sqlite:"@keyv/sqlite",postgresql:"@keyv/postgres",postgres:"@keyv/postgres",mysql:"@keyv/mysql"};if(e.adapter||e.uri){const A=e.adapter||/^[^:]*/.exec(e.uri)[0];return new(r(89112)(t[A]))(e)}return new Map})(e)}"function"==typeof this.opts.store.on&&this.opts.store.on("error",e=>this.emit("error",e)),this.opts.store.namespace=this.opts.namespace}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}get(e,t){e=this._getKeyPrefix(e);const{store:r}=this.opts;return Promise.resolve().then(()=>r.get(e)).then(e=>"string"==typeof e?this.opts.deserialize(e):e).then(r=>{if(void 0!==r){if(!("number"==typeof r.expires&&Date.now()>r.expires))return t&&t.raw?r:r.value;this.delete(e)}})}set(e,t,r){e=this._getKeyPrefix(e),void 0===r&&(r=this.opts.ttl),0===r&&(r=void 0);const{store:A}=this.opts;return Promise.resolve().then(()=>{const e="number"==typeof r?Date.now()+r:null;return t={value:t,expires:e},this.opts.serialize(t)}).then(t=>A.set(e,t,r)).then(()=>!0)}delete(e){e=this._getKeyPrefix(e);const{store:t}=this.opts;return Promise.resolve().then(()=>t.delete(e))}clear(){const{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}}},89112:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=89112,e.exports=t},78962:(e,t,r)=>{var A=r(99513)(r(76169),"DataView");e.exports=A},72574:(e,t,r)=>{var A=r(31713),n=r(86688),o=r(45937),i=r(5017),s=r(79457);function a(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var A=r(14620),n=r(73682),o=r(43112),i=r(90640),s=r(9380);function a(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var A=r(99513)(r(76169),"Map");e.exports=A},75009:(e,t,r)=>{var A=r(18209),n=r(89706),o=r(43786),i=r(17926),s=r(87345);function a(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t{var A=r(99513)(r(76169),"Promise");e.exports=A},43231:(e,t,r)=>{var A=r(99513)(r(76169),"Set");e.exports=A},46235:(e,t,r)=>{var A=r(75009),n=r(74785),o=r(87760);function i(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new A;++t{var A=r(29197),n=r(35678),o=r(33336),i=r(97163),s=r(43737),a=r(48548);function c(e){var t=this.__data__=new A(e);this.size=t.size}c.prototype.clear=n,c.prototype.delete=o,c.prototype.get=i,c.prototype.has=s,c.prototype.set=a,e.exports=c},69976:(e,t,r)=>{var A=r(76169).Symbol;e.exports=A},2740:(e,t,r)=>{var A=r(76169).Uint8Array;e.exports=A},47063:(e,t,r)=>{var A=r(99513)(r(76169),"WeakMap");e.exports=A},66636:e=>{e.exports=function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}},33326:e=>{e.exports=function(e,t){for(var r=-1,A=null==e?0:e.length;++r{e.exports=function(e,t){for(var r=-1,A=null==e?0:e.length,n=0,o=[];++r{var A=r(7089),n=r(61771),o=r(82664),i=r(10667),s=r(98041),a=r(32565),c=Object.prototype.hasOwnProperty;e.exports=function(e,t){var r=o(e),g=!r&&n(e),l=!r&&!g&&i(e),u=!r&&!g&&!l&&a(e),h=r||g||l||u,p=h?A(e.length,String):[],d=p.length;for(var C in e)!t&&!c.call(e,C)||h&&("length"==C||l&&("offset"==C||"parent"==C)||u&&("buffer"==C||"byteLength"==C||"byteOffset"==C)||s(C,d))||p.push(C);return p}},60783:e=>{e.exports=function(e,t){for(var r=-1,A=null==e?0:e.length,n=Array(A);++r{e.exports=function(e,t){for(var r=-1,A=t.length,n=e.length;++r{e.exports=function(e,t,r,A){var n=-1,o=null==e?0:e.length;for(A&&o&&(r=e[++n]);++n{e.exports=function(e,t){for(var r=-1,A=null==e?0:e.length;++r{e.exports=function(e){return e.split("")}},11852:e=>{var t=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g;e.exports=function(e){return e.match(t)||[]}},26943:(e,t,r)=>{var A=r(91198),n=r(71074);e.exports=function(e,t,r){(void 0!==r&&!n(e[t],r)||void 0===r&&!(t in e))&&A(e,t,r)}},65759:(e,t,r)=>{var A=r(91198),n=r(71074),o=Object.prototype.hasOwnProperty;e.exports=function(e,t,r){var i=e[t];o.call(e,t)&&n(i,r)&&(void 0!==r||t in e)||A(e,t,r)}},39836:(e,t,r)=>{var A=r(71074);e.exports=function(e,t){for(var r=e.length;r--;)if(A(e[r][0],t))return r;return-1}},28628:(e,t,r)=>{var A=r(75182),n=r(42185);e.exports=function(e,t){return e&&A(t,n(t),e)}},78707:(e,t,r)=>{var A=r(75182),n=r(24887);e.exports=function(e,t){return e&&A(t,n(t),e)}},91198:(e,t,r)=>{var A=r(65);e.exports=function(e,t,r){"__proto__"==t&&A?A(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}},41076:(e,t,r)=>{var A=r(22851),n=r(33326),o=r(65759),i=r(28628),s=r(78707),a=r(64266),c=r(87229),g=r(23105),l=r(60741),u=r(60753),h=r(64420),p=r(79435),d=r(27908),C=r(37836),f=r(88438),I=r(82664),E=r(10667),B=r(13349),y=r(46778),m=r(33931),w=r(42185),Q={};Q["[object Arguments]"]=Q["[object Array]"]=Q["[object ArrayBuffer]"]=Q["[object DataView]"]=Q["[object Boolean]"]=Q["[object Date]"]=Q["[object Float32Array]"]=Q["[object Float64Array]"]=Q["[object Int8Array]"]=Q["[object Int16Array]"]=Q["[object Int32Array]"]=Q["[object Map]"]=Q["[object Number]"]=Q["[object Object]"]=Q["[object RegExp]"]=Q["[object Set]"]=Q["[object String]"]=Q["[object Symbol]"]=Q["[object Uint8Array]"]=Q["[object Uint8ClampedArray]"]=Q["[object Uint16Array]"]=Q["[object Uint32Array]"]=!0,Q["[object Error]"]=Q["[object Function]"]=Q["[object WeakMap]"]=!1,e.exports=function e(t,r,D,b,v,S){var k,N=1&r,F=2&r,K=4&r;if(D&&(k=v?D(t,b,v,S):D(t)),void 0!==k)return k;if(!y(t))return t;var M=I(t);if(M){if(k=d(t),!N)return c(t,k)}else{var R=p(t),x="[object Function]"==R||"[object GeneratorFunction]"==R;if(E(t))return a(t,N);if("[object Object]"==R||"[object Arguments]"==R||x&&!v){if(k=F||x?{}:f(t),!N)return F?l(t,s(k,t)):g(t,i(k,t))}else{if(!Q[R])return v?t:{};k=C(t,R,N)}}S||(S=new A);var L=S.get(t);if(L)return L;S.set(t,k),m(t)?t.forEach((function(A){k.add(e(A,r,D,A,t,S))})):B(t)&&t.forEach((function(A,n){k.set(n,e(A,r,D,n,t,S))}));var P=K?F?h:u:F?keysIn:w,O=M?void 0:P(t);return n(O||t,(function(A,n){O&&(A=t[n=A]),o(k,n,e(A,r,D,n,t,S))})),k}},15178:(e,t,r)=>{var A=r(46778),n=Object.create,o=function(){function e(){}return function(t){if(!A(t))return{};if(n)return n(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}();e.exports=o},93274:(e,t,r)=>{var A=r(40945),n=r(958);e.exports=function e(t,r,o,i,s){var a=-1,c=t.length;for(o||(o=n),s||(s=[]);++a0&&o(g)?r>1?e(g,r-1,o,i,s):A(s,g):i||(s[s.length]=g)}return s}},31689:(e,t,r)=>{var A=r(59907)();e.exports=A},62164:(e,t,r)=>{var A=r(31689),n=r(42185);e.exports=function(e,t){return e&&A(e,t,n)}},84173:(e,t,r)=>{var A=r(56725),n=r(49874);e.exports=function(e,t){for(var r=0,o=(t=A(t,e)).length;null!=e&&r{var A=r(40945),n=r(82664);e.exports=function(e,t,r){var o=t(e);return n(e)?o:A(o,r(e))}},52502:(e,t,r)=>{var A=r(69976),n=r(2854),o=r(87427),i=A?A.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":i&&i in Object(e)?n(e):o(e)}},95325:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e,r){return null!=e&&t.call(e,r)}},3881:e=>{e.exports=function(e,t){return null!=e&&t in Object(e)}},76357:(e,t,r)=>{var A=r(52502),n=r(38496);e.exports=function(e){return n(e)&&"[object Arguments]"==A(e)}},74195:(e,t,r)=>{var A=r(48957),n=r(38496);e.exports=function e(t,r,o,i,s){return t===r||(null==t||null==r||!n(t)&&!n(r)?t!=t&&r!=r:A(t,r,o,i,e,s))}},48957:(e,t,r)=>{var A=r(22851),n=r(75500),o=r(28475),i=r(50245),s=r(79435),a=r(82664),c=r(10667),g=r(32565),l="[object Object]",u=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,h,p,d){var C=a(e),f=a(t),I=C?"[object Array]":s(e),E=f?"[object Array]":s(t),B=(I="[object Arguments]"==I?l:I)==l,y=(E="[object Arguments]"==E?l:E)==l,m=I==E;if(m&&c(e)){if(!c(t))return!1;C=!0,B=!1}if(m&&!B)return d||(d=new A),C||g(e)?n(e,t,r,h,p,d):o(e,t,I,r,h,p,d);if(!(1&r)){var w=B&&u.call(e,"__wrapped__"),Q=y&&u.call(t,"__wrapped__");if(w||Q){var D=w?e.value():e,b=Q?t.value():t;return d||(d=new A),p(D,b,r,h,d)}}return!!m&&(d||(d=new A),i(e,t,r,h,p,d))}},55994:(e,t,r)=>{var A=r(79435),n=r(38496);e.exports=function(e){return n(e)&&"[object Map]"==A(e)}},66470:(e,t,r)=>{var A=r(22851),n=r(74195);e.exports=function(e,t,r,o){var i=r.length,s=i,a=!o;if(null==e)return!s;for(e=Object(e);i--;){var c=r[i];if(a&&c[2]?c[1]!==e[c[0]]:!(c[0]in e))return!1}for(;++i{var A=r(92533),n=r(15061),o=r(46778),i=r(76384),s=/^\[object .+?Constructor\]$/,a=Function.prototype,c=Object.prototype,g=a.toString,l=c.hasOwnProperty,u=RegExp("^"+g.call(l).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!o(e)||n(e))&&(A(e)?u:s).test(i(e))}},28612:(e,t,r)=>{var A=r(79435),n=r(38496);e.exports=function(e){return n(e)&&"[object Set]"==A(e)}},98998:(e,t,r)=>{var A=r(52502),n=r(46369),o=r(38496),i={};i["[object Float32Array]"]=i["[object Float64Array]"]=i["[object Int8Array]"]=i["[object Int16Array]"]=i["[object Int32Array]"]=i["[object Uint8Array]"]=i["[object Uint8ClampedArray]"]=i["[object Uint16Array]"]=i["[object Uint32Array]"]=!0,i["[object Arguments]"]=i["[object Array]"]=i["[object ArrayBuffer]"]=i["[object Boolean]"]=i["[object DataView]"]=i["[object Date]"]=i["[object Error]"]=i["[object Function]"]=i["[object Map]"]=i["[object Number]"]=i["[object Object]"]=i["[object RegExp]"]=i["[object Set]"]=i["[object String]"]=i["[object WeakMap]"]=!1,e.exports=function(e){return o(e)&&n(e.length)&&!!i[A(e)]}},42208:(e,t,r)=>{var A=r(96962),n=r(90348),o=r(61977),i=r(82664),s=r(7430);e.exports=function(e){return"function"==typeof e?e:null==e?o:"object"==typeof e?i(e)?n(e[0],e[1]):A(e):s(e)}},50994:(e,t,r)=>{var A=r(89513),n=r(60657),o=Object.prototype.hasOwnProperty;e.exports=function(e){if(!A(e))return n(e);var t=[];for(var r in Object(e))o.call(e,r)&&"constructor"!=r&&t.push(r);return t}},8372:(e,t,r)=>{var A=r(46778),n=r(89513),o=r(95632),i=Object.prototype.hasOwnProperty;e.exports=function(e){if(!A(e))return o(e);var t=n(e),r=[];for(var s in e)("constructor"!=s||!t&&i.call(e,s))&&r.push(s);return r}},96962:(e,t,r)=>{var A=r(66470),n=r(98705),o=r(12757);e.exports=function(e){var t=n(e);return 1==t.length&&t[0][2]?o(t[0][0],t[0][1]):function(r){return r===e||A(r,e,t)}}},90348:(e,t,r)=>{var A=r(74195),n=r(44674),o=r(34878),i=r(70474),s=r(20925),a=r(12757),c=r(49874);e.exports=function(e,t){return i(e)&&s(t)?a(c(e),t):function(r){var i=n(r,e);return void 0===i&&i===t?o(r,e):A(t,i,3)}}},51264:(e,t,r)=>{var A=r(22851),n=r(26943),o=r(31689),i=r(16834),s=r(46778),a=r(24887),c=r(36883);e.exports=function e(t,r,g,l,u){t!==r&&o(r,(function(o,a){if(u||(u=new A),s(o))i(t,r,a,g,e,l,u);else{var h=l?l(c(t,a),o,a+"",t,r,u):void 0;void 0===h&&(h=o),n(t,a,h)}}),a)}},16834:(e,t,r)=>{var A=r(26943),n=r(64266),o=r(58042),i=r(87229),s=r(88438),a=r(61771),c=r(82664),g=r(16064),l=r(10667),u=r(92533),h=r(46778),p=r(11672),d=r(32565),C=r(36883),f=r(36506);e.exports=function(e,t,r,I,E,B,y){var m=C(e,r),w=C(t,r),Q=y.get(w);if(Q)A(e,r,Q);else{var D=B?B(m,w,r+"",e,t,y):void 0,b=void 0===D;if(b){var v=c(w),S=!v&&l(w),k=!v&&!S&&d(w);D=w,v||S||k?c(m)?D=m:g(m)?D=i(m):S?(b=!1,D=n(w,!0)):k?(b=!1,D=o(w,!0)):D=[]:p(w)||a(w)?(D=m,a(m)?D=f(m):h(m)&&!u(m)||(D=s(w))):b=!1}b&&(y.set(w,D),E(D,w,I,B,y),y.delete(w)),A(e,r,D)}}},72204:(e,t,r)=>{var A=r(35314),n=r(34878);e.exports=function(e,t){return A(e,t,(function(t,r){return n(e,r)}))}},35314:(e,t,r)=>{var A=r(84173),n=r(10624),o=r(56725);e.exports=function(e,t,r){for(var i=-1,s=t.length,a={};++i{e.exports=function(e){return function(t){return null==t?void 0:t[e]}}},43018:(e,t,r)=>{var A=r(84173);e.exports=function(e){return function(t){return A(t,e)}}},51587:e=>{e.exports=function(e){return function(t){return null==e?void 0:e[t]}}},30383:(e,t,r)=>{var A=r(61977),n=r(44322),o=r(3111);e.exports=function(e,t){return o(n(e,t,A),e+"")}},10624:(e,t,r)=>{var A=r(65759),n=r(56725),o=r(98041),i=r(46778),s=r(49874);e.exports=function(e,t,r,a){if(!i(e))return e;for(var c=-1,g=(t=n(t,e)).length,l=g-1,u=e;null!=u&&++c{var A=r(4967),n=r(65),o=r(61977),i=n?function(e,t){return n(e,"toString",{configurable:!0,enumerable:!1,value:A(t),writable:!0})}:o;e.exports=i},27708:e=>{e.exports=function(e,t,r){var A=-1,n=e.length;t<0&&(t=-t>n?0:n+t),(r=r>n?n:r)<0&&(r+=n),n=t>r?0:r-t>>>0,t>>>=0;for(var o=Array(n);++A{e.exports=function(e,t){for(var r=-1,A=Array(e);++r{var A=r(69976),n=r(60783),o=r(82664),i=r(65558),s=A?A.prototype:void 0,a=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(o(t))return n(t,e)+"";if(i(t))return a?a.call(t):"";var r=t+"";return"0"==r&&1/t==-1/0?"-0":r}},73635:e=>{e.exports=function(e){return function(t){return e(t)}}},18290:(e,t,r)=>{var A=r(60783);e.exports=function(e,t){return A(t,(function(t){return e[t]}))}},93022:e=>{e.exports=function(e,t){return e.has(t)}},56725:(e,t,r)=>{var A=r(82664),n=r(70474),o=r(8689),i=r(33580);e.exports=function(e,t){return A(e)?e:n(e,t)?[e]:o(i(e))}},92568:(e,t,r)=>{var A=r(27708);e.exports=function(e,t,r){var n=e.length;return r=void 0===r?n:r,!t&&r>=n?e:A(e,t,r)}},76255:(e,t,r)=>{var A=r(2740);e.exports=function(e){var t=new e.constructor(e.byteLength);return new A(t).set(new A(e)),t}},64266:(e,t,r)=>{e=r.nmd(e);var A=r(76169),n=t&&!t.nodeType&&t,o=n&&e&&!e.nodeType&&e,i=o&&o.exports===n?A.Buffer:void 0,s=i?i.allocUnsafe:void 0;e.exports=function(e,t){if(t)return e.slice();var r=e.length,A=s?s(r):new e.constructor(r);return e.copy(A),A}},63749:(e,t,r)=>{var A=r(76255);e.exports=function(e,t){var r=t?A(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}},41705:e=>{var t=/\w*$/;e.exports=function(e){var r=new e.constructor(e.source,t.exec(e));return r.lastIndex=e.lastIndex,r}},25791:(e,t,r)=>{var A=r(69976),n=A?A.prototype:void 0,o=n?n.valueOf:void 0;e.exports=function(e){return o?Object(o.call(e)):{}}},58042:(e,t,r)=>{var A=r(76255);e.exports=function(e,t){var r=t?A(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}},87229:e=>{e.exports=function(e,t){var r=-1,A=e.length;for(t||(t=Array(A));++r{var A=r(65759),n=r(91198);e.exports=function(e,t,r,o){var i=!r;r||(r={});for(var s=-1,a=t.length;++s{var A=r(75182),n=r(68727);e.exports=function(e,t){return A(e,n(e),t)}},60741:(e,t,r)=>{var A=r(75182),n=r(35368);e.exports=function(e,t){return A(e,n(e),t)}},14429:(e,t,r)=>{var A=r(76169)["__core-js_shared__"];e.exports=A},27913:(e,t,r)=>{var A=r(30383),n=r(33193);e.exports=function(e){return A((function(t,r){var A=-1,o=r.length,i=o>1?r[o-1]:void 0,s=o>2?r[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,s&&n(r[0],r[1],s)&&(i=o<3?void 0:i,o=1),t=Object(t);++A{e.exports=function(e){return function(t,r,A){for(var n=-1,o=Object(t),i=A(t),s=i.length;s--;){var a=i[e?s:++n];if(!1===r(o[a],a,o))break}return t}}},56989:(e,t,r)=>{var A=r(92568),n=r(93024),o=r(30475),i=r(33580);e.exports=function(e){return function(t){t=i(t);var r=n(t)?o(t):void 0,s=r?r[0]:t.charAt(0),a=r?A(r,1).join(""):t.slice(1);return s[e]()+a}}},30369:(e,t,r)=>{var A=r(66054),n=r(68968),o=r(97684),i=RegExp("['’]","g");e.exports=function(e){return function(t){return A(o(n(t).replace(i,"")),e,"")}}},69922:(e,t,r)=>{var A=r(51587)({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"});e.exports=A},65:(e,t,r)=>{var A=r(99513),n=function(){try{var e=A(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();e.exports=n},75500:(e,t,r)=>{var A=r(46235),n=r(17765),o=r(93022);e.exports=function(e,t,r,i,s,a){var c=1&r,g=e.length,l=t.length;if(g!=l&&!(c&&l>g))return!1;var u=a.get(e);if(u&&a.get(t))return u==t;var h=-1,p=!0,d=2&r?new A:void 0;for(a.set(e,t),a.set(t,e);++h{var A=r(69976),n=r(2740),o=r(71074),i=r(75500),s=r(7877),a=r(7442),c=A?A.prototype:void 0,g=c?c.valueOf:void 0;e.exports=function(e,t,r,A,c,l,u){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!l(new n(e),new n(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return o(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var h=s;case"[object Set]":var p=1&A;if(h||(h=a),e.size!=t.size&&!p)return!1;var d=u.get(e);if(d)return d==t;A|=2,u.set(e,t);var C=i(h(e),h(t),A,c,l,u);return u.delete(e),C;case"[object Symbol]":if(g)return g.call(e)==g.call(t)}return!1}},50245:(e,t,r)=>{var A=r(60753),n=Object.prototype.hasOwnProperty;e.exports=function(e,t,r,o,i,s){var a=1&r,c=A(e),g=c.length;if(g!=A(t).length&&!a)return!1;for(var l=g;l--;){var u=c[l];if(!(a?u in t:n.call(t,u)))return!1}var h=s.get(e);if(h&&s.get(t))return h==t;var p=!0;s.set(e,t),s.set(t,e);for(var d=a;++l{var A=r(54690),n=r(44322),o=r(3111);e.exports=function(e){return o(n(e,void 0,A),e+"")}},68399:e=>{var t="object"==typeof global&&global&&global.Object===Object&&global;e.exports=t},60753:(e,t,r)=>{var A=r(40104),n=r(68727),o=r(42185);e.exports=function(e){return A(e,o,n)}},64420:(e,t,r)=>{var A=r(40104),n=r(35368),o=r(24887);e.exports=function(e){return A(e,o,n)}},59253:(e,t,r)=>{var A=r(69448);e.exports=function(e,t){var r=e.__data__;return A(t)?r["string"==typeof t?"string":"hash"]:r.map}},98705:(e,t,r)=>{var A=r(20925),n=r(42185);e.exports=function(e){for(var t=n(e),r=t.length;r--;){var o=t[r],i=e[o];t[r]=[o,i,A(i)]}return t}},99513:(e,t,r)=>{var A=r(91686),n=r(98054);e.exports=function(e,t){var r=n(e,t);return A(r)?r:void 0}},41181:(e,t,r)=>{var A=r(64309)(Object.getPrototypeOf,Object);e.exports=A},2854:(e,t,r)=>{var A=r(69976),n=Object.prototype,o=n.hasOwnProperty,i=n.toString,s=A?A.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),r=e[s];try{e[s]=void 0;var A=!0}catch(e){}var n=i.call(e);return A&&(t?e[s]=r:delete e[s]),n}},68727:(e,t,r)=>{var A=r(9073),n=r(62162),o=Object.prototype.propertyIsEnumerable,i=Object.getOwnPropertySymbols,s=i?function(e){return null==e?[]:(e=Object(e),A(i(e),(function(t){return o.call(e,t)})))}:n;e.exports=s},35368:(e,t,r)=>{var A=r(40945),n=r(41181),o=r(68727),i=r(62162),s=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)A(t,o(e)),e=n(e);return t}:i;e.exports=s},79435:(e,t,r)=>{var A=r(78962),n=r(63603),o=r(5825),i=r(43231),s=r(47063),a=r(52502),c=r(76384),g=c(A),l=c(n),u=c(o),h=c(i),p=c(s),d=a;(A&&"[object DataView]"!=d(new A(new ArrayBuffer(1)))||n&&"[object Map]"!=d(new n)||o&&"[object Promise]"!=d(o.resolve())||i&&"[object Set]"!=d(new i)||s&&"[object WeakMap]"!=d(new s))&&(d=function(e){var t=a(e),r="[object Object]"==t?e.constructor:void 0,A=r?c(r):"";if(A)switch(A){case g:return"[object DataView]";case l:return"[object Map]";case u:return"[object Promise]";case h:return"[object Set]";case p:return"[object WeakMap]"}return t}),e.exports=d},98054:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},71507:(e,t,r)=>{var A=r(56725),n=r(61771),o=r(82664),i=r(98041),s=r(46369),a=r(49874);e.exports=function(e,t,r){for(var c=-1,g=(t=A(t,e)).length,l=!1;++c{var t=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");e.exports=function(e){return t.test(e)}},60466:e=>{var t=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;e.exports=function(e){return t.test(e)}},31713:(e,t,r)=>{var A=r(52437);e.exports=function(){this.__data__=A?A(null):{},this.size=0}},86688:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},45937:(e,t,r)=>{var A=r(52437),n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(A){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return n.call(t,e)?t[e]:void 0}},5017:(e,t,r)=>{var A=r(52437),n=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return A?void 0!==t[e]:n.call(t,e)}},79457:(e,t,r)=>{var A=r(52437);e.exports=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=A&&void 0===t?"__lodash_hash_undefined__":t,this}},27908:e=>{var t=Object.prototype.hasOwnProperty;e.exports=function(e){var r=e.length,A=new e.constructor(r);return r&&"string"==typeof e[0]&&t.call(e,"index")&&(A.index=e.index,A.input=e.input),A}},37836:(e,t,r)=>{var A=r(76255),n=r(63749),o=r(41705),i=r(25791),s=r(58042);e.exports=function(e,t,r){var a=e.constructor;switch(t){case"[object ArrayBuffer]":return A(e);case"[object Boolean]":case"[object Date]":return new a(+e);case"[object DataView]":return n(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return s(e,r);case"[object Map]":return new a;case"[object Number]":case"[object String]":return new a(e);case"[object RegExp]":return o(e);case"[object Set]":return new a;case"[object Symbol]":return i(e)}}},88438:(e,t,r)=>{var A=r(15178),n=r(41181),o=r(89513);e.exports=function(e){return"function"!=typeof e.constructor||o(e)?{}:A(n(e))}},958:(e,t,r)=>{var A=r(69976),n=r(61771),o=r(82664),i=A?A.isConcatSpreadable:void 0;e.exports=function(e){return o(e)||n(e)||!!(i&&e&&e[i])}},98041:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,r){var A=typeof e;return!!(r=null==r?9007199254740991:r)&&("number"==A||"symbol"!=A&&t.test(e))&&e>-1&&e%1==0&&e{var A=r(71074),n=r(41929),o=r(98041),i=r(46778);e.exports=function(e,t,r){if(!i(r))return!1;var s=typeof t;return!!("number"==s?n(r)&&o(t,r.length):"string"==s&&t in r)&&A(r[t],e)}},70474:(e,t,r)=>{var A=r(82664),n=r(65558),o=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,i=/^\w*$/;e.exports=function(e,t){if(A(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!n(e))||(i.test(e)||!o.test(e)||null!=t&&e in Object(t))}},69448:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},15061:(e,t,r)=>{var A,n=r(14429),o=(A=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||""))?"Symbol(src)_1."+A:"";e.exports=function(e){return!!o&&o in e}},89513:e=>{var t=Object.prototype;e.exports=function(e){var r=e&&e.constructor;return e===("function"==typeof r&&r.prototype||t)}},20925:(e,t,r)=>{var A=r(46778);e.exports=function(e){return e==e&&!A(e)}},82262:e=>{e.exports=function(e){for(var t,r=[];!(t=e.next()).done;)r.push(t.value);return r}},14620:e=>{e.exports=function(){this.__data__=[],this.size=0}},73682:(e,t,r)=>{var A=r(39836),n=Array.prototype.splice;e.exports=function(e){var t=this.__data__,r=A(t,e);return!(r<0)&&(r==t.length-1?t.pop():n.call(t,r,1),--this.size,!0)}},43112:(e,t,r)=>{var A=r(39836);e.exports=function(e){var t=this.__data__,r=A(t,e);return r<0?void 0:t[r][1]}},90640:(e,t,r)=>{var A=r(39836);e.exports=function(e){return A(this.__data__,e)>-1}},9380:(e,t,r)=>{var A=r(39836);e.exports=function(e,t){var r=this.__data__,n=A(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}},18209:(e,t,r)=>{var A=r(72574),n=r(29197),o=r(63603);e.exports=function(){this.size=0,this.__data__={hash:new A,map:new(o||n),string:new A}}},89706:(e,t,r)=>{var A=r(59253);e.exports=function(e){var t=A(this,e).delete(e);return this.size-=t?1:0,t}},43786:(e,t,r)=>{var A=r(59253);e.exports=function(e){return A(this,e).get(e)}},17926:(e,t,r)=>{var A=r(59253);e.exports=function(e){return A(this,e).has(e)}},87345:(e,t,r)=>{var A=r(59253);e.exports=function(e,t){var r=A(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this}},7877:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e,A){r[++t]=[A,e]})),r}},12757:e=>{e.exports=function(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}},31948:(e,t,r)=>{var A=r(74499);e.exports=function(e){var t=A(e,(function(e){return 500===r.size&&r.clear(),e})),r=t.cache;return t}},52437:(e,t,r)=>{var A=r(99513)(Object,"create");e.exports=A},60657:(e,t,r)=>{var A=r(64309)(Object.keys,Object);e.exports=A},95632:e=>{e.exports=function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}},26391:(e,t,r)=>{e=r.nmd(e);var A=r(68399),n=t&&!t.nodeType&&t,o=n&&e&&!e.nodeType&&e,i=o&&o.exports===n&&A.process,s=function(){try{var e=o&&o.require&&o.require("util").types;return e||i&&i.binding&&i.binding("util")}catch(e){}}();e.exports=s},87427:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},64309:e=>{e.exports=function(e,t){return function(r){return e(t(r))}}},44322:(e,t,r)=>{var A=r(66636),n=Math.max;e.exports=function(e,t,r){return t=n(void 0===t?e.length-1:t,0),function(){for(var o=arguments,i=-1,s=n(o.length-t,0),a=Array(s);++i{var A=r(68399),n="object"==typeof self&&self&&self.Object===Object&&self,o=A||n||Function("return this")();e.exports=o},36883:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]}},74785:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},87760:e=>{e.exports=function(e){return this.__data__.has(e)}},7442:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}},3111:(e,t,r)=>{var A=r(4899),n=r(19908)(A);e.exports=n},19908:e=>{var t=Date.now;e.exports=function(e){var r=0,A=0;return function(){var n=t(),o=16-(n-A);if(A=n,o>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}},35678:(e,t,r)=>{var A=r(29197);e.exports=function(){this.__data__=new A,this.size=0}},33336:e=>{e.exports=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}},97163:e=>{e.exports=function(e){return this.__data__.get(e)}},43737:e=>{e.exports=function(e){return this.__data__.has(e)}},48548:(e,t,r)=>{var A=r(29197),n=r(63603),o=r(75009);e.exports=function(e,t){var r=this.__data__;if(r instanceof A){var i=r.__data__;if(!n||i.length<199)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new o(i)}return r.set(e,t),this.size=r.size,this}},30475:(e,t,r)=>{var A=r(1051),n=r(93024),o=r(297);e.exports=function(e){return n(e)?o(e):A(e)}},8689:(e,t,r)=>{var A=r(31948),n=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,o=/\\(\\)?/g,i=A((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(n,(function(e,r,A,n){t.push(A?n.replace(o,"$1"):r||e)})),t}));e.exports=i},49874:(e,t,r)=>{var A=r(65558);e.exports=function(e){if("string"==typeof e||A(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}},76384:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},297:e=>{var t="[\\ud800-\\udfff]",r="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",A="\\ud83c[\\udffb-\\udfff]",n="[^\\ud800-\\udfff]",o="(?:\\ud83c[\\udde6-\\uddff]){2}",i="[\\ud800-\\udbff][\\udc00-\\udfff]",s="(?:"+r+"|"+A+")"+"?",a="[\\ufe0e\\ufe0f]?"+s+("(?:\\u200d(?:"+[n,o,i].join("|")+")[\\ufe0e\\ufe0f]?"+s+")*"),c="(?:"+[n+r+"?",r,o,i,t].join("|")+")",g=RegExp(A+"(?="+A+")|"+c+a,"g");e.exports=function(e){return e.match(g)||[]}},89887:e=>{var t="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",r="["+t+"]",A="\\d+",n="[\\u2700-\\u27bf]",o="[a-z\\xdf-\\xf6\\xf8-\\xff]",i="[^\\ud800-\\udfff"+t+A+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",s="(?:\\ud83c[\\udde6-\\uddff]){2}",a="[\\ud800-\\udbff][\\udc00-\\udfff]",c="[A-Z\\xc0-\\xd6\\xd8-\\xde]",g="(?:"+o+"|"+i+")",l="(?:"+c+"|"+i+")",u="(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?",h="[\\ufe0e\\ufe0f]?"+u+("(?:\\u200d(?:"+["[^\\ud800-\\udfff]",s,a].join("|")+")[\\ufe0e\\ufe0f]?"+u+")*"),p="(?:"+[n,s,a].join("|")+")"+h,d=RegExp([c+"?"+o+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[r,c,"$"].join("|")+")",l+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[r,c+g,"$"].join("|")+")",c+"?"+g+"+(?:['’](?:d|ll|m|re|s|t|ve))?",c+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",A,p].join("|"),"g");e.exports=function(e){return e.match(d)||[]}},89170:(e,t,r)=>{var A=r(61814),n=r(30369)((function(e,t,r){return t=t.toLowerCase(),e+(r?A(t):t)}));e.exports=n},61814:(e,t,r)=>{var A=r(33580),n=r(72609);e.exports=function(e){return n(A(e).toLowerCase())}},82558:(e,t,r)=>{var A=r(41076);e.exports=function(e){return A(e,5)}},26052:(e,t,r)=>{var A=r(41076);e.exports=function(e,t){return A(e,5,t="function"==typeof t?t:void 0)}},4967:e=>{e.exports=function(e){return function(){return e}}},68968:(e,t,r)=>{var A=r(69922),n=r(33580),o=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,i=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");e.exports=function(e){return(e=n(e))&&e.replace(o,A).replace(i,"")}},71074:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},54690:(e,t,r)=>{var A=r(93274);e.exports=function(e){return(null==e?0:e.length)?A(e,1):[]}},44674:(e,t,r)=>{var A=r(84173);e.exports=function(e,t,r){var n=null==e?void 0:A(e,t);return void 0===n?r:n}},15215:(e,t,r)=>{var A=r(95325),n=r(71507);e.exports=function(e,t){return null!=e&&n(e,t,A)}},34878:(e,t,r)=>{var A=r(3881),n=r(71507);e.exports=function(e,t){return null!=e&&n(e,t,A)}},61977:e=>{e.exports=function(e){return e}},61771:(e,t,r)=>{var A=r(76357),n=r(38496),o=Object.prototype,i=o.hasOwnProperty,s=o.propertyIsEnumerable,a=A(function(){return arguments}())?A:function(e){return n(e)&&i.call(e,"callee")&&!s.call(e,"callee")};e.exports=a},82664:e=>{var t=Array.isArray;e.exports=t},41929:(e,t,r)=>{var A=r(92533),n=r(46369);e.exports=function(e){return null!=e&&n(e.length)&&!A(e)}},16064:(e,t,r)=>{var A=r(41929),n=r(38496);e.exports=function(e){return n(e)&&A(e)}},10667:(e,t,r)=>{e=r.nmd(e);var A=r(76169),n=r(88988),o=t&&!t.nodeType&&t,i=o&&e&&!e.nodeType&&e,s=i&&i.exports===o?A.Buffer:void 0,a=(s?s.isBuffer:void 0)||n;e.exports=a},92533:(e,t,r)=>{var A=r(52502),n=r(46778);e.exports=function(e){if(!n(e))return!1;var t=A(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},46369:e=>{e.exports=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},13349:(e,t,r)=>{var A=r(55994),n=r(73635),o=r(26391),i=o&&o.isMap,s=i?n(i):A;e.exports=s},46778:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},38496:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},11672:(e,t,r)=>{var A=r(52502),n=r(41181),o=r(38496),i=Function.prototype,s=Object.prototype,a=i.toString,c=s.hasOwnProperty,g=a.call(Object);e.exports=function(e){if(!o(e)||"[object Object]"!=A(e))return!1;var t=n(e);if(null===t)return!0;var r=c.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&a.call(r)==g}},33931:(e,t,r)=>{var A=r(28612),n=r(73635),o=r(26391),i=o&&o.isSet,s=i?n(i):A;e.exports=s},221:(e,t,r)=>{var A=r(52502),n=r(82664),o=r(38496);e.exports=function(e){return"string"==typeof e||!n(e)&&o(e)&&"[object String]"==A(e)}},65558:(e,t,r)=>{var A=r(52502),n=r(38496);e.exports=function(e){return"symbol"==typeof e||n(e)&&"[object Symbol]"==A(e)}},32565:(e,t,r)=>{var A=r(98998),n=r(73635),o=r(26391),i=o&&o.isTypedArray,s=i?n(i):A;e.exports=s},42185:(e,t,r)=>{var A=r(11886),n=r(50994),o=r(41929);e.exports=function(e){return o(e)?A(e):n(e)}},24887:(e,t,r)=>{var A=r(11886),n=r(8372),o=r(41929);e.exports=function(e){return o(e)?A(e,!0):n(e)}},5253:(e,t,r)=>{var A=r(91198),n=r(62164),o=r(42208);e.exports=function(e,t){var r={};return t=o(t,3),n(e,(function(e,n,o){A(r,t(e,n,o),e)})),r}},89612:(e,t,r)=>{var A=r(91198),n=r(62164),o=r(42208);e.exports=function(e,t){var r={};return t=o(t,3),n(e,(function(e,n,o){A(r,n,t(e,n,o))})),r}},74499:(e,t,r)=>{var A=r(75009);function n(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var A=arguments,n=t?t.apply(this,A):A[0],o=r.cache;if(o.has(n))return o.get(n);var i=e.apply(this,A);return r.cache=o.set(n,i)||o,i};return r.cache=new(n.Cache||A),r}n.Cache=A,e.exports=n},80305:(e,t,r)=>{var A=r(51264),n=r(27913)((function(e,t,r){A(e,t,r)}));e.exports=n},75130:(e,t,r)=>{var A=r(72204),n=r(87298)((function(e,t){return null==e?{}:A(e,t)}));e.exports=n},7430:(e,t,r)=>{var A=r(35400),n=r(43018),o=r(70474),i=r(49874);e.exports=function(e){return o(e)?A(i(e)):n(e)}},81534:(e,t,r)=>{var A=r(10624);e.exports=function(e,t,r){return null==e?e:A(e,t,r)}},36494:(e,t,r)=>{var A=r(30369)((function(e,t,r){return e+(r?"_":"")+t.toLowerCase()}));e.exports=A},62162:e=>{e.exports=function(){return[]}},88988:e=>{e.exports=function(){return!1}},78700:(e,t,r)=>{var A=r(69976),n=r(87229),o=r(79435),i=r(41929),s=r(221),a=r(82262),c=r(7877),g=r(7442),l=r(30475),u=r(24448),h=A?A.iterator:void 0;e.exports=function(e){if(!e)return[];if(i(e))return s(e)?l(e):n(e);if(h&&e[h])return a(e[h]());var t=o(e);return("[object Map]"==t?c:"[object Set]"==t?g:u)(e)}},36506:(e,t,r)=>{var A=r(75182),n=r(24887);e.exports=function(e){return A(e,n(e))}},33580:(e,t,r)=>{var A=r(35);e.exports=function(e){return null==e?"":A(e)}},72609:(e,t,r)=>{var A=r(56989)("toUpperCase");e.exports=A},24448:(e,t,r)=>{var A=r(18290),n=r(42185);e.exports=function(e){return null==e?[]:A(e,n(e))}},97684:(e,t,r)=>{var A=r(11852),n=r(60466),o=r(33580),i=r(89887);e.exports=function(e,t,r){return e=o(e),void 0===(t=r?void 0:t)?n(e)?i(e):A(e):e.match(t)||[]}},55737:e=>{"use strict";e.exports=e=>{const t={};for(const[r,A]of Object.entries(e))t[r.toLowerCase()]=A;return t}},46227:(e,t,r)=>{"use strict";const A=r(35747),n=r(85622),{promisify:o}=r(31669),i=r(95584).satisfies(process.version,">=10.12.0"),s=e=>{if("win32"===process.platform){if(/[<>:"|?*]/.test(e.replace(n.parse(e).root,""))){const t=new Error("Path contains invalid characters: "+e);throw t.code="EINVAL",t}}},a=e=>({...{mode:511,fs:A},...e}),c=e=>{const t=new Error(`operation not permitted, mkdir '${e}'`);return t.code="EPERM",t.errno=-4048,t.path=e,t.syscall="mkdir",t};e.exports=async(e,t)=>{s(e),t=a(t);const r=o(t.fs.mkdir),g=o(t.fs.stat);if(i&&t.fs.mkdir===A.mkdir){const A=n.resolve(e);return await r(A,{mode:t.mode,recursive:!0}),A}const l=async e=>{try{return await r(e,t.mode),e}catch(t){if("EPERM"===t.code)throw t;if("ENOENT"===t.code){if(n.dirname(e)===e)throw c(e);if(t.message.includes("null bytes"))throw t;return await l(n.dirname(e)),l(e)}try{if(!(await g(e)).isDirectory())throw new Error("The path is not a directory")}catch(e){throw t}return e}};return l(n.resolve(e))},e.exports.sync=(e,t)=>{if(s(e),t=a(t),i&&t.fs.mkdirSync===A.mkdirSync){const r=n.resolve(e);return A.mkdirSync(r,{mode:t.mode,recursive:!0}),r}const r=e=>{try{t.fs.mkdirSync(e,t.mode)}catch(A){if("EPERM"===A.code)throw A;if("ENOENT"===A.code){if(n.dirname(e)===e)throw c(e);if(A.message.includes("null bytes"))throw A;return r(n.dirname(e)),r(e)}try{if(!t.fs.statSync(e).isDirectory())throw new Error("The path is not a directory")}catch(e){throw A}}return e};return r(n.resolve(e))}},55598:(e,t,r)=>{"use strict";const A=r(92413).PassThrough,n=Array.prototype.slice;function o(e,t){if(Array.isArray(e))for(let r=0,A=e.length;r0||(t=!1,g())}function o(e){function t(){e.removeListener("merge2UnpipeEnd",t),e.removeListener("end",t),n()}if(e._readableState.endEmitted)return n();e.on("merge2UnpipeEnd",t),e.on("end",t),e.pipe(a,{end:!1}),e.resume()}for(let e=0;e{"use strict";const A=r(31669),n=r(12235),o=r(54722),i=r(3598),s=e=>"string"==typeof e&&(""===e||"./"===e),a=(e,t,r)=>{t=[].concat(t),e=[].concat(e);let A=new Set,n=new Set,i=new Set,s=0,a=e=>{i.add(e.output),r&&r.onResult&&r.onResult(e)};for(let i=0;i!A.has(e));if(r&&0===c.length){if(!0===r.failglob)throw new Error(`No matches found for "${t.join(", ")}"`);if(!0===r.nonull||!0===r.nullglob)return r.unescape?t.map(e=>e.replace(/\\/g,"")):t}return c};a.match=a,a.matcher=(e,t)=>o(e,t),a.any=a.isMatch=(e,t,r)=>o(t,r)(e),a.not=(e,t,r={})=>{t=[].concat(t).map(String);let A=new Set,n=[],o=a(e,t,{...r,onResult:e=>{r.onResult&&r.onResult(e),n.push(e.output)}});for(let e of n)o.includes(e)||A.add(e);return[...A]},a.contains=(e,t,r)=>{if("string"!=typeof e)throw new TypeError(`Expected a string: "${A.inspect(e)}"`);if(Array.isArray(t))return t.some(t=>a.contains(e,t,r));if("string"==typeof t){if(s(e)||s(t))return!1;if(e.includes(t)||e.startsWith("./")&&e.slice(2).includes(t))return!0}return a.isMatch(e,t,{...r,contains:!0})},a.matchKeys=(e,t,r)=>{if(!i.isObject(e))throw new TypeError("Expected the first argument to be an object");let A=a(Object.keys(e),t,r),n={};for(let t of A)n[t]=e[t];return n},a.some=(e,t,r)=>{let A=[].concat(e);for(let e of[].concat(t)){let t=o(String(e),r);if(A.some(e=>t(e)))return!0}return!1},a.every=(e,t,r)=>{let A=[].concat(e);for(let e of[].concat(t)){let t=o(String(e),r);if(!A.every(e=>t(e)))return!1}return!0},a.all=(e,t,r)=>{if("string"!=typeof e)throw new TypeError(`Expected a string: "${A.inspect(e)}"`);return[].concat(t).every(t=>o(t,r)(e))},a.capture=(e,t,r)=>{let A=i.isWindows(r),n=o.makeRe(String(e),{...r,capture:!0}).exec(A?i.toPosixSlashes(t):t);if(n)return n.slice(1).map(e=>void 0===e?"":e)},a.makeRe=(...e)=>o.makeRe(...e),a.scan=(...e)=>o.scan(...e),a.parse=(e,t)=>{let r=[];for(let A of[].concat(e||[]))for(let e of n(String(A),t))r.push(o.parse(e,t));return r},a.braces=(e,t)=>{if("string"!=typeof e)throw new TypeError("Expected a string");return t&&!0===t.nobrace||!/\{.*\}/.test(e)?[e]:n(e,t)},a.braceExpand=(e,t)=>{if("string"!=typeof e)throw new TypeError("Expected a string");return a.braces(e,{...t,expand:!0})},e.exports=a},65007:e=>{"use strict";const t=["destroy","setTimeout","socket","headers","trailers","rawHeaders","statusCode","httpVersion","httpVersionMinor","httpVersionMajor","rawTrailers","statusMessage"];e.exports=(e,r)=>{const A=new Set(Object.keys(e).concat(t));for(const t of A)t in r||(r[t]="function"==typeof e[t]?e[t].bind(e):e[t])}},33527:e=>{"use strict";const t=["aborted","complete","headers","httpVersion","httpVersionMinor","httpVersionMajor","method","rawHeaders","rawTrailers","setTimeout","socket","statusCode","statusMessage","trailers","url"];e.exports=(e,r)=>{if(r._readableState.autoDestroy)throw new Error("The second stream must have the `autoDestroy` option set to `false`");const A=new Set(Object.keys(e).concat(t)),n={};for(const t of A)t in r||(n[t]={get(){const r=e[t];return"function"==typeof r?r.bind(e):r},set(r){e[t]=r},enumerable:!0,configurable:!1});return Object.defineProperties(r,n),e.once("aborted",()=>{r.destroy(),r.emit("aborted")}),e.once("close",()=>{e.complete&&r.readable?r.once("end",()=>{r.emit("close")}):r.emit("close")}),r}},19793:(e,t,r)=>{"use strict";const A="undefined"==typeof URL?r(78835).URL:URL,n=(e,t)=>t.some(t=>t instanceof RegExp?t.test(e):t===e),o=(e,t)=>{if(t={defaultProtocol:"http:",normalizeProtocol:!0,forceHttp:!1,forceHttps:!1,stripAuthentication:!0,stripHash:!1,stripWWW:!0,removeQueryParameters:[/^utm_\w+/i],removeTrailingSlash:!0,removeDirectoryIndex:!1,sortQueryParameters:!0,...t},Reflect.has(t,"normalizeHttps"))throw new Error("options.normalizeHttps is renamed to options.forceHttp");if(Reflect.has(t,"normalizeHttp"))throw new Error("options.normalizeHttp is renamed to options.forceHttps");if(Reflect.has(t,"stripFragment"))throw new Error("options.stripFragment is renamed to options.stripHash");if(e=e.trim(),/^data:/i.test(e))return((e,{stripHash:t})=>{const r=e.match(/^data:(.*?),(.*?)(?:#(.*))?$/);if(!r)throw new Error("Invalid URL: "+e);const A=r[1].split(";"),n=r[2],o=t?"":r[3];let i=!1;"base64"===A[A.length-1]&&(A.pop(),i=!0);const s=(A.shift()||"").toLowerCase(),a=[...A.map(e=>{let[t,r=""]=e.split("=").map(e=>e.trim());return"charset"===t&&(r=r.toLowerCase(),"us-ascii"===r)?"":`${t}${r?"="+r:""}`}).filter(Boolean)];return i&&a.push("base64"),(0!==a.length||s&&"text/plain"!==s)&&a.unshift(s),`data:${a.join(";")},${i?n.trim():n}${o?"#"+o:""}`})(e,t);const r=e.startsWith("//");!r&&/^\.*\//.test(e)||(e=e.replace(/^(?!(?:\w+:)?\/\/)|^\/\//,t.defaultProtocol));const o=new A(e);if(t.forceHttp&&t.forceHttps)throw new Error("The `forceHttp` and `forceHttps` options cannot be used together");if(t.forceHttp&&"https:"===o.protocol&&(o.protocol="http:"),t.forceHttps&&"http:"===o.protocol&&(o.protocol="https:"),t.stripAuthentication&&(o.username="",o.password=""),t.stripHash&&(o.hash=""),o.pathname&&(o.pathname=o.pathname.replace(/((?!:).|^)\/{2,}/g,(e,t)=>/^(?!\/)/g.test(t)?t+"/":"/")),o.pathname&&(o.pathname=decodeURI(o.pathname)),!0===t.removeDirectoryIndex&&(t.removeDirectoryIndex=[/^index\.[a-z]+$/]),Array.isArray(t.removeDirectoryIndex)&&t.removeDirectoryIndex.length>0){let e=o.pathname.split("/");const r=e[e.length-1];n(r,t.removeDirectoryIndex)&&(e=e.slice(0,e.length-1),o.pathname=e.slice(1).join("/")+"/")}if(o.hostname&&(o.hostname=o.hostname.replace(/\.$/,""),t.stripWWW&&/^www\.([a-z\-\d]{2,63})\.([a-z.]{2,5})$/.test(o.hostname)&&(o.hostname=o.hostname.replace(/^www\./,""))),Array.isArray(t.removeQueryParameters))for(const e of[...o.searchParams.keys()])n(e,t.removeQueryParameters)&&o.searchParams.delete(e);return t.sortQueryParameters&&o.searchParams.sort(),t.removeTrailingSlash&&(o.pathname=o.pathname.replace(/\/$/,"")),e=o.toString(),!t.removeTrailingSlash&&"/"!==o.pathname||""!==o.hash||(e=e.replace(/\/$/,"")),r&&!t.normalizeProtocol&&(e=e.replace(/^http:\/\//,"//")),t.stripProtocol&&(e=e.replace(/^(?:https?:)?\/\//,"")),e};e.exports=o,e.exports.default=o},91162:(e,t,r)=>{var A=r(98984);function n(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}e.exports=A(n),n.proto=n((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return n(this)},configurable:!0})}))},27180:(e,t,r)=>{var A=r(98984);function n(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function o(e){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}e.exports=A(n),e.exports.strict=A(o),n.proto=n((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return n(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return o(this)},configurable:!0})}))},59351:e=>{"use strict";class t extends Error{constructor(e){super(e||"Promise was canceled"),this.name="CancelError"}get isCanceled(){return!0}}class r{static fn(e){return(...t)=>new r((r,A,n)=>{t.push(n),e(...t).then(r,A)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((t,r)=>{this._reject=r;const A=e=>{if(!this._isPending)throw new Error("The `onCancel` handler was attached after the promise settled.");this._cancelHandlers.push(e)};return Object.defineProperties(A,{shouldReject:{get:()=>this._rejectOnCancel,set:e=>{this._rejectOnCancel=e}}}),e(e=>{this._isPending=!1,t(e)},e=>{this._isPending=!1,r(e)},A)})}then(e,t){return this._promise.then(e,t)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(this._isPending&&!this._isCanceled){if(this._cancelHandlers.length>0)try{for(const e of this._cancelHandlers)e()}catch(e){this._reject(e)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new t(e))}}get isCanceled(){return this._isCanceled}}Object.setPrototypeOf(r.prototype,Promise.prototype),e.exports=r,e.exports.CancelError=t},61578:(e,t,r)=>{"use strict";const A=r(60550),n=e=>{if(e<1)throw new TypeError("Expected `concurrency` to be a number from 1 and up");const t=[];let r=0;const n=()=>{r--,t.length>0&&t.shift()()},o=(e,t,...o)=>{r++;const i=A(e,...o);t(i),i.then(n,n)},i=(A,...n)=>new Promise(i=>((A,n,...i)=>{rr},pendingCount:{get:()=>t.length}}),i};e.exports=n,e.exports.default=n},60550:e=>{"use strict";e.exports=(e,...t)=>new Promise(r=>{r(e(...t))})},37127:e=>{"use strict";const t=(e={})=>{const t=e.env||process.env;return"win32"!==(e.platform||process.platform)?"PATH":Object.keys(t).reverse().find(e=>"PATH"===e.toUpperCase())||"Path"};e.exports=t,e.exports.default=t},5763:(e,t,r)=>{"use strict";const{promisify:A}=r(31669),n=r(35747);async function o(e,t,r){if("string"!=typeof r)throw new TypeError("Expected a string, got "+typeof r);try{return(await A(n[e])(r))[t]()}catch(e){if("ENOENT"===e.code)return!1;throw e}}function i(e,t,r){if("string"!=typeof r)throw new TypeError("Expected a string, got "+typeof r);try{return n[e](r)[t]()}catch(e){if("ENOENT"===e.code)return!1;throw e}}t.isFile=o.bind(null,"stat","isFile"),t.isDirectory=o.bind(null,"stat","isDirectory"),t.isSymlink=o.bind(null,"lstat","isSymbolicLink"),t.isFileSync=i.bind(null,"statSync","isFile"),t.isDirectorySync=i.bind(null,"statSync","isDirectory"),t.isSymlinkSync=i.bind(null,"lstatSync","isSymbolicLink")},54722:(e,t,r)=>{"use strict";e.exports=r(18828)},71086:(e,t,r)=>{"use strict";const A=r(85622),n={DOT_LITERAL:"\\.",PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:"\\/",ONE_CHAR:"(?=.)",QMARK:"[^/]",END_ANCHOR:"(?:\\/|$)",DOTS_SLASH:"\\.{1,2}(?:\\/|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|\\/)\\.{1,2}(?:\\/|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:\\/|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:\\/|$))",QMARK_NO_DOT:"[^.\\/]",STAR:"[^/]*?",START_ANCHOR:"(?:^|\\/)"},o={...n,SLASH_LITERAL:"[\\\\/]",QMARK:"[^\\\\/]",STAR:"[^\\\\/]*?",DOTS_SLASH:"\\.{1,2}(?:[\\\\/]|$)",NO_DOT:"(?!\\.)",NO_DOTS:"(?!(?:^|[\\\\/])\\.{1,2}(?:[\\\\/]|$))",NO_DOT_SLASH:"(?!\\.{0,1}(?:[\\\\/]|$))",NO_DOTS_SLASH:"(?!\\.{1,2}(?:[\\\\/]|$))",QMARK_NO_DOT:"[^.\\\\/]",START_ANCHOR:"(?:^|[\\\\/])",END_ANCHOR:"(?:[\\\\/]|$)"};e.exports={MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,SEP:A.sep,extglobChars:e=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:e=>!0===e?o:n}},47974:(e,t,r)=>{"use strict";const A=r(71086),n=r(3598),{MAX_LENGTH:o,POSIX_REGEX_SOURCE:i,REGEX_NON_SPECIAL_CHARS:s,REGEX_SPECIAL_CHARS_BACKREF:a,REPLACEMENTS:c}=A,g=(e,t)=>{if("function"==typeof t.expandRange)return t.expandRange(...e,t);e.sort();const r=`[${e.join("-")}]`;try{new RegExp(r)}catch(t){return e.map(e=>n.escapeRegex(e)).join("..")}return r},l=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,u=(e,t)=>{if("string"!=typeof e)throw new TypeError("Expected a string");e=c[e]||e;const r={...t},u="number"==typeof r.maxLength?Math.min(o,r.maxLength):o;let h=e.length;if(h>u)throw new SyntaxError(`Input length: ${h}, exceeds maximum allowed length: ${u}`);const p={type:"bos",value:"",output:r.prepend||""},d=[p],C=r.capture?"":"?:",f=n.isWindows(t),I=A.globChars(f),E=A.extglobChars(I),{DOT_LITERAL:B,PLUS_LITERAL:y,SLASH_LITERAL:m,ONE_CHAR:w,DOTS_SLASH:Q,NO_DOT:D,NO_DOT_SLASH:b,NO_DOTS_SLASH:v,QMARK:S,QMARK_NO_DOT:k,STAR:N,START_ANCHOR:F}=I,K=e=>`(${C}(?:(?!${F}${e.dot?Q:B}).)*?)`,M=r.dot?"":D,R=r.dot?S:k;let x=!0===r.bash?K(r):N;r.capture&&(x=`(${x})`),"boolean"==typeof r.noext&&(r.noextglob=r.noext);const L={input:e,index:-1,start:0,dot:!0===r.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:d};e=n.removePrefix(e,L),h=e.length;const P=[],O=[],U=[];let T,j=p;const Y=()=>L.index===h-1,G=L.peek=(t=1)=>e[L.index+t],H=L.advance=()=>e[++L.index],J=()=>e.slice(L.index+1),q=(e="",t=0)=>{L.consumed+=e,L.index+=t},z=e=>{L.output+=null!=e.output?e.output:e.value,q(e.value)},W=()=>{let e=1;for(;"!"===G()&&("("!==G(2)||"?"===G(3));)H(),L.start++,e++;return e%2!=0&&(L.negated=!0,L.start++,!0)},V=e=>{L[e]++,U.push(e)},X=e=>{L[e]--,U.pop()},_=e=>{if("globstar"===j.type){const t=L.braces>0&&("comma"===e.type||"brace"===e.type),r=!0===e.extglob||P.length&&("pipe"===e.type||"paren"===e.type);"slash"===e.type||"paren"===e.type||t||r||(L.output=L.output.slice(0,-j.output.length),j.type="star",j.value="*",j.output=x,L.output+=j.output)}if(P.length&&"paren"!==e.type&&!E[e.value]&&(P[P.length-1].inner+=e.value),(e.value||e.output)&&z(e),j&&"text"===j.type&&"text"===e.type)return j.value+=e.value,void(j.output=(j.output||"")+e.value);e.prev=j,d.push(e),j=e},Z=(e,t)=>{const A={...E[t],conditions:1,inner:""};A.prev=j,A.parens=L.parens,A.output=L.output;const n=(r.capture?"(":"")+A.open;V("parens"),_({type:e,value:t,output:L.output?"":w}),_({type:"paren",extglob:!0,value:H(),output:n}),P.push(A)},$=e=>{let t=e.close+(r.capture?")":"");if("negate"===e.type){let A=x;e.inner&&e.inner.length>1&&e.inner.includes("/")&&(A=K(r)),(A!==x||Y()||/^\)+$/.test(J()))&&(t=e.close=")$))"+A),"bos"===e.prev.type&&Y()&&(L.negatedExtglob=!0)}_({type:"paren",extglob:!0,value:T,output:t}),X("parens")};if(!1!==r.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(e)){let A=!1,o=e.replace(a,(e,t,r,n,o,i)=>"\\"===n?(A=!0,e):"?"===n?t?t+n+(o?S.repeat(o.length):""):0===i?R+(o?S.repeat(o.length):""):S.repeat(r.length):"."===n?B.repeat(r.length):"*"===n?t?t+n+(o?x:""):x:t?e:"\\"+e);return!0===A&&(o=!0===r.unescape?o.replace(/\\/g,""):o.replace(/\\+/g,e=>e.length%2==0?"\\\\":e?"\\":"")),o===e&&!0===r.contains?(L.output=e,L):(L.output=n.wrapOutput(o,L,t),L)}for(;!Y();){if(T=H(),"\0"===T)continue;if("\\"===T){const e=G();if("/"===e&&!0!==r.bash)continue;if("."===e||";"===e)continue;if(!e){T+="\\",_({type:"text",value:T});continue}const t=/^\\+/.exec(J());let A=0;if(t&&t[0].length>2&&(A=t[0].length,L.index+=A,A%2!=0&&(T+="\\")),!0===r.unescape?T=H()||"":T+=H()||"",0===L.brackets){_({type:"text",value:T});continue}}if(L.brackets>0&&("]"!==T||"["===j.value||"[^"===j.value)){if(!1!==r.posix&&":"===T){const e=j.value.slice(1);if(e.includes("[")&&(j.posix=!0,e.includes(":"))){const e=j.value.lastIndexOf("["),t=j.value.slice(0,e),r=j.value.slice(e+2),A=i[r];if(A){j.value=t+A,L.backtrack=!0,H(),p.output||1!==d.indexOf(j)||(p.output=w);continue}}}("["===T&&":"!==G()||"-"===T&&"]"===G())&&(T="\\"+T),"]"!==T||"["!==j.value&&"[^"!==j.value||(T="\\"+T),!0===r.posix&&"!"===T&&"["===j.value&&(T="^"),j.value+=T,z({value:T});continue}if(1===L.quotes&&'"'!==T){T=n.escapeRegex(T),j.value+=T,z({value:T});continue}if('"'===T){L.quotes=1===L.quotes?0:1,!0===r.keepQuotes&&_({type:"text",value:T});continue}if("("===T){V("parens"),_({type:"paren",value:T});continue}if(")"===T){if(0===L.parens&&!0===r.strictBrackets)throw new SyntaxError(l("opening","("));const e=P[P.length-1];if(e&&L.parens===e.parens+1){$(P.pop());continue}_({type:"paren",value:T,output:L.parens?")":"\\)"}),X("parens");continue}if("["===T){if(!0!==r.nobracket&&J().includes("]"))V("brackets");else{if(!0!==r.nobracket&&!0===r.strictBrackets)throw new SyntaxError(l("closing","]"));T="\\"+T}_({type:"bracket",value:T});continue}if("]"===T){if(!0===r.nobracket||j&&"bracket"===j.type&&1===j.value.length){_({type:"text",value:T,output:"\\"+T});continue}if(0===L.brackets){if(!0===r.strictBrackets)throw new SyntaxError(l("opening","["));_({type:"text",value:T,output:"\\"+T});continue}X("brackets");const e=j.value.slice(1);if(!0===j.posix||"^"!==e[0]||e.includes("/")||(T="/"+T),j.value+=T,z({value:T}),!1===r.literalBrackets||n.hasRegexChars(e))continue;const t=n.escapeRegex(j.value);if(L.output=L.output.slice(0,-j.value.length),!0===r.literalBrackets){L.output+=t,j.value=t;continue}j.value=`(${C}${t}|${j.value})`,L.output+=j.value;continue}if("{"===T&&!0!==r.nobrace){V("braces");const e={type:"brace",value:T,output:"(",outputIndex:L.output.length,tokensIndex:L.tokens.length};O.push(e),_(e);continue}if("}"===T){const e=O[O.length-1];if(!0===r.nobrace||!e){_({type:"text",value:T,output:T});continue}let t=")";if(!0===e.dots){const e=d.slice(),A=[];for(let t=e.length-1;t>=0&&(d.pop(),"brace"!==e[t].type);t--)"dots"!==e[t].type&&A.unshift(e[t].value);t=g(A,r),L.backtrack=!0}if(!0!==e.comma&&!0!==e.dots){const r=L.output.slice(0,e.outputIndex),A=L.tokens.slice(e.tokensIndex);e.value=e.output="\\{",T=t="\\}",L.output=r;for(const e of A)L.output+=e.output||e.value}_({type:"brace",value:T,output:t}),X("braces"),O.pop();continue}if("|"===T){P.length>0&&P[P.length-1].conditions++,_({type:"text",value:T});continue}if(","===T){let e=T;const t=O[O.length-1];t&&"braces"===U[U.length-1]&&(t.comma=!0,e="|"),_({type:"comma",value:T,output:e});continue}if("/"===T){if("dot"===j.type&&L.index===L.start+1){L.start=L.index+1,L.consumed="",L.output="",d.pop(),j=p;continue}_({type:"slash",value:T,output:m});continue}if("."===T){if(L.braces>0&&"dot"===j.type){"."===j.value&&(j.output=B);const e=O[O.length-1];j.type="dots",j.output+=T,j.value+=T,e.dots=!0;continue}if(L.braces+L.parens===0&&"bos"!==j.type&&"slash"!==j.type){_({type:"text",value:T,output:B});continue}_({type:"dot",value:T,output:B});continue}if("?"===T){if(!(j&&"("===j.value)&&!0!==r.noextglob&&"("===G()&&"?"!==G(2)){Z("qmark",T);continue}if(j&&"paren"===j.type){const e=G();let t=T;if("<"===e&&!n.supportsLookbehinds())throw new Error("Node.js v10 or higher is required for regex lookbehinds");("("===j.value&&!/[!=<:]/.test(e)||"<"===e&&!/<([!=]|\w+>)/.test(J()))&&(t="\\"+T),_({type:"text",value:T,output:t});continue}if(!0!==r.dot&&("slash"===j.type||"bos"===j.type)){_({type:"qmark",value:T,output:k});continue}_({type:"qmark",value:T,output:S});continue}if("!"===T){if(!0!==r.noextglob&&"("===G()&&("?"!==G(2)||!/[!=<:]/.test(G(3)))){Z("negate",T);continue}if(!0!==r.nonegate&&0===L.index){W();continue}}if("+"===T){if(!0!==r.noextglob&&"("===G()&&"?"!==G(2)){Z("plus",T);continue}if(j&&"("===j.value||!1===r.regex){_({type:"plus",value:T,output:y});continue}if(j&&("bracket"===j.type||"paren"===j.type||"brace"===j.type)||L.parens>0){_({type:"plus",value:T});continue}_({type:"plus",value:y});continue}if("@"===T){if(!0!==r.noextglob&&"("===G()&&"?"!==G(2)){_({type:"at",extglob:!0,value:T,output:""});continue}_({type:"text",value:T});continue}if("*"!==T){"$"!==T&&"^"!==T||(T="\\"+T);const e=s.exec(J());e&&(T+=e[0],L.index+=e[0].length),_({type:"text",value:T});continue}if(j&&("globstar"===j.type||!0===j.star)){j.type="star",j.star=!0,j.value+=T,j.output=x,L.backtrack=!0,L.globstar=!0,q(T);continue}let t=J();if(!0!==r.noextglob&&/^\([^?]/.test(t)){Z("star",T);continue}if("star"===j.type){if(!0===r.noglobstar){q(T);continue}const A=j.prev,n=A.prev,o="slash"===A.type||"bos"===A.type,i=n&&("star"===n.type||"globstar"===n.type);if(!0===r.bash&&(!o||t[0]&&"/"!==t[0])){_({type:"star",value:T,output:""});continue}const s=L.braces>0&&("comma"===A.type||"brace"===A.type),a=P.length&&("pipe"===A.type||"paren"===A.type);if(!o&&"paren"!==A.type&&!s&&!a){_({type:"star",value:T,output:""});continue}for(;"/**"===t.slice(0,3);){const r=e[L.index+4];if(r&&"/"!==r)break;t=t.slice(3),q("/**",3)}if("bos"===A.type&&Y()){j.type="globstar",j.value+=T,j.output=K(r),L.output=j.output,L.globstar=!0,q(T);continue}if("slash"===A.type&&"bos"!==A.prev.type&&!i&&Y()){L.output=L.output.slice(0,-(A.output+j.output).length),A.output="(?:"+A.output,j.type="globstar",j.output=K(r)+(r.strictSlashes?")":"|$)"),j.value+=T,L.globstar=!0,L.output+=A.output+j.output,q(T);continue}if("slash"===A.type&&"bos"!==A.prev.type&&"/"===t[0]){const e=void 0!==t[1]?"|$":"";L.output=L.output.slice(0,-(A.output+j.output).length),A.output="(?:"+A.output,j.type="globstar",j.output=`${K(r)}${m}|${m}${e})`,j.value+=T,L.output+=A.output+j.output,L.globstar=!0,q(T+H()),_({type:"slash",value:"/",output:""});continue}if("bos"===A.type&&"/"===t[0]){j.type="globstar",j.value+=T,j.output=`(?:^|${m}|${K(r)}${m})`,L.output=j.output,L.globstar=!0,q(T+H()),_({type:"slash",value:"/",output:""});continue}L.output=L.output.slice(0,-j.output.length),j.type="globstar",j.output=K(r),j.value+=T,L.output+=j.output,L.globstar=!0,q(T);continue}const A={type:"star",value:T,output:x};!0!==r.bash?!j||"bracket"!==j.type&&"paren"!==j.type||!0!==r.regex?(L.index!==L.start&&"slash"!==j.type&&"dot"!==j.type||("dot"===j.type?(L.output+=b,j.output+=b):!0===r.dot?(L.output+=v,j.output+=v):(L.output+=M,j.output+=M),"*"!==G()&&(L.output+=w,j.output+=w)),_(A)):(A.output=T,_(A)):(A.output=".*?","bos"!==j.type&&"slash"!==j.type||(A.output=M+A.output),_(A))}for(;L.brackets>0;){if(!0===r.strictBrackets)throw new SyntaxError(l("closing","]"));L.output=n.escapeLast(L.output,"["),X("brackets")}for(;L.parens>0;){if(!0===r.strictBrackets)throw new SyntaxError(l("closing",")"));L.output=n.escapeLast(L.output,"("),X("parens")}for(;L.braces>0;){if(!0===r.strictBrackets)throw new SyntaxError(l("closing","}"));L.output=n.escapeLast(L.output,"{"),X("braces")}if(!0===r.strictSlashes||"star"!==j.type&&"bracket"!==j.type||_({type:"maybe_slash",value:"",output:m+"?"}),!0===L.backtrack){L.output="";for(const e of L.tokens)L.output+=null!=e.output?e.output:e.value,e.suffix&&(L.output+=e.suffix)}return L};u.fastpaths=(e,t)=>{const r={...t},i="number"==typeof r.maxLength?Math.min(o,r.maxLength):o,s=e.length;if(s>i)throw new SyntaxError(`Input length: ${s}, exceeds maximum allowed length: ${i}`);e=c[e]||e;const a=n.isWindows(t),{DOT_LITERAL:g,SLASH_LITERAL:l,ONE_CHAR:u,DOTS_SLASH:h,NO_DOT:p,NO_DOTS:d,NO_DOTS_SLASH:C,STAR:f,START_ANCHOR:I}=A.globChars(a),E=r.dot?d:p,B=r.dot?C:p,y=r.capture?"":"?:";let m=!0===r.bash?".*?":f;r.capture&&(m=`(${m})`);const w=e=>!0===e.noglobstar?m:`(${y}(?:(?!${I}${e.dot?h:g}).)*?)`,Q=e=>{switch(e){case"*":return`${E}${u}${m}`;case".*":return`${g}${u}${m}`;case"*.*":return`${E}${m}${g}${u}${m}`;case"*/*":return`${E}${m}${l}${u}${B}${m}`;case"**":return E+w(r);case"**/*":return`(?:${E}${w(r)}${l})?${B}${u}${m}`;case"**/*.*":return`(?:${E}${w(r)}${l})?${B}${m}${g}${u}${m}`;case"**/.*":return`(?:${E}${w(r)}${l})?${g}${u}${m}`;default:{const t=/^(.*?)\.(\w+)$/.exec(e);if(!t)return;const r=Q(t[1]);if(!r)return;return r+g+t[2]}}},D=n.removePrefix(e,{negated:!1,prefix:""});let b=Q(D);return b&&!0!==r.strictSlashes&&(b+=l+"?"),b},e.exports=u},18828:(e,t,r)=>{"use strict";const A=r(85622),n=r(95321),o=r(47974),i=r(3598),s=r(71086),a=(e,t,r=!1)=>{if(Array.isArray(e)){const A=e.map(e=>a(e,t,r));return e=>{for(const t of A){const r=t(e);if(r)return r}return!1}}const A=(n=e)&&"object"==typeof n&&!Array.isArray(n)&&e.tokens&&e.input;var n;if(""===e||"string"!=typeof e&&!A)throw new TypeError("Expected pattern to be a non-empty string");const o=t||{},s=i.isWindows(t),c=A?a.compileRe(e,t):a.makeRe(e,t,!1,!0),g=c.state;delete c.state;let l=()=>!1;if(o.ignore){const e={...t,ignore:null,onMatch:null,onResult:null};l=a(o.ignore,e,r)}const u=(r,A=!1)=>{const{isMatch:n,match:i,output:u}=a.test(r,c,t,{glob:e,posix:s}),h={glob:e,state:g,regex:c,posix:s,input:r,output:u,match:i,isMatch:n};return"function"==typeof o.onResult&&o.onResult(h),!1===n?(h.isMatch=!1,!!A&&h):l(r)?("function"==typeof o.onIgnore&&o.onIgnore(h),h.isMatch=!1,!!A&&h):("function"==typeof o.onMatch&&o.onMatch(h),!A||h)};return r&&(u.state=g),u};a.test=(e,t,r,{glob:A,posix:n}={})=>{if("string"!=typeof e)throw new TypeError("Expected input to be a string");if(""===e)return{isMatch:!1,output:""};const o=r||{},s=o.format||(n?i.toPosixSlashes:null);let c=e===A,g=c&&s?s(e):e;return!1===c&&(g=s?s(e):e,c=g===A),!1!==c&&!0!==o.capture||(c=!0===o.matchBase||!0===o.basename?a.matchBase(e,t,r,n):t.exec(g)),{isMatch:Boolean(c),match:c,output:g}},a.matchBase=(e,t,r,n=i.isWindows(r))=>(t instanceof RegExp?t:a.makeRe(t,r)).test(A.basename(e)),a.isMatch=(e,t,r)=>a(t,r)(e),a.parse=(e,t)=>Array.isArray(e)?e.map(e=>a.parse(e,t)):o(e,{...t,fastpaths:!1}),a.scan=(e,t)=>n(e,t),a.compileRe=(e,t,r=!1,A=!1)=>{if(!0===r)return e.output;const n=t||{},o=n.contains?"":"^",i=n.contains?"":"$";let s=`${o}(?:${e.output})${i}`;e&&!0===e.negated&&(s=`^(?!${s}).*$`);const c=a.toRegex(s,t);return!0===A&&(c.state=e),c},a.makeRe=(e,t,r=!1,A=!1)=>{if(!e||"string"!=typeof e)throw new TypeError("Expected a non-empty string");const n=t||{};let i,s={negated:!1,fastpaths:!0},c="";return e.startsWith("./")&&(e=e.slice(2),c=s.prefix="./"),!1===n.fastpaths||"."!==e[0]&&"*"!==e[0]||(i=o.fastpaths(e,t)),void 0===i?(s=o(e,t),s.prefix=c+(s.prefix||"")):s.output=i,a.compileRe(s,t,r,A)},a.toRegex=(e,t)=>{try{const r=t||{};return new RegExp(e,r.flags||(r.nocase?"i":""))}catch(e){if(t&&!0===t.debug)throw e;return/$^/}},a.constants=s,e.exports=a},95321:(e,t,r)=>{"use strict";const A=r(3598),{CHAR_ASTERISK:n,CHAR_AT:o,CHAR_BACKWARD_SLASH:i,CHAR_COMMA:s,CHAR_DOT:a,CHAR_EXCLAMATION_MARK:c,CHAR_FORWARD_SLASH:g,CHAR_LEFT_CURLY_BRACE:l,CHAR_LEFT_PARENTHESES:u,CHAR_LEFT_SQUARE_BRACKET:h,CHAR_PLUS:p,CHAR_QUESTION_MARK:d,CHAR_RIGHT_CURLY_BRACE:C,CHAR_RIGHT_PARENTHESES:f,CHAR_RIGHT_SQUARE_BRACKET:I}=r(71086),E=e=>e===g||e===i,B=e=>{!0!==e.isPrefix&&(e.depth=e.isGlobstar?1/0:1)};e.exports=(e,t)=>{const r=t||{},y=e.length-1,m=!0===r.parts||!0===r.scanToEnd,w=[],Q=[],D=[];let b,v,S=e,k=-1,N=0,F=0,K=!1,M=!1,R=!1,x=!1,L=!1,P=!1,O=!1,U=!1,T=!1,j=0,Y={value:"",depth:0,isGlob:!1};const G=()=>k>=y,H=()=>(b=v,S.charCodeAt(++k));for(;k0&&(q=S.slice(0,N),S=S.slice(N),F-=N),J&&!0===R&&F>0?(J=S.slice(0,F),z=S.slice(F)):!0===R?(J="",z=S):J=S,J&&""!==J&&"/"!==J&&J!==S&&E(J.charCodeAt(J.length-1))&&(J=J.slice(0,-1)),!0===r.unescape&&(z&&(z=A.removeBackslashes(z)),J&&!0===O&&(J=A.removeBackslashes(J)));const W={prefix:q,input:e,start:N,base:J,glob:z,isBrace:K,isBracket:M,isGlob:R,isExtglob:x,isGlobstar:L,negated:U};if(!0===r.tokens&&(W.maxDepth=0,E(v)||Q.push(Y),W.tokens=Q),!0===r.parts||!0===r.tokens){let t;for(let A=0;A{"use strict";const A=r(85622),n="win32"===process.platform,{REGEX_BACKSLASH:o,REGEX_REMOVE_BACKSLASH:i,REGEX_SPECIAL_CHARS:s,REGEX_SPECIAL_CHARS_GLOBAL:a}=r(71086);t.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),t.hasRegexChars=e=>s.test(e),t.isRegexChar=e=>1===e.length&&t.hasRegexChars(e),t.escapeRegex=e=>e.replace(a,"\\$1"),t.toPosixSlashes=e=>e.replace(o,"/"),t.removeBackslashes=e=>e.replace(i,e=>"\\"===e?"":e),t.supportsLookbehinds=()=>{const e=process.version.slice(1).split(".").map(Number);return 3===e.length&&e[0]>=9||8===e[0]&&e[1]>=10},t.isWindows=e=>e&&"boolean"==typeof e.windows?e.windows:!0===n||"\\"===A.sep,t.escapeLast=(e,r,A)=>{const n=e.lastIndexOf(r,A);return-1===n?e:"\\"===e[n-1]?t.escapeLast(e,r,n-1):`${e.slice(0,n)}\\${e.slice(n)}`},t.removePrefix=(e,t={})=>{let r=e;return r.startsWith("./")&&(r=r.slice(2),t.prefix="./"),r},t.wrapOutput=(e,t={},r={})=>{let A=`${r.contains?"":"^"}(?:${e})${r.contains?"":"$"}`;return!0===t.negated&&(A=`(?:^(?!${A}).*$)`),A}},79588:e=>{"use strict";function t(e){this._maxSize=e,this.clear()}t.prototype.clear=function(){this._size=0,this._values={}},t.prototype.get=function(e){return this._values[e]},t.prototype.set=function(e,t){return this._size>=this._maxSize&&this.clear(),this._values.hasOwnProperty(e)||this._size++,this._values[e]=t};var r=/[^.^\]^[]+|(?=\[\]|\.\.)/g,A=/^\d+$/,n=/^\d/,o=/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g,i=/^\s*(['"]?)(.*?)(\1)\s*$/,s=!1,a=new t(512),c=new t(512),g=new t(512);try{new Function("")}catch(e){s=!0}function l(e){return a.get(e)||a.set(e,u(e).map((function(e){return e.replace(i,"$2")})))}function u(e){return e.match(r)}function h(e,t,r){return"string"==typeof t&&(r=t,t=!1),r=r||"data",(e=e||"")&&"["!==e.charAt(0)&&(e="."+e),t?function(e,t){var r,A=t,n=u(e);return p(n,(function(e,t,n,o,i){r=o===i.length-1,A+=(e=t||n?"["+e+"]":"."+e)+(r?")":" || {})")})),new Array(n.length+1).join("(")+A}(e,r):r+e}function p(e,t,r){var A,n,o,i,s=e.length;for(n=0;n{var A=r(91162),n=r(97681),o=r(35747),i=function(){},s=/^v?\.0/.test(process.version),a=function(e){return"function"==typeof e},c=function(e,t,r,c){c=A(c);var g=!1;e.on("close",(function(){g=!0})),n(e,{readable:t,writable:r},(function(e){if(e)return c(e);g=!0,c()}));var l=!1;return function(t){if(!g&&!l)return l=!0,function(e){return!!s&&(!!o&&((e instanceof(o.ReadStream||i)||e instanceof(o.WriteStream||i))&&a(e.close)))}(e)?e.close(i):function(e){return e.setHeader&&a(e.abort)}(e)?e.abort():a(e.destroy)?e.destroy():void c(t||new Error("stream was destroyed"))}},g=function(e){e()},l=function(e,t){return e.pipe(t)};e.exports=function(){var e,t=Array.prototype.slice.call(arguments),r=a(t[t.length-1]||i)&&t.pop()||i;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error("pump requires two streams per minimum");var A=t.map((function(n,o){var i=o0,(function(t){e||(e=t),t&&A.forEach(g),i||(A.forEach(g),r(e))}))}));return t.reduce(l)}},49601:e=>{"use strict";class t{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,t){if(this.cache.set(e,t),this._size++,this._size>=this.maxSize){if(this._size=0,"function"==typeof this.onEviction)for(const[e,t]of this.oldCache.entries())this.onEviction(e,t);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){const t=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,t),t}}set(e,t){return this.cache.has(e)?this.cache.set(e,t):this._set(e,t),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){return this.cache.has(e)?this.cache.get(e):this.oldCache.has(e)?this.oldCache.get(e):void 0}delete(e){const t=this.cache.delete(e);return t&&this._size--,this.oldCache.delete(e)||t}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache)yield e;for(const e of this.oldCache){const[t]=e;this.cache.has(t)||(yield e)}}get size(){let e=0;for(const t of this.oldCache.keys())this.cache.has(t)||e++;return Math.min(this._size+e,this.maxSize)}}e.exports=t},20663:e=>{"use strict";const t={};function r(e,r,A){A||(A=Error);class n extends A{constructor(e,t,A){super(function(e,t,A){return"string"==typeof r?r:r(e,t,A)}(e,t,A))}}n.prototype.name=A.name,n.prototype.code=e,t[e]=n}function A(e,t){if(Array.isArray(e)){const r=e.length;return e=e.map(e=>String(e)),r>2?`one of ${t} ${e.slice(0,r-1).join(", ")}, or `+e[r-1]:2===r?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}return`of ${t} ${String(e)}`}r("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(e,t,r){let n;var o,i;let s;if("string"==typeof t&&(o="not ",t.substr(!i||i<0?0:+i,o.length)===o)?(n="must not be",t=t.replace(/^not /,"")):n="must be",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e," argument"))s=`The ${e} ${n} ${A(t,"type")}`;else{s=`The "${e}" ${function(e,t,r){return"number"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,".")?"property":"argument"} ${n} ${A(t,"type")}`}return s+=". Received type "+typeof r,s}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.q=t},39138:e=>{"use strict";var t=new Set;e.exports.emitExperimentalWarning=process.emitWarning?function(e){if(!t.has(e)){var r=e+" is an experimental feature. This feature could change at any time";t.add(e),process.emitWarning(r,"ExperimentalWarning")}}:function(){}},72434:(e,t,r)=>{"use strict";var A=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=c;var n=r(58020),o=r(6729);r(85870)(c,n);for(var i=A(o.prototype),s=0;s{"use strict";e.exports=n;var A=r(54801);function n(e){if(!(this instanceof n))return new n(e);A.call(this,e)}r(85870)(n,A),n.prototype._transform=function(e,t,r){r(null,e)}},58020:(e,t,r)=>{"use strict";var A;e.exports=w,w.ReadableState=m;r(28614).EventEmitter;var n=function(e,t){return e.listeners(t).length},o=r(49298),i=r(64293).Buffer,s=global.Uint8Array||function(){};var a,c=r(31669);a=c&&c.debuglog?c.debuglog("stream"):function(){};var g,l,u=r(43117),h=r(32340),p=r(77433).getHighWaterMark,d=r(20663).q,C=d.ERR_INVALID_ARG_TYPE,f=d.ERR_STREAM_PUSH_AFTER_EOF,I=d.ERR_METHOD_NOT_IMPLEMENTED,E=d.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,B=r(39138).emitExperimentalWarning;r(85870)(w,o);var y=["error","close","destroy","pause","resume"];function m(e,t,n){A=A||r(72434),e=e||{},"boolean"!=typeof n&&(n=t instanceof A),this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=p(this,e,"readableHighWaterMark",n),this.buffer=new u,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(g||(g=r(69538).s),this.decoder=new g(e.encoding),this.encoding=e.encoding)}function w(e){if(A=A||r(72434),!(this instanceof w))return new w(e);var t=this instanceof A;this._readableState=new m(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),o.call(this)}function Q(e,t,r,A,n){a("readableAddChunk",t);var o,c=e._readableState;if(null===t)c.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?v(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,S(e)))}(e,c);else if(n||(o=function(e,t){var r;A=t,i.isBuffer(A)||A instanceof s||"string"==typeof t||void 0===t||e.objectMode||(r=new C("chunk",["string","Buffer","Uint8Array"],t));var A;return r}(c,t)),o)e.emit("error",o);else if(c.objectMode||t&&t.length>0)if("string"==typeof t||c.objectMode||Object.getPrototypeOf(t)===i.prototype||(t=function(e){return i.from(e)}(t)),A)c.endEmitted?e.emit("error",new E):D(e,c,t,!0);else if(c.ended)e.emit("error",new f);else{if(c.destroyed)return!1;c.reading=!1,c.decoder&&!r?(t=c.decoder.write(t),c.objectMode||0!==t.length?D(e,c,t,!1):k(e,c)):D(e,c,t,!1)}else A||(c.reading=!1,k(e,c));return!c.ended&&(c.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function v(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(a("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(S,e))}function S(e){var t=e._readableState;a("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||e.emit("readable"),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,R(e)}function k(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(N,e,t))}function N(e,t){for(var r=t.length;!t.reading&&!t.ended&&t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function K(e){a("readable nexttick read 0"),e.read(0)}function M(e,t){a("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),R(e),t.flowing&&!t.reading&&e.read(0)}function R(e){var t=e._readableState;for(a("flow",t.flowing);t.flowing&&null!==e.read(););}function x(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function L(e){var t=e._readableState;a("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(P,t,e))}function P(e,t){a("endReadableNT",e.endEmitted,e.length),e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function O(e,t){for(var r=0,A=e.length;r=t.highWaterMark:t.length>0)||t.ended))return a("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?L(this):v(this),null;if(0===(e=b(e,t))&&t.ended)return 0===t.length&&L(this),null;var A,n=t.needReadable;return a("need readable",n),(0===t.length||t.length-e0?x(e,t):null)?(t.needReadable=!0,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&L(this)),null!==A&&this.emit("data",A),A},w.prototype._read=function(e){this.emit("error",new I("_read()"))},w.prototype.pipe=function(e,t){var r=this,A=this._readableState;switch(A.pipesCount){case 0:A.pipes=e;break;case 1:A.pipes=[A.pipes,e];break;default:A.pipes.push(e)}A.pipesCount+=1,a("pipe count=%d opts=%j",A.pipesCount,t);var o=(!t||!1!==t.end)&&e!==process.stdout&&e!==process.stderr?s:d;function i(t,n){a("onunpipe"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,a("cleanup"),e.removeListener("close",h),e.removeListener("finish",p),e.removeListener("drain",c),e.removeListener("error",u),e.removeListener("unpipe",i),r.removeListener("end",s),r.removeListener("end",d),r.removeListener("data",l),g=!0,!A.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}function s(){a("onend"),e.end()}A.endEmitted?process.nextTick(o):r.once("end",o),e.on("unpipe",i);var c=function(e){return function(){var t=e._readableState;a("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,R(e))}}(r);e.on("drain",c);var g=!1;function l(t){a("ondata");var n=e.write(t);a("dest.write",n),!1===n&&((1===A.pipesCount&&A.pipes===e||A.pipesCount>1&&-1!==O(A.pipes,e))&&!g&&(a("false write response, pause",A.awaitDrain),A.awaitDrain++),r.pause())}function u(t){a("onerror",t),d(),e.removeListener("error",u),0===n(e,"error")&&e.emit("error",t)}function h(){e.removeListener("finish",p),d()}function p(){a("onfinish"),e.removeListener("close",h),d()}function d(){a("unpipe"),r.unpipe(e)}return r.on("data",l),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",u),e.once("close",h),e.once("finish",p),e.emit("pipe",r),A.flowing||(a("pipe resume"),r.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var A=t.pipes,n=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==A.flowing&&this.resume()):"readable"===e&&(A.endEmitted||A.readableListening||(A.readableListening=A.needReadable=!0,A.flowing=!1,A.emittedReadable=!1,a("on readable",A.length,A.reading),A.length?v(this):A.reading||process.nextTick(K,this))),r},w.prototype.addListener=w.prototype.on,w.prototype.removeListener=function(e,t){var r=o.prototype.removeListener.call(this,e,t);return"readable"===e&&process.nextTick(F,this),r},w.prototype.removeAllListeners=function(e){var t=o.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||process.nextTick(F,this),t},w.prototype.resume=function(){var e=this._readableState;return e.flowing||(a("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(M,e,t))}(this,e)),e.paused=!1,this},w.prototype.pause=function(){return a("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(a("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},w.prototype.wrap=function(e){var t=this,r=this._readableState,A=!1;for(var n in e.on("end",(function(){if(a("wrapped end"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(n){(a("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n)||(r.objectMode||n&&n.length)&&(t.push(n)||(A=!0,e.pause()))})),e)void 0===this[n]&&"function"==typeof e[n]&&(this[n]=function(t){return function(){return e[t].apply(e,arguments)}}(n));for(var o=0;o{"use strict";e.exports=g;var A=r(20663).q,n=A.ERR_METHOD_NOT_IMPLEMENTED,o=A.ERR_MULTIPLE_CALLBACK,i=A.ERR_TRANSFORM_ALREADY_TRANSFORMING,s=A.ERR_TRANSFORM_WITH_LENGTH_0,a=r(72434);function c(e,t){var r=this._transformState;r.transforming=!1;var A=r.writecb;if(null===A)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=t&&this.push(t),A(e);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";function A(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var A=e.entry;e.entry=null;for(;A;){var n=A.callback;t.pendingcb--,n(r),A=A.next}t.corkedRequestsFree.next=e}(t,e)}}var n;e.exports=w,w.WritableState=m;var o={deprecate:r(73212)},i=r(49298),s=r(64293).Buffer,a=global.Uint8Array||function(){};var c,g=r(32340),l=r(77433).getHighWaterMark,u=r(20663).q,h=u.ERR_INVALID_ARG_TYPE,p=u.ERR_METHOD_NOT_IMPLEMENTED,d=u.ERR_MULTIPLE_CALLBACK,C=u.ERR_STREAM_CANNOT_PIPE,f=u.ERR_STREAM_DESTROYED,I=u.ERR_STREAM_NULL_VALUES,E=u.ERR_STREAM_WRITE_AFTER_END,B=u.ERR_UNKNOWN_ENCODING;function y(){}function m(e,t,o){n=n||r(72434),e=e||{},"boolean"!=typeof o&&(o=t instanceof n),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=l(this,e,"writableHighWaterMark",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var i=!1===e.decodeStrings;this.decodeStrings=!i,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,A=r.sync,n=r.writecb;if("function"!=typeof n)throw new d;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,A,n){--t.pendingcb,r?(process.nextTick(n,A),process.nextTick(k,e,t),e._writableState.errorEmitted=!0,e.emit("error",A)):(n(A),e._writableState.errorEmitted=!0,e.emit("error",A),k(e,t))}(e,r,A,t,n);else{var o=v(r)||e.destroyed;o||r.corked||r.bufferProcessing||!r.bufferedRequest||b(e,r),A?process.nextTick(D,e,r,o,n):D(e,r,o,n)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.bufferedRequestCount=0,this.corkedRequestsFree=new A(this)}function w(e){var t=this instanceof(n=n||r(72434));if(!t&&!c.call(w,this))return new w(e);this._writableState=new m(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),i.call(this)}function Q(e,t,r,A,n,o,i){t.writelen=A,t.writecb=i,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new f("write")):r?e._writev(n,t.onwrite):e._write(n,o,t.onwrite),t.sync=!1}function D(e,t,r,A){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,A(),k(e,t)}function b(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,o=new Array(n),i=t.corkedRequestsFree;i.entry=r;for(var s=0,a=!0;r;)o[s]=r,r.isBuf||(a=!1),r=r.next,s+=1;o.allBuffers=a,Q(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new A(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,g=r.encoding,l=r.callback;if(Q(e,t,!1,t.objectMode?1:c.length,c,g,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function v(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function S(e,t){e._final((function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),k(e,t)}))}function k(e,t){var r=v(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,process.nextTick(S,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}r(85870)(w,i),m.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(m.prototype,"buffer",{get:o.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(c=Function.prototype[Symbol.hasInstance],Object.defineProperty(w,Symbol.hasInstance,{value:function(e){return!!c.call(this,e)||this===w&&(e&&e._writableState instanceof m)}})):c=function(e){return e instanceof this},w.prototype.pipe=function(){this.emit("error",new C)},w.prototype.write=function(e,t,r){var A,n=this._writableState,o=!1,i=!n.objectMode&&(A=e,s.isBuffer(A)||A instanceof a);return i&&!s.isBuffer(e)&&(e=function(e){return s.from(e)}(e)),"function"==typeof t&&(r=t,t=null),i?t="buffer":t||(t=n.defaultEncoding),"function"!=typeof r&&(r=y),n.ending?function(e,t){var r=new E;e.emit("error",r),process.nextTick(t,r)}(this,r):(i||function(e,t,r,A){var n;return null===r?n=new I:"string"==typeof r||t.objectMode||(n=new h("chunk",["string","Buffer"],r)),!n||(e.emit("error",n),process.nextTick(A,n),!1)}(this,n,e,r))&&(n.pendingcb++,o=function(e,t,r,A,n,o){if(!r){var i=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=s.from(t,r));return t}(t,A,n);A!==i&&(r=!0,n="buffer",A=i)}var a=t.objectMode?1:A.length;t.length+=a;var c=t.length-1))throw new B(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(w.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(w.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),w.prototype._write=function(e,t,r){r(new p("_write()"))},w.prototype._writev=null,w.prototype.end=function(e,t,r){var A=this._writableState;return"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),A.corked&&(A.corked=1,this.uncork()),A.ending||function(e,t,r){t.ending=!0,k(e,t),r&&(t.finished?process.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,A,r),this},Object.defineProperty(w.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(w.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),w.prototype.destroy=g.destroy,w.prototype._undestroy=g.undestroy,w.prototype._destroy=function(e,t){t(e)}},4245:(e,t,r)=>{"use strict";var A;function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var o=r(91327),i=Symbol("lastResolve"),s=Symbol("lastReject"),a=Symbol("error"),c=Symbol("ended"),g=Symbol("lastPromise"),l=Symbol("handlePromise"),u=Symbol("stream");function h(e,t){return{value:e,done:t}}function p(e){var t=e[i];if(null!==t){var r=e[u].read();null!==r&&(e[g]=null,e[i]=null,e[s]=null,t(h(r,!1)))}}function d(e){process.nextTick(p,e)}var C=Object.getPrototypeOf((function(){})),f=Object.setPrototypeOf((n(A={get stream(){return this[u]},next:function(){var e=this,t=this[a];if(null!==t)return Promise.reject(t);if(this[c])return Promise.resolve(h(null,!0));if(this[u].destroyed)return new Promise((function(t,r){process.nextTick((function(){e[a]?r(e[a]):t(h(null,!0))}))}));var r,A=this[g];if(A)r=new Promise(function(e,t){return function(r,A){e.then((function(){t[l](r,A)}),A)}}(A,this));else{var n=this[u].read();if(null!==n)return Promise.resolve(h(n,!1));r=new Promise(this[l])}return this[g]=r,r}},Symbol.asyncIterator,(function(){return this})),n(A,"return",(function(){var e=this;return new Promise((function(t,r){e[u].destroy(null,(function(e){e?r(e):t(h(null,!0))}))}))})),A),C);e.exports=function(e){var t,r=Object.create(f,(n(t={},u,{value:e,writable:!0}),n(t,i,{value:null,writable:!0}),n(t,s,{value:null,writable:!0}),n(t,a,{value:null,writable:!0}),n(t,c,{value:e._readableState.endEmitted,writable:!0}),n(t,g,{value:null,writable:!0}),n(t,l,{value:function(e,t){var A=r[u].read();A?(r[g]=null,r[i]=null,r[s]=null,e(h(A,!1))):(r[i]=e,r[s]=t)},writable:!0}),t));return o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=r[s];return null!==t&&(r[g]=null,r[i]=null,r[s]=null,t(e)),void(r[a]=e)}var A=r[i];null!==A&&(r[g]=null,r[i]=null,r[s]=null,A(h(null,!0))),r[c]=!0})),e.on("readable",d.bind(null,r)),r}},43117:(e,t,r)=>{"use strict";function A(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var n=r(64293).Buffer,o=r(31669).inspect,i=o&&o.custom||"inspect";e.exports=function(){function e(){this.head=null,this.tail=null,this.length=0}var t=e.prototype;return t.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},t.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},t.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},t.clear=function(){this.head=this.tail=null,this.length=0},t.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},t.concat=function(e){if(0===this.length)return n.alloc(0);for(var t,r,A,o=n.allocUnsafe(e>>>0),i=this.head,s=0;i;)t=i.data,r=o,A=s,n.prototype.copy.call(t,r,A),s+=i.data.length,i=i.next;return o},t.consume=function(e,t){var r;return en.length?n.length:e;if(o===n.length?A+=n:A+=n.slice(0,e),0===(e-=o)){o===n.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=n.slice(o));break}++r}return this.length-=r,A},t._getBuffer=function(e){var t=n.allocUnsafe(e),r=this.head,A=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var o=r.data,i=e>o.length?o.length:e;if(o.copy(t,t.length-e,0,i),0===(e-=i)){i===o.length?(++A,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++A}return this.length-=A,t},t[i]=function(e,t){return o(this,function(e){for(var t=1;t{"use strict";function t(e,t){A(e,t),r(e)}function r(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function A(e,t){e.emit("error",t)}e.exports={destroy:function(e,n){var o=this,i=this._readableState&&this._readableState.destroyed,s=this._writableState&&this._writableState.destroyed;return i||s?(n?n(e):!e||this._writableState&&this._writableState.errorEmitted||process.nextTick(A,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!n&&e?(process.nextTick(t,o,e),o._writableState&&(o._writableState.errorEmitted=!0)):n?(process.nextTick(r,o),n(e)):process.nextTick(r,o)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},91327:(e,t,r)=>{"use strict";var A=r(20663).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}e.exports=function e(t,r,o){if("function"==typeof r)return e(t,null,r);r||(r={}),o=function(e){var t=!1;return function(r){t||(t=!0,e.call(this,r))}}(o||n);var i=t._writableState,s=t._readableState,a=r.readable||!1!==r.readable&&t.readable,c=r.writable||!1!==r.writable&&t.writable,g=function(){t.writable||l()},l=function(){c=!1,a||o.call(t)},u=function(){a=!1,c||o.call(t)},h=function(e){o.call(t,e)},p=function(){return(!a||s&&s.ended)&&(!c||i&&i.ended)?void 0:o.call(t,new A)},d=function(){t.req.on("finish",l)};return!function(e){return e.setHeader&&"function"==typeof e.abort}(t)?c&&!i&&(t.on("end",g),t.on("close",g)):(t.on("complete",l),t.on("abort",p),t.req?d():t.on("request",d)),t.on("end",u),t.on("finish",l),!1!==r.error&&t.on("error",h),t.on("close",p),function(){t.removeListener("complete",l),t.removeListener("abort",p),t.removeListener("request",d),t.req&&t.req.removeListener("finish",l),t.removeListener("end",g),t.removeListener("close",g),t.removeListener("finish",l),t.removeListener("end",u),t.removeListener("error",h),t.removeListener("close",p)}}},4939:(e,t,r)=>{"use strict";var A;var n=r(20663).q,o=n.ERR_MISSING_ARGS,i=n.ERR_STREAM_DESTROYED;function s(e){if(e)throw e}function a(e,t,n,o){o=function(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}(o);var s=!1;e.on("close",(function(){s=!0})),void 0===A&&(A=r(91327)),A(e,{readable:t,writable:n},(function(e){if(e)return o(e);s=!0,o()}));var a=!1;return function(t){if(!s&&!a)return a=!0,function(e){return e.setHeader&&"function"==typeof e.abort}(e)?e.abort():"function"==typeof e.destroy?e.destroy():void o(t||new i("pipe"))}}function c(e){e()}function g(e,t){return e.pipe(t)}function l(e){return e.length?"function"!=typeof e[e.length-1]?s:e.pop():s}e.exports=function(){for(var e=arguments.length,t=new Array(e),r=0;r0,(function(e){A||(A=e),e&&i.forEach(c),o||(i.forEach(c),n(A))}))}));return t.reduce(g)}},77433:(e,t,r)=>{"use strict";var A=r(20663).q.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,r,n){var o=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new A(n?r:"highWaterMark",o);return Math.floor(o)}return e.objectMode?16:16384}}},49298:(e,t,r)=>{e.exports=r(92413)},86897:(e,t,r)=>{var A=r(92413);"disable"===process.env.READABLE_STREAM&&A?(e.exports=A.Readable,Object.assign(e.exports,A),e.exports.Stream=A):((t=e.exports=r(58020)).Stream=A||t,t.Readable=t,t.Writable=r(6729),t.Duplex=r(72434),t.Transform=r(54801),t.PassThrough=r(52444),t.finished=r(91327),t.pipeline=r(4939))},19476:(e,t,r)=>{"use strict";const A=r(4016);e.exports=(e={})=>new Promise((t,r)=>{const n=A.connect(e,()=>{e.resolveSocket?(n.off("error",r),t({alpnProtocol:n.alpnProtocol,socket:n})):(n.destroy(),t({alpnProtocol:n.alpnProtocol}))});n.on("error",r)})},48491:(e,t,r)=>{"use strict";const A=r(92413).Readable,n=r(55737);e.exports=class extends A{constructor(e,t,r,A){if("number"!=typeof e)throw new TypeError("Argument `statusCode` should be a number");if("object"!=typeof t)throw new TypeError("Argument `headers` should be an object");if(!(r instanceof Buffer))throw new TypeError("Argument `body` should be a buffer");if("string"!=typeof A)throw new TypeError("Argument `url` should be a string");super(),this.statusCode=e,this.headers=n(t),this.body=r,this.url=A}_read(){this.push(this.body),this.push(null)}}},2383:e=>{"use strict";e.exports=function(e){var t=new e,r=t;return{get:function(){var A=t;return A.next?t=A.next:(t=new e,r=t),A.next=null,A},release:function(e){r.next=e,r=e}}}},69078:e=>{e.exports=function(e,t){var r,A,n,o=!0;Array.isArray(e)?(r=[],A=e.length):(n=Object.keys(e),r={},A=n.length);function i(e){function A(){t&&t(e,r),t=null}o?process.nextTick(A):A()}function s(e,t,n){r[e]=n,(0==--A||t)&&i(t)}A?n?n.forEach((function(t){e[t]((function(e,r){s(t,e,r)}))})):e.forEach((function(e,t){e((function(e,r){s(t,e,r)}))})):i(null);o=!1}},13499:(e,t,r)=>{var A=r(64293),n=A.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function i(e,t,r){return n(e,t,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?e.exports=A:(o(A,t),t.Buffer=i),o(n,i),i.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return n(e,t,r)},i.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var A=n(e);return void 0!==t?"string"==typeof r?A.fill(t,r):A.fill(t):A.fill(0),A},i.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n(e)},i.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return A.SlowBuffer(e)}},95584:(e,t)=>{var r;t=e.exports=l,r="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var A=Number.MAX_SAFE_INTEGER||9007199254740991,n=t.re=[],o=t.src=[],i=t.tokens={},s=0;function a(e){i[e]=s++}a("NUMERICIDENTIFIER"),o[i.NUMERICIDENTIFIER]="0|[1-9]\\d*",a("NUMERICIDENTIFIERLOOSE"),o[i.NUMERICIDENTIFIERLOOSE]="[0-9]+",a("NONNUMERICIDENTIFIER"),o[i.NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-][a-zA-Z0-9-]*",a("MAINVERSION"),o[i.MAINVERSION]="("+o[i.NUMERICIDENTIFIER]+")\\.("+o[i.NUMERICIDENTIFIER]+")\\.("+o[i.NUMERICIDENTIFIER]+")",a("MAINVERSIONLOOSE"),o[i.MAINVERSIONLOOSE]="("+o[i.NUMERICIDENTIFIERLOOSE]+")\\.("+o[i.NUMERICIDENTIFIERLOOSE]+")\\.("+o[i.NUMERICIDENTIFIERLOOSE]+")",a("PRERELEASEIDENTIFIER"),o[i.PRERELEASEIDENTIFIER]="(?:"+o[i.NUMERICIDENTIFIER]+"|"+o[i.NONNUMERICIDENTIFIER]+")",a("PRERELEASEIDENTIFIERLOOSE"),o[i.PRERELEASEIDENTIFIERLOOSE]="(?:"+o[i.NUMERICIDENTIFIERLOOSE]+"|"+o[i.NONNUMERICIDENTIFIER]+")",a("PRERELEASE"),o[i.PRERELEASE]="(?:-("+o[i.PRERELEASEIDENTIFIER]+"(?:\\."+o[i.PRERELEASEIDENTIFIER]+")*))",a("PRERELEASELOOSE"),o[i.PRERELEASELOOSE]="(?:-?("+o[i.PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+o[i.PRERELEASEIDENTIFIERLOOSE]+")*))",a("BUILDIDENTIFIER"),o[i.BUILDIDENTIFIER]="[0-9A-Za-z-]+",a("BUILD"),o[i.BUILD]="(?:\\+("+o[i.BUILDIDENTIFIER]+"(?:\\."+o[i.BUILDIDENTIFIER]+")*))",a("FULL"),a("FULLPLAIN"),o[i.FULLPLAIN]="v?"+o[i.MAINVERSION]+o[i.PRERELEASE]+"?"+o[i.BUILD]+"?",o[i.FULL]="^"+o[i.FULLPLAIN]+"$",a("LOOSEPLAIN"),o[i.LOOSEPLAIN]="[v=\\s]*"+o[i.MAINVERSIONLOOSE]+o[i.PRERELEASELOOSE]+"?"+o[i.BUILD]+"?",a("LOOSE"),o[i.LOOSE]="^"+o[i.LOOSEPLAIN]+"$",a("GTLT"),o[i.GTLT]="((?:<|>)?=?)",a("XRANGEIDENTIFIERLOOSE"),o[i.XRANGEIDENTIFIERLOOSE]=o[i.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*",a("XRANGEIDENTIFIER"),o[i.XRANGEIDENTIFIER]=o[i.NUMERICIDENTIFIER]+"|x|X|\\*",a("XRANGEPLAIN"),o[i.XRANGEPLAIN]="[v=\\s]*("+o[i.XRANGEIDENTIFIER]+")(?:\\.("+o[i.XRANGEIDENTIFIER]+")(?:\\.("+o[i.XRANGEIDENTIFIER]+")(?:"+o[i.PRERELEASE]+")?"+o[i.BUILD]+"?)?)?",a("XRANGEPLAINLOOSE"),o[i.XRANGEPLAINLOOSE]="[v=\\s]*("+o[i.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+o[i.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+o[i.XRANGEIDENTIFIERLOOSE]+")(?:"+o[i.PRERELEASELOOSE]+")?"+o[i.BUILD]+"?)?)?",a("XRANGE"),o[i.XRANGE]="^"+o[i.GTLT]+"\\s*"+o[i.XRANGEPLAIN]+"$",a("XRANGELOOSE"),o[i.XRANGELOOSE]="^"+o[i.GTLT]+"\\s*"+o[i.XRANGEPLAINLOOSE]+"$",a("COERCE"),o[i.COERCE]="(^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])",a("COERCERTL"),n[i.COERCERTL]=new RegExp(o[i.COERCE],"g"),a("LONETILDE"),o[i.LONETILDE]="(?:~>?)",a("TILDETRIM"),o[i.TILDETRIM]="(\\s*)"+o[i.LONETILDE]+"\\s+",n[i.TILDETRIM]=new RegExp(o[i.TILDETRIM],"g");a("TILDE"),o[i.TILDE]="^"+o[i.LONETILDE]+o[i.XRANGEPLAIN]+"$",a("TILDELOOSE"),o[i.TILDELOOSE]="^"+o[i.LONETILDE]+o[i.XRANGEPLAINLOOSE]+"$",a("LONECARET"),o[i.LONECARET]="(?:\\^)",a("CARETTRIM"),o[i.CARETTRIM]="(\\s*)"+o[i.LONECARET]+"\\s+",n[i.CARETTRIM]=new RegExp(o[i.CARETTRIM],"g");a("CARET"),o[i.CARET]="^"+o[i.LONECARET]+o[i.XRANGEPLAIN]+"$",a("CARETLOOSE"),o[i.CARETLOOSE]="^"+o[i.LONECARET]+o[i.XRANGEPLAINLOOSE]+"$",a("COMPARATORLOOSE"),o[i.COMPARATORLOOSE]="^"+o[i.GTLT]+"\\s*("+o[i.LOOSEPLAIN]+")$|^$",a("COMPARATOR"),o[i.COMPARATOR]="^"+o[i.GTLT]+"\\s*("+o[i.FULLPLAIN]+")$|^$",a("COMPARATORTRIM"),o[i.COMPARATORTRIM]="(\\s*)"+o[i.GTLT]+"\\s*("+o[i.LOOSEPLAIN]+"|"+o[i.XRANGEPLAIN]+")",n[i.COMPARATORTRIM]=new RegExp(o[i.COMPARATORTRIM],"g");a("HYPHENRANGE"),o[i.HYPHENRANGE]="^\\s*("+o[i.XRANGEPLAIN]+")\\s+-\\s+("+o[i.XRANGEPLAIN]+")\\s*$",a("HYPHENRANGELOOSE"),o[i.HYPHENRANGELOOSE]="^\\s*("+o[i.XRANGEPLAINLOOSE]+")\\s+-\\s+("+o[i.XRANGEPLAINLOOSE]+")\\s*$",a("STAR"),o[i.STAR]="(<|>)?=?\\s*\\*";for(var c=0;c256)return null;if(!(t.loose?n[i.LOOSE]:n[i.FULL]).test(e))return null;try{return new l(e,t)}catch(e){return null}}function l(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof l){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>256)throw new TypeError("version is longer than 256 characters");if(!(this instanceof l))return new l(e,t);r("SemVer",e,t),this.options=t,this.loose=!!t.loose;var o=e.trim().match(t.loose?n[i.LOOSE]:n[i.FULL]);if(!o)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>A||this.major<0)throw new TypeError("Invalid major version");if(this.minor>A||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>A||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);-1===r&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,r,A){"string"==typeof r&&(A=r,r=void 0);try{return new l(e,r).inc(t,A).version}catch(e){return null}},t.diff=function(e,t){if(f(e,t))return null;var r=g(e),A=g(t),n="";if(r.prerelease.length||A.prerelease.length){n="pre";var o="prerelease"}for(var i in r)if(("major"===i||"minor"===i||"patch"===i)&&r[i]!==A[i])return n+i;return o},t.compareIdentifiers=h;var u=/^[0-9]+$/;function h(e,t){var r=u.test(e),A=u.test(t);return r&&A&&(e=+e,t=+t),e===t?0:r&&!A?-1:A&&!r?1:e0}function C(e,t,r){return p(e,t,r)<0}function f(e,t,r){return 0===p(e,t,r)}function I(e,t,r){return 0!==p(e,t,r)}function E(e,t,r){return p(e,t,r)>=0}function B(e,t,r){return p(e,t,r)<=0}function y(e,t,r,A){switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e===r;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e!==r;case"":case"=":case"==":return f(e,r,A);case"!=":return I(e,r,A);case">":return d(e,r,A);case">=":return E(e,r,A);case"<":return C(e,r,A);case"<=":return B(e,r,A);default:throw new TypeError("Invalid operator: "+t)}}function m(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof m){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof m))return new m(e,t);r("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===w?this.value="":this.value=this.operator+this.semver.version,r("comp",this)}t.rcompareIdentifiers=function(e,t){return h(t,e)},t.major=function(e,t){return new l(e,t).major},t.minor=function(e,t){return new l(e,t).minor},t.patch=function(e,t){return new l(e,t).patch},t.compare=p,t.compareLoose=function(e,t){return p(e,t,!0)},t.compareBuild=function(e,t,r){var A=new l(e,r),n=new l(t,r);return A.compare(n)||A.compareBuild(n)},t.rcompare=function(e,t,r){return p(t,e,r)},t.sort=function(e,r){return e.sort((function(e,A){return t.compareBuild(e,A,r)}))},t.rsort=function(e,r){return e.sort((function(e,A){return t.compareBuild(A,e,r)}))},t.gt=d,t.lt=C,t.eq=f,t.neq=I,t.gte=E,t.lte=B,t.cmp=y,t.Comparator=m;var w={};function Q(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Q)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new Q(e.raw,t);if(e instanceof m)return new Q(e.value,t);if(!(this instanceof Q))return new Q(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function D(e,t){for(var r=!0,A=e.slice(),n=A.pop();r&&A.length;)r=A.every((function(e){return n.intersects(e,t)})),n=A.pop();return r}function b(e){return!e||"x"===e.toLowerCase()||"*"===e}function v(e,t,r,A,n,o,i,s,a,c,g,l,u){return((t=b(r)?"":b(A)?">="+r+".0.0":b(n)?">="+r+"."+A+".0":">="+t)+" "+(s=b(a)?"":b(c)?"<"+(+a+1)+".0.0":b(g)?"<"+a+"."+(+c+1)+".0":l?"<="+a+"."+c+"."+g+"-"+l:"<="+s)).trim()}function S(e,t,A){for(var n=0;n0){var o=e[n].semver;if(o.major===t.major&&o.minor===t.minor&&o.patch===t.patch)return!0}return!1}return!0}function k(e,t,r){try{t=new Q(t,r)}catch(e){return!1}return t.test(e)}function N(e,t,r,A){var n,o,i,s,a;switch(e=new l(e,A),t=new Q(t,A),r){case">":n=d,o=B,i=C,s=">",a=">=";break;case"<":n=C,o=E,i=d,s="<",a="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(k(e,t,A))return!1;for(var c=0;c=0.0.0")),u=u||e,h=h||e,n(e.semver,u.semver,A)?u=e:i(e.semver,h.semver,A)&&(h=e)})),u.operator===s||u.operator===a)return!1;if((!h.operator||h.operator===s)&&o(e,h.semver))return!1;if(h.operator===a&&i(e,h.semver))return!1}return!0}m.prototype.parse=function(e){var t=this.options.loose?n[i.COMPARATORLOOSE]:n[i.COMPARATOR],r=e.match(t);if(!r)throw new TypeError("Invalid comparator: "+e);this.operator=void 0!==r[1]?r[1]:"","="===this.operator&&(this.operator=""),r[2]?this.semver=new l(r[2],this.options.loose):this.semver=w},m.prototype.toString=function(){return this.value},m.prototype.test=function(e){if(r("Comparator.test",e,this.options.loose),this.semver===w||e===w)return!0;if("string"==typeof e)try{e=new l(e,this.options)}catch(e){return!1}return y(e,this.operator,this.semver,this.options)},m.prototype.intersects=function(e,t){if(!(e instanceof m))throw new TypeError("a Comparator is required");var r;if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return""===this.value||(r=new Q(e.value,t),k(this.value,r,t));if(""===e.operator)return""===e.value||(r=new Q(this.value,t),k(e.semver,r,t));var A=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),n=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),s=y(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),a=y(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return A||n||o&&i||s||a},t.Range=Q,Q.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},Q.prototype.toString=function(){return this.range},Q.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var A=t?n[i.HYPHENRANGELOOSE]:n[i.HYPHENRANGE];e=e.replace(A,v),r("hyphen replace",e),e=e.replace(n[i.COMPARATORTRIM],"$1$2$3"),r("comparator trim",e,n[i.COMPARATORTRIM]),e=(e=(e=e.replace(n[i.TILDETRIM],"$1~")).replace(n[i.CARETTRIM],"$1^")).split(/\s+/).join(" ");var o=t?n[i.COMPARATORLOOSE]:n[i.COMPARATOR],s=e.split(" ").map((function(e){return function(e,t){return r("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){r("caret",e,t);var A=t.loose?n[i.CARETLOOSE]:n[i.CARET];return e.replace(A,(function(t,A,n,o,i){var s;return r("caret",e,t,A,n,o,i),b(A)?s="":b(n)?s=">="+A+".0.0 <"+(+A+1)+".0.0":b(o)?s="0"===A?">="+A+"."+n+".0 <"+A+"."+(+n+1)+".0":">="+A+"."+n+".0 <"+(+A+1)+".0.0":i?(r("replaceCaret pr",i),s="0"===A?"0"===n?">="+A+"."+n+"."+o+"-"+i+" <"+A+"."+n+"."+(+o+1):">="+A+"."+n+"."+o+"-"+i+" <"+A+"."+(+n+1)+".0":">="+A+"."+n+"."+o+"-"+i+" <"+(+A+1)+".0.0"):(r("no pr"),s="0"===A?"0"===n?">="+A+"."+n+"."+o+" <"+A+"."+n+"."+(+o+1):">="+A+"."+n+"."+o+" <"+A+"."+(+n+1)+".0":">="+A+"."+n+"."+o+" <"+(+A+1)+".0.0"),r("caret return",s),s}))}(e,t)})).join(" ")}(e,t),r("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var A=t.loose?n[i.TILDELOOSE]:n[i.TILDE];return e.replace(A,(function(t,A,n,o,i){var s;return r("tilde",e,t,A,n,o,i),b(A)?s="":b(n)?s=">="+A+".0.0 <"+(+A+1)+".0.0":b(o)?s=">="+A+"."+n+".0 <"+A+"."+(+n+1)+".0":i?(r("replaceTilde pr",i),s=">="+A+"."+n+"."+o+"-"+i+" <"+A+"."+(+n+1)+".0"):s=">="+A+"."+n+"."+o+" <"+A+"."+(+n+1)+".0",r("tilde return",s),s}))}(e,t)})).join(" ")}(e,t),r("tildes",e),e=function(e,t){return r("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var A=t.loose?n[i.XRANGELOOSE]:n[i.XRANGE];return e.replace(A,(function(A,n,o,i,s,a){r("xRange",e,A,n,o,i,s,a);var c=b(o),g=c||b(i),l=g||b(s),u=l;return"="===n&&u&&(n=""),a=t.includePrerelease?"-0":"",c?A=">"===n||"<"===n?"<0.0.0-0":"*":n&&u?(g&&(i=0),s=0,">"===n?(n=">=",g?(o=+o+1,i=0,s=0):(i=+i+1,s=0)):"<="===n&&(n="<",g?o=+o+1:i=+i+1),A=n+o+"."+i+"."+s+a):g?A=">="+o+".0.0"+a+" <"+(+o+1)+".0.0"+a:l&&(A=">="+o+"."+i+".0"+a+" <"+o+"."+(+i+1)+".0"+a),r("xRange return",A),A}))}(e,t)})).join(" ")}(e,t),r("xrange",e),e=function(e,t){return r("replaceStars",e,t),e.trim().replace(n[i.STAR],"")}(e,t),r("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(s=s.filter((function(e){return!!e.match(o)}))),s=s.map((function(e){return new m(e,this.options)}),this)},Q.prototype.intersects=function(e,t){if(!(e instanceof Q))throw new TypeError("a Range is required");return this.set.some((function(r){return D(r,t)&&e.set.some((function(e){return D(e,t)&&r.every((function(r){return e.every((function(e){return r.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new Q(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},Q.prototype.test=function(e){if(!e)return!1;if("string"==typeof e)try{e=new l(e,this.options)}catch(e){return!1}for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":r&&!d(r,t)||(r=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}))}if(r&&e.test(r))return r;return null},t.validRange=function(e,t){try{return new Q(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,r){return N(e,t,"<",r)},t.gtr=function(e,t,r){return N(e,t,">",r)},t.outside=N,t.prerelease=function(e,t){var r=g(e,t);return r&&r.prerelease.length?r.prerelease:null},t.intersects=function(e,t,r){return e=new Q(e,r),t=new Q(t,r),e.intersects(t)},t.coerce=function(e,t){if(e instanceof l)return e;"number"==typeof e&&(e=String(e));if("string"!=typeof e)return null;var r=null;if((t=t||{}).rtl){for(var A;(A=n[i.COERCERTL].exec(e))&&(!r||r.index+r[0].length!==e.length);)r&&A.index+A[0].length===r.index+r[0].length||(r=A),n[i.COERCERTL].lastIndex=A.index+A[1].length+A[2].length;n[i.COERCERTL].lastIndex=-1}else r=e.match(n[i.COERCE]);if(null===r)return null;return g(r[2]+"."+(r[3]||"0")+"."+(r[4]||"0"),t)}},29069:(e,t,r)=>{const A=Symbol("SemVer ANY");class n{static get ANY(){return A}constructor(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof n){if(e.loose===!!t.loose)return e;e=e.value}a("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===A?this.value="":this.value=this.operator+this.semver.version,a("comp",this)}parse(e){const t=this.options.loose?o[i.COMPARATORLOOSE]:o[i.COMPARATOR],r=e.match(t);if(!r)throw new TypeError("Invalid comparator: "+e);this.operator=void 0!==r[1]?r[1]:"","="===this.operator&&(this.operator=""),r[2]?this.semver=new c(r[2],this.options.loose):this.semver=A}toString(){return this.value}test(e){if(a("Comparator.test",e,this.options.loose),this.semver===A||e===A)return!0;if("string"==typeof e)try{e=new c(e,this.options)}catch(e){return!1}return s(e,this.operator,this.semver,this.options)}intersects(e,t){if(!(e instanceof n))throw new TypeError("a Comparator is required");if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return""===this.value||new g(e.value,t).test(this.value);if(""===e.operator)return""===e.value||new g(this.value,t).test(e.semver);const r=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),A=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),o=this.semver.version===e.semver.version,i=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),a=s(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=s(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return r||A||o&&i||a||c}}e.exports=n;const{re:o,t:i}=r(49439),s=r(38754),a=r(6029),c=r(14772),g=r(73004)},73004:(e,t,r)=>{class A{constructor(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof A)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new A(e.raw,t);if(e instanceof n)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map(e=>this.parseRange(e.trim())).filter(e=>e.length),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}format(){return this.range=this.set.map(e=>e.join(" ").trim()).join("||").trim(),this.range}toString(){return this.range}parseRange(e){const t=this.options.loose;e=e.trim();const r=t?s[a.HYPHENRANGELOOSE]:s[a.HYPHENRANGE];e=e.replace(r,w(this.options.includePrerelease)),o("hyphen replace",e),e=e.replace(s[a.COMPARATORTRIM],c),o("comparator trim",e,s[a.COMPARATORTRIM]),e=(e=(e=e.replace(s[a.TILDETRIM],g)).replace(s[a.CARETTRIM],l)).split(/\s+/).join(" ");const A=t?s[a.COMPARATORLOOSE]:s[a.COMPARATOR];return e.split(" ").map(e=>h(e,this.options)).join(" ").split(/\s+/).map(e=>m(e,this.options)).filter(this.options.loose?e=>!!e.match(A):()=>!0).map(e=>new n(e,this.options))}intersects(e,t){if(!(e instanceof A))throw new TypeError("a Range is required");return this.set.some(r=>u(r,t)&&e.set.some(e=>u(e,t)&&r.every(r=>e.every(e=>r.intersects(e,t)))))}test(e){if(!e)return!1;if("string"==typeof e)try{e=new i(e,this.options)}catch(e){return!1}for(let t=0;t{let r=!0;const A=e.slice();let n=A.pop();for(;r&&A.length;)r=A.every(e=>n.intersects(e,t)),n=A.pop();return r},h=(e,t)=>(o("comp",e,t),e=f(e,t),o("caret",e),e=d(e,t),o("tildes",e),e=E(e,t),o("xrange",e),e=y(e,t),o("stars",e),e),p=e=>!e||"x"===e.toLowerCase()||"*"===e,d=(e,t)=>e.trim().split(/\s+/).map(e=>C(e,t)).join(" "),C=(e,t)=>{const r=t.loose?s[a.TILDELOOSE]:s[a.TILDE];return e.replace(r,(t,r,A,n,i)=>{let s;return o("tilde",e,t,r,A,n,i),p(r)?s="":p(A)?s=`>=${r}.0.0 <${+r+1}.0.0-0`:p(n)?s=`>=${r}.${A}.0 <${r}.${+A+1}.0-0`:i?(o("replaceTilde pr",i),s=`>=${r}.${A}.${n}-${i} <${r}.${+A+1}.0-0`):s=`>=${r}.${A}.${n} <${r}.${+A+1}.0-0`,o("tilde return",s),s})},f=(e,t)=>e.trim().split(/\s+/).map(e=>I(e,t)).join(" "),I=(e,t)=>{o("caret",e,t);const r=t.loose?s[a.CARETLOOSE]:s[a.CARET],A=t.includePrerelease?"-0":"";return e.replace(r,(t,r,n,i,s)=>{let a;return o("caret",e,t,r,n,i,s),p(r)?a="":p(n)?a=`>=${r}.0.0${A} <${+r+1}.0.0-0`:p(i)?a="0"===r?`>=${r}.${n}.0${A} <${r}.${+n+1}.0-0`:`>=${r}.${n}.0${A} <${+r+1}.0.0-0`:s?(o("replaceCaret pr",s),a="0"===r?"0"===n?`>=${r}.${n}.${i}-${s} <${r}.${n}.${+i+1}-0`:`>=${r}.${n}.${i}-${s} <${r}.${+n+1}.0-0`:`>=${r}.${n}.${i}-${s} <${+r+1}.0.0-0`):(o("no pr"),a="0"===r?"0"===n?`>=${r}.${n}.${i}${A} <${r}.${n}.${+i+1}-0`:`>=${r}.${n}.${i}${A} <${r}.${+n+1}.0-0`:`>=${r}.${n}.${i} <${+r+1}.0.0-0`),o("caret return",a),a})},E=(e,t)=>(o("replaceXRanges",e,t),e.split(/\s+/).map(e=>B(e,t)).join(" ")),B=(e,t)=>{e=e.trim();const r=t.loose?s[a.XRANGELOOSE]:s[a.XRANGE];return e.replace(r,(r,A,n,i,s,a)=>{o("xRange",e,r,A,n,i,s,a);const c=p(n),g=c||p(i),l=g||p(s),u=l;return"="===A&&u&&(A=""),a=t.includePrerelease?"-0":"",c?r=">"===A||"<"===A?"<0.0.0-0":"*":A&&u?(g&&(i=0),s=0,">"===A?(A=">=",g?(n=+n+1,i=0,s=0):(i=+i+1,s=0)):"<="===A&&(A="<",g?n=+n+1:i=+i+1),"<"===A&&(a="-0"),r=`${A+n}.${i}.${s}${a}`):g?r=`>=${n}.0.0${a} <${+n+1}.0.0-0`:l&&(r=`>=${n}.${i}.0${a} <${n}.${+i+1}.0-0`),o("xRange return",r),r})},y=(e,t)=>(o("replaceStars",e,t),e.trim().replace(s[a.STAR],"")),m=(e,t)=>(o("replaceGTE0",e,t),e.trim().replace(s[t.includePrerelease?a.GTE0PRE:a.GTE0],"")),w=e=>(t,r,A,n,o,i,s,a,c,g,l,u,h)=>`${r=p(A)?"":p(n)?`>=${A}.0.0${e?"-0":""}`:p(o)?`>=${A}.${n}.0${e?"-0":""}`:i?">="+r:`>=${r}${e?"-0":""}`} ${a=p(c)?"":p(g)?`<${+c+1}.0.0-0`:p(l)?`<${c}.${+g+1}.0-0`:u?`<=${c}.${g}.${l}-${u}`:e?`<${c}.${g}.${+l+1}-0`:"<="+a}`.trim(),Q=(e,t,r)=>{for(let r=0;r0){const A=e[r].semver;if(A.major===t.major&&A.minor===t.minor&&A.patch===t.patch)return!0}return!1}return!0}},14772:(e,t,r)=>{const A=r(6029),{MAX_LENGTH:n,MAX_SAFE_INTEGER:o}=r(76483),{re:i,t:s}=r(49439),{compareIdentifiers:a}=r(99297);class c{constructor(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof c){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError(`version is longer than ${n} characters`);A("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;const r=e.trim().match(t.loose?i[s.LOOSE]:i[s.FULL]);if(!r)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+r[1],this.minor=+r[2],this.patch=+r[3],this.major>o||this.major<0)throw new TypeError("Invalid major version");if(this.minor>o||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>o||this.patch<0)throw new TypeError("Invalid patch version");r[4]?this.prerelease=r[4].split(".").map(e=>{if(/^[0-9]+$/.test(e)){const t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[e]&&(this.prerelease[e]++,e=-2);-1===e&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this}}e.exports=c},31192:(e,t,r)=>{const A=r(21883);e.exports=(e,t)=>{const r=A(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null}},38754:(e,t,r)=>{const A=r(78760),n=r(83286),o=r(26544),i=r(44984),s=r(65069),a=r(93845);e.exports=(e,t,r,c)=>{switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e===r;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof r&&(r=r.version),e!==r;case"":case"=":case"==":return A(e,r,c);case"!=":return n(e,r,c);case">":return o(e,r,c);case">=":return i(e,r,c);case"<":return s(e,r,c);case"<=":return a(e,r,c);default:throw new TypeError("Invalid operator: "+t)}}},38113:(e,t,r)=>{const A=r(14772),n=r(21883),{re:o,t:i}=r(49439);e.exports=(e,t)=>{if(e instanceof A)return e;if("number"==typeof e&&(e=String(e)),"string"!=typeof e)return null;let r=null;if((t=t||{}).rtl){let t;for(;(t=o[i.COERCERTL].exec(e))&&(!r||r.index+r[0].length!==e.length);)r&&t.index+t[0].length===r.index+r[0].length||(r=t),o[i.COERCERTL].lastIndex=t.index+t[1].length+t[2].length;o[i.COERCERTL].lastIndex=-1}else r=e.match(o[i.COERCE]);return null===r?null:n(`${r[2]}.${r[3]||"0"}.${r[4]||"0"}`,t)}},63353:(e,t,r)=>{const A=r(14772);e.exports=(e,t,r)=>{const n=new A(e,r),o=new A(t,r);return n.compare(o)||n.compareBuild(o)}},58566:(e,t,r)=>{const A=r(17340);e.exports=(e,t)=>A(e,t,!0)},17340:(e,t,r)=>{const A=r(14772);e.exports=(e,t,r)=>new A(e,r).compare(new A(t,r))},29301:(e,t,r)=>{const A=r(21883),n=r(78760);e.exports=(e,t)=>{if(n(e,t))return null;{const r=A(e),n=A(t),o=r.prerelease.length||n.prerelease.length,i=o?"pre":"",s=o?"prerelease":"";for(const e in r)if(("major"===e||"minor"===e||"patch"===e)&&r[e]!==n[e])return i+e;return s}}},78760:(e,t,r)=>{const A=r(17340);e.exports=(e,t,r)=>0===A(e,t,r)},26544:(e,t,r)=>{const A=r(17340);e.exports=(e,t,r)=>A(e,t,r)>0},44984:(e,t,r)=>{const A=r(17340);e.exports=(e,t,r)=>A(e,t,r)>=0},24063:(e,t,r)=>{const A=r(14772);e.exports=(e,t,r,n)=>{"string"==typeof r&&(n=r,r=void 0);try{return new A(e,r).inc(t,n).version}catch(e){return null}}},65069:(e,t,r)=>{const A=r(17340);e.exports=(e,t,r)=>A(e,t,r)<0},93845:(e,t,r)=>{const A=r(17340);e.exports=(e,t,r)=>A(e,t,r)<=0},75157:(e,t,r)=>{const A=r(14772);e.exports=(e,t)=>new A(e,t).major},5195:(e,t,r)=>{const A=r(14772);e.exports=(e,t)=>new A(e,t).minor},83286:(e,t,r)=>{const A=r(17340);e.exports=(e,t,r)=>0!==A(e,t,r)},21883:(e,t,r)=>{const{MAX_LENGTH:A}=r(76483),{re:n,t:o}=r(49439),i=r(14772);e.exports=(e,t)=>{if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof i)return e;if("string"!=typeof e)return null;if(e.length>A)return null;if(!(t.loose?n[o.LOOSE]:n[o.FULL]).test(e))return null;try{return new i(e,t)}catch(e){return null}}},39592:(e,t,r)=>{const A=r(14772);e.exports=(e,t)=>new A(e,t).patch},27050:(e,t,r)=>{const A=r(21883);e.exports=(e,t)=>{const r=A(e,t);return r&&r.prerelease.length?r.prerelease:null}},93788:(e,t,r)=>{const A=r(17340);e.exports=(e,t,r)=>A(t,e,r)},15213:(e,t,r)=>{const A=r(63353);e.exports=(e,t)=>e.sort((e,r)=>A(r,e,t))},73011:(e,t,r)=>{const A=r(73004);e.exports=(e,t,r)=>{try{t=new A(t,r)}catch(e){return!1}return t.test(e)}},71102:(e,t,r)=>{const A=r(63353);e.exports=(e,t)=>e.sort((e,r)=>A(e,r,t))},99589:(e,t,r)=>{const A=r(21883);e.exports=(e,t)=>{const r=A(e,t);return r?r.version:null}},53887:(e,t,r)=>{const A=r(49439);e.exports={re:A.re,src:A.src,tokens:A.t,SEMVER_SPEC_VERSION:r(76483).SEMVER_SPEC_VERSION,SemVer:r(14772),compareIdentifiers:r(99297).compareIdentifiers,rcompareIdentifiers:r(99297).rcompareIdentifiers,parse:r(21883),valid:r(99589),clean:r(31192),inc:r(24063),diff:r(29301),major:r(75157),minor:r(5195),patch:r(39592),prerelease:r(27050),compare:r(17340),rcompare:r(93788),compareLoose:r(58566),compareBuild:r(63353),sort:r(71102),rsort:r(15213),gt:r(26544),lt:r(65069),eq:r(78760),neq:r(83286),gte:r(44984),lte:r(93845),cmp:r(38754),coerce:r(38113),Comparator:r(29069),Range:r(73004),satisfies:r(73011),toComparators:r(47753),maxSatisfying:r(1895),minSatisfying:r(33252),minVersion:r(4224),validRange:r(44315),outside:r(842),gtr:r(69258),ltr:r(36928),intersects:r(87395),simplifyRange:r(3530),subset:r(74264)}},76483:e=>{const t=Number.MAX_SAFE_INTEGER||9007199254740991;e.exports={SEMVER_SPEC_VERSION:"2.0.0",MAX_LENGTH:256,MAX_SAFE_INTEGER:t,MAX_SAFE_COMPONENT_LENGTH:16}},6029:e=>{const t="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...e)=>console.error("SEMVER",...e):()=>{};e.exports=t},99297:e=>{const t=/^[0-9]+$/,r=(e,r)=>{const A=t.test(e),n=t.test(r);return A&&n&&(e=+e,r=+r),e===r?0:A&&!n?-1:n&&!A?1:er(t,e)}},49439:(e,t,r)=>{const{MAX_SAFE_COMPONENT_LENGTH:A}=r(76483),n=r(6029),o=(t=e.exports={}).re=[],i=t.src=[],s=t.t={};let a=0;const c=(e,t,r)=>{const A=a++;n(A,t),s[e]=A,i[A]=t,o[A]=new RegExp(t,r?"g":void 0)};c("NUMERICIDENTIFIER","0|[1-9]\\d*"),c("NUMERICIDENTIFIERLOOSE","[0-9]+"),c("NONNUMERICIDENTIFIER","\\d*[a-zA-Z-][a-zA-Z0-9-]*"),c("MAINVERSION",`(${i[s.NUMERICIDENTIFIER]})\\.(${i[s.NUMERICIDENTIFIER]})\\.(${i[s.NUMERICIDENTIFIER]})`),c("MAINVERSIONLOOSE",`(${i[s.NUMERICIDENTIFIERLOOSE]})\\.(${i[s.NUMERICIDENTIFIERLOOSE]})\\.(${i[s.NUMERICIDENTIFIERLOOSE]})`),c("PRERELEASEIDENTIFIER",`(?:${i[s.NUMERICIDENTIFIER]}|${i[s.NONNUMERICIDENTIFIER]})`),c("PRERELEASEIDENTIFIERLOOSE",`(?:${i[s.NUMERICIDENTIFIERLOOSE]}|${i[s.NONNUMERICIDENTIFIER]})`),c("PRERELEASE",`(?:-(${i[s.PRERELEASEIDENTIFIER]}(?:\\.${i[s.PRERELEASEIDENTIFIER]})*))`),c("PRERELEASELOOSE",`(?:-?(${i[s.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${i[s.PRERELEASEIDENTIFIERLOOSE]})*))`),c("BUILDIDENTIFIER","[0-9A-Za-z-]+"),c("BUILD",`(?:\\+(${i[s.BUILDIDENTIFIER]}(?:\\.${i[s.BUILDIDENTIFIER]})*))`),c("FULLPLAIN",`v?${i[s.MAINVERSION]}${i[s.PRERELEASE]}?${i[s.BUILD]}?`),c("FULL",`^${i[s.FULLPLAIN]}$`),c("LOOSEPLAIN",`[v=\\s]*${i[s.MAINVERSIONLOOSE]}${i[s.PRERELEASELOOSE]}?${i[s.BUILD]}?`),c("LOOSE",`^${i[s.LOOSEPLAIN]}$`),c("GTLT","((?:<|>)?=?)"),c("XRANGEIDENTIFIERLOOSE",i[s.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*"),c("XRANGEIDENTIFIER",i[s.NUMERICIDENTIFIER]+"|x|X|\\*"),c("XRANGEPLAIN",`[v=\\s]*(${i[s.XRANGEIDENTIFIER]})(?:\\.(${i[s.XRANGEIDENTIFIER]})(?:\\.(${i[s.XRANGEIDENTIFIER]})(?:${i[s.PRERELEASE]})?${i[s.BUILD]}?)?)?`),c("XRANGEPLAINLOOSE",`[v=\\s]*(${i[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[s.XRANGEIDENTIFIERLOOSE]})(?:\\.(${i[s.XRANGEIDENTIFIERLOOSE]})(?:${i[s.PRERELEASELOOSE]})?${i[s.BUILD]}?)?)?`),c("XRANGE",`^${i[s.GTLT]}\\s*${i[s.XRANGEPLAIN]}$`),c("XRANGELOOSE",`^${i[s.GTLT]}\\s*${i[s.XRANGEPLAINLOOSE]}$`),c("COERCE",`(^|[^\\d])(\\d{1,${A}})(?:\\.(\\d{1,${A}}))?(?:\\.(\\d{1,${A}}))?(?:$|[^\\d])`),c("COERCERTL",i[s.COERCE],!0),c("LONETILDE","(?:~>?)"),c("TILDETRIM",`(\\s*)${i[s.LONETILDE]}\\s+`,!0),t.tildeTrimReplace="$1~",c("TILDE",`^${i[s.LONETILDE]}${i[s.XRANGEPLAIN]}$`),c("TILDELOOSE",`^${i[s.LONETILDE]}${i[s.XRANGEPLAINLOOSE]}$`),c("LONECARET","(?:\\^)"),c("CARETTRIM",`(\\s*)${i[s.LONECARET]}\\s+`,!0),t.caretTrimReplace="$1^",c("CARET",`^${i[s.LONECARET]}${i[s.XRANGEPLAIN]}$`),c("CARETLOOSE",`^${i[s.LONECARET]}${i[s.XRANGEPLAINLOOSE]}$`),c("COMPARATORLOOSE",`^${i[s.GTLT]}\\s*(${i[s.LOOSEPLAIN]})$|^$`),c("COMPARATOR",`^${i[s.GTLT]}\\s*(${i[s.FULLPLAIN]})$|^$`),c("COMPARATORTRIM",`(\\s*)${i[s.GTLT]}\\s*(${i[s.LOOSEPLAIN]}|${i[s.XRANGEPLAIN]})`,!0),t.comparatorTrimReplace="$1$2$3",c("HYPHENRANGE",`^\\s*(${i[s.XRANGEPLAIN]})\\s+-\\s+(${i[s.XRANGEPLAIN]})\\s*$`),c("HYPHENRANGELOOSE",`^\\s*(${i[s.XRANGEPLAINLOOSE]})\\s+-\\s+(${i[s.XRANGEPLAINLOOSE]})\\s*$`),c("STAR","(<|>)?=?\\s*\\*"),c("GTE0","^\\s*>=\\s*0.0.0\\s*$"),c("GTE0PRE","^\\s*>=\\s*0.0.0-0\\s*$")},69258:(e,t,r)=>{const A=r(842);e.exports=(e,t,r)=>A(e,t,">",r)},87395:(e,t,r)=>{const A=r(73004);e.exports=(e,t,r)=>(e=new A(e,r),t=new A(t,r),e.intersects(t))},36928:(e,t,r)=>{const A=r(842);e.exports=(e,t,r)=>A(e,t,"<",r)},1895:(e,t,r)=>{const A=r(14772),n=r(73004);e.exports=(e,t,r)=>{let o=null,i=null,s=null;try{s=new n(t,r)}catch(e){return null}return e.forEach(e=>{s.test(e)&&(o&&-1!==i.compare(e)||(o=e,i=new A(o,r)))}),o}},33252:(e,t,r)=>{const A=r(14772),n=r(73004);e.exports=(e,t,r)=>{let o=null,i=null,s=null;try{s=new n(t,r)}catch(e){return null}return e.forEach(e=>{s.test(e)&&(o&&1!==i.compare(e)||(o=e,i=new A(o,r)))}),o}},4224:(e,t,r)=>{const A=r(14772),n=r(73004),o=r(26544);e.exports=(e,t)=>{e=new n(e,t);let r=new A("0.0.0");if(e.test(r))return r;if(r=new A("0.0.0-0"),e.test(r))return r;r=null;for(let t=0;t{const t=new A(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":r&&!o(r,t)||(r=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}})}return r&&e.test(r)?r:null}},842:(e,t,r)=>{const A=r(14772),n=r(29069),{ANY:o}=n,i=r(73004),s=r(73011),a=r(26544),c=r(65069),g=r(93845),l=r(44984);e.exports=(e,t,r,u)=>{let h,p,d,C,f;switch(e=new A(e,u),t=new i(t,u),r){case">":h=a,p=g,d=c,C=">",f=">=";break;case"<":h=c,p=l,d=a,C="<",f="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(s(e,t,u))return!1;for(let r=0;r{e.semver===o&&(e=new n(">=0.0.0")),i=i||e,s=s||e,h(e.semver,i.semver,u)?i=e:d(e.semver,s.semver,u)&&(s=e)}),i.operator===C||i.operator===f)return!1;if((!s.operator||s.operator===C)&&p(e,s.semver))return!1;if(s.operator===f&&d(e,s.semver))return!1}return!0}},3530:(e,t,r)=>{const A=r(73011),n=r(17340);e.exports=(e,t,r)=>{const o=[];let i=null,s=null;const a=e.sort((e,t)=>n(e,t,r));for(const e of a){A(e,t,r)?(s=e,i||(i=e)):(s&&o.push([i,s]),s=null,i=null)}i&&o.push([i,null]);const c=[];for(const[e,t]of o)e===t?c.push(e):t||e!==a[0]?t?e===a[0]?c.push("<="+t):c.push(`${e} - ${t}`):c.push(">="+e):c.push("*");const g=c.join(" || "),l="string"==typeof t.raw?t.raw:String(t);return g.length{const A=r(73004),{ANY:n}=r(29069),o=r(73011),i=r(17340),s=(e,t,r)=>{if(1===e.length&&e[0].semver===n)return 1===t.length&&t[0].semver===n;const A=new Set;let s,g,l,u,h,p,d;for(const t of e)">"===t.operator||">="===t.operator?s=a(s,t,r):"<"===t.operator||"<="===t.operator?g=c(g,t,r):A.add(t.semver);if(A.size>1)return null;if(s&&g){if(l=i(s.semver,g.semver,r),l>0)return null;if(0===l&&(">="!==s.operator||"<="!==g.operator))return null}for(const e of A){if(s&&!o(e,String(s),r))return null;if(g&&!o(e,String(g),r))return null;for(const A of t)if(!o(e,String(A),r))return!1;return!0}for(const e of t){if(d=d||">"===e.operator||">="===e.operator,p=p||"<"===e.operator||"<="===e.operator,s)if(">"===e.operator||">="===e.operator){if(u=a(s,e,r),u===e)return!1}else if(">="===s.operator&&!o(s.semver,String(e),r))return!1;if(g)if("<"===e.operator||"<="===e.operator){if(h=c(g,e,r),h===e)return!1}else if("<="===g.operator&&!o(g.semver,String(e),r))return!1;if(!e.operator&&(g||s)&&0!==l)return!1}return!(s&&p&&!g&&0!==l)&&!(g&&d&&!s&&0!==l)},a=(e,t,r)=>{if(!e)return t;const A=i(e.semver,t.semver,r);return A>0?e:A<0||">"===t.operator&&">="===e.operator?t:e},c=(e,t,r)=>{if(!e)return t;const A=i(e.semver,t.semver,r);return A<0?e:A>0||"<"===t.operator&&"<="===e.operator?t:e};e.exports=(e,t,r)=>{e=new A(e,r),t=new A(t,r);let n=!1;e:for(const A of e.set){for(const e of t.set){const t=s(A,e,r);if(n=n||null!==t,t)continue e}if(n)return!1}return!0}},47753:(e,t,r)=>{const A=r(73004);e.exports=(e,t)=>new A(e,t).set.map(e=>e.map(e=>e.value).join(" ").trim().split(" "))},44315:(e,t,r)=>{const A=r(73004);e.exports=(e,t)=>{try{return new A(e,t).range||"*"}catch(e){return null}}},91470:(e,t,r)=>{"use strict";const A=r(67719);e.exports=(e="")=>{const t=e.match(A);if(!t)return null;const[r,n]=t[0].replace(/#! ?/,"").split(" "),o=r.split("/").pop();return"env"===o?n:n?`${o} ${n}`:o}},67719:e=>{"use strict";e.exports=/^#!(.*)/},17234:e=>{"use strict";e.exports=e=>{const t=/^\\\\\?\\/.test(e),r=/[^\u0000-\u0080]+/.test(e);return t||r?e:e.replace(/\\/g,"/")}},10129:(e,t,r)=>{"use strict";const A=r(76417),n=r(19184),o=r(92413).Transform,i=["sha256","sha384","sha512"],s=/^[a-z0-9+/]+(?:=?=?)$/i,a=/^([^-]+)-([^?]+)([?\S*]*)$/,c=/^([^-]+)-([A-Za-z0-9+/=]{44,88})(\?[\x21-\x7E]*)*$/,g=/^[\x21-\x7E]+$/,l=n({algorithms:{default:["sha512"]},error:{default:!1},integrity:{},options:{default:[]},pickAlgorithm:{default:()=>B},Promise:{default:()=>Promise},sep:{default:" "},single:{default:!1},size:{},strict:{default:!1}});class u{get isHash(){return!0}constructor(e,t){const r=!!(t=l(t)).strict;this.source=e.trim();const A=this.source.match(r?c:a);if(!A)return;if(r&&!i.some(e=>e===A[1]))return;this.algorithm=A[1],this.digest=A[2];const n=A[3];this.options=n?n.slice(1).split("?"):[]}hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toString("hex")}toJSON(){return this.toString()}toString(e){if((e=l(e)).strict&&!(i.some(e=>e===this.algorithm)&&this.digest.match(s)&&(this.options||[]).every(e=>e.match(g))))return"";const t=this.options&&this.options.length?"?"+this.options.join("?"):"";return`${this.algorithm}-${this.digest}${t}`}}class h{get isIntegrity(){return!0}toJSON(){return this.toString()}toString(e){let t=(e=l(e)).sep||" ";return e.strict&&(t=t.replace(/\S+/g," ")),Object.keys(this).map(r=>this[r].map(t=>u.prototype.toString.call(t,e)).filter(e=>e.length).join(t)).filter(e=>e.length).join(t)}concat(e,t){t=l(t);const r="string"==typeof e?e:C(e,t);return p(`${this.toString(t)} ${r}`,t)}hexDigest(){return p(this,{single:!0}).hexDigest()}match(e,t){const r=p(e,t=l(t)),A=r.pickAlgorithm(t);return this[A]&&r[A]&&this[A].find(e=>r[A].find(t=>e.digest===t.digest))||!1}pickAlgorithm(e){const t=(e=l(e)).pickAlgorithm,r=Object.keys(this);if(!r.length)throw new Error("No algorithms available for "+JSON.stringify(this.toString()));return r.reduce((e,r)=>t(e,r)||e)}}function p(e,t){if(t=l(t),"string"==typeof e)return d(e,t);if(e.algorithm&&e.digest){const r=new h;return r[e.algorithm]=[e],d(C(r,t),t)}return d(C(e,t),t)}function d(e,t){return t.single?new u(e,t):e.trim().split(/\s+/).reduce((e,r)=>{const A=new u(r,t);if(A.algorithm&&A.digest){const t=A.algorithm;e[t]||(e[t]=[]),e[t].push(A)}return e},new h)}function C(e,t){return t=l(t),e.algorithm&&e.digest?u.prototype.toString.call(e,t):"string"==typeof e?C(p(e,t),t):h.prototype.toString.call(e,t)}function f(e){const t=(e=l(e)).integrity&&p(e.integrity,e),r=t&&Object.keys(t).length,n=r&&t.pickAlgorithm(e),i=r&&t[n],s=Array.from(new Set(e.algorithms.concat(n?[n]:[]))),a=s.map(A.createHash);let c=0;const g=new o({transform(e,t,r){c+=e.length,a.forEach(r=>r.update(e,t)),r(null,e,t)}}).on("end",()=>{const A=e.options&&e.options.length?"?"+e.options.join("?"):"",o=p(a.map((e,t)=>`${s[t]}-${e.digest("base64")}${A}`).join(" "),e),l=r&&o.match(t,e);if("number"==typeof e.size&&c!==e.size){const r=new Error(`stream size mismatch when checking ${t}.\n Wanted: ${e.size}\n Found: ${c}`);r.code="EBADSIZE",r.found=c,r.expected=e.size,r.sri=t,g.emit("error",r)}else if(e.integrity&&!l){const e=new Error(`${t} integrity checksum failed when using ${n}: wanted ${i} but got ${o}. (${c} bytes)`);e.code="EINTEGRITY",e.found=o,e.expected=i,e.algorithm=n,e.sri=t,g.emit("error",e)}else g.emit("size",c),g.emit("integrity",o),l&&g.emit("verified",l)});return g}e.exports.Sd=function(e,t){const r=(t=l(t)).algorithms,n=t.options&&t.options.length?"?"+t.options.join("?"):"";return r.reduce((r,o)=>{const i=A.createHash(o).update(e).digest("base64"),s=new u(`${o}-${i}${n}`,t);if(s.algorithm&&s.digest){const e=s.algorithm;r[e]||(r[e]=[]),r[e].push(s)}return r},new h)};const I=new Set(A.getHashes()),E=["md5","whirlpool","sha1","sha224","sha256","sha384","sha512","sha3","sha3-256","sha3-384","sha3-512","sha3_256","sha3_384","sha3_512"].filter(e=>I.has(e));function B(e,t){return E.indexOf(e.toLowerCase())>=E.indexOf(t.toLowerCase())?e:t}},69538:(e,t,r)=>{"use strict";var A=r(13499).Buffer,n=A.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(A.isEncoding===n||!n(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=a,this.end=c,t=4;break;case"utf8":this.fillLast=s,t=4;break;case"base64":this.text=g,this.end=l,t=3;break;default:return this.write=u,void(this.end=h)}this.lastNeed=0,this.lastTotal=0,this.lastChar=A.allocUnsafe(t)}function i(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var A=r.charCodeAt(r.length-1);if(A>=55296&&A<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function g(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function l(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function u(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.s=o,o.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return n>0&&(e.lastNeed=n-1),n;if(--A=0)return n>0&&(e.lastNeed=n-2),n;if(--A=0)return n>0&&(2===n?n=0:e.lastNeed=n-3),n;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var A=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,A),e.toString("utf8",t,A)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},59428:(e,t,r)=>{"use strict";const A=r(12087),n=r(33867),o=r(72918),{env:i}=process;let s;function a(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function c(e,t){if(0===s)return 0;if(o("color=16m")||o("color=full")||o("color=truecolor"))return 3;if(o("color=256"))return 2;if(e&&!t&&void 0===s)return 0;const r=s||0;if("dumb"===i.TERM)return r;if("win32"===process.platform){const e=A.release().split(".");return Number(e[0])>=10&&Number(e[2])>=10586?Number(e[2])>=14931?3:2:1}if("CI"in i)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some(e=>e in i)||"codeship"===i.CI_NAME?1:r;if("TEAMCITY_VERSION"in i)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(i.TEAMCITY_VERSION)?1:0;if("GITHUB_ACTIONS"in i)return 1;if("truecolor"===i.COLORTERM)return 3;if("TERM_PROGRAM"in i){const e=parseInt((i.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(i.TERM_PROGRAM){case"iTerm.app":return e>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(i.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(i.TERM)||"COLORTERM"in i?1:r}o("no-color")||o("no-colors")||o("color=false")||o("color=never")?s=0:(o("color")||o("colors")||o("color=true")||o("color=always"))&&(s=1),"FORCE_COLOR"in i&&(s="true"===i.FORCE_COLOR?1:"false"===i.FORCE_COLOR?0:0===i.FORCE_COLOR.length?1:Math.min(parseInt(i.FORCE_COLOR,10),3)),e.exports={supportsColor:function(e){return a(c(e,e&&e.isTTY))},stdout:a(c(!0,n.isatty(1))),stderr:a(c(!0,n.isatty(2)))}},93255:e=>{"use strict";function t(e){return Array.prototype.slice.apply(e)}function r(e){this.status="pending",this._continuations=[],this._parent=null,this._paused=!1,e&&e.call(this,this._continueWith.bind(this),this._failWith.bind(this))}function A(e){return e&&"function"==typeof e.then}function n(e){return e}if(r.prototype={then:function(e,t){var n=r.unresolved()._setParent(this);if(this._isRejected()){if(this._paused)return this._continuations.push({promise:n,nextFn:e,catchFn:t}),n;if(t)try{var o=t(this._error);return A(o)?(this._chainPromiseData(o,n),n):r.resolve(o)._setParent(this)}catch(e){return r.reject(e)._setParent(this)}return r.reject(this._error)._setParent(this)}return this._continuations.push({promise:n,nextFn:e,catchFn:t}),this._runResolutions(),n},catch:function(e){if(this._isResolved())return r.resolve(this._data)._setParent(this);var t=r.unresolved()._setParent(this);return this._continuations.push({promise:t,catchFn:e}),this._runRejections(),t},finally:function(e){var t=!1;function r(r,o){if(!t){t=!0,e||(e=n);var i=e(r);return A(i)?i.then((function(){if(o)throw o;return r})):r}}return this.then((function(e){return r(e)})).catch((function(e){return r(null,e)}))},pause:function(){return this._paused=!0,this},resume:function(){var e=this._findFirstPaused();return e&&(e._paused=!1,e._runResolutions(),e._runRejections()),this},_findAncestry:function(){return this._continuations.reduce((function(e,t){if(t.promise){var r={promise:t.promise,children:t.promise._findAncestry()};e.push(r)}return e}),[])},_setParent:function(e){if(this._parent)throw new Error("parent already set");return this._parent=e,this},_continueWith:function(e){var t=this._findFirstPending();t&&(t._data=e,t._setResolved())},_findFirstPending:function(){return this._findFirstAncestor((function(e){return e._isPending&&e._isPending()}))},_findFirstPaused:function(){return this._findFirstAncestor((function(e){return e._paused}))},_findFirstAncestor:function(e){for(var t,r=this;r;)e(r)&&(t=r),r=r._parent;return t},_failWith:function(e){var t=this._findFirstPending();t&&(t._error=e,t._setRejected())},_takeContinuations:function(){return this._continuations.splice(0,this._continuations.length)},_runRejections:function(){if(!this._paused&&this._isRejected()){var e=this._error,t=this._takeContinuations(),r=this;t.forEach((function(t){if(t.catchFn)try{var A=t.catchFn(e);r._handleUserFunctionResult(A,t.promise)}catch(e){t.promise.reject(e)}else t.promise.reject(e)}))}},_runResolutions:function(){if(!this._paused&&this._isResolved()&&!this._isPending()){var e=this._takeContinuations();if(A(this._data))return this._handleWhenResolvedDataIsPromise(this._data);var t=this._data,r=this;e.forEach((function(e){if(e.nextFn)try{var A=e.nextFn(t);r._handleUserFunctionResult(A,e.promise)}catch(t){r._handleResolutionError(t,e)}else e.promise&&e.promise.resolve(t)}))}},_handleResolutionError:function(e,t){if(this._setRejected(),t.catchFn)try{return void t.catchFn(e)}catch(t){e=t}t.promise&&t.promise.reject(e)},_handleWhenResolvedDataIsPromise:function(e){var t=this;return e.then((function(e){t._data=e,t._runResolutions()})).catch((function(e){t._error=e,t._setRejected(),t._runRejections()}))},_handleUserFunctionResult:function(e,t){A(e)?this._chainPromiseData(e,t):t.resolve(e)},_chainPromiseData:function(e,t){e.then((function(e){t.resolve(e)})).catch((function(e){t.reject(e)}))},_setResolved:function(){this.status="resolved",this._paused||this._runResolutions()},_setRejected:function(){this.status="rejected",this._paused||this._runRejections()},_isPending:function(){return"pending"===this.status},_isResolved:function(){return"resolved"===this.status},_isRejected:function(){return"rejected"===this.status}},r.resolve=function(e){return new r((function(t,r){A(e)?e.then((function(e){t(e)})).catch((function(e){r(e)})):t(e)}))},r.reject=function(e){return new r((function(t,r){r(e)}))},r.unresolved=function(){return new r((function(e,t){this.resolve=e,this.reject=t}))},r.all=function(){var e=t(arguments);return Array.isArray(e[0])&&(e=e[0]),e.length?new r((function(t,A){var n=[],o=0,i=!1;e.forEach((function(s,a){r.resolve(s).then((function(r){n[a]=r,(o+=1)===e.length&&t(n)})).catch((function(e){!function(e){i||(i=!0,A(e))}(e)}))}))})):r.resolve([])},Promise===r)throw new Error("Please use SynchronousPromise.installGlobally() to install globally");var o=Promise;r.installGlobally=function(e){if(Promise===r)return e;var A=function(e){if(void 0===e||e.__patched)return e;var r=e;return(e=function(){r.apply(this,t(arguments))}).__patched=!0,e}(e);return Promise=r,A},r.uninstallGlobally=function(){Promise===r&&(Promise=o)},e.exports={SynchronousPromise:r}},75799:(e,t,r)=>{var A=r(31669),n=r(73975),o=r(77686),i=r(86897).Writable,s=r(86897).PassThrough,a=function(){},c=function(e){return(e&=511)&&512-e},g=function(e,t){this._parent=e,this.offset=t,s.call(this)};A.inherits(g,s),g.prototype.destroy=function(e){this._parent.destroy(e)};var l=function(e){if(!(this instanceof l))return new l(e);i.call(this,e),e=e||{},this._offset=0,this._buffer=n(),this._missing=0,this._partial=!1,this._onparse=a,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var t=this,r=t._buffer,A=function(){t._continue()},s=function(e){if(t._locked=!1,e)return t.destroy(e);t._stream||A()},u=function(){t._stream=null;var e=c(t._header.size);e?t._parse(e,h):t._parse(512,I),t._locked||A()},h=function(){t._buffer.consume(c(t._header.size)),t._parse(512,I),A()},p=function(){var e=t._header.size;t._paxGlobal=o.decodePax(r.slice(0,e)),r.consume(e),u()},d=function(){var e=t._header.size;t._pax=o.decodePax(r.slice(0,e)),t._paxGlobal&&(t._pax=Object.assign({},t._paxGlobal,t._pax)),r.consume(e),u()},C=function(){var A=t._header.size;this._gnuLongPath=o.decodeLongPath(r.slice(0,A),e.filenameEncoding),r.consume(A),u()},f=function(){var A=t._header.size;this._gnuLongLinkPath=o.decodeLongPath(r.slice(0,A),e.filenameEncoding),r.consume(A),u()},I=function(){var n,i=t._offset;try{n=t._header=o.decode(r.slice(0,512),e.filenameEncoding)}catch(e){t.emit("error",e)}return r.consume(512),n?"gnu-long-path"===n.type?(t._parse(n.size,C),void A()):"gnu-long-link-path"===n.type?(t._parse(n.size,f),void A()):"pax-global-header"===n.type?(t._parse(n.size,p),void A()):"pax-header"===n.type?(t._parse(n.size,d),void A()):(t._gnuLongPath&&(n.name=t._gnuLongPath,t._gnuLongPath=null),t._gnuLongLinkPath&&(n.linkname=t._gnuLongLinkPath,t._gnuLongLinkPath=null),t._pax&&(t._header=n=function(e,t){return t.path&&(e.name=t.path),t.linkpath&&(e.linkname=t.linkpath),t.size&&(e.size=parseInt(t.size,10)),e.pax=t,e}(n,t._pax),t._pax=null),t._locked=!0,n.size&&"directory"!==n.type?(t._stream=new g(t,i),t.emit("entry",n,t._stream,s),t._parse(n.size,u),void A()):(t._parse(512,I),void t.emit("entry",n,function(e,t){var r=new g(e,t);return r.end(),r}(t,i),s))):(t._parse(512,I),void A())};this._onheader=I,this._parse(512,I)};A.inherits(l,i),l.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.emit("close"))},l.prototype._parse=function(e,t){this._destroyed||(this._offset+=e,this._missing=e,t===this._onheader&&(this._partial=!1),this._onparse=t)},l.prototype._continue=function(){if(!this._destroyed){var e=this._cb;this._cb=a,this._overflow?this._write(this._overflow,void 0,e):e()}},l.prototype._write=function(e,t,r){if(!this._destroyed){var A=this._stream,n=this._buffer,o=this._missing;if(e.length&&(this._partial=!0),e.lengtho&&(i=e.slice(o),e=e.slice(0,o)),A?A.end(e):n.append(e),this._overflow=i,this._onparse()}},l.prototype._final=function(e){if(this._partial)return this.destroy(new Error("Unexpected end of data"));e()},e.exports=l},77686:(e,t)=>{var r=Buffer.alloc,A="0".charCodeAt(0),n=parseInt("7777",8),o=function(e,t,r,A){for(;rt?"7777777777777777777".slice(0,t)+" ":"0000000000000000000".slice(0,t-e.length)+e+" "};var a=function(e,t,r){if(128&(e=e.slice(t,t+r))[t=0])return function(e){var t;if(128===e[0])t=!0;else{if(255!==e[0])return null;t=!1}for(var r=!1,A=[],n=e.length-1;n>0;n--){var o=e[n];t?A.push(o):r&&0===o?A.push(0):r?(r=!1,A.push(256-o)):A.push(255-o)}var i=0,s=A.length;for(n=0;n=i?i:n>=0||(n+=i)>=0?n:0);t=Math.pow(10,r)&&r++,t+r+e};t.decodeLongPath=function(e,t){return c(e,0,e.length,t)},t.encodePax=function(e){var t="";e.name&&(t+=g(" path="+e.name+"\n")),e.linkname&&(t+=g(" linkpath="+e.linkname+"\n"));var r=e.pax;if(r)for(var A in r)t+=g(" "+A+"="+r[A]+"\n");return Buffer.from(t)},t.decodePax=function(e){for(var t={};e.length;){for(var r=0;r100;){var c=o.indexOf("/");if(-1===c)return null;a+=a?"/"+o.slice(0,c):o.slice(0,c),o=o.slice(c+1)}return Buffer.byteLength(o)>100||Buffer.byteLength(a)>155||e.linkname&&Buffer.byteLength(e.linkname)>100?null:(t.write(o),t.write(s(e.mode&n,6),100),t.write(s(e.uid,6),108),t.write(s(e.gid,6),116),t.write(s(e.size,11),124),t.write(s(e.mtime.getTime()/1e3|0,11),136),t[156]=A+function(e){switch(e){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}(e.type),e.linkname&&t.write(e.linkname,157),t.write("ustar\x0000",257),e.uname&&t.write(e.uname,265),e.gname&&t.write(e.gname,297),t.write(s(e.devmajor||0,6),329),t.write(s(e.devminor||0,6),337),a&&t.write(a,345),t.write(s(i(t),6),148),t)},t.decode=function(e,t){var r=0===e[156]?0:e[156]-A,n=c(e,0,100,t),o=a(e,100,8),s=a(e,108,8),g=a(e,116,8),l=a(e,124,12),u=a(e,136,12),h=function(e){switch(e){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}(r),p=0===e[157]?null:c(e,157,100,t),d=c(e,265,32),C=c(e,297,32),f=a(e,329,8),I=a(e,337,8);e[345]&&(n=c(e,345,155,t)+"/"+n),0===r&&n&&"/"===n[n.length-1]&&(r=5);var E=i(e);if(256===E)return null;if(E!==a(e,148,8))throw new Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");return{name:n,mode:o,uid:s,gid:g,size:l,mtime:new Date(1e3*u),type:h,linkname:p,uname:d,gname:C,devmajor:f,devminor:I}}},59938:(e,t,r)=>{t.extract=r(75799),t.pack=r(72203)},72203:(e,t,r)=>{var A=r(13302),n=r(17067),o=r(85870),i=Buffer.alloc,s=r(86897).Readable,a=r(86897).Writable,c=r(24304).StringDecoder,g=r(77686),l=parseInt("755",8),u=parseInt("644",8),h=i(1024),p=function(){},d=function(e,t){(t&=511)&&e.push(h.slice(0,512-t))};var C=function(e){a.call(this),this.written=0,this._to=e,this._destroyed=!1};o(C,a),C.prototype._write=function(e,t,r){if(this.written+=e.length,this._to.push(e))return r();this._to._drain=r},C.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var f=function(){a.call(this),this.linkname="",this._decoder=new c("utf-8"),this._destroyed=!1};o(f,a),f.prototype._write=function(e,t,r){this.linkname+=this._decoder.write(e),r()},f.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var I=function(){a.call(this),this._destroyed=!1};o(I,a),I.prototype._write=function(e,t,r){r(new Error("No body allowed for this entry"))},I.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit("close"))};var E=function(e){if(!(this instanceof E))return new E(e);s.call(this,e),this._drain=p,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};o(E,s),E.prototype.entry=function(e,t,r){if(this._stream)throw new Error("already piping an entry");if(!this._finalized&&!this._destroyed){"function"==typeof t&&(r=t,t=null),r||(r=p);var o=this;if(e.size&&"symlink"!==e.type||(e.size=0),e.type||(e.type=function(e){switch(e&A.S_IFMT){case A.S_IFBLK:return"block-device";case A.S_IFCHR:return"character-device";case A.S_IFDIR:return"directory";case A.S_IFIFO:return"fifo";case A.S_IFLNK:return"symlink"}return"file"}(e.mode)),e.mode||(e.mode="directory"===e.type?l:u),e.uid||(e.uid=0),e.gid||(e.gid=0),e.mtime||(e.mtime=new Date),"string"==typeof t&&(t=Buffer.from(t)),Buffer.isBuffer(t))return e.size=t.length,this._encode(e),this.push(t),d(o,e.size),process.nextTick(r),new I;if("symlink"===e.type&&!e.linkname){var i=new f;return n(i,(function(t){if(t)return o.destroy(),r(t);e.linkname=i.linkname,o._encode(e),r()})),i}if(this._encode(e),"file"!==e.type&&"contiguous-file"!==e.type)return process.nextTick(r),new I;var s=new C(this);return this._stream=s,n(s,(function(t){return o._stream=null,t?(o.destroy(),r(t)):s.written!==e.size?(o.destroy(),r(new Error("size mismatch"))):(d(o,e.size),o._finalizing&&o.finalize(),void r())})),s}},E.prototype.finalize=function(){this._stream?this._finalizing=!0:this._finalized||(this._finalized=!0,this.push(h),this.push(null))},E.prototype.destroy=function(e){this._destroyed||(this._destroyed=!0,e&&this.emit("error",e),this.emit("close"),this._stream&&this._stream.destroy&&this._stream.destroy())},E.prototype._encode=function(e){if(!e.pax){var t=g.encode(e);if(t)return void this.push(t)}this._encodePax(e)},E.prototype._encodePax=function(e){var t=g.encodePax({name:e.name,linkname:e.linkname,pax:e.pax}),r={name:"PaxHeader",mode:e.mode,uid:e.uid,gid:e.gid,size:t.length,mtime:e.mtime,type:"pax-header",linkname:e.linkname&&"PaxHeader",uname:e.uname,gname:e.gname,devmajor:e.devmajor,devminor:e.devminor};this.push(g.encode(r)),this.push(t),d(this,t.length),r.size=e.size,r.type=e.type,this.push(g.encode(r))},E.prototype._read=function(e){var t=this._drain;this._drain=p,t()},e.exports=E},84615:(e,t,r)=>{"use strict"; +/*! + * to-regex-range + * + * Copyright (c) 2015-present, Jon Schlinkert. + * Released under the MIT License. + */const A=r(59235),n=(e,t,r)=>{if(!1===A(e))throw new TypeError("toRegexRange: expected the first argument to be a number");if(void 0===t||e===t)return String(e);if(!1===A(t))throw new TypeError("toRegexRange: expected the second argument to be a number.");let o={relaxZeros:!0,...r};"boolean"==typeof o.strictZeros&&(o.relaxZeros=!1===o.strictZeros);let a=e+":"+t+"="+String(o.relaxZeros)+String(o.shorthand)+String(o.capture)+String(o.wrap);if(n.cache.hasOwnProperty(a))return n.cache[a].result;let c=Math.min(e,t),g=Math.max(e,t);if(1===Math.abs(c-g)){let r=e+"|"+t;return o.capture?`(${r})`:!1===o.wrap?r:`(?:${r})`}let l=p(e)||p(t),u={min:e,max:t,a:c,b:g},h=[],d=[];if(l&&(u.isPadded=l,u.maxLen=String(u.max).length),c<0){d=i(g<0?Math.abs(g):1,Math.abs(c),u,o),c=u.a=0}return g>=0&&(h=i(c,g,u,o)),u.negatives=d,u.positives=h,u.result=function(e,t,r){let A=s(e,t,"-",!1,r)||[],n=s(t,e,"",!1,r)||[],o=s(e,t,"-?",!0,r)||[];return A.concat(o).concat(n).join("|")}(d,h,o),!0===o.capture?u.result=`(${u.result})`:!1!==o.wrap&&h.length+d.length>1&&(u.result=`(?:${u.result})`),n.cache[a]=u,u.result};function o(e,t,r){if(e===t)return{pattern:e,count:[],digits:0};let A=function(e,t){let r=[];for(let A=0;A1&&n.count.pop(),n.count.push(a.count[0]),n.string=n.pattern+u(n.count),c=t+1)}return s}function s(e,t,r,A,n){let o=[];for(let n of e){let{string:e}=n;A||c(t,"string",e)||o.push(r+e),A&&c(t,"string",e)&&o.push(r+e)}return o}function a(e,t){return e>t?1:t>e?-1:0}function c(e,t,r){return e.some(e=>e[t]===r)}function g(e,t){return Number(String(e).slice(0,-t)+"9".repeat(t))}function l(e,t){return e-e%Math.pow(10,t)}function u(e){let[t=0,r=""]=e;return r||t>1?`{${t+(r?","+r:"")}}`:""}function h(e,t,r){return`[${e}${t-e==1?"":"-"}${t}]`}function p(e){return/^-?(0+)\d/.test(e)}function d(e,t,r){if(!t.isPadded)return e;let A=Math.abs(t.maxLen-String(e).length),n=!1!==r.relaxZeros;switch(A){case 0:return"";case 1:return n?"0?":"0";case 2:return n?"0{0,2}":"00";default:return n?`0{0,${A}}`:`0{${A}}`}}n.cache={},n.clearCache=()=>n.cache={},e.exports=n},75158:e=>{function t(e,t){var r=e.length,A=new Array(r),n={},o=r,i=function(e){for(var t=new Map,r=0,A=e.length;r0&&(n.forEach((function(e,t){t>0&&(g+=(e[1]?" ":"│")+" "),c||e[0]!==r||(c=!0)})),g+=function(e,t){var r=t?"└":"├";return r+=e?"─ ":"──┐"}(t,A)+t,o&&("object"!=typeof r||r instanceof Date)&&(g+=": "+r),c&&(g+=" (circular ref.)"),s(g)),!c&&"object"==typeof r){var h=function(e,t){var r=[];for(var A in e)e.hasOwnProperty(A)&&(t&&"function"==typeof e[A]||r.push(A));return r}(r,i);h.forEach((function(t){a=++l===h.length,e(t,r[t],a,u,o,i,s)}))}}var t={asLines:function(t,r,A,n){e(".",t,!1,[],r,"function"!=typeof A&&A,n||A)},asTree:function(t,r,A){var n="";return e(".",t,!1,[],r,A,(function(e){n+=e+"\n"})),n}};return t}()},36370:(e,t,r)=>{"use strict";r.d(t,{gn:()=>A});function A(e,t,r,A){var n,o=arguments.length,i=o<3?t:null===A?A=Object.getOwnPropertyDescriptor(t,r):A;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,r,A);else for(var s=e.length-1;s>=0;s--)(n=e[s])&&(i=(o<3?n(i):o>3?n(t,r,i):n(t,r))||i);return o>3&&i&&Object.defineProperty(t,r,i),i}},98161:(e,t,r)=>{e.exports=r(69876)},69876:(e,t,r)=>{"use strict";r(11631);var A,n=r(4016),o=r(98605),i=r(57211),s=r(28614),a=(r(42357),r(31669));function c(e){var t=this;t.options=e||{},t.proxyOptions=t.options.proxy||{},t.maxSockets=t.options.maxSockets||o.Agent.defaultMaxSockets,t.requests=[],t.sockets=[],t.on("free",(function(e,r,A,n){for(var o=l(r,A,n),i=0,s=t.requests.length;i=this.maxSockets?n.requests.push(o):n.createSocket(o,(function(t){function r(){n.emit("free",t,o)}function A(e){n.removeSocket(t),t.removeListener("free",r),t.removeListener("close",A),t.removeListener("agentRemove",A)}t.on("free",r),t.on("close",A),t.on("agentRemove",A),e.onSocket(t)}))},c.prototype.createSocket=function(e,t){var r=this,n={};r.sockets.push(n);var o=u({},r.proxyOptions,{method:"CONNECT",path:e.host+":"+e.port,agent:!1,headers:{host:e.host+":"+e.port}});e.localAddress&&(o.localAddress=e.localAddress),o.proxyAuth&&(o.headers=o.headers||{},o.headers["Proxy-Authorization"]="Basic "+new Buffer(o.proxyAuth).toString("base64")),A("making CONNECT request");var i=r.request(o);function s(o,s,a){var c;return i.removeAllListeners(),s.removeAllListeners(),200!==o.statusCode?(A("tunneling socket could not be established, statusCode=%d",o.statusCode),s.destroy(),(c=new Error("tunneling socket could not be established, statusCode="+o.statusCode)).code="ECONNRESET",e.request.emit("error",c),void r.removeSocket(n)):a.length>0?(A("got illegal response body from proxy"),s.destroy(),(c=new Error("got illegal response body from proxy")).code="ECONNRESET",e.request.emit("error",c),void r.removeSocket(n)):(A("tunneling connection has established"),r.sockets[r.sockets.indexOf(n)]=s,t(s))}i.useChunkedEncodingByDefault=!1,i.once("response",(function(e){e.upgrade=!0})),i.once("upgrade",(function(e,t,r){process.nextTick((function(){s(e,t,r)}))})),i.once("connect",s),i.once("error",(function(t){i.removeAllListeners(),A("tunneling socket could not be established, cause=%s\n",t.message,t.stack);var o=new Error("tunneling socket could not be established, cause="+t.message);o.code="ECONNRESET",e.request.emit("error",o),r.removeSocket(n)})),i.end()},c.prototype.removeSocket=function(e){var t=this.sockets.indexOf(e);if(-1!==t){this.sockets.splice(t,1);var r=this.requests.shift();r&&this.createSocket(r,(function(e){r.request.onSocket(e)}))}},A=process.env.NODE_DEBUG&&/\btunnel\b/.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments);"string"==typeof e[0]?e[0]="TUNNEL: "+e[0]:e.unshift("TUNNEL:"),console.error.apply(console,e)}:function(){}},73212:(e,t,r)=>{e.exports=r(31669).deprecate},87945:(e,t,r)=>{const A="win32"===process.platform||"cygwin"===process.env.OSTYPE||"msys"===process.env.OSTYPE,n=r(85622),o=A?";":":",i=r(64151),s=e=>Object.assign(new Error("not found: "+e),{code:"ENOENT"}),a=(e,t)=>{const r=t.colon||o,n=e.match(/\//)||A&&e.match(/\\/)?[""]:[...A?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],i=A?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",s=A?i.split(r):[""];return A&&-1!==e.indexOf(".")&&""!==s[0]&&s.unshift(""),{pathEnv:n,pathExt:s,pathExtExe:i}},c=(e,t,r)=>{"function"==typeof t&&(r=t,t={}),t||(t={});const{pathEnv:A,pathExt:o,pathExtExe:c}=a(e,t),g=[],l=r=>new Promise((o,i)=>{if(r===A.length)return t.all&&g.length?o(g):i(s(e));const a=A[r],c=/^".*"$/.test(a)?a.slice(1,-1):a,l=n.join(c,e),h=!c&&/^\.[\\\/]/.test(e)?e.slice(0,2)+l:l;o(u(h,r,0))}),u=(e,r,A)=>new Promise((n,s)=>{if(A===o.length)return n(l(r+1));const a=o[A];i(e+a,{pathExt:c},(o,i)=>{if(!o&&i){if(!t.all)return n(e+a);g.push(e+a)}return n(u(e,r,A+1))})});return r?l(0).then(e=>r(null,e),r):l(0)};e.exports=c,c.sync=(e,t)=>{t=t||{};const{pathEnv:r,pathExt:A,pathExtExe:o}=a(e,t),c=[];for(let s=0;s{e.exports=function e(t,r){if(t&&r)return e(t)(r);if("function"!=typeof t)throw new TypeError("need wrapper function");return Object.keys(t).forEach((function(e){A[e]=t[e]})),A;function A(){for(var e=new Array(arguments.length),r=0;r{"use strict";var A=r(60087);t.__esModule=!0,t.default=void 0;var n=A(r(15215)),o=A(r(11050)),i=function(){function e(e,t){if(this.refs=e,"function"!=typeof t){if(!(0,n.default)(t,"is"))throw new TypeError("`is:` is required for `when()` conditions");if(!t.then&&!t.otherwise)throw new TypeError("either `then:` or `otherwise:` is required for `when()` conditions");var r=t.is,A=t.then,o=t.otherwise,i="function"==typeof r?r:function(){for(var e=arguments.length,t=new Array(e),A=0;A{"use strict";var A=r(60087);t.__esModule=!0,t.default=void 0;var n=A(r(11050)),o=function(){function e(e){this._resolve=function(t,r){var A=e(t,r);if(!(0,n.default)(A))throw new TypeError("lazy() functions must return a valid schema");return A.resolve(r)}}var t=e.prototype;return t.resolve=function(e){return this._resolve(e.value,e)},t.cast=function(e,t){return this._resolve(e,t).cast(e,t)},t.validate=function(e,t){return this._resolve(e,t).validate(e,t)},t.validateSync=function(e,t){return this._resolve(e,t).validateSync(e,t)},t.validateAt=function(e,t,r){return this._resolve(t,r).validateAt(e,t,r)},t.validateSyncAt=function(e,t,r){return this._resolve(t,r).validateSyncAt(e,t,r)},e}();o.prototype.__isYupSchema__=!0;var i=o;t.default=i,e.exports=t.default},95814:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=void 0;var n=A(r(72912)),o=r(79588),i="$",s=".",a=function(){function e(e,t){if(void 0===t&&(t={}),"string"!=typeof e)throw new TypeError("ref must be a string, got: "+e);if(this.key=e.trim(),""===e)throw new TypeError("ref must be a non-empty string");this.isContext=this.key[0]===i,this.isValue=this.key[0]===s,this.isSibling=!this.isContext&&!this.isValue;var r=this.isContext?i:this.isValue?s:"";this.path=this.key.slice(r.length),this.getter=this.path&&(0,o.getter)(this.path,!0),this.map=t.map}var t=e.prototype;return t.getValue=function(e){var t=this.isContext?e.context:this.isValue?e.value:e.parent;return this.getter&&(t=this.getter(t||{})),this.map&&(t=this.map(t)),t},t.cast=function(e,t){return this.getValue((0,n.default)({},t,{value:e}))},t.resolve=function(){return this},t.describe=function(){return{type:"ref",key:this.key}},t.toString=function(){return"Ref("+this.key+")"},e.isRef=function(e){return e&&e.__isYupRef},e}();t.default=a,a.prototype.__isYupRef=!0,e.exports=t.default},40828:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=s;var n=A(r(21043)),o=/\$\{\s*(\w+)\s*\}/g,i=function(e){return function(t){return e.replace(o,(function(e,r){return(0,n.default)(t[r])}))}};function s(e,t,r,A){var n=this;this.name="ValidationError",this.value=t,this.path=r,this.type=A,this.errors=[],this.inner=[],e&&[].concat(e).forEach((function(e){n.errors=n.errors.concat(e.errors||e),e.inner&&(n.inner=n.inner.concat(e.inner.length?e.inner:e))})),this.message=this.errors.length>1?this.errors.length+" errors occurred":this.errors[0],Error.captureStackTrace&&Error.captureStackTrace(this,s)}s.prototype=Object.create(Error.prototype),s.prototype.constructor=s,s.isError=function(e){return e&&"ValidationError"===e.name},s.formatError=function(e,t){"string"==typeof e&&(e=i(e));var r=function(t){return t.path=t.label||t.path||"this","function"==typeof e?e(t):e};return 1===arguments.length?r:r(t)},e.exports=t.default},18830:(e,t,r)=>{"use strict";var A=r(19228),n=r(60087);t.__esModule=!0,t.default=void 0;var o=n(r(72912)),i=n(r(62407)),s=n(r(31490)),a=n(r(71665)),c=n(r(11050)),g=n(r(7045)),l=n(r(21043)),u=n(r(16434)),h=r(63802),p=A(r(80180));function d(){var e=(0,i.default)(["","[","]"]);return d=function(){return e},e}var C=f;function f(e){var t=this;if(!(this instanceof f))return new f(e);u.default.call(this,{type:"array"}),this._subType=void 0,this.withMutation((function(){t.transform((function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e=null}return this.isType(e)?e:null})),e&&t.of(e)}))}t.default=C,(0,s.default)(f,u.default,{_typeCheck:function(e){return Array.isArray(e)},_cast:function(e,t){var r=this,A=u.default.prototype._cast.call(this,e,t);if(!this._typeCheck(A)||!this._subType)return A;var n=!1,o=A.map((function(e){var A=r._subType.cast(e,t);return A!==e&&(n=!0),A}));return n?o:A},_validate:function(e,t){var r=this;void 0===t&&(t={});var A=[],n=t.sync,i=t.path,s=this._subType,a=this._option("abortEarly",t),c=this._option("recursive",t),l=null!=t.originalValue?t.originalValue:e;return u.default.prototype._validate.call(this,e,t).catch((0,p.propagateErrors)(a,A)).then((function(e){if(!c||!s||!r._typeCheck(e)){if(A.length)throw A[0];return e}l=l||e;var u=e.map((function(r,A){var n=(0,g.default)(d(),t.path,A),i=(0,o.default)({},t,{path:n,strict:!0,parent:e,originalValue:l[A]});return!s.validate||s.validate(r,i)}));return(0,p.default)({sync:n,path:i,value:e,errors:A,endEarly:a,validations:u})}))},_isPresent:function(e){return u.default.prototype._cast.call(this,e)&&e.length>0},of:function(e){var t=this.clone();if(!1!==e&&!(0,c.default)(e))throw new TypeError("`array.of()` sub-schema must be a valid yup schema, or `false` to negate a current sub-schema. not: "+(0,l.default)(e));return t._subType=e,t},min:function(e,t){return t=t||h.array.min,this.test({message:t,name:"min",exclusive:!0,params:{min:e},test:function(t){return(0,a.default)(t)||t.length>=this.resolve(e)}})},max:function(e,t){return t=t||h.array.max,this.test({message:t,name:"max",exclusive:!0,params:{max:e},test:function(t){return(0,a.default)(t)||t.length<=this.resolve(e)}})},ensure:function(){var e=this;return this.default((function(){return[]})).transform((function(t){return e.isType(t)?t:null===t?[]:[].concat(t)}))},compact:function(e){var t=e?function(t,r,A){return!e(t,r,A)}:function(e){return!!e};return this.transform((function(e){return null!=e?e.filter(t):e}))},describe:function(){var e=u.default.prototype.describe.call(this);return this._subType&&(e.innerType=this._subType.describe()),e}}),e.exports=t.default},76595:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=void 0;var n=A(r(31490)),o=A(r(16434)),i=s;function s(){var e=this;if(!(this instanceof s))return new s;o.default.call(this,{type:"boolean"}),this.withMutation((function(){e.transform((function(e){if(!this.isType(e)){if(/^(true|1)$/i.test(e))return!0;if(/^(false|0)$/i.test(e))return!1}return e}))}))}t.default=i,(0,n.default)(s,o.default,{_typeCheck:function(e){return e instanceof Boolean&&(e=e.valueOf()),"boolean"==typeof e}}),e.exports=t.default},41755:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=void 0;var n=A(r(16434)),o=A(r(31490)),i=A(r(76813)),s=r(63802),a=A(r(71665)),c=A(r(95814)),g=new Date(""),l=u;function u(){var e=this;if(!(this instanceof u))return new u;n.default.call(this,{type:"date"}),this.withMutation((function(){e.transform((function(e){return this.isType(e)?e:(e=(0,i.default)(e))?new Date(e):g}))}))}t.default=l,(0,o.default)(u,n.default,{_typeCheck:function(e){return t=e,"[object Date]"===Object.prototype.toString.call(t)&&!isNaN(e.getTime());var t},min:function(e,t){void 0===t&&(t=s.date.min);var r=e;if(!c.default.isRef(r)&&(r=this.cast(e),!this._typeCheck(r)))throw new TypeError("`min` must be a Date or a value that can be `cast()` to a Date");return this.test({message:t,name:"min",exclusive:!0,params:{min:e},test:function(e){return(0,a.default)(e)||e>=this.resolve(r)}})},max:function(e,t){void 0===t&&(t=s.date.max);var r=e;if(!c.default.isRef(r)&&(r=this.cast(e),!this._typeCheck(r)))throw new TypeError("`max` must be a Date or a value that can be `cast()` to a Date");return this.test({message:t,name:"max",exclusive:!0,params:{max:e},test:function(e){return(0,a.default)(e)||e<=this.resolve(r)}})}}),e.exports=t.default},15966:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.addMethod=function(e,t,r){if(!e||!(0,d.default)(e.prototype))throw new TypeError("You must provide a yup schema constructor function");if("string"!=typeof t)throw new TypeError("A Method name must be provided");if("function"!=typeof r)throw new TypeError("Method function must be provided");e.prototype[t]=r},t.lazy=t.ref=t.boolean=void 0;var n=A(r(16434));t.mixed=n.default;var o=A(r(76595));t.bool=o.default;var i=A(r(45167));t.string=i.default;var s=A(r(72068));t.number=s.default;var a=A(r(41755));t.date=a.default;var c=A(r(51727));t.object=c.default;var g=A(r(18830));t.array=g.default;var l=A(r(95814)),u=A(r(6856)),h=A(r(40828));t.ValidationError=h.default;var p=A(r(43910));t.reach=p.default;var d=A(r(11050));t.isSchema=d.default;var C=A(r(24280));t.setLocale=C.default;var f=o.default;t.boolean=f;t.ref=function(e,t){return new l.default(e,t)};t.lazy=function(e){return new u.default(e)}},63802:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=t.array=t.object=t.boolean=t.date=t.number=t.string=t.mixed=void 0;var n=A(r(21043)),o={default:"${path} is invalid",required:"${path} is a required field",oneOf:"${path} must be one of the following values: ${values}",notOneOf:"${path} must not be one of the following values: ${values}",notType:function(e){var t=e.path,r=e.type,A=e.value,o=e.originalValue,i=null!=o&&o!==A,s=t+" must be a `"+r+"` type, but the final value was: `"+(0,n.default)(A,!0)+"`"+(i?" (cast from the value `"+(0,n.default)(o,!0)+"`).":".");return null===A&&(s+='\n If "null" is intended as an empty value be sure to mark the schema as `.nullable()`'),s}};t.mixed=o;var i={length:"${path} must be exactly ${length} characters",min:"${path} must be at least ${min} characters",max:"${path} must be at most ${max} characters",matches:'${path} must match the following: "${regex}"',email:"${path} must be a valid email",url:"${path} must be a valid URL",trim:"${path} must be a trimmed string",lowercase:"${path} must be a lowercase string",uppercase:"${path} must be a upper case string"};t.string=i;var s={min:"${path} must be greater than or equal to ${min}",max:"${path} must be less than or equal to ${max}",lessThan:"${path} must be less than ${less}",moreThan:"${path} must be greater than ${more}",notEqual:"${path} must be not equal to ${notEqual}",positive:"${path} must be a positive number",negative:"${path} must be a negative number",integer:"${path} must be an integer"};t.number=s;var a={min:"${path} field must be later than ${min}",max:"${path} field must be at earlier than ${max}"};t.date=a;var c={};t.boolean=c;var g={noUnknown:"${path} field cannot have keys not specified in the object shape"};t.object=g;var l={min:"${path} field must have at least ${min} items",max:"${path} field must have less than or equal to ${max} items"};t.array=l;var u={mixed:o,string:i,number:s,date:a,object:g,array:l,boolean:c};t.default=u},16434:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=I;var n=A(r(72912)),o=A(r(15215)),i=A(r(26052)),s=A(r(78700)),a=r(63802),c=A(r(94916)),g=A(r(80180)),l=A(r(22808)),u=A(r(11050)),h=A(r(54107)),p=A(r(21043)),d=A(r(95814)),C=r(43910),f=function(){function e(){this.list=new Set,this.refs=new Map}var t=e.prototype;return t.toArray=function(){return(0,s.default)(this.list).concat((0,s.default)(this.refs.values()))},t.add=function(e){d.default.isRef(e)?this.refs.set(e.key,e):this.list.add(e)},t.delete=function(e){d.default.isRef(e)?this.refs.delete(e.key,e):this.list.delete(e)},t.has=function(e,t){if(this.list.has(e))return!0;for(var r,A=this.refs.values();!(r=A.next()).done;)if(t(r.value)===e)return!0;return!1},e}();function I(e){var t=this;if(void 0===e&&(e={}),!(this instanceof I))return new I;this._deps=[],this._conditions=[],this._options={abortEarly:!0,recursive:!0},this._exclusive=Object.create(null),this._whitelist=new f,this._blacklist=new f,this.tests=[],this.transforms=[],this.withMutation((function(){t.typeError(a.mixed.notType)})),(0,o.default)(e,"default")&&(this._defaultDefault=e.default),this._type=e.type||"mixed"}for(var E=I.prototype={__isYupSchema__:!0,constructor:I,clone:function(){var e=this;return this._mutate?this:(0,i.default)(this,(function(t){if((0,u.default)(t)&&t!==e)return t}))},label:function(e){var t=this.clone();return t._label=e,t},meta:function(e){if(0===arguments.length)return this._meta;var t=this.clone();return t._meta=(0,n.default)(t._meta||{},e),t},withMutation:function(e){var t=this._mutate;this._mutate=!0;var r=e(this);return this._mutate=t,r},concat:function(e){if(!e||e===this)return this;if(e._type!==this._type&&"mixed"!==this._type)throw new TypeError("You cannot `concat()` schema's of different types: "+this._type+" and "+e._type);var t=(0,l.default)(e.clone(),this);return(0,o.default)(e,"_default")&&(t._default=e._default),t.tests=this.tests,t._exclusive=this._exclusive,t.withMutation((function(t){e.tests.forEach((function(e){t.test(e.OPTIONS)}))})),t},isType:function(e){return!(!this._nullable||null!==e)||(!this._typeCheck||this._typeCheck(e))},resolve:function(e){var t=this;if(t._conditions.length){var r=t._conditions;(t=t.clone())._conditions=[],t=(t=r.reduce((function(t,r){return r.resolve(t,e)}),t)).resolve(e)}return t},cast:function(e,t){void 0===t&&(t={});var r=this.resolve((0,n.default)({},t,{value:e})),A=r._cast(e,t);if(void 0!==e&&!1!==t.assert&&!0!==r.isType(A)){var o=(0,p.default)(e),i=(0,p.default)(A);throw new TypeError("The value of "+(t.path||"field")+' could not be cast to a value that satisfies the schema type: "'+r._type+'". \n\nattempted value: '+o+" \n"+(i!==o?"result of cast: "+i:""))}return A},_cast:function(e){var t=this,r=void 0===e?e:this.transforms.reduce((function(r,A){return A.call(t,r,e)}),e);return void 0===r&&(0,o.default)(this,"_default")&&(r=this.default()),r},_validate:function(e,t){var r=this;void 0===t&&(t={});var A=e,o=null!=t.originalValue?t.originalValue:e,i=this._option("strict",t),s=this._option("abortEarly",t),a=t.sync,c=t.path,l=this._label;i||(A=this._cast(A,(0,n.default)({assert:!1},t)));var u={value:A,path:c,schema:this,options:t,label:l,originalValue:o,sync:a},h=[];return this._typeError&&h.push(this._typeError(u)),this._whitelistError&&h.push(this._whitelistError(u)),this._blacklistError&&h.push(this._blacklistError(u)),(0,g.default)({validations:h,endEarly:s,value:A,path:c,sync:a}).then((function(e){return(0,g.default)({path:c,sync:a,value:e,endEarly:s,validations:r.tests.map((function(e){return e(u)}))})}))},validate:function(e,t){return void 0===t&&(t={}),this.resolve((0,n.default)({},t,{value:e}))._validate(e,t)},validateSync:function(e,t){var r,A;if(void 0===t&&(t={}),this.resolve((0,n.default)({},t,{value:e}))._validate(e,(0,n.default)({},t,{sync:!0})).then((function(e){return r=e})).catch((function(e){return A=e})),A)throw A;return r},isValid:function(e,t){return this.validate(e,t).then((function(){return!0})).catch((function(e){if("ValidationError"===e.name)return!1;throw e}))},isValidSync:function(e,t){try{return this.validateSync(e,t),!0}catch(e){if("ValidationError"===e.name)return!1;throw e}},getDefault:function(e){return void 0===e&&(e={}),this.resolve(e).default()},default:function(e){if(0===arguments.length){var t=(0,o.default)(this,"_default")?this._default:this._defaultDefault;return"function"==typeof t?t.call(this):(0,i.default)(t)}var r=this.clone();return r._default=e,r},strict:function(e){void 0===e&&(e=!0);var t=this.clone();return t._options.strict=e,t},_isPresent:function(e){return null!=e},required:function(e){return void 0===e&&(e=a.mixed.required),this.test({message:e,name:"required",exclusive:!0,test:function(e){return this.schema._isPresent(e)}})},notRequired:function(){var e=this.clone();return e.tests=e.tests.filter((function(e){return"required"!==e.OPTIONS.name})),e},nullable:function(e){void 0===e&&(e=!0);var t=this.clone();return t._nullable=e,t},transform:function(e){var t=this.clone();return t.transforms.push(e),t},test:function(){var e;if(void 0===(e=1===arguments.length?"function"==typeof(arguments.length<=0?void 0:arguments[0])?{test:arguments.length<=0?void 0:arguments[0]}:arguments.length<=0?void 0:arguments[0]:2===arguments.length?{name:arguments.length<=0?void 0:arguments[0],test:arguments.length<=1?void 0:arguments[1]}:{name:arguments.length<=0?void 0:arguments[0],message:arguments.length<=1?void 0:arguments[1],test:arguments.length<=2?void 0:arguments[2]}).message&&(e.message=a.mixed.default),"function"!=typeof e.test)throw new TypeError("`test` is a required parameters");var t=this.clone(),r=(0,h.default)(e),A=e.exclusive||e.name&&!0===t._exclusive[e.name];if(e.exclusive&&!e.name)throw new TypeError("Exclusive tests must provide a unique `name` identifying the test");return t._exclusive[e.name]=!!e.exclusive,t.tests=t.tests.filter((function(t){if(t.OPTIONS.name===e.name){if(A)return!1;if(t.OPTIONS.test===r.OPTIONS.test)return!1}return!0})),t.tests.push(r),t},when:function(e,t){1===arguments.length&&(t=e,e=".");var r=this.clone(),A=[].concat(e).map((function(e){return new d.default(e)}));return A.forEach((function(e){e.isSibling&&r._deps.push(e.key)})),r._conditions.push(new c.default(A,t)),r},typeError:function(e){var t=this.clone();return t._typeError=(0,h.default)({message:e,name:"typeError",test:function(e){return!(void 0!==e&&!this.schema.isType(e))||this.createError({params:{type:this.schema._type}})}}),t},oneOf:function(e,t){void 0===t&&(t=a.mixed.oneOf);var r=this.clone();return e.forEach((function(e){r._whitelist.add(e),r._blacklist.delete(e)})),r._whitelistError=(0,h.default)({message:t,name:"oneOf",test:function(e){if(void 0===e)return!0;var t=this.schema._whitelist;return!!t.has(e,this.resolve)||this.createError({params:{values:t.toArray().join(", ")}})}}),r},notOneOf:function(e,t){void 0===t&&(t=a.mixed.notOneOf);var r=this.clone();return e.forEach((function(e){r._blacklist.add(e),r._whitelist.delete(e)})),r._blacklistError=(0,h.default)({message:t,name:"notOneOf",test:function(e){var t=this.schema._blacklist;return!t.has(e,this.resolve)||this.createError({params:{values:t.toArray().join(", ")}})}}),r},strip:function(e){void 0===e&&(e=!0);var t=this.clone();return t._strip=e,t},_option:function(e,t){return(0,o.default)(t,e)?t[e]:this._options[e]},describe:function(){var e=this.clone();return{type:e._type,meta:e._meta,label:e._label,tests:e.tests.map((function(e){return{name:e.OPTIONS.name,params:e.OPTIONS.params}})).filter((function(e,t,r){return r.findIndex((function(t){return t.name===e.name}))===t}))}}},B=["validate","validateSync"],y=function(){var e=B[m];E[e+"At"]=function(t,r,A){void 0===A&&(A={});var o=(0,C.getIn)(this,t,r,A.context),i=o.parent,s=o.parentPath;return o.schema[e](i&&i[s],(0,n.default)({},A,{parent:i,path:t}))}},m=0;m{"use strict";var A=r(60087);t.__esModule=!0,t.default=c;var n=A(r(31490)),o=A(r(16434)),i=r(63802),s=A(r(71665)),a=function(e){return(0,s.default)(e)||e===(0|e)};function c(){var e=this;if(!(this instanceof c))return new c;o.default.call(this,{type:"number"}),this.withMutation((function(){e.transform((function(e){var t=e;if("string"==typeof t){if(""===(t=t.replace(/\s/g,"")))return NaN;t=+t}return this.isType(t)?t:parseFloat(t)}))}))}(0,n.default)(c,o.default,{_typeCheck:function(e){return e instanceof Number&&(e=e.valueOf()),"number"==typeof e&&!function(e){return e!=+e}(e)},min:function(e,t){return void 0===t&&(t=i.number.min),this.test({message:t,name:"min",exclusive:!0,params:{min:e},test:function(t){return(0,s.default)(t)||t>=this.resolve(e)}})},max:function(e,t){return void 0===t&&(t=i.number.max),this.test({message:t,name:"max",exclusive:!0,params:{max:e},test:function(t){return(0,s.default)(t)||t<=this.resolve(e)}})},lessThan:function(e,t){return void 0===t&&(t=i.number.lessThan),this.test({message:t,name:"max",exclusive:!0,params:{less:e},test:function(t){return(0,s.default)(t)||tthis.resolve(e)}})},positive:function(e){return void 0===e&&(e=i.number.positive),this.moreThan(0,e)},negative:function(e){return void 0===e&&(e=i.number.negative),this.lessThan(0,e)},integer:function(e){return void 0===e&&(e=i.number.integer),this.test({name:"integer",message:e,test:a})},truncate:function(){return this.transform((function(e){return(0,s.default)(e)?e:0|e}))},round:function(e){var t=["ceil","floor","round","trunc"];if("trunc"===(e=e&&e.toLowerCase()||"round"))return this.truncate();if(-1===t.indexOf(e.toLowerCase()))throw new TypeError("Only valid options for round() are: "+t.join(", "));return this.transform((function(t){return(0,s.default)(t)?t:Math[e](t)}))}}),e.exports=t.default},51727:(e,t,r)=>{"use strict";var A=r(19228),n=r(60087);t.__esModule=!0,t.default=w;var o=n(r(62407)),i=n(r(72912)),s=n(r(15215)),a=n(r(36494)),c=n(r(89170)),g=n(r(5253)),l=n(r(89612)),u=r(79588),h=n(r(16434)),p=r(63802),d=n(r(18417)),C=n(r(23316)),f=n(r(31490)),I=n(r(7045)),E=A(r(80180));function B(){var e=(0,o.default)(["",".",""]);return B=function(){return e},e}function y(){var e=(0,o.default)(["",".",""]);return y=function(){return e},e}var m=function(e){return"[object Object]"===Object.prototype.toString.call(e)};function w(e){var t=this;if(!(this instanceof w))return new w(e);h.default.call(this,{type:"object",default:function(){var e=this;if(this._nodes.length){var t={};return this._nodes.forEach((function(r){t[r]=e.fields[r].default?e.fields[r].default():void 0})),t}}}),this.fields=Object.create(null),this._nodes=[],this._excludedEdges=[],this.withMutation((function(){t.transform((function(e){if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e=null}return this.isType(e)?e:null})),e&&t.shape(e)}))}(0,f.default)(w,h.default,{_typeCheck:function(e){return m(e)||"function"==typeof e},_cast:function(e,t){var r=this;void 0===t&&(t={});var A=h.default.prototype._cast.call(this,e,t);if(void 0===A)return this.default();if(!this._typeCheck(A))return A;var n=this.fields,o=!0===this._option("stripUnknown",t),a=this._nodes.concat(Object.keys(A).filter((function(e){return-1===r._nodes.indexOf(e)}))),c={},g=(0,i.default)({},t,{parent:c,__validating:!1}),l=!1;return a.forEach((function(e){var r=n[e],i=(0,s.default)(A,e);if(r){var a,u=r._options&&r._options.strict;if(g.path=(0,I.default)(y(),t.path,e),g.value=A[e],!0===(r=r.resolve(g))._strip)return void(l=l||e in A);void 0!==(a=t.__validating&&u?A[e]:r.cast(A[e],g))&&(c[e]=a)}else i&&!o&&(c[e]=A[e]);c[e]!==A[e]&&(l=!0)})),l?c:A},_validate:function(e,t){var r,A,n=this;void 0===t&&(t={});var o=t.sync,s=[],a=null!=t.originalValue?t.originalValue:e;return r=this._option("abortEarly",t),A=this._option("recursive",t),t=(0,i.default)({},t,{__validating:!0,originalValue:a}),h.default.prototype._validate.call(this,e,t).catch((0,E.propagateErrors)(r,s)).then((function(e){if(!A||!m(e)){if(s.length)throw s[0];return e}a=a||e;var c=n._nodes.map((function(r){var A=(0,I.default)(B(),t.path,r),o=n.fields[r],s=(0,i.default)({},t,{path:A,parent:e,originalValue:a[r]});return o&&o.validate?(s.strict=!0,o.validate(e[r],s)):Promise.resolve(!0)}));return(0,E.default)({sync:o,validations:c,value:e,errors:s,endEarly:r,path:t.path,sort:(0,C.default)(n.fields)})}))},concat:function(e){var t=h.default.prototype.concat.call(this,e);return t._nodes=(0,d.default)(t.fields,t._excludedEdges),t},shape:function(e,t){void 0===t&&(t=[]);var r=this.clone(),A=(0,i.default)(r.fields,e);if(r.fields=A,t.length){Array.isArray(t[0])||(t=[t]);var n=t.map((function(e){return e[0]+"-"+e[1]}));r._excludedEdges=r._excludedEdges.concat(n)}return r._nodes=(0,d.default)(A,r._excludedEdges),r},from:function(e,t,r){var A=(0,u.getter)(e,!0);return this.transform((function(n){if(null==n)return n;var o=n;return(0,s.default)(n,e)&&(o=(0,i.default)({},n),r||delete o[e],o[t]=A(n)),o}))},noUnknown:function(e,t){void 0===e&&(e=!0),void 0===t&&(t=p.object.noUnknown),"string"==typeof e&&(t=e,e=!0);var r=this.test({name:"noUnknown",exclusive:!0,message:t,test:function(t){return null==t||!e||0===function(e,t){var r=Object.keys(e.fields);return Object.keys(t).filter((function(e){return-1===r.indexOf(e)}))}(this.schema,t).length}});return r._options.stripUnknown=e,r},unknown:function(e,t){return void 0===e&&(e=!0),void 0===t&&(t=p.object.noUnknown),this.noUnknown(!e,t)},transformKeys:function(e){return this.transform((function(t){return t&&(0,g.default)(t,(function(t,r){return e(r)}))}))},camelCase:function(){return this.transformKeys(c.default)},snakeCase:function(){return this.transformKeys(a.default)},constantCase:function(){return this.transformKeys((function(e){return(0,a.default)(e).toUpperCase()}))},describe:function(){var e=h.default.prototype.describe.call(this);return e.fields=(0,l.default)(this.fields,(function(e){return e.describe()})),e}}),e.exports=t.default},24280:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=function(e){Object.keys(e).forEach((function(t){Object.keys(e[t]).forEach((function(r){n.default[t][r]=e[t][r]}))}))};var n=A(r(63802));e.exports=t.default},45167:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=l;var n=A(r(31490)),o=A(r(16434)),i=r(63802),s=A(r(71665)),a=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i,c=/^((https?|ftp):)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,g=function(e){return(0,s.default)(e)||e===e.trim()};function l(){var e=this;if(!(this instanceof l))return new l;o.default.call(this,{type:"string"}),this.withMutation((function(){e.transform((function(e){return this.isType(e)?e:null!=e&&e.toString?e.toString():e}))}))}(0,n.default)(l,o.default,{_typeCheck:function(e){return e instanceof String&&(e=e.valueOf()),"string"==typeof e},_isPresent:function(e){return o.default.prototype._cast.call(this,e)&&e.length>0},length:function(e,t){return void 0===t&&(t=i.string.length),this.test({message:t,name:"length",exclusive:!0,params:{length:e},test:function(t){return(0,s.default)(t)||t.length===this.resolve(e)}})},min:function(e,t){return void 0===t&&(t=i.string.min),this.test({message:t,name:"min",exclusive:!0,params:{min:e},test:function(t){return(0,s.default)(t)||t.length>=this.resolve(e)}})},max:function(e,t){return void 0===t&&(t=i.string.max),this.test({name:"max",exclusive:!0,message:t,params:{max:e},test:function(t){return(0,s.default)(t)||t.length<=this.resolve(e)}})},matches:function(e,t){var r,A=!1;return t&&(t.message||t.hasOwnProperty("excludeEmptyString")?(A=t.excludeEmptyString,r=t.message):r=t),this.test({message:r||i.string.matches,params:{regex:e},test:function(t){return(0,s.default)(t)||""===t&&A||e.test(t)}})},email:function(e){return void 0===e&&(e=i.string.email),this.matches(a,{message:e,excludeEmptyString:!0})},url:function(e){return void 0===e&&(e=i.string.url),this.matches(c,{message:e,excludeEmptyString:!0})},ensure:function(){return this.default("").transform((function(e){return null===e?"":e}))},trim:function(e){return void 0===e&&(e=i.string.trim),this.transform((function(e){return null!=e?e.trim():e})).test({message:e,name:"trim",test:g})},lowercase:function(e){return void 0===e&&(e=i.string.lowercase),this.transform((function(e){return(0,s.default)(e)?e:e.toLowerCase()})).test({message:e,name:"string_case",exclusive:!0,test:function(e){return(0,s.default)(e)||e===e.toLowerCase()}})},uppercase:function(e){return void 0===e&&(e=i.string.uppercase),this.transform((function(e){return(0,s.default)(e)?e:e.toUpperCase()})).test({message:e,name:"string_case",exclusive:!0,test:function(e){return(0,s.default)(e)||e===e.toUpperCase()}})}}),e.exports=t.default},54107:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.createErrorFactory=l,t.default=function(e){var t=e.name,r=e.message,A=e.test,i=e.params;function g(e){var g=e.value,u=e.path,h=e.label,p=e.options,d=e.originalValue,C=e.sync,f=(0,n.default)(e,["value","path","label","options","originalValue","sync"]),I=p.parent,E=function(e){return a.default.isRef(e)?e.getValue({value:g,parent:I,context:p.context}):e},B=l({message:r,path:u,value:g,originalValue:d,params:i,label:h,resolve:E,name:t}),y=(0,o.default)({path:u,parent:I,type:t,createError:B,resolve:E,options:p},f);return function(e,t,r,A){var n=e.call(t,r);if(!A)return Promise.resolve(n);if(o=n,o&&"function"==typeof o.then&&"function"==typeof o.catch)throw new Error('Validation test of type: "'+t.type+'" returned a Promise during a synchronous validate. This test will finish after the validate call has returned');var o;return c.SynchronousPromise.resolve(n)}(A,y,g,C).then((function(e){if(s.default.isError(e))throw e;if(!e)throw B()}))}return g.OPTIONS=e,g};var n=A(r(74943)),o=A(r(72912)),i=A(r(89612)),s=A(r(40828)),a=A(r(95814)),c=r(93255),g=s.default.formatError;function l(e){var t=e.value,r=e.label,A=e.resolve,a=e.originalValue,c=(0,n.default)(e,["value","label","resolve","originalValue"]);return function(e){var n=void 0===e?{}:e,l=n.path,u=void 0===l?c.path:l,h=n.message,p=void 0===h?c.message:h,d=n.type,C=void 0===d?c.name:d,f=n.params;return f=(0,o.default)({path:u,value:t,originalValue:a,label:r},function(e,t,r){return(0,i.default)((0,o.default)({},e,t),r)}(c.params,f,A)),(0,o.default)(new s.default(g(p,f),t,u,C),{params:f})}}},31490:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=function(e,t,r){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),(0,n.default)(e.prototype,r)};var n=A(r(72912));e.exports=t.default},71665:(e,t)=>{"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e){return null==e},e.exports=t.default},11050:(e,t)=>{"use strict";t.__esModule=!0,t.default=void 0;t.default=function(e){return e&&e.__isYupSchema__},e.exports=t.default},76813:(e,t)=>{"use strict";t.__esModule=!0,t.default=function(e){var t,A,n=[1,4,5,6,7,10,11],o=0;if(A=r.exec(e)){for(var i,s=0;i=n[s];++s)A[i]=+A[i]||0;A[2]=(+A[2]||1)-1,A[3]=+A[3]||1,A[7]=A[7]?String(A[7]).substr(0,3):0,void 0!==A[8]&&""!==A[8]||void 0!==A[9]&&""!==A[9]?("Z"!==A[8]&&void 0!==A[9]&&(o=60*A[10]+A[11],"+"===A[9]&&(o=0-o)),t=Date.UTC(A[1],A[2],A[3],A[4],A[5]+o,A[6],A[7])):t=+new Date(A[1],A[2],A[3],A[4],A[5],A[6],A[7])}else t=Date.parse?Date.parse(e):NaN;return t};var r=/^(\d{4}|[+\-]\d{6})(?:-?(\d{2})(?:-?(\d{2}))?)?(?:[ T]?(\d{2}):?(\d{2})(?::?(\d{2})(?:[,\.](\d{1,}))?)?(?:(Z)|([+\-])(\d{2})(?::?(\d{2}))?)?)?$/;e.exports=t.default},7045:(e,t)=>{"use strict";t.__esModule=!0,t.default=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),A=1;A{"use strict";var A=r(60087);t.__esModule=!0,t.default=function e(t,r){for(var A in r)if((0,n.default)(r,A)){var s=r[A],a=t[A];if(void 0===a)t[A]=s;else{if(a===s)continue;(0,o.default)(a)?(0,o.default)(s)&&(t[A]=s.concat(a)):i(a)?i(s)&&(t[A]=e(a,s)):Array.isArray(a)&&Array.isArray(s)&&(t[A]=s.concat(a))}}return t};var n=A(r(15215)),o=A(r(11050)),i=function(e){return"[object Object]"===Object.prototype.toString.call(e)};e.exports=t.default},21043:(e,t)=>{"use strict";t.__esModule=!0,t.default=function(e,t){var r=s(e,t);return null!==r?r:JSON.stringify(e,(function(e,r){var A=s(this[e],t);return null!==A?A:r}),2)};var r=Object.prototype.toString,A=Error.prototype.toString,n=RegExp.prototype.toString,o="undefined"!=typeof Symbol?Symbol.prototype.toString:function(){return""},i=/^Symbol\((.*)\)(.*)$/;function s(e,t){if(void 0===t&&(t=!1),null==e||!0===e||!1===e)return""+e;var s=typeof e;if("number"===s)return function(e){return e!=+e?"NaN":0===e&&1/e<0?"-0":""+e}(e);if("string"===s)return t?'"'+e+'"':e;if("function"===s)return"[Function "+(e.name||"anonymous")+"]";if("symbol"===s)return o.call(e).replace(i,"Symbol($1)");var a=r.call(e).slice(8,-1);return"Date"===a?isNaN(e.getTime())?""+e:e.toISOString(e):"Error"===a||e instanceof Error?"["+A.call(e)+"]":"RegExp"===a?n.call(e):null}e.exports=t.default},43910:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.getIn=i,t.default=void 0;var n=r(79588),o=A(r(15215));function i(e,t,r,A){var i,s,a;return A=A||r,t?((0,n.forEach)(t,(function(n,c,g){var l=c?function(e){return e.substr(0,e.length-1).substr(1)}(n):n;if(g||(0,o.default)(e,"_subType")){var u=g?parseInt(l,10):0;if(e=e.resolve({context:A,parent:i,value:r})._subType,r){if(g&&u>=r.length)throw new Error("Yup.reach cannot resolve an array item at index: "+n+", in the path: "+t+". because there is no value at that index. ");r=r[u]}}if(!g){if(e=e.resolve({context:A,parent:i,value:r}),!(0,o.default)(e,"fields")||!(0,o.default)(e.fields,l))throw new Error("The schema does not contain the path: "+t+". (failed at: "+a+' which is a type: "'+e._type+'") ');e=e.fields[l],i=r,r=r&&r[l],s=l,a=c?"["+n+"]":"."+n}})),{schema:e,parent:i,parentPath:s}):{parent:i,parentPath:t,schema:e}}var s=function(e,t,r,A){return i(e,t,r,A).schema};t.default=s},80180:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.propagateErrors=function(e,t){return e?null:function(e){return t.push(e),e.value}},t.settled=a,t.collectErrors=c,t.default=function(e){var t=e.endEarly,r=(0,n.default)(e,["endEarly"]);return t?function(e,t,r){return s(r).all(e).catch((function(e){throw"ValidationError"===e.name&&(e.value=t),e})).then((function(){return t}))}(r.validations,r.value,r.sync):c(r)};var n=A(r(74943)),o=r(93255),i=A(r(40828)),s=function(e){return e?o.SynchronousPromise:Promise};function a(e,t){var r=s(t);return r.all(e.map((function(e){return r.resolve(e).then((function(e){return{fulfilled:!0,value:e}}),(function(e){return{fulfilled:!1,value:e}}))})))}function c(e){var t=e.validations,r=e.value,A=e.path,n=e.sync,o=e.errors,s=e.sort;return o=function(e){return void 0===e&&(e=[]),e.inner&&e.inner.length?e.inner:[].concat(e)}(o),a(t,n).then((function(e){var t=e.filter((function(e){return!e.fulfilled})).reduce((function(e,t){var r=t.value;if(!i.default.isError(r))throw r;return e.concat(r)}),[]);if(s&&t.sort(s),(o=t.concat(o)).length)throw new i.default(o,r,A);return r}))}},23316:(e,t)=>{"use strict";function r(e,t){var r=1/0;return e.some((function(e,A){if(-1!==t.path.indexOf(e))return r=A,!0})),r}t.__esModule=!0,t.default=function(e){var t=Object.keys(e);return function(e,A){return r(t,e)-r(t,A)}},e.exports=t.default},18417:(e,t,r)=>{"use strict";var A=r(60087);t.__esModule=!0,t.default=function(e,t){void 0===t&&(t=[]);var r=[],A=[];function c(e,n){var o=(0,i.split)(e)[0];~A.indexOf(o)||A.push(o),~t.indexOf(n+"-"+o)||r.push([n,o])}for(var g in e)if((0,n.default)(e,g)){var l=e[g];~A.indexOf(g)||A.push(g),s.default.isRef(l)&&l.isSibling?c(l.path,g):(0,a.default)(l)&&l._deps&&l._deps.forEach((function(e){return c(e,g)}))}return o.default.array(A,r).reverse()};var n=A(r(15215)),o=A(r(75158)),i=r(79588),s=A(r(95814)),a=A(r(11050));e.exports=t.default},60306:e=>{"use strict";e.exports=JSON.parse('{"name":"@yarnpkg/cli","version":"2.4.1","license":"BSD-2-Clause","main":"./sources/index.ts","dependencies":{"@yarnpkg/core":"workspace:^2.4.0","@yarnpkg/fslib":"workspace:^2.4.0","@yarnpkg/libzip":"workspace:^2.2.1","@yarnpkg/parsers":"workspace:^2.3.0","@yarnpkg/plugin-compat":"workspace:^2.2.1","@yarnpkg/plugin-dlx":"workspace:^2.1.4","@yarnpkg/plugin-essentials":"workspace:^2.4.0","@yarnpkg/plugin-file":"workspace:^2.2.0","@yarnpkg/plugin-git":"workspace:^2.3.0","@yarnpkg/plugin-github":"workspace:^2.1.2","@yarnpkg/plugin-http":"workspace:^2.1.2","@yarnpkg/plugin-init":"workspace:^2.2.2","@yarnpkg/plugin-link":"workspace:^2.1.1","@yarnpkg/plugin-node-modules":"workspace:^2.3.0","@yarnpkg/plugin-npm":"workspace:^2.4.0","@yarnpkg/plugin-npm-cli":"workspace:^2.3.0","@yarnpkg/plugin-pack":"workspace:^2.2.3","@yarnpkg/plugin-patch":"workspace:^2.1.2","@yarnpkg/plugin-pnp":"workspace:^2.4.0","@yarnpkg/shell":"workspace:^2.4.1","chalk":"^3.0.0","ci-info":"^2.0.0","clipanion":"^2.6.2","fromentries":"^1.2.0","semver":"^7.1.2","tslib":"^1.13.0","yup":"^0.27.0"},"devDependencies":{"@types/ci-info":"^2","@types/yup":"0.26.12","@yarnpkg/builder":"workspace:^2.1.3","@yarnpkg/monorepo":"workspace:0.0.0","@yarnpkg/pnpify":"workspace:^2.4.0","micromatch":"^4.0.2","typescript":"4.1.0-beta"},"peerDependencies":{"@yarnpkg/core":"^2.4.0"},"scripts":{"postpack":"rm -rf lib","prepack":"run build:compile \\"$(pwd)\\"","build:cli+hook":"run build:pnp:hook && builder build bundle","build:cli":"builder build bundle","run:cli":"builder run","update-local":"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/"},"publishConfig":{"main":"./lib/index.js","types":"./lib/index.d.ts","bin":null},"files":["/lib/**/*","!/lib/pluginConfiguration.*","!/lib/cli.*"],"@yarnpkg/builder":{"bundles":{"standard":["@yarnpkg/plugin-essentials","@yarnpkg/plugin-compat","@yarnpkg/plugin-dlx","@yarnpkg/plugin-file","@yarnpkg/plugin-git","@yarnpkg/plugin-github","@yarnpkg/plugin-http","@yarnpkg/plugin-init","@yarnpkg/plugin-link","@yarnpkg/plugin-node-modules","@yarnpkg/plugin-npm","@yarnpkg/plugin-npm-cli","@yarnpkg/plugin-pack","@yarnpkg/plugin-patch","@yarnpkg/plugin-pnp"]}},"repository":{"type":"git","url":"ssh://git@github.com/yarnpkg/berry.git"},"engines":{"node":">=10.19.0"}}')},98497:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=98497,e.exports=t},32178:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=32178,e.exports=t},3368:(e,t,r)=>{var A,n=Object.assign({},r(35747)),o=void 0!==o?o:{},i={};for(A in o)o.hasOwnProperty(A)&&(i[A]=o[A]);var s,a,c,g,l=[],u="";u=__dirname+"/",s=function(e,t){var A=Qe(e);return A?t?A:A.toString():(c||(c=n),g||(g=r(85622)),e=g.normalize(e),c.readFileSync(e,t?null:"utf8"))},a=function(e){var t=s(e,!0);return t.buffer||(t=new Uint8Array(t)),E(t.buffer),t},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),l=process.argv.slice(2),e.exports=o,o.inspect=function(){return"[Emscripten Module object]"};var h=o.print||console.log.bind(console),p=o.printErr||console.warn.bind(console);for(A in i)i.hasOwnProperty(A)&&(o[A]=i[A]);i=null,o.arguments&&(l=o.arguments),o.thisProgram&&o.thisProgram,o.quit&&o.quit;var d,C;o.wasmBinary&&(d=o.wasmBinary),o.noExitRuntime&&o.noExitRuntime,"object"!=typeof WebAssembly&&_("no native wasm support detected");var f=new WebAssembly.Table({initial:31,maximum:31,element:"anyfunc"}),I=!1;function E(e,t){e||_("Assertion failed: "+t)}function B(e){var t=o["_"+e];return E(t,"Cannot call unknown function "+e+", make sure it is exported"),t}function y(e,t,r,A,n){var o={string:function(e){var t=0;if(null!=e&&0!==e){var r=1+(e.length<<2);b(e,t=xe(r),r)}return t},array:function(e){var t=xe(e.length);return function(e,t){N.set(e,t)}(e,t),t}};var i=B(e),s=[],a=0;if(A)for(var c=0;c=A);)++n;if(n-t>16&&e.subarray&&m)return m.decode(e.subarray(t,n));for(var o="";t>10,56320|1023&c)}}else o+=String.fromCharCode((31&i)<<6|s)}else o+=String.fromCharCode(i)}return o}function Q(e,t){return e?w(F,e,t):""}function D(e,t,r,A){if(!(A>0))return 0;for(var n=r,o=r+A-1,i=0;i=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++i);if(s<=127){if(r>=o)break;t[r++]=s}else if(s<=2047){if(r+1>=o)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=o)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=o)break;t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-n}function b(e,t,r){return D(e,F,t,r)}function v(e){for(var t=0,r=0;r=55296&&A<=57343&&(A=65536+((1023&A)<<10)|1023&e.charCodeAt(++r)),A<=127?++t:t+=A<=2047?2:A<=65535?3:4}return t}function S(e){var t=v(e)+1,r=Le(t);return r&&D(e,N,r,t),r}var k,N,F,K,M,R,x;function L(e){k=e,o.HEAP8=N=new Int8Array(e),o.HEAP16=K=new Int16Array(e),o.HEAP32=M=new Int32Array(e),o.HEAPU8=F=new Uint8Array(e),o.HEAPU16=new Uint16Array(e),o.HEAPU32=new Uint32Array(e),o.HEAPF32=R=new Float32Array(e),o.HEAPF64=x=new Float64Array(e)}var P=o.INITIAL_MEMORY||16777216;(C=o.wasmMemory?o.wasmMemory:new WebAssembly.Memory({initial:P/65536,maximum:32768}))&&(k=C.buffer),P=k.byteLength,L(k);var O=[],U=[],T=[],j=[];var Y=Math.abs,G=Math.ceil,H=Math.floor,J=Math.min,q=0,z=null,W=null;function V(e){q++,o.monitorRunDependencies&&o.monitorRunDependencies(q)}function X(e){if(q--,o.monitorRunDependencies&&o.monitorRunDependencies(q),0==q&&(null!==z&&(clearInterval(z),z=null),W)){var t=W;W=null,t()}}function _(e){throw o.onAbort&&o.onAbort(e),p(e+=""),I=!0,1,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}o.preloadedImages={},o.preloadedAudios={};function Z(e){return t=e,r="data:application/octet-stream;base64,",String.prototype.startsWith?t.startsWith(r):0===t.indexOf(r);var t,r}var $,ee,te,re="data:application/octet-stream;base64,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AkEgaiQAC4sDAQF/IwBBMGsiAyQAIAMgADYCJCADIAE2AiAgAyACNwMYAkAgAygCJC0AKEEBcQRAIANCfzcDKAwBCwJAAkAgAygCJCgCIEEATQ0AIAMpAxhC////////////AFYNACADKQMYQgBYDQEgAygCIA0BCyADKAIkQQxqQRJBABAVIANCfzcDKAwBCyADKAIkLQA1QQFxBEAgA0J/NwMoDAELAn8jAEEQayIAIAMoAiQ2AgwgACgCDC0ANEEBcQsEQCADQgA3AygMAQsgAykDGFAEQCADQgA3AygMAQsgA0IANwMQA0AgAykDECADKQMYVARAIAMgAygCJCADKAIgIAMpAxCnaiADKQMYIAMpAxB9QQEQIiICNwMIIAJCAFMEQCADKAIkQQE6ADUgAykDEFAEQCADQn83AygMBAsgAyADKQMQNwMoDAMLIAMpAwhQBEAgAygCJEEBOgA0BSADIAMpAwggAykDEHw3AxAMAgsLCyADIAMpAxA3AygLIAMpAyghAiADQTBqJAAgAgs2AQF/IwBBEGsiASAANgIMAn4gASgCDC0AAEEBcQRAIAEoAgwpAwggASgCDCkDEH0MAQtCAAsLsgECAX8BfiMAQRBrIgEkACABIAA2AgQgASABKAIEQggQHzYCAAJAIAEoAgBFBEAgAUIANwMIDAELIAEgASgCAC0AAK0gASgCAC0AB61COIYgASgCAC0ABq1CMIZ8IAEoAgAtAAWtQiiGfCABKAIALQAErUIghnwgASgCAC0AA61CGIZ8IAEoAgAtAAKtQhCGfCABKAIALQABrUIIhnx8NwMICyABKQMIIQIgAUEQaiQAIAILqAEBAX8jAEEQayIBJAAgASAANgIIAkAgASgCCCgCIEEATQRAIAEoAghBDGpBEkEAEBUgAUF/NgIMDAELIAEoAggiACAAKAIgQX9qNgIgIAEoAggoAiBFBEAgASgCCEEAQgBBAhAiGiABKAIIKAIABEAgASgCCCgCABAyQQBIBEAgASgCCEEMakEUQQAQFQsLCyABQQA2AgwLIAEoAgwhACABQRBqJAAgAAvxAgICfwF+AkAgAkUNACAAIAJqIgNBf2ogAToAACAAIAE6AAAgAkEDSQ0AIANBfmogAToAACAAIAE6AAEgA0F9aiABOgAAIAAgAToAAiACQQdJDQAgA0F8aiAB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ECwQMwsgASgCDCgCVBAWIAEoAgxBADYCVAsgAUEQaiQAC/EBAQF/IwBBEGsiASAANgIMIAEoAgxBADYCACABKAIMQQA6AAQgASgCDEEAOgAFIAEoAgxBAToABiABKAIMQb8GOwEIIAEoAgxBCjsBCiABKAIMQQA7AQwgASgCDEF/NgIQIAEoAgxBADYCFCABKAIMQQA2AhggASgCDEIANwMgIAEoAgxCADcDKCABKAIMQQA2AjAgASgCDEEANgI0IAEoAgxBADYCOCABKAIMQQA2AjwgASgCDEEAOwFAIAEoAgxBgIDYjXg2AkQgASgCDEIANwNIIAEoAgxBADsBUCABKAIMQQA7AVIgASgCDEEANgJUC9oTAQF/IwBBsAFrIgMkACADIAA2AqgBIAMgATYCpAEgAyACNgKgASADQQA2ApABIAMgAygCpAEoAjBBABA7NgKUASADIAMoAqQBKAI4QQAQOzYCmAECQAJAAkACQCADKAKUAUECRgRAIAMoApgBQQFGDQELIAMoApQBQQFGBEAgAygCmAFBAkYNAQsgAygClAFBAkcNASADKAKYAUECRw0BCyADKAKkASIAIAAvAQxBgBByOwEMDAELIAMoAqQBIgAgAC8BDEH/7wNxOwEMIAMoApQBQQJGBEAgA0H14AEgAygCpAEoAjAgAygCqAFBCGoQxAE2ApABIAMoApABRQRAIANBfzYCrAEMAwsLAkAgAygCoAFBgAJxDQAgAygCmAFBAkcNACADQfXGASADKAKkASgCOCADKAKoAUEIahDEATYCSCADKAJIRQRAIAMoApABECQgA0F/NgKsAQwDCyADKAJIIAMoApABNgIAIAMgAygCSDYCkAELCwJAIAMoAqQBLwFSRQRAIAMoAqQBIgAgAC8BDEH+/wNxOwEMDAELIAMoAqQBIgAgAC8BDEEBcjsBDAsgAyADKAKkASADKAKgARCAAUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBAqNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBUgAygCkAEQJCADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAuIAMoAhwgAygCpAEpAyAQLgwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLgsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAuCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC4LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFSADKAIcEBcgAygCkAEQJCADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQUDYCjAEgAygCHBAXIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECo2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFSADKAKQARAkIANBfzYCrAEMAgsgAygCEEECECAgAygCEEHP0wBBAhBAIAMoAhAgAygCpAEvAVJB/wFxEIoBIAMoAhAgAygCpAEoAhBB//8DcRAgAn8jAEEQayIAIAMoAhA2AgwgACgCDC0AAEEBcUULBEAgAygCqAFBCGpBFEEAEBUgAygCEBAXIAMoApABECQgA0F/NgKsAQwCCyADQYGyAkEHIANBFWpBgAYQUDYCDCADKAIQEBcgAygCDCADKAKQATYCACADIAMoAgw2ApABCyADIANB0ABqQi4QKiIANgJMIABFBEAgAygCqAFBCGpBDkEAEBUgAygCkAEQJCADQX82AqwBDAELIAMoAkxBxdMAQcrTACADKAKgAUGAAnEbQQQQQCADKAKgAUGAAnFFBEAgAygCTAJ/QS0gAy0AhgFBAXENABogAygCpAEvAQgLQf//A3EQIAsgAygCTAJ/QS0gAy0AhgFBAXENABogAygCpAEvAQoLQf//A3EQICADKAJMIAMoAqQBLwEMECACQCADLQCFAUEBcQRAIAMoAkxB4wAQIAwBCyADKAJMIAMoAqQBKAIQQf//A3EQIAsgAygCpAEoAhQgA0GeAWogA0GcAWoQwwEgAygCTCADLwGeARAgIAMoAkwgAy8BnAEQIAJAAkAgAy0AhQFBAXFFDQAgAygCpAEpAyhCFFoNACADKAJMQQAQIQwBCyADKAJMIAMoAqQBKAIYECELAkACQCADKAKgAUGAAnFBgAJHDQAgAygCpAEpAyBC/////w9UBEAgAygCpAEpAyhC/////w9UDQELIAMoAkxBfxAhIAMoAkxBfxAhDAELAkAgAygCpAEpAyBC/////w9UBEAgAygCTCADKAKkASkDIKcQIQwBCyADKAJMQX8QIQsCQCADKAKkASkDKEL/////D1QEQCADKAJMIAMoAqQBKQMopxAhDAELIAMoAkxBfxAhCwsgAygCTCADKAKkASgCMBBSQf//A3EQICADIAMoAqQBKAI0IAMoAqABEIIBQf//A3EgAygCkAFBgAYQggFB//8DcWo2AogBIAMoAkwgAygCiAFB//8DcRAgIAMoAqABQYACcUUEQCADKAJMIAMoAqQBKAI4EFJB//8DcRAgIAMoAkwgAygCpAEoAjxB//8DcRAgIAMoAkwgAygCpAEvAUAQICADKAJMIAMoAqQBKAJEECECQCADKAKkASkDSEL/////D1QEQCADKAJMIAMoAqQBKQNIpxAhDAELIAMoAkxBfxAhCwsCfyMAQRBrIgAgAygCTDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFSADKAJMEBcgAygCkAEQJCADQX82AqwBDAELIAMoAqgBIANB0ABqAn4jAEEQayIAIAMoAkw2AgwCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACwsQNkEASARAIAMoAkwQFyADKAKQARAkIANBfzYCrAEMAQsgAygCTBAXIAMoAqQBKAIwBEAgAygCqAEgAygCpAEoAjAQhgFBAEgEQCADKAKQARAkIANBfzYCrAEMAgsLIAMoApABBEAgAygCqAEgAygCkAFBgAYQgQFBAEgEQCADKAKQARAkIANBfzYCrAEMAgsLIAMoApABECQgAygCpAEoAjQEQCADKAKoASADKAKkASgCNCADKAKgARCBAUEASARAIANBfzYCrAEMAgsLIAMoAqABQYACcUUEQCADKAKkASgCOARAIAMoAqgBIAMoAqQBKAI4EIYBQQBIBEAgA0F/NgKsAQwDCwsLIAMgAy0AhwFBAXE2AqwBCyADKAKsASEAIANBsAFqJAAgAAuCAgEBfyMAQSBrIgUkACAFIAA2AhggBSABNgIUIAUgAjsBEiAFQQA7ARAgBSADNgIMIAUgBDYCCCAFQQA2AgQCQANAIAUoAhgEQAJAIAUoAhgvAQggBS8BEkcNACAFKAIYKAIEIAUoAgxxQYAGcUUNACAFKAIEIAUvARBIBEAgBSAFKAIEQQFqNgIEDAELIAUoAhQEQCAFKAIUIAUoAhgvAQo7AQALIAUoAhgvAQpBAEoEQCAFIAUoAhgoAgw2AhwMBAsgBUGx0wA2AhwMAwsgBSAFKAIYKAIANgIYDAELCyAFKAIIQQlBABAVIAVBADYCHAsgBSgCHCEAIAVBIGokACAAC4EDAQF/IwBBMGsiBSQAIAUgADYCKCAFIAE2AiQgBSACNgIgIAUgAzoAHyAFIAQ2AhgCQAJAIAUoAiANACAFLQAfQQFxDQAgBUEANgIsDAELIAUgBSgCICAFLQAfQQFxRUVqEBk2AhQgBSgCFEUEQCAFKAIYQQ5BABAVIAVBADYCLAwBCwJAIAUoAigEQCAFIAUoAiggBSgCIK0QHzYCECAFKAIQRQRAIAUoAhhBDkEAEBUgBSgCFBAWIAVBADYCLAwDCyAFKAIUIAUoAhAgBSgCIBAaGgwBCyAFKAIkIAUoAhQgBSgCIK0gBSgCGBBhQQBIBEAgBSgCFBAWIAVBADYCLAwCCwsgBS0AH0EBcQRAIAUoAhQgBSgCIGpBADoAACAFIAUoAhQ2AgwDQCAFKAIMIAUoAhQgBSgCIGpJBEAgBSgCDC0AAEUEQCAFKAIMQSA6AAALIAUgBSgCDEEBajYCDAwBCwsLIAUgBSgCFDYCLAsgBSgCLCEAIAVBMGokACAAC8IBAQF/IwBBMGsiBCQAIAQgADYCKCAEIAE2AiQgBCACNwMYIAQgAzYCFAJAIAQpAxhC////////////AFYEQCAEKAIUQRRBABAVIARBfzYCLAwBCyAEIAQoAiggBCgCJCAEKQMYEC8iAjcDCCACQgBTBEAgBCgCFCAEKAIoEBggBEF/NgIsDAELIAQpAwggBCkDGFMEQCAEKAIUQRFBABAVIARBfzYCLAwBCyAEQQA2AiwLIAQoAiwhACAEQTBqJAAgAAs2AQF/IwBBEGsiASQAIAEgADYCDCABKAIMEGMgASgCDCgCABA6IAEoAgwoAgQQOiABQRBqJAALqwEBAX8jAEEQayIBJAAgASAANgIMIAEoAgwoAggEQCABKAIMKAIIEBwgASgCDEEANgIICwJAIAEoAgwoAgRFDQAgASgCDCgCBCgCAEEBcUUNACABKAIMKAIEKAIQQX5HDQAgASgCDCgCBCIAIAAoAgBBfnE2AgAgASgCDCgCBCgCAEUEQCABKAIMKAIEEDogASgCDEEANgIECwsgASgCDEEAOgAMIAFBEGokAAttAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE2AhQgBCACNgIQIAQgAzYCDAJAIAQoAhhFBEAgBEEANgIcDAELIAQgBCgCFCAEKAIQIAQoAgwgBCgCGEEIahCOATYCHAsgBCgCHCEAIARBIGokACAAC4EGAgF/AX4jAEGQAWsiAyQAIAMgADYChAEgAyABNgKAASADIAI2AnwgAxBdAkAgAygCgAEpAwhCAFIEQCADIAMoAoABKAIAKAIAKQNINwNgIAMgAygCgAEoAgAoAgApA0g3A2gMAQsgA0IANwNgIANCADcDaAsgA0IANwNwAkADQCADKQNwIAMoAoABKQMIVARAIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSCADKQNoVARAIAMgAygCgAEoAgAgAykDcKdBBHRqKAIAKQNINwNoCyADKQNoIAMoAoABKQMgVgRAIAMoAnxBE0EAEBUgA0J/NwOIAQwDCyADIAMoAoABKAIAIAMpA3CnQQR0aigCACkDSCADKAKAASgCACADKQNwp0EEdGooAgApAyB8IAMoAoABKAIAIAMpA3CnQQR0aigCACgCMBBSQf//A3GtfEIefDcDWCADKQNYIAMpA2BWBEAgAyADKQNYNwNgCyADKQNgIAMoAoABKQMgVgRAIAMoAnxBE0EAEBUgA0J/NwOIAQwDCyADKAKEASgCACADKAKAASgCACADKQNwp0EEdGooAgApA0hBABAoQQBIBEAgAygCfCADKAKEASgCABAYIANCfzcDiAEMAwsgAyADKAKEASgCAEEAQQEgAygCfBDCAUJ/UQRAIAMQXCADQn83A4gBDAMLIAMoAoABKAIAIAMpA3CnQQR0aigCACADEPEBBEAgAygCfEEVQQAQFSADEFwgA0J/NwOIAQwDBSADKAKAASgCACADKQNwp0EEdGooAgAoAjQgAygCNBCFASEAIAMoAoABKAIAIAMpA3CnQQR0aigCACAANgI0IAMoAoABKAIAIAMpA3CnQQR0aigCAEEBOgAEIANBADYCNCADEFwgAyADKQNwQgF8NwNwDAILAAsLIAMCfiADKQNgIAMpA2h9Qv///////////wBUBEAgAykDYCADKQNofQwBC0L///////////8ACzcDiAELIAMpA4gBIQQgA0GQAWokACAEC6YBAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgAygCEBD6ASIANgIMAkAgAEUEQCADQQA2AhwMAQsgAygCDCADKAIYNgIAIAMoAgwgAygCFDYCBCADKAIUQRBxBEAgAygCDCIAIAAoAhRBAnI2AhQgAygCDCIAIAAoAhhBAnI2AhgLIAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC9UBAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCAJAAkAgBCkDEEL///////////8AVwRAIAQpAxBCgICAgICAgICAf1kNAQsgBCgCCEEEQT0QFSAEQX82AhwMAQsCfyAEKQMQIQEgBCgCDCEAIAQoAhgiAigCTEF/TARAIAIgASAAEJYBDAELIAIgASAAEJYBC0EASARAIAQoAghBBEG0nAEoAgAQFSAEQX82AhwMAQsgBEEANgIcCyAEKAIcIQAgBEEgaiQAIAALJwACf0EAQQAgABAFIgAgAEEbRhsiAEUNABpBtJwBIAA2AgBBAAsaC14BAX8jAEEQayIDJAAgAyABQcCAgAJxBH8gAyACQQRqNgIMIAIoAgAFQQALNgIAIAAgAUGAgAJyIAMQESIAQYFgTwRAQbScAUEAIABrNgIAQX8hAAsgA0EQaiQAIAALVQEBfyMAQRBrIgEkACABIAA2AgwCQAJAIAEoAgwoAiRBAUYNACABKAIMKAIkQQJGDQAMAQsgASgCDEEAQgBBChAiGiABKAIMQQA2AiQLIAFBEGokAAszAQF/An8gABAGIgFBYUYEQCAAEBIhAQsgAUGBYE8LBH9BtJwBQQAgAWs2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IEUNACABKAIIKAIkDQELIAFBATYCDAwBCyABIAEoAggoAhw2AgQCQAJAIAEoAgRFDQAgASgCBCgCACABKAIIRw0AIAEoAgQoAgRBKkYNASABKAIEKAIEQTlGDQEgASgCBCgCBEHFAEYNASABKAIEKAIEQckARg0BIAEoAgQoAgRB2wBGDQEgASgCBCgCBEHnAEYNASABKAIEKAIEQfEARg0BIAEoAgQoAgRBmgVGDQELIAFBATYCDAwBCyABQQA2AgwLIAEoAgwL0gQBAX8jAEEgayIDIAA2AhwgAyABNgIYIAMgAjYCFCADIAMoAhxB3BZqIAMoAhRBAnRqKAIANgIQIAMgAygCFEEBdDYCDANAAkAgAygCDCADKAIcKALQKEoNAAJAIAMoAgwgAygCHCgC0ChODQAgAygCGCADKAIcIAMoAgxBAnRqQeAWaigCAEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBOBEAgAygCGCADKAIcIAMoAgxBAnRqQeAWaigCAEECdGovAQAgAygCGCADKAIcQdwWaiADKAIMQQJ0aigCAEECdGovAQBHDQEgAygCHCADKAIMQQJ0akHgFmooAgAgAygCHEHYKGpqLQAAIAMoAhxB3BZqIAMoAgxBAnRqKAIAIAMoAhxB2Chqai0AAEoNAQsgAyADKAIMQQFqNgIMCyADKAIYIAMoAhBBAnRqLwEAIAMoAhggAygCHEHcFmogAygCDEECdGooAgBBAnRqLwEASA0AAkAgAygCGCADKAIQQQJ0ai8BACADKAIYIAMoAhxB3BZqIAMoAgxBAnRqKAIAQQJ0ai8BAEcNACADKAIQIAMoAhxB2Chqai0AACADKAIcQdwWaiADKAIMQQJ0aigCACADKAIcQdgoamotAABKDQAMAQsgAygCHEHcFmogAygCFEECdGogAygCHEHcFmogAygCDEECdGooAgA2AgAgAyADKAIMNgIUIAMgAygCDEEBdDYCDAwBCwsgAygCHEHcFmogAygCFEECdGogAygCEDYCAAvnCAEDfyMAQTBrIgIkACACIAA2AiwgAiABNgIoIAIgAigCKCgCADYCJCACIAIoAigoAggoAgA2AiAgAiACKAIoKAIIKAIMNgIcIAJBfzYCECACKAIsQQA2AtAoIAIoAixBvQQ2AtQoIAJBADYCGANAIAIoAhggAigCHE5FBEACQCACKAIkIAIoAhhBAnRqLwEABEAgAiACKAIYIgE2AhAgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQAgBCAANgLQKCAAQQJ0IANqIAE2AgAgAigCGCACKAIsQdgoampBADoAAAwBCyACKAIkIAIoAhhBAnRqQQA7AQILIAIgAigCGEEBajYCGAwBCwsDQCACKAIsKALQKEECSARAAkAgAigCEEECSARAIAIgAigCEEEBaiIANgIQDAELQQAhAAsgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQEgBCABNgLQKCABQQJ0IANqIAA2AgAgAiAANgIMIAIoAiQgAigCDEECdGpBATsBACACKAIMIAIoAixB2ChqakEAOgAAIAIoAiwiACAAKAKoLUF/ajYCqC0gAigCIARAIAIoAiwiACAAKAKsLSACKAIgIAIoAgxBAnRqLwECazYCrC0LDAELCyACKAIoIAIoAhA2AgQgAiACKAIsKALQKEECbTYCGANAIAIoAhhBAUhFBEAgAigCLCACKAIkIAIoAhgQdSACIAIoAhhBf2o2AhgMAQsLIAIgAigCHDYCDANAIAIgAigCLCgC4BY2AhggAigCLEHcFmohASACKAIsIgMoAtAoIQAgAyAAQX9qNgLQKCACKAIsIABBAnQgAWooAgA2AuAWIAIoAiwgAigCJEEBEHUgAiACKAIsKALgFjYCFCACKAIYIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQX9qIQAgBCAANgLUKCAAQQJ0IANqIAE2AgAgAigCFCEBIAIoAixB3BZqIQMgAigCLCIEKALUKEF/aiEAIAQgADYC1CggAEECdCADaiABNgIAIAIoAiQgAigCDEECdGogAigCJCACKAIYQQJ0ai8BACACKAIkIAIoAhRBAnRqLwEAajsBACACKAIMIAIoAixB2ChqagJ/IAIoAhggAigCLEHYKGpqLQAAIAIoAhQgAigCLEHYKGpqLQAATgRAIAIoAhggAigCLEHYKGpqLQAADAELIAIoAhQgAigCLEHYKGpqLQAAC0EBajoAACACKAIkIAIoAhRBAnRqIAIoAgwiADsBAiACKAIkIAIoAhhBAnRqIAA7AQIgAiACKAIMIgBBAWo2AgwgAigCLCAANgLgFiACKAIs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AykDKCEBIANBMGokACABC3cBAX8jAEEQayICIAA2AgggAiABNgIEAkACQAJAIAIoAggpAyhC/////w9aDQAgAigCCCkDIEL/////D1oNACACKAIEQYAEcUUNASACKAIIKQNIQv////8PVA0BCyACQQE6AA8MAQsgAkEAOgAPCyACLQAPQQFxC9kCAQF/IwBBIGsiAyQAIAMgADYCGCADIAE2AhQgAyACNgIQIAMgA0EMakIEECo2AggCQCADKAIIRQRAIANBfzYCHAwBCwNAIAMoAhQEQCADKAIUKAIEIAMoAhBxQYAGcQRAIAMoAghCABAtGiADKAIIIAMoAhQvAQgQICADKAIIIAMoAhQvAQoQIAJ/IwBBEGsiACADKAIINgIMIAAoAgwtAABBAXFFCwRAIAMoAhhBCGpBFEEAEBUgAygCCBAXIANBfzYCHAwECyADKAIYIANBDGpCBBA2QQBIBEAgAygCCBAXIANBfzYCHAwECyADKAIULwEKQQBKBEAgAygCGCADKAIUKAIMIAMoAhQvAQqtEDZBAEgEQCADKAIIEBcgA0F/NgIcDAULCwsgAyADKAIUKAIANgIUDAELCyADKAIIEBcgA0EANgIcCyADKAIcIQAgA0EgaiQAIAALaAEBfyMAQRBrIgIgADYCDCACIAE2AgggAkEAOwEGA0AgAigCDARAIAIoAgwoAgQgAigCCHFBgAZxBEAgAiACKAIMLwEKIAIvAQZBBGpqOwEGCyACIAIoAgwoAgA2AgwMAQsLIAIvAQYL8AEBAX8jAEEQayIBJAAgASAANgIMIAEgASgCDDYCCCABQQA2AgQDQCABKAIMBEACQAJAIAEoAgwvAQhB9cYBRg0AIAEoAgwvAQhB9eABRg0AIAEoAgwvAQhBgbICRg0AIAEoAgwvAQhBAUcNAQsgASABKAIMKAIANgIAIAEoAgggASgCDEYEQCABIAEoAgA2AggLIAEoAgxBADYCACABKAIMECQgASgCBARAIAEoAgQgASgCADYCAAsgASABKAIANgIMDAILIAEgASgCDDYCBCABIAEoAgwoAgA2AgwMAQsLIAEoAgghACABQRBqJAAgAAuzBAEBfyMAQUBqIgUkACAFIAA2AjggBSABOwE2IAUgAjYCMCAFIAM2AiwgBSAENgIoIAUgBSgCOCAFLwE2rRAqIgA2AiQC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ACgCDCgCBDYCAAsLIAIoAgwEQCACKAIMIAIoAgQ2AgALIAJBEGokAAuVAQEBfyMAQRBrIgEkACABIAA2AggCQAJ/IwBBEGsiACABKAIINgIMIAAoAgwpAxhCgIAQg1ALBEAgASgCCCgCAARAIAEgASgCCCgCABCUAUEBcToADwwCCyABQQE6AA8MAQsgASABKAIIQQBCAEESECI+AgQgASABKAIEQQBHOgAPCyABLQAPQQFxIQAgAUEQaiQAIAALfwEBfyMAQSBrIgMkACADIAA2AhggAyABNwMQIANBADYCDCADIAI2AggCQCADKQMQQv///////////wBWBEAgAygCCEEEQT0QFSADQX82AhwMAQsgAyADKAIYIAMpAxAgAygCDCADKAIIEGc2AhwLIAMoAhwhACADQSBqJAAgAAt9ACACQQFGBEAgASAAKAIIIAAoAgRrrH0hAQsCQCAAKAIUIAAoAhxLBEAgAEEAQQAgACgCJBEBABogACgCFEUNAQsgAEEANgIcIABCADcDECAAIAEgAiAAKAIoERAAQgBTDQAgAEIANwIEIAAgACgCAEFvcTYCAEEADwtBfwviAgECfyMAQSBrIgMkAAJ/AkACQEH0lwEgASwAABCYAUUEQEG0nAFBHDYCAAwBC0GYCRAZIgINAQtBAAwBCyACQQBBkAEQMyABQSsQmAFFBEAgAkEIQQQgAS0AAEHyAEYbNgIACwJAIAEtAABB4QBHBEAgAigCACEBDAELIABBA0EAEAQiAUGACHFFBEAgAyABQYAIcjYCECAAQQQgA0EQahAEGgsgAiACKAIAQYABciIBNgIACyACQf8BOgBLIAJBgAg2AjAgAiAANgI8IAIgAkGYAWo2AiwCQCABQQhxDQAgAyADQRhqNgIAIABBk6gBIAMQDg0AIAJBCjoASwsgAkEaNgIoIAJBGzYCJCACQRw2AiAgAkEdNgIMQdygASgCAEUEQCACQX82AkwLIAJBsKEBKAIANgI4QbChASgCACIABEAgACACNgI0C0GwoQEgAjYCACACCyEAIANBIGokACAACxoAIAAgARCFAiIAQQAgAC0AACABQf8BcUYbCxgAIAAoAkxBf0wEQCAAEJoBDwsgABCaAQtgAgJ/AX4gACgCKCEBQQEhAiAAQgAgAC0AAEGAAXEEf0ECQQEgACgCFCAAKAIc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KAIYKQMwWgRAIAIoAhhBCGpBEkEAEBUgAkF/NgIcDAELIAIoAhgoAhhBAnEEQCACKAIYQQhqQRlBABAVIAJBfzYCHAwBCyACIAIoAhggAikDEEEAIAIoAhhBCGoQTyIANgIMIABFBEAgAkF/NgIcDAELIAIoAhgoAlAgAigCDCACKAIYQQhqEFlBAXFFBEAgAkF/NgIcDAELIAIoAhggAikDEBCgAgRAIAJBfzYCHAwBCyACKAIYKAJAIAIpAxCnQQR0akEBOgAMIAJBADYCHAsgAigCHCEAIAJBIGokACAAC5gCAAJAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQCABQXdqDgoAAQIJAwQFBgkHCAsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgACACQRYRBAALDwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC0oBA38gACgCACwAAEFQakEKSQRAA0AgACgCACIBLAAAIQMgACABQQFqNgIAIAMgAkEKbGpBUGohAiABLAABQVBqQQpJDQALCyACC38CAX8BfiAAvSIDQjSIp0H/D3EiAkH/D0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEKQBIQAgASgCAEFAags2AgAgAA8LIAEgAkGCeGo2AgAgA0L/////////h4B/g0KAgICAgICA8D+EvwUgAAsLEgAgAEUEQEEADwsgACABELQCC+UBAQJ/IAJBAEchAwJAAkACQCACRQ0AIABBA3FFDQAgAUH/AXEhBANAIAAtAAAgBEYNAiAAQQFqIQAgAkF/aiICQQBHIQMgAkUNASAAQQNxDQALCyADRQ0BCwJAIAAtAAAgAUH/AXFGDQAgAkEESQ0AIAFB/wFxQYGChAhsIQMDQCAAKAIAIANzIgRBf3MgBEH//ft3anFBgIGChHhxDQEgAEEEaiEAIAJB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HAvkAQEBfyMAQSBrIgMkACADIAA6ABsgAyABNgIUIAMgAjYCECADQcgAEBkiADYCDAJAIABFBEAgAygCEEEBQbScASgCABAVIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAAC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEH+fWo2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEF/aiIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5gQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAgxBBWsgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcUVFNgIQIAIoAihBAEEAIAIoAhAQVyACKAIoKAIIIAIoAigoAhRBBGtqIAIoAhw6AAAgAigCKCgCCCACKAIoKAIUQQNraiACKAIcQQh2OgAAIAIoAigoAgggAigCKCgCFEECa2ogAigCHEF/czoAACACKAIoKAIIIAIoAigoAhRBAWtqIAIoAhxBf3NBCHY6AAAgAigCKCgCABAdIAIoAhgEQCACKAIYIAIoAhxLBEAgAiACKAIcNgIYCyACKAIoKAIAKAIMIAIoAigoAjggAigCKCgCXGogAigCGBAaGiACKAIoKAIAIgAgAigCGCAAKAIMajYCDCACKAIoKAIAIgAgACgCECACKAIYazYCECACKAIoKAIAIgAgAigCGCAAKAIUajYCFCACKAIoIgAgAigCGCAAKAJcajYCXCACIAIoAhwgAigCGGs2AhwLIAIoAhwEQCACKAIoKAIAIAIoAigoAgAoAgwgAigCHBBzGiACKAIoKAIAIgAgAigCHCAAKAIMajYCDCACKAIoKAIAIgAgACgCECACKAIcazYCECACKAIoKAIAIgAgAigCHCAAKAIUajYCFAsgAigCEEUNAQsLIAIgAigCDCACKAIoKAIAKAIEazYCDCACKAIMBEACQCACKAIMIAIoAigoAixPBEAgAigCKEECNgKwLSACKAIoKAI4IAIoAigoAgAoAgAgAigCKCgCLGsgAigCKCgCLBAaGiACKAIoIAIoAigoAiw2AmwMAQsgAigCKCgCPCACKAIoKAJsayACKAIMTQRAIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBoaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsLIAIoAigoAjggAigCKCgCbGogAigCKCgCACgCACACKAIMayACKAIMEBoaIAIoAigiACACKAIMIAAoAmxqNgJsCyACKAIoIAIoAigoAmw2AlwgAigCKCIBAn8gAigCDCACKAIoKAIsIAIoAigoArQta0sEQCACKAIoKAIsIAIoAigoArQtawwBCyACKAIMCyABKAK0LWo2ArQtCyACKAIoKALALSACKAIoKAJsSQRAIAIoAiggAigCKCgCbDYCwC0LAkAgAigCEARAIAJBAzYCLAwBCwJAIAIoAiRFDQAgAigCJEEERg0AIAIoAigoAgAoAgQNACACKAIoKAJsIAIoAigoAlxHDQAgAkEBNgIsDAELIAIgAigCKCgCPCACKAIoKAJsa0EBazYCFAJAIAIoAigoAgAoAgQgAigCFE0NACACKAIoKAJcIAIoAigoAixIDQAgAigCKCIAIAAoAlwgAigCKCgCLGs2AlwgAigCKCIAIAAoAmwgAigCKCgCLGs2AmwgAigCKCgCOCACKAIoKAI4IAIoAigoAixqIAIoAigoAmwQGhogAigCKCgCsC1BAkkEQCACKAIoIgAgACgCsC1BAWo2ArAtCyACIAIoAigoAiwgAigCFGo2AhQLIAIoAhQgAigCKCgCACgCBEsEQCACIAIoAigoAgAoAgQ2AhQLIAIoAhQEQCACKAIoKAIAIAIoAigoAjggAigCKCgCbGogAigCFBBzGiACKAIoIgAgAigCFCAAKAJsajYCbAsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCyACIAIoAigoArwtQSpqQQN1NgIUIAICf0H//wMgAigCKCgCDCACKAIUa0H//wNLDQAaIAIoAigoAgwgAigCFGsLNgIUIAICfyACKAIUIAIoAigoAixLBEAgAigCKCgCLAwBCyACKAIUCzYCICACIAIoAigoAmwgAigCKCgCXGs2AhgCQCACKAIYIAIoAiBJBEAgAigCGEUEQCACKAIkQQRHDQILIAIoAiRFDQEgAigCKCgCACgCBA0BIAIoAhggAigCFEsNAQsgAgJ/IAIoAhggAigCFEsEQCACKAIUDAELIAIoAhgLNgIcIAICf0EAIAIoAiRBBEcNABpBACACKAIoKAIAKAIEDQAaIAIoAhwgAigCGEYLQQFxRUU2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBXIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHQsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHQEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIcKAJABEAgASgCCCgCKCAB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A0hCGnxBABAoQQBIBEAgAigCKEEIaiACKAIoKAIAEBggAkF/NgIsDAELIAIgAigCKCgCAEIEIAJBGGogAigCKEEIahBBIgA2AhQgAEUEQCACQX82AiwMAQsgAiACKAIUEB47ARIgAiACKAIUEB47ARAgAigCFBBIQQFxRQRAIAIoAhQQFyACKAIoQQhqQRRBABAVIAJBfzYCLAwBCyACKAIUEBcgAi8BEEEASgRAIAIoAigoAgAgAi8BEq1BARAoQQBIBEAgAigCKEEIakEEQbScASgCABAVIAJBfzYCLAwCCyACQQAgAigCKCgCACACLwEQQQAgAigCKEEIahBgNgIIIAIoAghFBEAgAkF/NgIsDAILIAIoAgggAi8BEEGAAiACQQxqIAIoAihBCGoQhAFBAXFFBEAgAigCCBAWIAJBfzYCLAwCCyACKAIIEBYgAigCDARAIAIgAigCDBCDATYCDCACKAIcKAIAKAI0IAIoAgwQhQEhACACKAIcKAIAIAA2AjQLCyACKAIcKAIAQQE6AAQCQCACKAIcKAIERQ0AIAIoAhwoAgQtAARBAXENACACKAIcKAIEIAIoAhwoAgAoAjQ2AjQgAigCHCgCBEEBOgAECyACQQA2AiwLIAIoAiwhACACQTBqJAAgAAsHACAAKAIAC4wBAQF/IwBBIGsiAiQAIAIgADYCGCACIAE2AhQgAkEANgIQAkAgAigCFEUEQCACQQA2AhwMAQsgAiACKAIUEBk2AgwgAigCDEUEQCACKAIQQQ5BABAVIAJBADYCHAwBCyACKAIMIAIoAhggAigCFBAaGiACIAIoAgw2AhwLIAIoAhwhACACQSBqJAAgAAsYAEGonAFCADcCAEGwnAFBADYCAEGonAELiAEBAX8jAEEgayIDJAAgAyAANgIUIAMgATYCECADIAI3AwgCQAJAIAMoAhQoAiRBAUYEQCADKQMIQv///////////wBYDQELIAMoAhRBDGpBEkEAEBUgA0J/NwMYDAELIAMgAygCFCADKAIQIAMpAwhBCxAiNwMYCyADKQMYIQIgA0EgaiQAIAILcwEBfyMAQSBrIgEkACABIAA2AhggAUIINwMQIAEgASgCGCkDECABKQMQfDcDCAJAIAEpAwggASgCGCkDEFQEQCABKAIYQQA6AAAgAUF/NgIcDAELIAEgASgCGCABKQMIEC02AhwLIAEoAhwaIAFBIGokAAsIAEEBQQwQewuWAQEBfyMAQSBrIgIgADYCGCACIAE3AxACQAJAAkAgAigCGC0AAEEBcUUNACACKAIYKQMQIAIpAxB8IAIpAxBUDQAgAigCGCkDECACKQMQfCACKAIYKQMIWA0BCyACKAIYQQA6AAAgAkEANgIcDAELIAIgAigCGCgCBCACKAIYKQMQp2o2AgwgAiACKAIMNgIcCyACKAIcCwcAIAAoAigLuQIBAX8jAEEQayICIAA2AgggAiABNgIEAkAgAigCCEGAAUkEQCACKAIEIAIoAgg6AAAgAkEBNgIMDAELIAIoAghBgBBJBEAgAigCBCACKAIIQQZ2QR9xQcABcjoAACACKAIEIAIoAghBP3FBgAFyOgABIAJBAjYCDAwBCyACKAIIQYCABEkEQCACKAIEIAIoAghBDHZBD3FB4AFyOgAAIAIoAgQgAigCCEEGdkE/cUGAAXI6AAEgAigCBCACKAIIQT9xQYABcjoAAiACQQM2AgwMAQsgAigCBCACKAIIQRJ2QQdxQfABcjoAACACKAIEIAIoAghBDHZBP3FBgAFyOgABIAIoAgQgAigCCEEGdkE/cUGAAXI6AAIgAigCBCACKAIIQT9xQYABcjoAAyACQQQ2AgwLIAIoAgwLXwEBfyMAQRBrIgEgADYCCAJAIAEoAghBgAFJBEAgAUEBNgIMDAELIAEoAghBgBBJBEAgAUECNgIMDAELIAEoAghBgIAESQRAIAFBAzYCDAwBCyABQQQ2AgwLIAEoAgwL/gIBAX8jAEEwayIEJAAgBCAANgIoIAQgATYCJCAEIAI2AiAgBCADNgIcIAQgBCgCKDYCGAJAIAQoAiRFBEAgBCgCIARAIAQoAiBBADYCAAsgBEEANgIsDAELIARBATYCECAEQQA2AgwDQCAEKAIMIAQoAiRPRQRAIAQgBCgCGCAEKAIMai0AAEEBdEGwzwBqLwEAENEBIAQoAhBqNgIQIAQgBCgCDEEBajYCDAwBCwsgBCAEKAIQEBkiADYCFCAARQRAIAQoAhxBDkEAEBUgBEEANgIsDAELIARBADYCCCAEQQA2AgwDQCAEKAIMIAQoAiRPRQRAIAQgBCgCGCAEKAIMai0AAEEBdEGwzwBqLwEAIAQoAhQgBCgCCGoQ0AEgBCgCCGo2AgggBCAEKAIMQQFqNgIMDAELCyAEKAIUIAQoAhBBAWtqQQA6AAAgBCgCIARAIAQoAiAgBCgCEEEBazYCAAsgBCAEKAIUNgIsCyAEKAIsIQAgBEEwaiQAIAALBwAgACgCGAvyCwEBfyMAQSBrIgMgADYCHCADIAE2AhggAyACNgIUIAMgAygCHEEIdkGA/gNxIAMoAhxBGHZqIAMoAhxBgP4DcUEIdGogAygCHEH/AXFBGHRqNgIQIAMgAygCEEF/czYCEANAQQAhACADKAIUBH8gAygCGEEDcUEARwVBAAtBAXEEQCADKAIQQRh2IQAgAyADKAIYIgFBAWo2AhggAyABLQAAIABzQQJ0QbAvaigCACADKAIQQQh0czYCECADIAMoAhRBf2o2AhQMAQsLIAMgAygCGDYCDANAIAMoAhRBIElFBEAgAyADKAIMIgBBBGo2AgwgAyAAKAIAIAMoAhBzNgIQIAMgAygCEEEYdkECdEGwxwBqKAIAIAMoAhBBEHZB/wFxQQJ0QbA/aigCACADKAIQQf8BcUECdEGwL2ooAgAgAygCEEEIdkH/AXFBAnRBsDdqKAIAc3NzNgIQIAMgAygCDCIAQQRqNgIMIAMgACgCACADKAIQczYCECADIAMoAhBBGHZBAnRBsMcAaigCACADKAIQQRB2Qf8BcUECdEGwP2ooAgAgAygCEEH/AXFBAnRBsC9qKAIAIAMoAhBBCHZB/wFxQQJ0QbA3aigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbDHAGooAgAgAygCEEEQdkH/AXFBAnRBsD9qKAIAIAMoAhBB/wFxQQJ0QbAvaigCACADKAIQQQh2Qf8BcUECdEGwN2ooAgBzc3M2AhAgAyADKAIMIgBBBGo2AgwgAyAAKAIAIAMoAhBzNgIQIAMgAygCEEEYdkECdEGwxwBqKAIAIAMoAhBBEHZB/wFxQQJ0QbA/aigCACADKAIQQf8BcUECdEGwL2ooAgAgAygCEEEIdkH/AXFBAnRBsDdqKAIAc3NzNgIQIAMgAygCDCIAQQRqNgIMIAMgACgCACADKAIQczYCECADIAMoAhBBGHZBAnRBsMcAaigCACADKAIQQRB2Qf8BcUECdEGwP2ooAgAgAygCEEH/AXFBAnRBsC9qKAIAIAMoAhBBCHZB/wFxQQJ0QbA3aigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbDHAGooAgAgAygCEEEQdkH/AXFBAnRBsD9qKAIAIAMoAhBB/wFxQQJ0QbAvaigCACADKAIQQQh2Qf8BcUECdEGwN2ooAgBzc3M2AhAgAyADKAIMIgBBBGo2AgwgAyAAKAIAIAMoAhBzNgIQIAMgAygCEEEYdkECdEGwxwBqKAIAIAMoAhBBEHZB/wFxQQJ0QbA/aigCACADKAIQQf8BcUECdEGwL2ooAgAgAygCEEEIdkH/AXFBAnRBsDdqKAIAc3NzNgIQIAMgAygCDCIAQQRqNgIMIAMgACgCACADKAIQczYCECADIAMoAhBBGHZBAnRBsMcAaigCACADKAIQQRB2Qf8BcUECdEGwP2ooAgAgAygCEEH/AXFBAnRBsC9qKAIAIAMoAhBBCHZB/wFxQQJ0QbA3aigCAHNzczYCECADIAMoAhRBIGs2AhQMAQsLA0AgAygCFEEESUUEQCADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbDHAGooAgAgAygCEEEQdkH/AXFBAnRBsD9qKAIAIAMoAhBB/wFxQQJ0QbAvaigCACADKAIQQQh2Qf8BcUECdEGwN2ooAgBzc3M2AhAgAyADKAIUQQRrNgIUDAELCyADIAMoAgw2AhggAygCFARAA0AgAygCEEEYdiEAIAMgAygCGCIBQQFqNgIYIAMgAS0AACAAc0ECdEGwL2ooAgAgAygCEEEIdHM2AhAgAyADKAIUQX9qIgA2AhQgAA0ACwsgAyADKAIQQX9zNgIQIAMoAhBBCHZBgP4DcSADKAIQQRh2aiADKAIQQYD+A3FBCHRqIAMoAhBB/wFxQRh0aguTCwEBfyMAQSBrIgMgADYCHCADIAE2AhggAyACNgIUIAMgAygCHDYCECADIAMoAhBBf3M2AhADQEEAIQAgAygCFAR/IAMoAhhBA3FBAEcFQQALQQFxBEAgAygCECEAIAMgAygCGCIBQQFqNgIYIAMgAS0AACAAc0H/AXFBAnRBsA9qKAIAIAMoAhBBCHZzNgIQIAMgAygCFEF/ajYCFAwBCwsgAyADKAIYNgIMA0AgAygCFEEgSUUEQCADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAhRBIGs2AhQMAQsLA0AgAygCFEEESUUEQCADIAMoAgwiAEEEajYCDCADIAAoAgAgAygCEHM2AhAgAyADKAIQQRh2QQJ0QbAPaigCACADKAIQQRB2Qf8BcUECdEGwF2ooAgAgAygCEEH/AXFBAnRBsCdqKAIAIAMoAhBBCHZB/wFxQQJ0QbAfaigCAHNzczYCECADIAMoAhRBBGs2AhQMAQsLIAMgAygCDDYCGCADKAIUBEADQCADKAIQIQAgAyADKAIYIgFBAWo2AhggAyABLQAAIABzQf8BcUECdEGwD2ooAgAgAygCEEEIdnM2AhAgAyADKAIUQX9qIgA2AhQgAA0ACwsgAyADKAIQQX9zNgIQIAMoAhALhgEBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhACQCADKAIURQRAIANBADYCHAwBCyADQQE2AgwgAy0ADARAIAMgAygCGCADKAIUIAMoAhAQ1QE2AhwMAQsgAyADKAIYIAMoAhQgAygCEBDUATYCHAsgAygCHCEAIANBIGokACAACwcAIAAoAhALIgEBfyMAQRBrIgEgADYCDCABKAIMIgAgACgCMEEBajYCMAsUACAAIAGtIAKtQiCGhCADIAQQegsTAQF+IAAQSiIBQiCIpxAAIAGnCxIAIAAgAa0gAq1CIIaEIAMQKAsfAQF+IAAgASACrSADrUIghoQQLyIEQiCIpxAAIASnCxUAIAAgAa0gAq1CIIaEIAMgBBC/AQsUACAAIAEgAq0gA61CIIaEIAQQeQsVACAAIAGtIAKtQiCGhCADIAQQ8AELFwEBfiAAIAEgAhBuIgNCIIinEAAgA6cLFgEBfiAAIAEQkQIiAkIgiKcQACACpwsTACAAIAGtIAKtQiCGhCADEMABCyABAX4gACABIAKtIAOtQiCGhBCSAiIEQiCIpxAAIASnCxMAIAAgAa0gAq1CIIaEIAMQkwILFQAgACABrSACrUIghoQgAyAEEJYCCxcAIAAgAa0gAq1CIIaEIAMgBCAFEJ8BCxcAIAAgAa0gAq1CIIaEIAMgBCAFEJ4BCxoBAX4gACABIAIgAxCaAiIEQiCIpxAAIASnCxgBAX4gACABIAIQnAIiA0IgiKcQACADpwsRACAAIAGtIAKtQiCGhBChAQsQACMAIABrQXBxIgAkACAACwYAIAAkAAsEACMAC8QBAQF/IwBBMGsiASQAIAEgADYCKCABQQA2AiQgAUIANwMYAkADQCABKQMYIAEoAigpAzBUBEAgASABKAIoIAEpAxhBACABQRdqIAFBEGoQngE2AgwgASgCDEF/RgRAIAFBfzYCLAwDBQJAIAEtABdBA0cNACABKAIQQRB2QYDgA3FBgMACRw0AIAEgASgCJEEBajYCJAsgASABKQMYQgF8NwMYDAILAAsLIAEgASgCJDYCLAsgASgCLCEAIAFBMGokACAAC4IBAgF/AX4jAEEgayIEJAAgBCAANgIYIAQgATYCFCAEIAI2AhAgBCADNgIMIAQgBCgCGCAEKAIUIAQoAhAQbiIFNwMAAkAgBUIAUwRAIARBfzYCHAwBCyAEIAQoAhggBCkDACAEKAIQIAQoAgwQejYCHAsgBCgCHCEAIARBIGokACAAC9IDAQF/IwBBIGsiBCQAIAQgADYCGCAEIAE3AxAgBCACNgIMIAQgAzYCCAJAAkAgBCkDECAEKAIYKQMwVARAIAQoAghBCU0NAQsgBCgCGEEIakESQQAQFSAEQX82AhwMAQsgBCgCGCgCGEECcQRAIAQoAhhBCGpBGUEAEBUgBEF/NgIcDAELIAQoAgwQwwJBAXFFBEAgBCgCGEEIakEQQQAQFSAEQX82AhwMAQsgBCAEKAIYKAJAIAQpAxCnQQR0ajYCBCAEAn9BfyAEKAIEKAIARQ0AGiAEKAIEKAIAKAIQCzYCAAJAIAQoAgwgBCgCAEYEQCAEKAIEKAIEBEAgBCgCBCgCBCIAIAAoAgBBfnE2AgAgBCgCBCgCBEEAOwFQIAQoAgQoAgQoAgBFBEAgBCgCBCgCBBA6IAQoAgRBADYCBAsLDAELIAQoAgQoAgRFBEAgBCgCBCgCABBGIQAgBCgCBCAANgIEIABFBEAgBCgCGEEIakEOQQAQFSAEQX82AhwMAwsLIAQoAgQoAgQgBCgCDDYCECAEKAIEKAIEIAQoAgg7AVAgBCgCBCgCBCIAIAAoAgBBAXI2AgALIARBADYCHAsgBCgCHCEAIARBIGokACAAC5ACAQF/IwBBEGsiAiQAIAIgADYCCCACIAE2AgQCQAJAAkAgAigCCC8BCiACKAIELwEKSA0AIAIoAggoAhAgAigCBCgCEEcNACACKAIIKAIUIAIoAgQoAhRHDQAgAigCCCgCMCACKAIEKAIwEIcBDQELIAJBfzYCDAwBCwJAAkAgAigCCCgCGCACKAIEKAIYRw0AIAIoAggpAyAgAigCBCkDIFINACACKAIIKQMoIAIoAgQpAyhRDQELAkACQCACKAIELwEMQQhxRQ0AIAIoAgQoAhgNACACKAIEKQMgQgBSDQAgAigCBCkDKFANAQsgAkF/NgIMDAILCyACQQA2AgwLIAIoAgwhACACQRBqJAAgAAv6AwEBfyMAQdAAayIEJAAgBCAANgJIIAQgATcDQCAEIAI2AjwgBCADNgI4AkAgBCgCSBAwQhZUBEAgBCgCOEEVQQAQFSAEQQA2AkwMAQsjAEEQayIAIAQoAkg2AgwgBAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALNwMIIAQoAkhCBBAfGiAEKAJIECsEQCAEKAI4QQFBABAVIARBADYCTAwBCyAEIAQoAkgQHkH//wNxrTcDKCAEIAQoAkgQHkH//wNxrTcDICAEKQMgIAQpAyhSBEAgBCgCOEETQQAQFSAEQQA2AkwMAQsgBCAEKAJIECutNwMYIAQgBCgCSBArrTcDECAEKQMQIAQpAxh8IAQpAxBUBEAgBCgCOEEEQRYQFSAEQQA2AkwMAQsgBCkDECAEKQMYfCAEKQNAIAQpAwh8VgRAIAQoAjhBFUEAEBUgBEEANgJMDAELAkAgBCgCPEEEcUUNACAEKQMQIAQpAxh8IAQpA0AgBCkDCHxRDQAgBCgCOEEVQQAQFSAEQQA2AkwMAQsgBCAEKQMgIAQoAjgQxgEiADYCNCAARQRAIARBADYCTAwBCyAEKAI0QQA6ACwgBCgCNCAEKQMYNwMYIAQoAjQgBCkDEDcDICAEIAQoAjQ2AkwLIAQoAkwhACAEQdAAaiQAIAAL1QoBAX8jAEGwAWsiBSQAIAUgADYCqAEgBSABNgKkASAFIAI3A5gBIAUgAzYClAEgBSAENgKQASMAQRBrIgAgBSgCpAE2AgwgBQJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALNwMYIAUoAqQBQgQQHxogBSAFKAKkARAeQf//A3E2AhAgBSAFKAKkARAeQf//A3E2AgggBSAFKAKkARAxNwM4AkAgBSkDOEL///////////8AVgRAIAUoApABQQRBFhAVIAVBADYCrAEMAQsgBSkDOEI4fCAFKQMYIAUpA5gBfFYEQCAFKAKQAUEVQQAQFSAFQQA2AqwBDAELAkACQCAFKQM4IAUpA5gBVA0AIAUpAzhCOHwgBSkDmAECfiMAQRBrIgAgBSgCpAE2AgwgACgCDCkDCAt8Vg0AIAUoAqQBIAUpAzggBSkDmAF9EC0aIAVBADoAFwwBCyAFKAKoASAFKQM4QQAQKEEASARAIAUoApABIAUoAqgBEBggBUEANgKsAQwCCyAFIAUoAqgBQjggBUFAayAFKAKQARBBIgA2AqQBIABFBEAgBUEANgKsAQwCCyAFQQE6ABcLIAUoAqQBQgQQHygAAEHQlpkwRwRAIAUoApABQRVBABAVIAUtABdBAXEEQCAFKAKkARAXCyAFQQA2AqwBDAELIAUgBSgCpAEQMTcDMAJAIAUoApQBQQRxRQ0AIAUpAzAgBSkDOHxCDHwgBSkDmAEgBSkDGHxRDQAgBSgCkAFBFUEAEBUgBS0AF0EBcQRAIAUoAqQBEBcLIAVBADYCrAEMAQsgBSgCpAFCBBAfGiAFIAUoAqQBECs2AgwgBSAFKAKkARArNgIEIAUoAhBB//8DRgRAIAUgBSgCDDYCEAsgBSgCCEH//wNGBEAgBSAFKAIENgIICwJAIAUoApQBQQRxRQ0AIAUoAgggBSgCBEYEQCAFKAIQIAUoAgxGDQELIAUoApABQRVBABAVIAUtABdBAXEEQCAFKAKkARAXCyAFQQA2AqwBDAELAkAgBSgCEEUEQCAFKAIIRQ0BCyAFKAKQAUEBQQAQFSAFLQAXQQFxBEAgBSgCpAEQFwsgBUEANgKsAQwBCyAFIAUoAqQBEDE3AyggBSAFKAKkARAxNwMgIAUpAyggBSkDIFIEQCAFKAKQAUEBQQAQFSAFLQAXQQFxBEAgBSgCpAEQFwsgBUEANgKsAQwBCyAFIAUoAqQBEDE3AzAgBSAFKAKkARAxNwOAAQJ/IwBBEGsiACAFKAKkATYCDCAAKAIMLQAAQQFxRQsEQCAFKAKQAUEUQQAQFSAFLQAXQQFxBEAgBSgCpAEQFwsgBUEANgKsAQwBCyAFLQAXQQFxBEAgBSgCpAEQFwsCQCAFKQOAAUL///////////8AWARAIAUpA4ABIAUpAzB8IAUpA4ABWg0BCyAFKAKQAUEEQRYQFSAFQQA2AqwBDAELIAUpA4ABIAUpAzB8IAUpA5gBIAUpAzh8VgRAIAUoApABQRVBABAVIAVBADYCrAEMAQsCQCAFKAKUAUEEcUUNACAFKQOAASAFKQMwfCAFKQOYASAFKQM4fFENACAFKAKQAUEVQQAQFSAFQQA2AqwBDAELIAUpAyggBSkDMEIugFYEQCAFKAKQAUEVQQAQFSAFQQA2AqwBDAELIAUgBSkDKCAFKAKQARDGASIANgKMASAARQRAIAVBADYCrAEMAQsgBSgCjAFBAToALCAFKAKMASAFKQMwNwMYIAUoAowBIAUpA4ABNwMgIAUgBSgCjAE2AqwBCyAFKAKsASEAIAVBsAFqJAAgAAviCwEBfyMAQfAAayIEJAAgBCAANgJoIAQgATYCZCAEIAI3A1ggBCADNgJUIwBBEGsiACAEKAJkNgIMIAQCfiAAKAIMLQAAQQFxBEAgACgCDCkDEAwBC0IACzcDMAJAIAQoAmQQMEIWVARAIAQoAlRBE0EAEBUgBEEANgJsDAELIAQoAmRCBBAfKAAAQdCWlTBHBEAgBCgCVEETQQAQFSAEQQA2AmwMAQsCQAJAIAQpAzBCFFQNACMAQRBrIgAgBCgCZDYCDCAAKAIMKAIEIAQpAzCnakFsaigAAEHQlpk4Rw0AIAQoAmQgBCkDMEIUfRAtGiAEIAQoAmgoAgAgBCgCZCAEKQNYIAQoAmgoAhQgBCgCVBDzATYCUAwBCyAEKAJkIAQpAzAQLRogBCAEKAJkIAQpA1ggBCgCaCgCFCAEKAJUEPIBNgJQCyAEKAJQRQRAIARBADYCbAwBCyAEKAJkIAQpAzBCFHwQLRogBCAEKAJkEB47AU4gBCgCUCkDICAEKAJQKQMYfCAEKQNYIAQpAzB8VgRAIAQoAlRBFUEAEBUgBCgCUBAlIARBADYCbAwBCwJAIAQvAU5FBEAgBCgCaCgCBEEEcUUNAQsgBCgCZCAEKQMwQhZ8EC0aIAQgBCgCZBAwNwMgAkAgBCkDICAELwFOrVoEQCAEKAJoKAIEQQRxRQ0BIAQpAyAgBC8BTq1RDQELIAQoAlRBFUEAEBUgBCgCUBAlIARBADYCbAwCCyAELwFOBEAgBCgCZCAELwFOrRAfIAQvAU5BACAEKAJUEFEhACAEKAJQIAA2AiggAEUEQCAEKAJQECUgBEEANgJsDAMLCwsCQCAEKAJQKQMgIAQpA1haBEAgBCgCZCAEKAJQKQMgIAQpA1h9EC0aIAQgBCgCZCAEKAJQKQMYEB8iADYCHCAARQRAIAQoAlRBFUEAEBUgBCgCUBAlIARBADYCbAwDCyAEIAQoAhwgBCgCUCkDGBAqIgA2AiwgAEUEQCAEKAJUQQ5BABAVIAQoAlAQJSAEQQA2AmwMAwsMAQsgBEEANgIsIAQoAmgoAgAgBCgCUCkDIEEAEChBAEgEQCAEKAJUIAQoAmgoAgAQGCAEKAJQECUgBEEANgJsDAILIAQoAmgoAgAQSiAEKAJQKQMgUgRAIAQoAlRBE0EAEBUgBCgCUBAlIARBADYCbAwCCwsgBCAEKAJQKQMYNwM4IARCADcDQANAAkAgBCkDOEIAWA0AIARBADoAGyAEKQNAIAQoAlApAwhRBEAgBCgCUC0ALEEBcQ0BIAQpAzhCLlQNASAEKAJQQoCABCAEKAJUEMUBQQFxRQRAIAQoAlAQJSAEKAIsEBcgBEEANgJsDAQLIARBAToAGwsQjgMhACAEKAJQKAIAIAQpA0CnQQR0aiAANgIAAkAgAARAIAQgBCgCUCgCACAEKQNAp0EEdGooAgAgBCgCaCgCACAEKAIsQQAgBCgCVBDCASICNwMQIAJCAFkNAQsCQCAELQAbQQFxRQ0AIwBBEGsiACAEKAJUNgIMIAAoAgwoAgBBE0cNACAEKAJUQRVBABAVCyAEKAJQECUgBCgCLBAXIARBADYCbAwDCyAEIAQpA0BCAXw3A0AgBCAEKQM4IAQpAxB9NwM4DAELCwJAIAQpA0AgBCgCUCkDCFEEQCAEKQM4QgBYDQELIAQoAlRBFUEAEBUgBCgCLBAXIAQoAlAQJSAEQQA2AmwMAQsgBCgCaCgCBEEEcQRAAkAgBCgCLARAIAQgBCgCLBBIQQFxOgAPDAELIAQgBCgCaCgCABBKNwMAIAQpAwBCAFMEQCAEKAJUIAQoAmgoAgAQGCAEKAJQECUgBEEANgJsDAMLIAQgBCkDACAEKAJQKQMgIAQoAlApAxh8UToADwsgBC0AD0EBcUUEQCAEKAJUQRVBABAVIAQoAiwQFyAEKAJQECUgBEEANgJsDAILCyAEKAIsEBcgBCAEKAJQNgJsCyAEKAJsIQAgBEHwAGokACAAC9cBAQF/IwBBIGsiAiQAIAIgADYCGCACIAE2AhQgAkGJmAE2AhAgAkEENgIMAkACQCACKAIUIAIoAgxPBEAgAigCDA0BCyACQQA2AhwMAQsgAiACKAIYQX9qNgIIA0ACQCACIAIoAghBAWogAigCEC0AACACKAIYIAIoAghrIAIoAhQgAigCDGtqEKYBIgA2AgggAEUNACACKAIIQQFqIAIoAhBBAWogAigCDEEBaxBTDQEgAiACKAIINgIcDAILCyACQQA2AhwLIAIoAhwhACACQSBqJAAgAAvBBgEBfyMAQeAAayICJAAgAiAANgJYIAIgATcDUAJAIAIpA1BCFlQEQCACKAJYQQhqQRNBABAVIAJBADYCXAwBCyACAn4gAikDUEKqgARUBEAgAikDUAwBC0KqgAQLNwMwIAIoAlgoAgBCACACKQMwfUECEChBAEgEQCMAQRBrIgAgAigCWCgCADYCDCACIAAoAgxBDGo2AggCQAJ/IwBBEGsiACACKAIINgIMIAAoAgwoAgBBBEYLBEAjAEEQayIAIAIoAgg2AgwgACgCDCgCBEEWRg0BCyACKAJYQQhqIAIoAggQRCACQQA2AlwMAgsLIAIgAigCWCgCABBKIgE3AzggAUIAUwRAIAIoAlhBCGogAigCWCgCABAYIAJBADYCXAwBCyACIAIoAlgoAgAgAikDMEEAIAIoAlhBCGoQQSIANgIMIABFBEAgAkEANgJcDAELIAJCfzcDICACQQA2AkwgAikDMEKqgARaBEAgAigCDEIUEC0aCyACQRBqQRNBABAVIAIgAigCDEIAEB82AkQDQAJAIAIgAigCRCACKAIMEDBCEn2nEPUBIgA2AkQgAEUNACACKAIMIAIoAkQCfyMAQRBrIgAgAigCDDYCDCAAKAIMKAIEC2usEC0aIAIgAigCWCACKAIMIAIpAzggAkEQahD0ASIANgJIIAAEQAJAIAIoAkwEQCACKQMgQgBXBEAgAiACKAJYIAIoAkwgAkEQahBlNwMgCyACIAIoAlggAigCSCACQRBqEGU3AygCQCACKQMgIAIpAyhTBEAgAigCTBAlIAIgAigCSDYCTCACIAIpAyg3AyAMAQsgAigCSBAlCwwBCyACIAIoAkg2AkwCQCACKAJYKAIEQQRxBEAgAiACKAJYIAIoAkwgAkEQahBlNwMgDAELIAJCADcDIAsLIAJBADYCSAsgAiACKAJEQQFqNgJEIAIoAgwgAigCRAJ/IwBBEGsiACACKAIMNgIMIAAoAgwoAgQLa6wQLRoMAQsLIAIoAgwQFyACKQMgQgBTBEAgAigCWEEIaiACQRBqEEQgAigCTBAlIAJBADYCXAwBCyACIAIoAkw2AlwLIAIoAlwhACACQeAAaiQAIAALvwUBAX8jAEHwAGsiAyQAIAMgADYCaCADIAE2AmQgAyACNgJgIANBIGoiABA8AkAgAygCaCAAEDlBAEgEQCADKAJgIAMoAmgQGCADQQA2AmwMAQsgAykDIEIEg1AEQCADKAJgQQRBigEQFSADQQA2AmwMAQsgAyADKQM4NwMYIAMgAygCaCADKAJkIAMoAmAQZiIANgJcIABFBEAgA0EANgJsDAELAkAgAykDGFBFDQAgAygCaBCUAUEBcUUNACADIAMoAlw2AmwMAQsgAyADKAJcIAMpAxgQ9gEiADYCWCAARQRAIAMoAmAgAygCXEEIahBEIwBBEGsiACADKAJoNgIMIAAoAgwiACAAKAIwQQFqNgIwIAMoAlwQPyADQQA2AmwMAQsgAygCXCADKAJYKAIANgJAIAMoAlwgAygCWCkDCDcDMCADKAJcIAMoAlgpAxA3AzggAygCXCADKAJYKAIoNgIgIAMoAlgQFiADKAJcKAJQIAMoAlwpAzAgAygCXEEIahD9AiADQgA3AxADQCADKQMQIAMoAlwpAzBUBEAgAyADKAJcKAJAIAMpAxCnQQR0aigCACgCMEEAQQAgAygCYBBHNgIMIAMoAgxFBEAjAEEQayIAIAMoAmg2AgwgACgCDCIAIAAoAjBBAWo2AjAgAygCXBA/IANBADYCbAwDCyADKAJcKAJQIAMoAgwgAykDEEEIIAMoAlxBCGoQfUEBcUUEQAJAIAMoAlwoAghBCkYEQCADKAJkQQRxRQ0BCyADKAJgIAMoAlxBCGoQRCMAQRBrIgAgAygCaDYCDCAAKAIMIgAgACgCMEEBajYCMCADKAJcED8gA0EANgJsDAQLCyADIAMpAxBCAXw3AxAMAQsLIAMoAlwgAygCXCgCFDYCGCADIAMoAlw2AmwLIAMoAmwhACADQfAAaiQAIAALwQEBAX8jAEHQAGsiAiQAIAIgADYCSCACIAE2AkQgAkEIaiIAEDwCQCACKAJIIAAQOQRAIwBBEGsiACACKAJINgIMIAIgACgCDEEMajYCBCMAQRBrIgAgAigCBDYCDAJAIAAoAgwoAgBBBUcNACMAQRBrIgAgAigCBDYCDCAAKAIMKAIEQSxHDQAgAkEANgJMDAILIAIoAkQgAigCBBBEIAJBfzYCTAwBCyACQQE2AkwLIAIoAkwhACACQdAAaiQAIAAL6gEBAX8jAEEwayIDJAAgAyAANgIoIAMgATYCJCADIAI2AiAjAEEQayIAIANBCGoiATYCDCAAKAIMQQA2AgAgACgCDEEANgIEIAAoAgxBADYCCCADIAMoAiggARD7ASIANgIYAkAgAEUEQCADKAIgIANBCGoiABCTASAAEDggA0EANgIsDAELIAMgAygCGCADKAIkIANBCGoQkgEiADYCHCAARQRAIAMoAhgQHCADKAIgIANBCGoiABCTASAAEDggA0EANgIsDAELIANBCGoQOCADIAMoAhw2AiwLIAMoAiwhACADQTBqJAAgAAvIAgEBfyMAQRBrIgEkACABIAA2AgggAUHYABAZNgIEAkAgASgCBEUEQCABKAIIQQ5BABAVIAFBADYCDAwBCyABKAIIEIEDIQAgASgCBCAANgJQIABFBEAgASgCBBAWIAFBADYCDAwBCyABKAIEQQA2AgAgASgCBEEANgIEIwBBEGsiACABKAIEQQhqNgIMIAAoAgxBADYCACAAKAIMQQA2AgQgACgCDEEANgIIIAEoAgRBADYCGCABKAIEQQA2AhQgASgCBEEANgIcIAEoAgRBADYCJCABKAIEQQA2AiAgASgCBEEAOgAoIAEoAgRCADcDOCABKAIEQgA3AzAgASgCBEEANgJAIAEoAgRBADYCSCABKAIEQQA2AkQgASgCBEEANgJMIAEoAgRBADYCVCABIAEoAgQ2AgwLIAEoAgwhACABQRBqJAAgAAuBAQEBfyMAQSBrIgIkACACIAA2AhggAkIANwMQIAJCfzcDCCACIAE2AgQCQAJAIAIoAhgEQCACKQMIQn9ZDQELIAIoAgRBEkEAEBUgAkEANgIcDAELIAIgAigCGCACKQMQIAIpAwggAigCBBD/ATYCHAsgAigCHCEAIAJBIGokACAAC80BAQJ/IwBBIGsiASQAIAEgADYCGCAB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CyAAIAFBf2oiAWoiAi0AAEEvRw0ACyACC6kBAQN/AkAgAC0AACICRQ0AA0AgAS0AACIERQRAIAIhAwwCCwJAIAIgBEYNACACQSByIAIgAkG/f2pBGkkbIAEtAAAiAkEgciACIAJBv39qQRpJG0YNACAALQAAIQMMAgsgAUEBaiEBIAAtAAEhAiAAQQFqIQAgAg0ACwsgA0H/AXEiAEEgciAAIABBv39qQRpJGyABLQAAIgBBIHIgACAAQb9/akEaSRtrC+gDAQN/IwBBsAFrIgEkACABIAA2AqgBIAEoAqgBEDgCQAJAIAEoAqgBKAIAQQBOBEAgASgCqAEoAgBBoA4oAgBIDQELIAEgASgCqAEoAgA2AhAgAUEgakG8lwEgAUEQahBvIAFBADYCpAEgASABQSBqNgKgAQwBCyABIAEoAqgBKAIAQQJ0QaANaigCADYCpAECQAJAAkACQCABKAKoASgCAEECdEGwDmooAgBBf2oOAgABAgsgASABKAKoASgCBEGQmgEoAgAQpAI2AqABDAILIwBBEGsiACABKAKoASgCBDYCDCABQQAgACgCDGtBAnRB2NQAaigCADYCoAEMAQsgAUEANgKgAQsLAkAgASgCoAFFBEAgASABKAKkATYCrAEMAQsgASABKAKgARAsAn8gASgCpAEEQCABKAKkARAsQQJqDAELQQALakEBahAZIgA2AhwgAEUEQCABQdgNKAIANgKsAQwBCyABKAIcIQACfyABKAKkAQRAIAEoAqQBDAELQdSXAQshAkHVlwFB1JcBIAEoAqQBGyEDIAEgASgCoAE2AgggASADNgIEIAEgAjYCACAAQc2XASABEG8gASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAtxAQN/AkACQANAIAAgAkHQiAFqLQAARwRAQdcAIQMgAkEBaiICQdcARw0BDAILCyACIgMNAEGwiQEhAAwBC0GwiQEhAgNAIAItAAAhBCACQQFqIgAhAiAEDQAgACECIANBf2oiAw0ACwsgASgCFBogAAszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGhogACAAKAIUIAFqNgIUIAILigEBAn8jAEGgAWsiAyQAIANBCGpBuIcBQZABEBoaIAMgADYCNCADIAA2AhwgA0F+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QQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEACwYAQaShAQsGAEGgoQELBgBBmKEBC9kDAgJ/An4jAEEgayICJAACQCABQv///////////wCDIgVCgICAgICAwP9DfCAFQoCAgICAgMCAvH98VARAIAFCBIYgAEI8iIQhBCAAQv//////////D4MiAEKBgICAgICAgAhaBEAgBEKBgICAgICAgMAAfCEEDAILIARCgICAgICAgIBAfSEEIABCgICAgICAgIAIhUIAUg0BIARCAYMgBHwhBAwBCyAAUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIAFCBIYgAEI8iIRC/////////wODQoCAgICAgID8/wCEIQQMAQtCgICAgICAgPj/ACEEIAVC////////v//DAFYNAEIAIQQgBUIwiKciA0GR9wBJDQAgAkEQaiAAIAFC////////P4NCgICAgICAwACEIgQgA0H/iH9qELMCIAIgACAEQYH4ACADaxCyAiACKQMIQgSGIAIpAwAiAEI8iIQhBCACKQMQIAIpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIARCAXwhBAwBCyAAQoCAgICAgICACIVCAFINACAEQgGDIAR8IQQLIAJBIGokACAEIAFCgICAgICAgICAf4OEvwtQAQF+AkAgA0HAAHEEQCACIANBQGqtiCEBQgAhAgwBCyADRQ0AIAJBwAAgA2uthiABIAOtIgSIhCEBIAIgBIghAgsgACABNwMAIAAgAjcDCAtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAuLAgACQCAABH8gAUH/AE0NAQJAQZCaASgCACgCAEUEQCABQYB/cUGAvwNGDQMMAQsgAUH/D00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAg8LIAFBgLADT0EAIAFBgEBxQYDAA0cbRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCAfGpB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0G0nAFBGTYCAEF/BUEBCw8LIAAgAToAAEEBC74CAQF/IwBBwMAAayIDJAAgAyAANgK4QCADIAE2ArRAIAMgAjcDqEACQCADKAK0QBBJQQBIBEAgAygCuEBBCGogAygCtEAQGCADQX82ArxADAELIANBADYCDCADQgA3AxADQAJAIAMgAygCtEAgA0EgakKAwAAQLyICNwMYIAJCAFcNACADKAK4QCADQSBqIAMpAxgQNkEASARAIANBfzYCDAUgAykDGEKAwABSDQIgAygCuEAoAlRFDQIgAykDqEBCAFcNAiADIAMpAxggAykDEHw3AxAgAygCuEAoAlQgAykDELkgAykDqEC5oxBYDAILCwsgAykDGEIAUwRAIAMoArhAQQhqIAMoArRAEBggA0F/NgIMCyADKAK0QBAyGiADIAMoAgw2ArxACyADKAK8QCEAIANBwMAAaiQAIAALqgEBAX8jAEEwayIDJAAgAyAANgIoIAMgATYCJCADIAI3AxggAyADKAIoKAIAEDUiAjcDEAJAIAJCAFMEQCADQX82AiwMAQsgAyADKAIoIAMoAiQgAykDGBCQAyICNwMAIAJCAFMEQCADQX82AiwMAQsgAyADKAIoKAIAEDUiAjcDCCACQgBTBEAgA0F/NgIsDAELIANBADYCLAsgAygCLCEAIANBMGokACAAC/4BAQF/IwBBoMAAayICJAAgAiAANgKYQCACIAE3A5BAIAIgAikDkEC6OQMAAkADQCACKQOQQEIAVgRAIAICfkKAwAAgAikDkEBCgMAAVg0AGiACKQOQQAs+AgwgAigCmEAoAgAgAkEQaiACKAIMrSACKAKYQEEIahBhQQBIBEAgAkF/NgKcQAwDCyACKAKYQCACQRBqIAIoAgytEDZBAEgEQCACQX82ApxADAMFIAIgAikDkEAgAjUCDH03A5BAIAIoAphAKAJUIAIrAwAgAikDkEC6oSACKwMAoxBYDAILAAsLIAJBADYCnEALIAIoApxAIQAgAkGgwABqJAAgAAvnEQIBfwF+IwBBoAFrIgMkACADIAA2ApgBIAMgATYClAEgAyACNgKQAQJAIAMoApQBIANBOGoQOUEASARAIAMoApgBQQhqIAMoApQBEBggA0F/NgKcAQwBCyADKQM4QsAAg1AEQCADIAMpAzhCwACENwM4IANBADsBaAsCQAJAIAMoApABKAIQQX9HBEAgAygCkAEoAhBBfkcNAQsgAy8BaEUNACADKAKQASADLwFoNgIQDAELAkACQCADKAKQASgCEA0AIAMpAzhCBINQDQAgAyADKQM4QgiENwM4IAMgAykDUDcDWAwBCyADIAMpAzhC9////w+DNwM4CwsgAykDOEKAAYNQBEAgAyADKQM4QoABhDcDOCADQQA7AWoLIANBgAI2AiQCQCADKQM4QgSDUARAIAMgAygCJEGACHI2AiQgA0J/NwNwDAELIAMoApABIAMpA1A3AyggAyADKQNQNwNwAkAgAykDOEIIg1AEQAJAAkACQAJAAkACfwJAIAMoApABKAIQQX9HBEAgAygCkAEoAhBBfkcNAQtBCAwBCyADKAKQASgCEAtB//8DcQ4NAgMDAwMDAwMBAwMDAAMLIANClMLk8w83AxAMAwsgA0KDg7D/DzcDEAwCCyADQv////8PNwMQDAELIANCADcDEAsgAykDUCADKQMQVgRAIAMgAygCJEGACHI2AiQLDAELIAMoApABIAMpA1g3AyALCyADIAMoApgBKAIAEDUiBDcDiAEgBEIAUwRAIAMoApgBQQhqIAMoApgBKAIAEBggA0F/NgKcAQwBCyADKAKQASIAIAAvAQxB9/8DcTsBDCADIAMoApgBIAMoApABIAMoAiQQXiIANgIoIABBAEgEQCADQX82ApwBDAELIAMgAy8BaAJ/AkAgAygCkAEoAhBBf0cEQCADKAKQASgCEEF+Rw0BC0EIDAELIAMoApABKAIQC0H//wNxRzoAIiADIAMtACJBAXEEfyADLwFoQQBHBUEAC0EBcToAISADIAMvAWgEfyADLQAhBUEBC0EBcToAICADIAMtACJBAXEEfyADKAKQASgCEEEARwVBAAtBAXE6AB8gAwJ/QQEgAy0AIkEBcQ0AGkEBIAMoApABKAIAQYABcQ0AGiADKAKQAS8BUiADLwFqRwtBAXE6AB4gAyADLQAeQQFxBH8gAy8BakEARwVBAAtBAXE6AB0gAyADLQAeQQFxBH8gAygCkAEvAVJBAEcFQQALQQFxOgAcIAMgAygClAE2AjQjAEEQayIAIAMoAjQ2AgwgACgCDCIAIAAoAjBBAWo2AjAgAy0AHUEBcQRAIAMgAy8BakEAEHciADYCDCAARQRAIAMoApgBQQhqQRhBABAVIAMoAjQQHCADQX82ApwBDAILIAMgAygCmAEgAygCNCADLwFqQQAgAygCmAEoAhwgAygCDBEGACIANgIwIABFBEAgAygCNBAcIANBfzYCnAEMAgsgAygCNBAcIAMgAygCMDYCNAsgAy0AIUEBcQRAIAMgAygCmAEgAygCNCADLwFoEKsBIgA2AjAgAEUEQCADKAI0EBwgA0F/NgKcAQwCCyADKAI0EBwgAyADKAIwNgI0CyADLQAgQQFxBEAgAyADKAKYASADKAI0QQAQqgEiADYCMCAARQRAIAMoAjQQHCADQX82ApwBDAILIAMoAjQQHCADIAMoAjA2AjQLIAMtAB9BAXEEQCADIAMoApgBIAMoAjQgAygCkAEoAhAgAygCkAEvAVAQwgIiADYCMCAARQRAIAMoAjQQHCADQX82ApwBDAILIAMoAjQQHCADIAMoAjA2AjQLIAMtABxBAXEEQCADQQA2AgQCQCADKAKQASgCVARAIAMgAygCkAEoAlQ2AgQMAQsgAygCmAEoAhwEQCADIAMoApgBKAIcNgIECwsgAyADKAKQAS8BUkEBEHciADYCCCAARQRAIAMoApgBQQhqQRhBABAVIAMoAjQQHCADQX82ApwBDAILIAMgAygCmAEgAygCNCADKAKQAS8BUkEBIAMoAgQgAygCCBEGACIANgIwIABFBEAgAygCNBAcIANBfzYCnAEMAgsgAygCNBAcIAMgAygCMDYCNAsgAyADKAKYASgCABA1IgQ3A4ABIARCAFMEQCADKAKYAUEIaiADKAKYASgCABAYIANBfzYCnAEMAQsgAyADKAKYASADKAI0IAMpA3AQtQI2AiwgAygCNCADQThqEDlBAEgEQCADKAKYAUEIaiADKAI0EBggA0F/NgIsCyADIAMoAjQQuwIiADoAIyAAQRh0QRh1QQBIBEAgAygCmAFBCGogAygCNBAYIANBfzYCLAsgAygCNBAcIAMoAixBAEgEQCADQX82ApwBDAELIAMgAygCmAEoAgAQNSIENwN4IARCAFMEQCADKAKYAUEIaiADKAKYASgCABAYIANBfzYCnAEMAQsgAygCmAEoAgAgAykDiAEQqAFBAEgEQCADKAKYAUEIaiADKAKYASgCABAYIANBfzYCnAEMAQsgAykDOELkAINC5ABSBEAgAygCmAFBCGpBFEEAEBUgA0F/NgKcAQwBCyADKAKQASgCAEEgcUUEQAJAIAMpAzhCEINCAFIEQCADKAKQASADKAJgNgIUDAELIAMoApABQRRqEAEaCwsgAygCkAEgAy8BaDYCECADKAKQASADKAJkNgIYIAMoApABIAMpA1A3AyggAygCkAEgAykDeCADKQOAAX03AyAgAygCkAEgAygCkAEvAQxB+f8DcSADLQAjQQF0cjsBDCADKAKQASADKAIkQYAIcUEARxCKAyADIAMoApgBIAMoApABIAMoAiQQXiIANgIsIABBAEgEQCADQX82ApwBDAELIAMoAiggAygCLEcEQCADKAKYAUEIakEUQQAQFSADQX82ApwBDAELIAMoApgBKAIAIAMpA3gQqAFBAEgEQCADKAKYAUEIaiADKAKYASgCABAYIANBfzYCnAEMAQsgA0EANgKcAQsgAygCnAEhACADQaABaiQAIAALrwIBAX8jAEEgayICIAA2AhwgAiABNgIYIAJBADYCFCACQgA3AwACQCACKAIcLQAoQQFxRQRAIAIoAhwoAhggAigCHCgCFEYNAQsgAkEBNgIUCyACQgA3AwgDQCACKQMIIAIoAhwpAzBUBEACQAJAIAIoAhwoAkAgAikDCKdBBHRqKAIIDQAgAigCHCgCQCACKQMIp0EEdGotAAxBAXENACACKAIcKAJAIAIpAwinQQR0aigCBEUNASACKAIcKAJAIAIpAwinQQR0aigCBCgCAEUNAQsgAkEBNgIUCyACKAIcKAJAIAIpAwinQQR0ai0ADEEBcUUEQCACIAIpAwBCAXw3AwALIAIgAikDCEIBfDcDCAwBCwsgAigCGARAIAIoAhggAikDADcDAAsgAigCFAuMEAMCfwF+AXwjAEHgAGsiASQAIAEgADYCWAJAIAEoAlhFBEAgAUF/NgJcDAELIAEgASgCWCABQUBrELkCNgIkIAEpA0BQBEACQCABKAJYKAIEQQhxRQRAIAEoAiRFDQELIAEoAlgoAgAQhAJBAEgEQAJAAn8jAEEQayICIAEoAlgoAgA2AgwjAEEQayIAIAIoAgxBDGo2AgwgACgCDCgCAEEWRgsEQCMAQRBrIgIgASgC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NgI8IAEoAlAgASgCODYCQCABKAJYIAEoAjAQ1gIgASABKAJYKAIMNgJIIAEgASgCWCgCEDYCQCABIAEoAlgoAgA2AkwgASABKAJYKAIENgJEIAEgASgCUCgCPDYCPCABIAEoAlAoAkA2AjggASgCUCgCBEG//gBGBEAgASgCUEF/NgLINwsMDQsgASgCUEEANgLINwNAAkAgASABKAJQKAJQIAEoAjxBASABKAJQKAJYdEEBa3FBAnRqKAEANgEgIAEtACEgASgCOE0NACABKAJERQ0NIAEgASgCREF/ajYCRCABIAEoAkwiAEEBajYCTCABIAEoAjwgAC0AACABKAI4dGo2AjwgASABKAI4QQhqNgI4DAELCwJAIAEtACBFDQAgAS0AIEHwAXENACABIAEoASA2ARgDQAJAIAEgASgCUCgCUCABLwEaIAEoAjxBASABLQAZIAEtABhqdEEBa3EgAS0AGXZqQQJ0aigBADYBICABLQAZIAEtACFqIAEoAjhNDQAgASgCREUNDiABIAEoAkRBf2o2AkQgASABKAJMIgBBAWo2AkwgASABKAI8IAAtAAAgASgCOHRqNgI8IAEgASgCOEEIajYCOAwBCwsgASABKAI8IAEtABl2NgI8IAEgASgCOCABLQAZazYCOCABKAJQIgAgAS0AGSAAKALIN2o2Asg3CyABIAEoAjwgAS0AIXY2AjwgASABKAI4IAEtACFrNgI4IAEoAlAiACABLQAhIAAoAsg3ajYCyDcgASgCUCABLwEiNgJEIAEtACBFBEAgASgCUEHN/gA2AgQMDQsgAS0AIEEgcQRAIAEoAlBBfzYCyDcgASgCUEG//gA2AgQMDQsgAS0AIEHAAHEEQCABKAJYQYfxADYCGCABKAJQQdH+ADYCBAwNCyABKAJQIAEtACBBD3E2AkwgASgCUEHJ/gA2AgQLIAEoAlAoAkwEQANAIAEoAjggASgCUCgCTEkEQCABKAJERQ0NIAEgASgCREF/ajYCRCABIAEoAkwiAEEBajYCTCABIAEoAjwgAC0AACABKAI4dGo2AjwgASABKAI4QQhqNgI4DAELCyABKAJQIgAgACgCRCABKAI8QQEgASgCUCgCTHRBAWtxajYCRCABIAEoAjwgASgCUCgCTHY2AjwgASABKAI4IAEoAlAoAkxrNgI4IAEoAlAiACAB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KAIMSQRAIAIgAigCUCIAQQFqNgJQIAIgAigCLCAALQAAIAIoAih0ajYCLCACIAIoAihBCGo2AiggAigCKCACKAIMSQRAIAIgAigCUCIAQQFqNgJQIAIgAigCLCAALQAAIAIoAih0ajYCLCACIAIoAihBCGo2AigLCyACIAIoAgQgAigCLEEBIAIoAgx0QQFrcWo2AgQgAiACKAIsIAIoAgx2NgIsIAIgAigCKCACKAIMazYCKCACIAIoAkggAigCRGs2AgwCQCACKAIEIAIoAgxLBEAgAiACKAIEIAIoAgxrNgIMIAIoAgwgAigCOEsEQCACKAJUKALENwRAIAIoAlxBsO0ANgIYIAIoAlRB0f4ANgIEDAoLCyACIAIoAjA2AgACQCACKAI0RQRAIAIgAigCACACKAI8IAIoAgxrajYCACACKAIMIAIoAghJBEAgAiACKAIIIAIoAgxrNgIIA0AgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAACACIAIoAgxBf2oiADYCDCAADQALIAIgAigCSCACKAIEazYCAAsMAQsCQCACKAI0IAIoAgxJBEAgAiACKAIAIAIoAjwgAigCNGogAigCDGtqNgIAIAIgAigCDCACKAI0azYCDCACKAIMIAIoAghJBEAgAiACKAIIIAIoAgxrNgIIA0AgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAACACIAIoAgxBf2oiADYCDCAADQALIAIgAigCMDYCACACKAI0IAIoAghJBEAgAiACKAI0NgIMIAIgAigCCCACKAIMazYCCANAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIMQX9qIgA2AgwgAA0ACyACIAIoAkggAigCBGs2AgALCwwBCyACIAIoAgAgAigCNCACKAIMa2o2AgAgAigCDCACKAIISQRAIAIgAigCCCACKAIMazYCCANAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIMQX9qIgA2AgwgAA0ACyACIAIoAkggAigCBGs2AgALCwsDQCACKAIIQQJNRQRAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAACACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAAIAIgAigCCEEDazYCCAwBCwsMAQsgAiACKAJIIAIoAgRrNgIAA0AgAiACKAIAIgBBAWo2AgAgAC0AACEAIAIgAigCSCIBQQFqNgJIIAEgADoAACACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAAIAIgAigCACIAQQFqNgIAIAAtAAAhACACIAIoAkgiAUEBajYCSCABIAA6AAAgAiACKAIIQQNrNgIIIAIoAghBAksNAAsLIAIoAggEQCACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAAIAIoAghBAUsEQCACIAIoAgAiAEEBajYCACAALQAAIQAgAiACKAJIIgFBAWo2AkggASAAOgAACwsMAgsgAigCDEHAAHFFBEAgAkEQaiACKAIgIAIvARIgAigCLEEBIAIoAgx0QQFrcWpBAnRqKAEANgEADAELCyACKAJcQc7tADYCGCACKAJUQdH+ADYCBAwECwwCCyACKAIMQcAAcUUEQCACQRBqIAIoAiQgAi8BEiACKAIsQQEgAigCDHRBAWtxakECdGooAQA2AQAMAQsLIAIoAgxBIHEEQCACKAJUQb/+ADYCBAwCCyACKAJcQeTtADYCGCACKAJUQdH+ADYCBAwBC0EAIQAgAigCUCACKAJMSQR/IAIoAkggAigCQEkFQQALQQFxDQELCyACIAIoAihBA3Y2AgggAiACKAJQIAIoAghrNgJQIAIgAigCKCACKAIIQQN0azYCKCACIAIoAixBASACKAIodEEBa3E2AiwgAigCXCACKAJQNgIAIAIoAlwgAigCSDYCDCACKAJcAn8gAigCUCACKAJMSQRAIAIoAkwgAigCUGtBBWoMAQtBBSACKAJQIAIoAkxraws2AgQgAigCXAJ/IAIoAkggAigCQEkEQCACKAJAIAIoAkhrQYECagwBC0GBAiACKAJIIAIoAkBraws2AhAgAigCVCACKAIsNgI8IAIoAlQgAigCKDYCQAvBEAECfyMAQSBrIgIk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LSAAKAKgLUEBdGogAi8BEDsBACACLQATIQEgAigCKCIAKAKYLSEDIAAgACgCoC0iAEEBajYCoC0gACADaiABOgAAIAIgAi8BEEF/ajsBECACKAIoIAItABNBgNkAai0AAEECdGpBmAlqIgAgAC8BAEEBajsBACACKAIoQYgTagJ/IAIvARBBgAJIBEAgAi8BEC0AgFUMAQsgAi8BEEEHdUGAAmotAIBVC0ECdGoiACAALwEAQQFqOwEAIAIgAigCKCgCoC0gAigCKCgCnC1BAWtGNgIgIAIoAigiACAAKAJ0IAIoAigoAmBrNgJ0IAIoAigiACACKAIoKAJgIAAoAmxqNgJsIAIoAihBADYCYAwBCyACIAIoAigiACgCOCAAKAJsai0AADoADyACKAIoIgAoAqQtIAAoAqAtQQF0akEAOwEAIAItAA8hASACKAIoIgAoApgtIQMgACAAKAKgLSIAQQFqNgKgLSAAIANqIAE6AAAgAigCKCACLQAPQQJ0aiIAIAAvAZQBQQFqOwGUASACIAIoAigoAqAtIAIoAigoApwtQQFrRjYCICACKAIoIgAgACgCdEF/ajYCdCACKAIoIgAgACgCbEEBajYCbAsgAigCIARAIAIoAigCfyACKAIoKAJcQQBOBEAgAigCKCgCOCACKAIoKAJcagwBC0EACyACKAIoKAJsIAIoAigoAlxrQQAQKSACKAIoIAIoAigoAmw2AlwgAigCKCgCABAdIAIoAigoAgAoAhBFBEAgAkEANgIsDAQLCwwBCwsgAigCKEEANgK0LSACKAIkQQRGBEAgAigCKAJ/IAIoAigoAlxBAE4EQCACKAIoKAI4IAIoAigoAlxqDAELQQALIAIoAigoAmwgAigCKCgCXGtBARApIAIoAiggAigCKCgCbDYCXCACKAIoKAIAEB0gAigCKCgCACgCEEUEQCACQQI2AiwMAgsgAkEDNgIsDAELIAIoAigoAqAtBEAgAigCKAJ/IAIoAigoAlxBAE4EQCACKAIoKAI4IAIoAigoAlxqDAELQQALIAIoAigoAmwgAigCKCgCXGtBABApIAIoAiggAigCKCgCbDYCXCACKAIoKAIAEB0gAigCKCgCACgCEEUEQCACQQA2AiwMAgsLIAJBATYCLAsgAigCLCEAIAJBMGokACAAC8AFAQJ/IwBBIGsiAiQA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AgQgAkEANgIQA0AgAigCEEEPSkUEQCACKAI8QbwWaiACKAIQQQF0akEAOwEAIAIgAigCEEEBajYCEAwBCwsgAigCNCACKAI8QdwWaiACKAI8KALUKEECdGooAgBBAnRqQQA7AQIgAiACKAI8KALUKEEBajYCHANAIAIoAhxBvQRIBEAgAiACKAI8QdwWaiACKAIcQQJ0aigCADYCGCACIAIoAjQgAigCNCACKAIYQQJ0ai8BAkECdGovAQJBAWo2AhAgAigCECACKAIgSgRAIAIgAigCIDYCECACIAIoAgRBAWo2AgQLIAIoAjQgAigCGEECdGogAigCEDsBAiACKAIYIAIoAjBMBEAgAigCPCACKAIQQQF0akG8FmoiACAALwEAQQFqOwEAIAJBADYCDCACKAIYIAIoAiROBEAgAiACKAIoIAIoAhggAigCJGtBAnRqKAIANgIMCyACIAIoAjQgAigCGEECdGovAQA7AQogAigCPCIAIAAoAqgtIAIvAQogAigCECACKAIMamxqNgKoLSACKAIsBEAgAigCPCIAIAAoAqwtIAIvAQogAigCLCACKAIYQQJ0ai8BAiACKAIMamxqNgKsLQsLIAIgAigCHEEBajYCHAwBCwsCQCACKAIERQ0AA0AgAiACKAIgQQFrNgIQA0AgAigCPEG8FmogAigCEEEBdGovAQBFBEAgAiACKAIQQX9qNgIQDAELCyACKAI8IAIoAhBBAXRqQbwWaiIAIAAvAQBBf2o7AQAgAigCPCACKAIQQQF0akG+FmoiACAALwEAQQJqOwEAIAIoAjwgAigCIEEBdGpBvBZqIgAgAC8BAEF/ajsBACACIAIoAgRBAms2AgQgAigCBEEASg0ACyACIAIoAiA2AhADQCACKAIQRQ0BIAIgAigCPEG8FmogAigCEEEBdGovAQA2AhgDQCACKAIYBEAgAigCPEHcFmohACACIAIoAhxBf2oiATYCHCACIAFBAnQgAGooAgA2AhQgAigCFCACKAIwSg0BIAIoAjQgAigCFEECdGovAQIgAigCEEcEQCACKAI8IgAgACgCqC0gAigCNCACKAIUQQJ0ai8BACACKAIQIAIoAjQgAigCFEECdGovAQJrbGo2AqgtIAIoAjQgAigCFEECdGogAigCEDsBAgsgAiACKAIYQX9qNgIYDAELCyACIAIo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KAIMIAEoAgxB/BRqNgKwFiABKAIMQajbADYCuBYgASgCDEEAOwG4LSABKAIMQQA2ArwtIAEoAgwQuQEgAUEQaiQAC9cNAQF/IwBBIGsiAyAANgIYIAMgATYCFCADIAI2AhAgAyADKAIYQRB2NgIMIAMgAygCGEH//wNxNgIYAkAgAygCEEEBRgRAIAMgAygCFC0AACADKAIYajYCGCADKAIYQfH/A08EQCADIAMoAhhB8f8DazYCGAsgAyADKAIYIAMoAgxqNgIMIAMoAgxB8f8DTwRAIAMgAygCDEHx/wNrNgIMCyADIAMoAhggAygCDEEQdHI2AhwMAQsgAygCFEUEQCADQQE2AhwMAQsgAygCEEEQSQRAA0AgAyADKAIQIgBBf2o2AhAgAARAIAMgAygCFCIAQQFqNgIUIAMgAC0AACADKAIYajYCGCADIAMoAhggAygCDGo2AgwMAQsLIAMoAhhB8f8DTwRAIAMgAygCGEHx/wNrNgIYCyADIAMoAgxB8f8DcDYCDCADIAMoAhggAygCDEEQdHI2AhwMAQsDQCADKAIQQbArSUUEQCADIAMoAhBBsCtrNgIQIANB2wI2AggDQCADIAMoAhQtAAAgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AASADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQACIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAMgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ABCADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAFIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAYgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AByADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAIIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAkgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ACiADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQALIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAwgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ADSADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAOIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAA8gAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFEEQajYCFCADIAMoAghBf2oiADYCCCAADQALIAMgAygCGEHx/wNwNgIYIAMgAygCDEHx/wNwNgIMDAELCyADKAIQBEADQCADKAIQQRBJRQRAIAMgAygCEEEQazYCECADIAMoAhQtAAAgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AASADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQACIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAMgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ABCADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAFIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAYgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0AByADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAIIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAkgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ACiADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQALIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAAwgAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFC0ADSADKAIYajYCGCADIAMoAhggAygCDGo2AgwgAyADKAIULQAOIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDCADIAMoAhQtAA8gAygCGGo2AhggAyADKAIYIAMoAgxqNgIMIAMgAygCFEEQajYCFAwBCwsDQCADIAMoAhAiAEF/ajYCECAABEAgAyADKAIUIgBBAWo2AhQgAyAALQAAIAMoAhhqNgIYIAMgAygCGCADKAIMajYCDAwBCwsgAyADKAIYQfH/A3A2AhggAyADKAIMQfH/A3A2AgwLIAMgAygC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KAIEDAELIAMoAgwoAgALQYAEEF4iADYCECAAQQBIBEAgA0J/NwO4AQwDCyADKAIQBEAgA0EBOgAXCyADIAMpAxhCAXw3AxgMAQsLIAMgAygCtAEoAgAQNSICNwMgIAJCAFMEQCADKAK0AUEIaiADKAK0ASgCABAYIANCfzcDuAEMAQsgAyADKQMgIAMpA6ABfTcDmAECQCADKQOgAUL/////D1gEQCADKQOoAUL//wNYDQELIANBAToAFwsgAyADQTBqQuIAECoiADYCLCAARQRAIAMoArQBQQhqQQ5BABAVIANCfzcDuAEMAQsgAy0AF0EBcQRAIAMoAixBttMAQQQQQCADKAIsQiwQLiADKAIsQS0QICADKAIsQS0QICADKAIsQQAQISADKAIsQQAQISADKAIsIAMpA6gBEC4gAygCLCADKQOoARAuIAMoAiwgAykDmAEQLiADKAIsIAMpA6ABEC4gAygCLEG70wBBBBBAIAMoAixBABAhIAMoAiwgAykDoAEgAykDmAF8EC4gAygCLEEBECELIAMoAixBwNMAQQQQQCADKAIsQQAQISADKAIsAn5C//8DIAMpA6gBQv//A1oNABogAykDqAELp0H//wNxECAgAygCLAJ+Qv//AyADKQOoAUL//wNaDQAaIAMpA6gBC6dB//8DcRAgIAMoAiwCf0F/IAMpA5gBQv////8PWg0AGiADKQOYAacLECEgAygCLAJ/QX8gAykDoAFC/////w9aDQAaIAMpA6ABpwsQISADAn8gAygCtAEtAChBAXEEQCADKAK0ASgCJAwBCyADKAK0ASgCIAs2ApQBIAMoAiwCfyADKAKUAQRAIAMoApQBLwEEDAELQQALQf//A3EQIAJ/IwBBEGsiACADKAIsNgIMIAAoAgwtAABBAXFFCwRAIAMoArQBQQhqQRRBABAVIAMoAiwQFyADQn83A7gBDAELIAMoArQBAn8jAEEQayIAIAMoAiw2AgwgACgCDCgCBAsCfiMAQRBrIgAgAygCLDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALCxA2QQBIBEAgAygCLBAXIANCfzcDuAEMAQsgAygCLBAXIAMoApQBBEAgAygCtAEgAygClAEoAgAgAygClAEvAQStEDZBAEgEQCADQn83A7gBDAILCyADIAMpA5gBNwO4AQsgAykDuAEhAiADQcABaiQAIAILBwAgACgCIAsIAEEBQTgQewsDAAELC/KNAScAQYAIC5QFTm8gZXJyb3IATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQAQ2xvc2luZyB6aXAgYXJjaGl2ZSBmYWlsZWQAU2VlayBlcnJvcgBSZWFkIGVycm9yAFdyaXRlIGVycm9yAENSQyBlcnJvcgBDb250YWluaW5nIHppcCBhcmNoaXZlIHdhcyBjbG9zZWQATm8gc3VjaCBmaWxlAEZpbGUgYWxyZWFkeSBleGlzdHMAQ2FuJ3Qgb3BlbiBmaWxlAEZhaWx1cmUgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlAFpsaWIgZXJyb3IATWFsbG9jIGZhaWx1cmUARW50cnkgaGFzIGJlZW4gY2hhbmdlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABQcmVtYXR1cmUgZW5kIG9mIGZpbGUASW52YWxpZCBhcmd1bWVudABOb3QgYSB6aXAgYXJjaGl2ZQBJbnRlcm5hbCBlcnJvcgBaaXAgYXJjaGl2ZSBpbmNvbnNpc3RlbnQAQ2FuJ3QgcmVtb3ZlIGZpbGUARW50cnkgaGFzIGJlZW4gZGVsZXRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAFJlYWQtb25seSBhcmNoaXZlAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkAFJlc291cmNlIHN0aWxsIGluIHVzZQBUZWxsIGVycm9yAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAEGhDQuAAQQAAAkEAAAvBAAATgQAAGkEAAB0BAAAfwQAAIsEAACVBAAAtwQAAMQEAADYBAAA6AQAAAkFAAAUBQAAIwUAADoFAABbBQAAcQUAAIIFAACUBQAAowUAALwFAADOBQAA5QUAAAUGAAAXBgAALAYAAEQGAABcBgAAcgYAAH0GAAAgAEG4DgsRAQAAAAEAAAABAAAAAQAAAAEAQdwOCwkBAAAAAQAAAAIAQYgPCwEBAEGoDwsB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CAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkAvwEJAH8ACQB/AQkA/wAJAP8BCQAAAAcAQAAHACAABwBgAAcAEAAHAFAABwAwAAcAcAAHAAgABwBIAAcAKAAHAGgABwAYAAcAWAAHADgABwB4AAcABAAHAEQABwAkAAcAZAAHABQABwBUAAcANAAHAHQABwADAAgAgwAIAEMACADDAAgAIwAIAKMACABjAAgA4wAIAAAABQAQAAUACAAFABgABQAEAAUAFAAFAAwABQAcAAUAAgAFABIABQAKAAUAGgAFAAYABQAWAAUADgAFAB4ABQABAAUAEQAFAAkABQAZAAUABQAFABUABQANAAUAHQAFAAMABQATAAUACwAFABsABQAHAAUAFwAFAEHg5QALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHQ5gALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEGA6AALIwIAAAADAAAABwAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAEG06AALaQEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4ABBtOkAC3oBAAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAEAAAABgAAAAgAAAAMAAAAAAAQAAgAEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAADEuMi4xMQBBuOoAC20HAAAABAAEAAgABAAIAAAABAAFABAACAAIAAAABAAGACAAIAAIAAAABAAEABAAEAAJAAAACAAQACAAIAAJAAAACAAQAIAAgAAJAAAACAAgAIAAAAEJAAAAIACAAAIBAAQJAAAAIAACAQIBABAJAEGw6wAL1gIDAAQABQAGAAcACAAJAAoACwANAA8AEQATABcAGwAfACMAKwAzADsAQwBTAGMAcwCDAKMAwwDjAAIBAAAAAAAAEAAQABAAEAAQABAAEAAQABEAEQARABEAEgASABIAEgATABMAEwATABQAFAAUABQAFQAVABUAFQAQAE0AygAAAAEAAgADAAQABQAHAAkADQARABkAIQAxAEEAYQCBAMEAAQGBAQECAQMBBAEGAQgBDAEQARgBIAEwAUABYAAAAAAQABAAEAAQABEAEQASABIAEwATABQAFAAVABUAFgAWABcAFwAYABgAGQAZABoAGgAbABsAHAAcAB0AHQBAAEAAaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2sAaW52YWxpZCBkaXN0YW5jZSBjb2RlAGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQAxLjIuMTEAQZDuAAvyAxAAEQASAAAACAAHAAkABgAKAAUACwAEAAwAAwANAAIADgABAA8AaW5jb3JyZWN0IGhlYWRlciBjaGVjawB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABpbnZhbGlkIHdpbmRvdyBzaXplAHVua25vd24gaGVhZGVyIGZsYWdzIHNldABoZWFkZXIgY3JjIG1pc21hdGNoAGludmFsaWQgYmxvY2sgdHlwZQBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgY29kZSBsZW5ndGhzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBkaXN0YW5jZXMgc2V0AGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBBkPIAC5cRYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgAAAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgAAAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQAAAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgHAAAIhwAACEcAAAnvABAHCQAACF8AAAgfAAAJnwAUB2MAAAh/AAAIPwAACd8AEgcbAAAIbwAACC8AAAm/AAAIDwAACI8AAAhPAAAJ/wAQBQEAFwUBARMFEQAbBQEQEQUFABkFAQQVBUEAHQUBQBAFAwAYBQECFAUhABwFASASBQkAGgUBCBYFgQBABQAAEAUCABcFgQETBRkAGwUBGBEFBwAZBQEGFQVhAB0FAWAQBQQAGAUBAxQFMQAcBQEwEgUNABoFAQwWBcEAQAUAADEuMi4xMQAtKyAgIDBYMHgAKG51bGwpAEGwgwELQREACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABAAkLCwAACQYLAAALAAYRAAAAERERAEGBhAELIQsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwBBu4QBCwEMAEHHhAELFQwAAAAADAAAAAAJDAAAAAAADAAADABB9YQBCwEOAEGBhQELFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBBr4UBCwEQAEG7hQELHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBB8oUBCw4SAAAAEhISAAAAAAAACQBBo4YBCwELAEGvhgELFQoAAAAACgAAAAAJCwAAAAAACwAACwBB3YYBCwEMAEHphgELSwwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRi0wWCswWCAwWC0weCsweCAweABpbmYASU5GAG5hbgBOQU4ALgBB3IcBCwEXAEGDiAELBf//////AEHQiAELVxkSRDsCPyxHFD0zMAobBkZLRTcPSQ6OFwNAHTxpKzYfSi0cASAlKSEIDBUWIi4QOD4LNDEYZHR1di9BCX85ESNDMkKJiosFBCYoJw0qHjWMBxpIkxOUlQBBsIkBC90OSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AAFVua25vd24gZXJyb3IgJWQAJXMlcyVzAAA6IAAvcHJvYy9zZWxmL2ZkLwAvZGV2L3VyYW5kb20AcndhACVzLlhYWFhYWAByK2IAcmIAUEsFBgBBkJgBC04KAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAAQAAAAgAAAAQTAAAMEwAQZCaAQsCgFAAQciaAQsJHwAAAGRNAAADAEHkmgELjAEt9FFYz4yxwEb2tcspMQPHBFtwMLRd/SB4f4ua2FkpUGhIiaunVgNs/7fNiD/Ud7QrpaNw8brkqPxBg/3Zb+GKei8tdJYHHw0JXgN2LHD3QKUsp29XQaiqdN+gWGQDSsfEPFOur18YBBWx420ohqsMpL9D8OlQgTlXFlI3/////////////////////w==";function Ae(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?f.get(r)():f.get(r)(t.arg):r(void 0===t.arg?null:t.arg)}else t(o)}}function ne(){var e=function(){var e=new Error;if(!e.stack){try{throw new Error}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}();return o.extraStackTrace&&(e+="\n"+o.extraStackTrace()),e.replace(/\b_Z[\w\d_]+/g,(function(e){return e==e?e:e+" ["+e+"]"}))}function oe(e,t){var r=new Date(1e3*M[e>>2]);M[t>>2]=r.getUTCSeconds(),M[t+4>>2]=r.getUTCMinutes(),M[t+8>>2]=r.getUTCHours(),M[t+12>>2]=r.getUTCDate(),M[t+16>>2]=r.getUTCMonth(),M[t+20>>2]=r.getUTCFullYear()-1900,M[t+24>>2]=r.getUTCDay(),M[t+36>>2]=0,M[t+32>>2]=0;var A=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-A)/864e5|0;return M[t+28>>2]=n,oe.GMTString||(oe.GMTString=S("GMT")),M[t+40>>2]=oe.GMTString,t}Z(re)||($=re,re=o.locateFile?o.locateFile($,u):u+$),U.push({func:function(){Se()}});var ie={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var r=0,A=e.length-1;A>=0;A--){var n=e[A];"."===n?e.splice(A,1):".."===n?(e.splice(A,1),r++):r&&(e.splice(A,1),r--)}if(t)for(;r;r--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),r="/"===e.substr(-1);return(e=ie.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||t||(e="."),e&&r&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=ie.splitPath(e),r=t[0],A=t[1];return r||A?(A&&(A=A.substr(0,A.length-1)),r+A):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=ie.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.substr(t+1)},extname:function(e){return ie.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return ie.normalize(e.join("/"))},join2:function(e,t){return ie.normalize(e+"/"+t)}};function se(e){return M[ke()>>2]=e,e}var ae={resolve:function(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var A=r>=0?arguments[r]:pe.cwd();if("string"!=typeof A)throw new TypeError("Arguments to path.resolve must be strings");if(!A)return"";e=A+"/"+e,t="/"===A.charAt(0)}return(t?"/":"")+(e=ie.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function r(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=ae.resolve(e).substr(1),t=ae.resolve(t).substr(1);for(var A=r(e.split("/")),n=r(t.split("/")),o=Math.min(A.length,n.length),i=o,s=0;s0?r.slice(0,A).toString("utf-8"):null))return null;e.input=we(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(h(w(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(h(w(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(p(w(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(p(w(e.output,0)),e.output=[])}}},ge={ops_table:null,mount:function(e){return ge.createNode(null,"/",16895,0)},createNode:function(e,t,r,A){if(pe.isBlkdev(r)||pe.isFIFO(r))throw new pe.ErrnoError(63);ge.ops_table||(ge.ops_table={dir:{node:{getattr:ge.node_ops.getattr,setattr:ge.node_ops.setattr,lookup:ge.node_ops.lookup,mknod:ge.node_ops.mknod,rename:ge.node_ops.rename,unlink:ge.node_ops.unlink,rmdir:ge.node_ops.rmdir,readdir:ge.node_ops.readdir,symlink:ge.node_ops.symlink},stream:{llseek:ge.stream_ops.llseek}},file:{node:{getattr:ge.node_ops.getattr,setattr:ge.node_ops.setattr},stream:{llseek:ge.stream_ops.llseek,read:ge.stream_ops.read,write:ge.stream_ops.write,allocate:ge.stream_ops.allocate,mmap:ge.stream_ops.mmap,msync:ge.stream_ops.msync}},link:{node:{getattr:ge.node_ops.getattr,setattr:ge.node_ops.setattr,readlink:ge.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ge.node_ops.getattr,setattr:ge.node_ops.setattr},stream:pe.chrdev_stream_ops}});var n=pe.createNode(e,t,r,A);return pe.isDir(n.mode)?(n.node_ops=ge.ops_table.dir.node,n.stream_ops=ge.ops_table.dir.stream,n.contents={}):pe.isFile(n.mode)?(n.node_ops=ge.ops_table.file.node,n.stream_ops=ge.ops_table.file.stream,n.usedBytes=0,n.contents=null):pe.isLink(n.mode)?(n.node_ops=ge.ops_table.link.node,n.stream_ops=ge.ops_table.link.stream):pe.isChrdev(n.mode)&&(n.node_ops=ge.ops_table.chrdev.node,n.stream_ops=ge.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n),n},getFileDataAsRegularArray:function(e){if(e.contents&&e.contents.subarray){for(var t=[],r=0;r=t)){t=Math.max(t,r*(r<1048576?2:1.125)>>>0),0!=r&&(t=Math.max(t,256));var A=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(A.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(e.usedBytes!=t){if(0==t)return e.contents=null,void(e.usedBytes=0);if(!e.contents||e.contents.subarray){var r=e.contents;return e.contents=new Uint8Array(t),r&&e.contents.set(r.subarray(0,Math.min(t,e.usedBytes))),void(e.usedBytes=t)}if(e.contents||(e.contents=[]),e.contents.length>t)e.contents.length=t;else for(;e.contents.length=e.node.usedBytes)return 0;var i=Math.min(e.node.usedBytes-n,A);if(i>8&&o.subarray)t.set(o.subarray(n,n+i),r);else for(var s=0;s0||A+r>2)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}return t.mode},realPath:function(e){for(var t=[];e.parent!==e;)t.push(e.name),e=e.parent;return t.push(e.mount.opts.root),t.reverse(),ie.join.apply(null,t)},flagsForNode:function(e){e&=-2097153,e&=-2049,e&=-32769,e&=-524289;var t=0;for(var r in ue.flagsForNodeMap)e&r&&(t|=ue.flagsForNodeMap[r],e^=r);if(e)throw new pe.ErrnoError(28);return t},node_ops:{getattr:function(e){var t,r=ue.realPath(e);try{t=Ie.lstatSync(r)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}return ue.isWindows&&!t.blksize&&(t.blksize=4096),ue.isWindows&&!t.blocks&&(t.blocks=(t.size+t.blksize-1)/t.blksize|0),{dev:t.dev,ino:t.ino,mode:t.mode,nlink:t.nlink,uid:t.uid,gid:t.gid,rdev:t.rdev,size:t.size,atime:t.atime,mtime:t.mtime,ctime:t.ctime,blksize:t.blksize,blocks:t.blocks}},setattr:function(e,t){var r=ue.realPath(e);try{if(void 0!==t.mode&&(Ie.chmodSync(r,t.mode),e.mode=t.mode),void 0!==t.timestamp){var A=new Date(t.timestamp);Ie.utimesSync(r,A,A)}void 0!==t.size&&Ie.truncateSync(r,t.size)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}},lookup:function(e,t){var r=ie.join2(ue.realPath(e),t),A=ue.getMode(r);return ue.createNode(e,t,A)},mknod:function(e,t,r,A){var n=ue.createNode(e,t,r,A),o=ue.realPath(n);try{pe.isDir(n.mode)?Ie.mkdirSync(o,n.mode):Ie.writeFileSync(o,"",{mode:n.mode})}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}return n},rename:function(e,t,r){var A=ue.realPath(e),n=ie.join2(ue.realPath(t),r);try{Ie.renameSync(A,n)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}e.name=r},unlink:function(e,t){var r=ie.join2(ue.realPath(e),t);try{Ie.unlinkSync(r)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}},rmdir:function(e,t){var r=ie.join2(ue.realPath(e),t);try{Ie.rmdirSync(r)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}},readdir:function(e){var t=ue.realPath(e);try{return Ie.readdirSync(t)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}},symlink:function(e,t,r){var A=ie.join2(ue.realPath(e),t);try{Ie.symlinkSync(r,A)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}},readlink:function(e){var t=ue.realPath(e);try{return t=Ie.readlinkSync(t),t=Ee.relative(Ee.resolve(e.mount.opts.root),t)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}}},stream_ops:{open:function(e){var t=ue.realPath(e.node);try{pe.isFile(e.node.mode)&&(e.nfd=Ie.openSync(t,ue.flagsForNode(e.flags)))}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}},close:function(e){try{pe.isFile(e.node.mode)&&e.nfd&&Ie.closeSync(e.nfd)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(ue.convertNodeCode(e))}},read:function(e,t,r,A,n){if(0===A)return 0;try{return Ie.readSync(e.nfd,ue.bufferFrom(t.buffer),r,A,n)}catch(e){throw new pe.ErrnoError(ue.convertNodeCode(e))}},write:function(e,t,r,A,n){try{return Ie.writeSync(e.nfd,ue.bufferFrom(t.buffer),r,A,n)}catch(e){throw new pe.ErrnoError(ue.convertNodeCode(e))}},llseek:function(e,t,r){var A=t;if(1===r)A+=e.position;else if(2===r&&pe.isFile(e.node.mode))try{A+=Ie.fstatSync(e.nfd).size}catch(e){throw new pe.ErrnoError(ue.convertNodeCode(e))}if(A<0)throw new pe.ErrnoError(28);return A},mmap:function(e,t,r,A,n,o){if(E(0===t),!pe.isFile(e.node.mode))throw new pe.ErrnoError(43);var i=pe.mmapAlloc(r);return ue.stream_ops.read(e,N,i,r,A),{ptr:i,allocated:!0}},msync:function(e,t,r,A,n){if(!pe.isFile(e.node.mode))throw new pe.ErrnoError(43);if(2&n)return 0;ue.stream_ops.write(e,t,0,A,r,!1);return 0}}},he={lookupPath:function(e){return{path:e,node:{mode:ue.getMode(e)}}},createStandardStreams:function(){pe.streams[0]={fd:0,nfd:0,position:0,path:"",flags:0,tty:!0,seekable:!1};for(var e=1;e<3;e++)pe.streams[e]={fd:e,nfd:e,position:0,path:"",flags:577,tty:!0,seekable:!1}},cwd:function(){return process.cwd()},chdir:function(){process.chdir.apply(void 0,arguments)},mknod:function(e,t){pe.isDir(e)?Ie.mkdirSync(e,t):Ie.writeFileSync(e,"",{mode:t})},mkdir:function(){Ie.mkdirSync.apply(void 0,arguments)},symlink:function(){Ie.symlinkSync.apply(void 0,arguments)},rename:function(){Ie.renameSync.apply(void 0,arguments)},rmdir:function(){Ie.rmdirSync.apply(void 0,arguments)},readdir:function(){Ie.readdirSync.apply(void 0,arguments)},unlink:function(){Ie.unlinkSync.apply(void 0,arguments)},readlink:function(){return Ie.readlinkSync.apply(void 0,arguments)},stat:function(){return Ie.statSync.apply(void 0,arguments)},lstat:function(){return Ie.lstatSync.apply(void 0,arguments)},chmod:function(){Ie.chmodSync.apply(void 0,arguments)},fchmod:function(){Ie.fchmodSync.apply(void 0,arguments)},chown:function(){Ie.chownSync.apply(void 0,arguments)},fchown:function(){Ie.fchownSync.apply(void 0,arguments)},truncate:function(){Ie.truncateSync.apply(void 0,arguments)},ftruncate:function(){Ie.ftruncateSync.apply(void 0,arguments)},utime:function(){Ie.utimesSync.apply(void 0,arguments)},open:function(e,t,r,A){"string"==typeof t&&(t=ye.modeStringToFlags(t));var n=Ie.openSync(e,ue.flagsForNode(t),r),o=null!=A?A:pe.nextfd(n),i={fd:o,nfd:n,position:0,path:e,flags:t,seekable:!0};return pe.streams[o]=i,i},close:function(e){e.stream_ops||Ie.closeSync(e.nfd),pe.closeStream(e.fd)},llseek:function(e,t,r){if(e.stream_ops)return ye.llseek(e,t,r);var A=t;if(1===r)A+=e.position;else if(2===r)A+=Ie.fstatSync(e.nfd).size;else if(0!==r)throw new pe.ErrnoError(le.EINVAL);if(A<0)throw new pe.ErrnoError(le.EINVAL);return e.position=A,A},read:function(e,t,r,A,n){if(e.stream_ops)return ye.read(e,t,r,A,n);var o=void 0!==n;!o&&e.seekable&&(n=e.position);var i=Ie.readSync(e.nfd,ue.bufferFrom(t.buffer),r,A,n);return o||(e.position+=i),i},write:function(e,t,r,A,n){if(e.stream_ops)return ye.write(e,t,r,A,n);1024&e.flags&&pe.llseek(e,0,2);var o=void 0!==n;!o&&e.seekable&&(n=e.position);var i=Ie.writeSync(e.nfd,ue.bufferFrom(t.buffer),r,A,n);return o||(e.position+=i),i},allocate:function(){throw new pe.ErrnoError(le.EOPNOTSUPP)},mmap:function(){throw new pe.ErrnoError(le.ENODEV)},msync:function(){return 0},munmap:function(){return 0},ioctl:function(){throw new pe.ErrnoError(le.ENOTTY)}},pe={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,handleFSError:function(e){if(!(e instanceof pe.ErrnoError))throw e+" : "+ne();return se(e.errno)},lookupPath:function(e,t){if(t=t||{},!(e=ae.resolve(pe.cwd(),e)))return{path:"",node:null};var r={follow_mount:!0,recurse_count:0};for(var A in r)void 0===t[A]&&(t[A]=r[A]);if(t.recurse_count>8)throw new pe.ErrnoError(32);for(var n=ie.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),o=pe.root,i="/",s=0;s40)throw new pe.ErrnoError(32)}}return{path:i,node:o}},getPath:function(e){for(var t;;){if(pe.isRoot(e)){var r=e.mount.mountpoint;return t?"/"!==r[r.length-1]?r+"/"+t:r+t:r}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var r=0,A=0;A>>0)%pe.nameTable.length},hashAddNode:function(e){var t=pe.hashName(e.parent.id,e.name);e.name_next=pe.nameTable[t],pe.nameTable[t]=e},hashRemoveNode:function(e){var t=pe.hashName(e.parent.id,e.name);if(pe.nameTable[t]===e)pe.nameTable[t]=e.name_next;else for(var r=pe.nameTable[t];r;){if(r.name_next===e){r.name_next=e.name_next;break}r=r.name_next}},lookupNode:function(e,t){var r=pe.mayLookup(e);if(r)throw new pe.ErrnoError(r,e);for(var A=pe.hashName(e.id,t),n=pe.nameTable[A];n;n=n.name_next){var o=n.name;if(n.parent.id===e.id&&o===t)return n}return pe.lookup(e,t)},createNode:function(e,t,r,A){var n=new pe.FSNode(e,t,r,A);return pe.hashAddNode(n),n},destroyNode:function(e){pe.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,rs:1052672,"r+":2,w:577,wx:705,xw:705,"w+":578,"wx+":706,"xw+":706,a:1089,ax:1217,xa:1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function(e){var t=pe.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return pe.ignorePermissions||(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){var t=pe.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{pe.lookupNode(e,t);return 20}catch(e){}return pe.nodePermissions(e,"wx")},mayDelete:function(e,t,r){var A;try{A=pe.lookupNode(e,t)}catch(e){return e.errno}var n=pe.nodePermissions(e,"wx");if(n)return n;if(r){if(!pe.isDir(A.mode))return 54;if(pe.isRoot(A)||pe.getPath(A)===pe.cwd())return 10}else if(pe.isDir(A.mode))return 31;return 0},mayOpen:function(e,t){return e?pe.isLink(e.mode)?32:pe.isDir(e.mode)&&("r"!==pe.flagsToPermissionString(t)||512&t)?31:pe.nodePermissions(e,pe.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(e,t){e=e||0,t=t||pe.MAX_OPEN_FDS;for(var r=e;r<=t;r++)if(!pe.streams[r])return r;throw new pe.ErrnoError(33)},getStream:function(e){return pe.streams[e]},createStream:function(e,t,r){pe.FSStream||(pe.FSStream=function(){},pe.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var A=new pe.FSStream;for(var n in e)A[n]=e[n];e=A;var o=pe.nextfd(t,r);return e.fd=o,pe.streams[o]=e,e},closeStream:function(e){pe.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=pe.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new pe.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){pe.devices[e]={stream_ops:t}},getDevice:function(e){return pe.devices[e]},getMounts:function(e){for(var t=[],r=[e];r.length;){var A=r.pop();t.push(A),r.push.apply(r,A.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),pe.syncFSRequests++,pe.syncFSRequests>1&&p("warning: "+pe.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var r=pe.getMounts(pe.root.mount),A=0;function n(e){return pe.syncFSRequests--,t(e)}function o(e){if(e)return o.errored?void 0:(o.errored=!0,n(e));++A>=r.length&&n(null)}r.forEach((function(t){if(!t.type.syncfs)return o(null);t.type.syncfs(t,e,o)}))},mount:function(e,t,r){var A,n="/"===r,o=!r;if(n&&pe.root)throw new pe.ErrnoError(10);if(!n&&!o){var i=pe.lookupPath(r,{follow_mount:!1});if(r=i.path,A=i.node,pe.isMountpoint(A))throw new pe.ErrnoError(10);if(!pe.isDir(A.mode))throw new pe.ErrnoError(54)}var s={type:e,opts:t,mountpoint:r,mounts:[]},a=e.mount(s);return a.mount=s,s.root=a,n?pe.root=a:A&&(A.mounted=s,A.mount&&A.mount.mounts.push(s)),a},unmount:function(e){var t=pe.lookupPath(e,{follow_mount:!1});if(!pe.isMountpoint(t.node))throw new pe.ErrnoError(28);var r=t.node,A=r.mounted,n=pe.getMounts(A);Object.keys(pe.nameTable).forEach((function(e){for(var t=pe.nameTable[e];t;){var r=t.name_next;-1!==n.indexOf(t.mount)&&pe.destroyNode(t),t=r}})),r.mounted=null;var o=r.mount.mounts.indexOf(A);r.mount.mounts.splice(o,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,r){var A=pe.lookupPath(e,{parent:!0}).node,n=ie.basename(e);if(!n||"."===n||".."===n)throw new pe.ErrnoError(28);var o=pe.mayCreate(A,n);if(o)throw new pe.ErrnoError(o);if(!A.node_ops.mknod)throw new pe.ErrnoError(63);return A.node_ops.mknod(A,n,t,r)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,pe.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,pe.mknod(e,t,0)},mkdirTree:function(e,t){for(var r=e.split("/"),A="",n=0;nthis.length-1||e<0)){var t=e%this.chunkSize,r=e/this.chunkSize|0;return this.getter(r)[t]}},o.prototype.setDataGetter=function(e){this.getter=e},o.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",r,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+r+". Status: "+e.status);var t,A=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,o=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,i=1048576;n||(i=A);var s=this;s.setDataGetter((function(e){var t=e*i,n=(e+1)*i-1;if(n=Math.min(n,A-1),void 0===s.chunks[e]&&(s.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>A-1)throw new Error("only "+A+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",r,!1),A!==i&&n.setRequestHeader("Range","bytes="+e+"-"+t),"undefined"!=typeof Uint8Array&&(n.responseType="arraybuffer"),n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+r+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):we(n.responseText||"",!0)}(t,n)),void 0===s.chunks[e])throw new Error("doXHR failed!");return s.chunks[e]})),!o&&A||(i=A=1,A=this.getter(0).length,i=A,h("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=A,this._chunkSize=i,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var i={isDevice:!1,url:r},s=pe.createFile(e,t,i,A,n);i.contents?s.contents=i.contents:i.url&&(s.contents=null,s.url=i.url),Object.defineProperties(s,{usedBytes:{get:function(){return this.contents.length}}});var a={};return Object.keys(s.stream_ops).forEach((function(e){var t=s.stream_ops[e];a[e]=function(){if(!pe.forceLoadFile(s))throw new pe.ErrnoError(29);return t.apply(null,arguments)}})),a.read=function(e,t,r,A,n){if(!pe.forceLoadFile(s))throw new pe.ErrnoError(29);var o=e.node.contents;if(n>=o.length)return 0;var i=Math.min(o.length-n,A);if(o.slice)for(var a=0;a>2]=A.dev,M[r+4>>2]=0,M[r+8>>2]=A.ino,M[r+12>>2]=A.mode,M[r+16>>2]=A.nlink,M[r+20>>2]=A.uid,M[r+24>>2]=A.gid,M[r+28>>2]=A.rdev,M[r+32>>2]=0,te=[A.size>>>0,(ee=A.size,+Y(ee)>=1?ee>0?(0|J(+H(ee/4294967296),4294967295))>>>0:~~+G((ee-+(~~ee>>>0))/4294967296)>>>0:0)],M[r+40>>2]=te[0],M[r+44>>2]=te[1],M[r+48>>2]=4096,M[r+52>>2]=A.blocks,M[r+56>>2]=A.atime.getTime()/1e3|0,M[r+60>>2]=0,M[r+64>>2]=A.mtime.getTime()/1e3|0,M[r+68>>2]=0,M[r+72>>2]=A.ctime.getTime()/1e3|0,M[r+76>>2]=0,te=[A.ino>>>0,(ee=A.ino,+Y(ee)>=1?ee>0?(0|J(+H(ee/4294967296),4294967295))>>>0:~~+G((ee-+(~~ee>>>0))/4294967296)>>>0:0)],M[r+80>>2]=te[0],M[r+84>>2]=te[1],0},doMsync:function(e,t,r,A,n){var o=F.slice(e,e+r);pe.msync(t,o,n,r,A)},doMkdir:function(e,t){return"/"===(e=ie.normalize(e))[e.length-1]&&(e=e.substr(0,e.length-1)),pe.mkdir(e,t,0),0},doMknod:function(e,t,r){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return pe.mknod(e,t,r),0},doReadlink:function(e,t,r){if(r<=0)return-28;var A=pe.readlink(e),n=Math.min(r,v(A)),o=N[t+n];return b(A,t,r+1),N[t+n]=o,n},doAccess:function(e,t){if(-8&t)return-28;var r;if(!(r=pe.lookupPath(e,{follow:!0}).node))return-44;var A="";return 4&t&&(A+="r"),2&t&&(A+="w"),1&t&&(A+="x"),A&&pe.nodePermissions(r,A)?-2:0},doDup:function(e,t,r){var A=pe.getStream(r);return A&&pe.close(A),pe.open(e,t,0,r,r).fd},doReadv:function(e,t,r,A){for(var n=0,o=0;o>2],s=M[t+(8*o+4)>>2],a=pe.read(e,N,i,s,A);if(a<0)return-1;if(n+=a,a>2],s=M[t+(8*o+4)>>2],a=pe.write(e,N,i,s,A);if(a<0)return-1;n+=a}return n},varargs:void 0,get:function(){return de.varargs+=4,M[de.varargs-4>>2]},getStr:function(e){return Q(e)},getStreamFromFD:function(e){var t=pe.getStream(e);if(!t)throw new pe.ErrnoError(8);return t},get64:function(e,t){return e}};function Ce(e){try{return C.grow(e-k.byteLength+65535>>>16),L(C.buffer),1}catch(e){}}var fe=function(e,t,r,A){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=pe.nextInode++,this.name=t,this.mode=r,this.node_ops={},this.stream_ops={},this.rdev=A};Object.defineProperties(fe.prototype,{read:{get:function(){return 365==(365&this.mode)},set:function(e){e?this.mode|=365:this.mode&=-366}},write:{get:function(){return 146==(146&this.mode)},set:function(e){e?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return pe.isDir(this.mode)}},isDevice:{get:function(){return pe.isChrdev(this.mode)}}}),pe.FSNode=fe,pe.staticInit();var Ie=n,Ee=r(85622);ue.staticInit();var Be=function(e){return function(){try{return e.apply(this,arguments)}catch(e){if(!e.code)throw e;throw new pe.ErrnoError(le[e.code])}}},ye=Object.assign({},pe);for(var me in he)pe[me]=Be(he[me]);function we(e,t,r){var A=r>0?r:v(e)+1,n=new Array(A),o=D(e,n,0,n.length);return t&&(n.length=o),n}"function"==typeof atob&&atob;function Qe(e){if(Z(e))return function(e){var t;try{t=Buffer.from(e,"base64")}catch(r){t=new Buffer(e,"base64")}return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}(e.slice("data:application/octet-stream;base64,".length))}var De,be={m:function(e,t){return oe(e,t)},b:f,r:function(e,t){try{return e=de.getStr(e),pe.chmod(e,t),0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},g:function(e,t,r){de.varargs=r;try{var A=de.getStreamFromFD(e);switch(t){case 0:return(n=de.get())<0?-28:pe.open(A.path,A.flags,0,n).fd;case 1:case 2:return 0;case 3:return A.flags;case 4:var n=de.get();return A.flags|=n,0;case 12:n=de.get();return K[n+0>>1]=2,0;case 13:case 14:return 0;case 16:case 8:return-28;case 9:return se(28),-1;default:return-28}}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},l:function(e,t){try{var r=de.getStreamFromFD(e);return de.doStat(pe.stat,r.path,t)}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},q:function(e,t,r){de.varargs=r;try{var A=de.getStreamFromFD(e);switch(t){case 21509:case 21505:return A.tty?0:-59;case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:return A.tty?0:-59;case 21519:if(!A.tty)return-59;var n=de.get();return M[n>>2]=0,0;case 21520:return A.tty?-28:-59;case 21531:n=de.get();return pe.ioctl(A,t,n);case 21523:case 21524:return A.tty?0:-59;default:_("bad ioctl syscall "+t)}}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},t:function(e,t,r){de.varargs=r;try{var A=de.getStr(e),n=de.get();return pe.open(A,t,n).fd}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},s:function(e,t,r){try{var A=de.getStreamFromFD(e);return pe.read(A,N,t,r)}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},j:function(e,t){try{return e=de.getStr(e),t=de.getStr(t),pe.rename(e,t),0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},u:function(e){try{return e=de.getStr(e),pe.rmdir(e),0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},e:function(e,t){try{return e=de.getStr(e),de.doStat(pe.stat,e,t)}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},i:function(e){try{return e=de.getStr(e),pe.unlink(e),0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),-e.errno}},v:function(e,t,r){F.copyWithin(e,t,t+r)},w:function(e){e>>>=0;var t=F.length;if(e>2147483648)return!1;for(var r,A,n=1;n<=4;n*=2){var o=t*(1+.2/n);if(o=Math.min(o,e+100663296),Ce(Math.min(2147483648,((r=Math.max(16777216,e,o))%(A=65536)>0&&(r+=A-r%A),r))))return!0}return!1},h:function(e){try{var t=de.getStreamFromFD(e);return pe.close(t),0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),e.errno}},k:function(e,t){try{var r=de.getStreamFromFD(e),A=r.tty?2:pe.isDir(r.mode)?3:pe.isLink(r.mode)?7:4;return N[t>>0]=A,0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),e.errno}},p:function(e,t,r,A){try{var n=de.getStreamFromFD(e),o=de.doReadv(n,t,r);return M[A>>2]=o,0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),e.errno}},n:function(e,t,r,A,n){try{var o=de.getStreamFromFD(e),i=4294967296*r+(t>>>0);return i<=-9007199254740992||i>=9007199254740992?-61:(pe.llseek(o,i,A),te=[o.position>>>0,(ee=o.position,+Y(ee)>=1?ee>0?(0|J(+H(ee/4294967296),4294967295))>>>0:~~+G((ee-+(~~ee>>>0))/4294967296)>>>0:0)],M[n>>2]=te[0],M[n+4>>2]=te[1],o.getdents&&0===i&&0===A&&(o.getdents=null),0)}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),e.errno}},f:function(e,t,r,A){try{var n=de.getStreamFromFD(e),o=de.doWritev(n,t,r);return M[A>>2]=o,0}catch(e){return void 0!==pe&&e instanceof pe.ErrnoError||_(e),e.errno}},a:C,c:function(e){0|e},d:function(e){var t=Date.now()/1e3|0;return e&&(M[e>>2]=t),t},o:function(e){!function e(){if(!e.called){e.called=!0,M[Ke()>>2]=60*(new Date).getTimezoneOffset();var t=(new Date).getFullYear(),r=new Date(t,0,1),A=new Date(t,6,1);M[Fe()>>2]=Number(r.getTimezoneOffset()!=A.getTimezoneOffset());var n=a(r),o=a(A),i=S(n),s=S(o);A.getTimezoneOffset()>2]=i,M[Ne()+4>>2]=s):(M[Ne()>>2]=s,M[Ne()+4>>2]=i)}function a(e){var t=e.toTimeString().match(/\(([A-Za-z ]+)\)$/);return t?t[1]:"GMT"}}();var t=Date.UTC(M[e+20>>2]+1900,M[e+16>>2],M[e+12>>2],M[e+8>>2],M[e+4>>2],M[e>>2],0),r=new Date(t);M[e+24>>2]=r.getUTCDay();var A=Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0),n=(r.getTime()-A)/864e5|0;return M[e+28>>2]=n,r.getTime()/1e3|0}},ve=function(){var e={a:be};function t(e,t){var r=e.exports;o.asm=r,X()}if(V(),o.instantiateWasm)try{return o.instantiateWasm(e,t)}catch(e){return p("Module.instantiateWasm callback failed with error: "+e),!1}return function(){var r,A,n;try{n=function(){try{if(d)return new Uint8Array(d);var e=Qe(re);if(e)return e;if(a)return a(re);throw"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"}catch(e){_(e)}}(),A=new WebAssembly.Module(n),r=new WebAssembly.Instance(A,e)}catch(e){var o=e.toString();throw p("failed to compile wasm module: "+o),(o.indexOf("imported Memory")>=0||o.indexOf("memory import")>=0)&&p("Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."),e}t(r)}(),o.asm}(),Se=o.___wasm_call_ctors=ve.x,ke=(o._zipstruct_stat=ve.y,o._zipstruct_statS=ve.z,o._zipstruct_stat_name=ve.A,o._zipstruct_stat_index=ve.B,o._zipstruct_stat_size=ve.C,o._zipstruct_stat_mtime=ve.D,o._zipstruct_error=ve.E,o._zipstruct_errorS=ve.F,o._zipstruct_error_code_zip=ve.G,o._zipstruct_stat_comp_size=ve.H,o._zipstruct_stat_comp_method=ve.I,o._zip_close=ve.J,o._zip_delete=ve.K,o._zip_dir_add=ve.L,o._zip_discard=ve.M,o._zip_error_init_with_code=ve.N,o._zip_get_error=ve.O,o._zip_file_get_error=ve.P,o._zip_error_strerror=ve.Q,o._zip_fclose=ve.R,o._zip_file_add=ve.S,o._zip_file_get_external_attributes=ve.T,o._zip_file_set_external_attributes=ve.U,o._zip_file_set_mtime=ve.V,o._zip_fopen=ve.W,o._zip_fopen_index=ve.X,o._zip_fread=ve.Y,o._zip_get_name=ve.Z,o._zip_get_num_entries=ve._,o._zip_name_locate=ve.$,o._zip_open=ve.aa,o._zip_open_from_source=ve.ba,o._zip_set_file_compression=ve.ca,o._zip_source_buffer=ve.da,o._zip_source_buffer_create=ve.ea,o._zip_source_close=ve.fa,o._zip_source_error=ve.ga,o._zip_source_free=ve.ha,o._zip_source_keep=ve.ia,o._zip_source_open=ve.ja,o._zip_source_read=ve.ka,o._zip_source_seek=ve.la,o._zip_source_set_mtime=ve.ma,o._zip_source_tell=ve.na,o._zip_stat=ve.oa,o._zip_stat_index=ve.pa,o._zip_ext_count_symlinks=ve.qa,o.___errno_location=ve.ra),Ne=o.__get_tzname=ve.sa,Fe=o.__get_daylight=ve.ta,Ke=o.__get_timezone=ve.ua,Me=o.stackSave=ve.va,Re=o.stackRestore=ve.wa,xe=o.stackAlloc=ve.xa,Le=o._malloc=ve.ya;o._free=ve.za;function Pe(e){function t(){De||(De=!0,o.calledRun=!0,I||(!0,o.noFSInit||pe.init.initialized||pe.init(),ce.init(),Ae(U),pe.ignorePermissions=!1,Ae(T),o.onRuntimeInitialized&&o.onRuntimeInitialized(),function(){if(o.postRun)for("function"==typeof o.postRun&&(o.postRun=[o.postRun]);o.postRun.length;)e=o.postRun.shift(),j.unshift(e);var e;Ae(j)}()))}e=e||l,q>0||(!function(){if(o.preRun)for("function"==typeof o.preRun&&(o.preRun=[o.preRun]);o.preRun.length;)e=o.preRun.shift(),O.unshift(e);var e;Ae(O)}(),q>0||(o.setStatus?(o.setStatus("Running..."),setTimeout((function(){setTimeout((function(){o.setStatus("")}),1),t()}),1)):t()))}if(o.cwrap=function(e,t,r,A){var n=(r=r||[]).every((function(e){return"number"===e}));return"string"!==t&&n&&!A?B(e):function(){return y(e,t,r,arguments)}},o.getValue=function(e,t,r){switch("*"===(t=t||"i8").charAt(t.length-1)&&(t="i32"),t){case"i1":case"i8":return N[e>>0];case"i16":return K[e>>1];case"i32":case"i64":return M[e>>2];case"float":return R[e>>2];case"double":return x[e>>3];default:_("invalid type for getValue: "+t)}return null},W=function e(){De||Pe(),De||(W=e)},o.run=Pe,o.preInit)for("function"==typeof o.preInit&&(o.preInit=[o.preInit]);o.preInit.length>0;)o.preInit.pop()();Pe()},98261:e=>{"use strict";function t(e,r,A,n){this.message=e,this.expected=r,this.found=A,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}!function(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}(t,Error),t.buildMessage=function(e,t){var r={literal:function(e){return`"${n(e.text)}"`},class:function(e){var t,r="";for(t=0;t0){for(t=1,A=1;tf&&(f=p,I=[]),I.push(e))}function Q(e,r,A){return new t(t.buildMessage(e,r),e,r,A)}function D(){var t,r,A,o;return t=p,(r=b())!==n?(47===e.charCodeAt(p)?(A="/",p++):(A=n,w(s)),A!==n&&(o=b())!==n?(d=t,t=r={from:r,descriptor:o}):(p=t,t=n)):(p=t,t=n),t===n&&(t=p,(r=b())!==n&&(d=t,r=function(e){return{descriptor:e}}(r)),t=r),t}function b(){var t,r,A,o;return t=p,(r=v())!==n?(64===e.charCodeAt(p)?(A="@",p++):(A=n,w(a)),A!==n&&(o=function(){var t,r,A;t=p,r=[],u.test(e.charAt(p))?(A=e.charAt(p),p++):(A=n,w(h));if(A!==n)for(;A!==n;)r.push(A),u.test(e.charAt(p))?(A=e.charAt(p),p++):(A=n,w(h));else r=n;r!==n&&(d=t,r=c());return t=r}())!==n?(d=t,t=r={fullName:r,description:o}):(p=t,t=n)):(p=t,t=n),t===n&&(t=p,(r=v())!==n&&(d=t,r=function(e){return{fullName:e}}(r)),t=r),t}function v(){var t,r,A;return t=p,64===e.charCodeAt(p)?(r="@",p++):(r=n,w(a)),r!==n&&S()!==n?(47===e.charCodeAt(p)?(A="/",p++):(A=n,w(s)),A!==n&&S()!==n?(d=t,t=r=c()):(p=t,t=n)):(p=t,t=n),t===n&&(t=p,(r=S())!==n&&(d=t,r=c()),t=r),t}function S(){var t,r,A;if(t=p,r=[],g.test(e.charAt(p))?(A=e.charAt(p),p++):(A=n,w(l)),A!==n)for(;A!==n;)r.push(A),g.test(e.charAt(p))?(A=e.charAt(p),p++):(A=n,w(l));else r=n;return r!==n&&(d=t,r=c()),t=r}if((A=i())!==n&&p===e.length)return A;throw A!==n&&p{"use strict";function t(e,r,A,n){this.message=e,this.expected=r,this.found=A,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}!function(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}(t,Error),t.buildMessage=function(e,t){var r={literal:function(e){return'"'+n(e.text)+'"'},class:function(e){var t,r="";for(t=0;t0){for(t=1,A=1;t>",!1),I=le(">&",!1),E=le(">",!1),B=le("<<<",!1),y=le("<&",!1),m=le("<",!1),w=le("'",!1),Q=le('"',!1),D=function(e){return{type:"text",text:e}},b=le("\\",!1),v={type:"any"},S=/^[^']/,k=ue(["'"],!0,!1),N=function(e){return e.join("")},F=/^[^$"]/,K=ue(["$",'"'],!0,!1),M=le("-",!1),R=le("+",!1),x=/^[0-9]/,L=ue([["0","9"]],!1,!1),P=le(".",!1),O=le("*",!1),U=le("/",!1),T=le("$((",!1),j=le("))",!1),Y=le("$(",!1),G=le("${",!1),H=le(":-",!1),J=le(":-}",!1),q=function(e){return{name:e}},z=le("$",!1),W=/^[a-zA-Z0-9_]/,V=ue([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),X=function(){return e.substring(ie,oe)},_=/^[$@*?#a-zA-Z0-9_\-]/,Z=ue(["$","@","*","?","#",["a","z"],["A","Z"],["0","9"],"_","-"],!1,!1),$=/^[(){}<>$|&; \t"']/,ee=ue(["(",")","{","}","<",">","$","|","&",";"," ","\t",'"',"'"],!1,!1),te=/^[<>&; \t"']/,re=ue(["<",">","&",";"," ","\t",'"',"'"],!1,!1),Ae=/^[ \t]/,ne=ue([" ","\t"],!1,!1),oe=0,ie=0,se=[{line:1,column:1}],ae=0,ce=[],ge=0;if("startRule"in r){if(!(r.startRule in o))throw new Error("Can't start parsing from rule \""+r.startRule+'".');i=o[r.startRule]}function le(e,t){return{type:"literal",text:e,ignoreCase:t}}function ue(e,t,r){return{type:"class",parts:e,inverted:t,ignoreCase:r}}function he(t){var r,A=se[t];if(A)return A;for(r=t-1;!se[r];)r--;for(A={line:(A=se[r]).line,column:A.column};rae&&(ae=oe,ce=[]),ce.push(e))}function Ce(e,r,A){return new t(t.buildMessage(e,r),e,r,A)}function fe(){var e,t;return e=oe,(t=Ie())===n&&(t=null),t!==n&&(ie=e,t=t||[]),e=t}function Ie(){var e,t,r,A,o;if(e=oe,(t=Be())!==n){for(r=[],A=Te();A!==n;)r.push(A),A=Te();r!==n&&(A=Ee())!==n?((o=function(){var e,t,r,A,o;e=oe,t=[],r=Te();for(;r!==n;)t.push(r),r=Te();if(t!==n)if((r=Ie())!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();A!==n?(ie=e,e=t=r):(oe=e,e=n)}else oe=e,e=n;else oe=e,e=n;return e}())===n&&(o=null),o!==n?(ie=e,e=t=[t].concat(o||[])):(oe=e,e=n)):(oe=e,e=n)}else oe=e,e=n;if(e===n)if(e=oe,(t=Be())!==n){for(r=[],A=Te();A!==n;)r.push(A),A=Te();r!==n?((A=Ee())===n&&(A=null),A!==n?(ie=e,e=t=function(e,t){return[e]}(t)):(oe=e,e=n)):(oe=e,e=n)}else oe=e,e=n;return e}function Ee(){var t;return 59===e.charCodeAt(oe)?(t=";",oe++):(t=n,0===ge&&de(s)),t}function Be(){var t,r,A,o,i;return t=oe,(r=ye())!==n?((A=function(){var t,r,A,o,i,s,g;t=oe,r=[],A=Te();for(;A!==n;)r.push(A),A=Te();if(r!==n)if((A=function(){var t;"&&"===e.substr(oe,2)?(t="&&",oe+=2):(t=n,0===ge&&de(a));t===n&&("||"===e.substr(oe,2)?(t="||",oe+=2):(t=n,0===ge&&de(c)));return t}())!==n){for(o=[],i=Te();i!==n;)o.push(i),i=Te();if(o!==n)if((i=Be())!==n){for(s=[],g=Te();g!==n;)s.push(g),g=Te();s!==n?(ie=t,t=r={type:A,line:i}):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;else oe=t,t=n;return t}())===n&&(A=null),A!==n?(ie=t,o=r,t=r=(i=A)?{chain:o,then:i}:{chain:o}):(oe=t,t=n)):(oe=t,t=n),t}function ye(){var t,r,A,o,i;return t=oe,(r=function(){var t,r,A,o,i,s,a,c,g,l,u;t=oe,r=[],A=Te();for(;A!==n;)r.push(A),A=Te();if(r!==n)if(40===e.charCodeAt(oe)?(A="(",oe++):(A=n,0===ge&&de(h)),A!==n){for(o=[],i=Te();i!==n;)o.push(i),i=Te();if(o!==n)if((i=Ie())!==n){for(s=[],a=Te();a!==n;)s.push(a),a=Te();if(s!==n)if(41===e.charCodeAt(oe)?(a=")",oe++):(a=n,0===ge&&de(p)),a!==n){for(c=[],g=Te();g!==n;)c.push(g),g=Te();if(c!==n){for(g=[],l=Qe();l!==n;)g.push(l),l=Qe();if(g!==n){for(l=[],u=Te();u!==n;)l.push(u),u=Te();l!==n?(ie=t,t=r={type:"subshell",subshell:i,args:g}):(oe=t,t=n)}else oe=t,t=n}else oe=t,t=n}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;else oe=t,t=n;if(t===n){for(t=oe,r=[],A=Te();A!==n;)r.push(A),A=Te();if(r!==n)if(123===e.charCodeAt(oe)?(A="{",oe++):(A=n,0===ge&&de(d)),A!==n){for(o=[],i=Te();i!==n;)o.push(i),i=Te();if(o!==n)if((i=Ie())!==n){for(s=[],a=Te();a!==n;)s.push(a),a=Te();if(s!==n)if(125===e.charCodeAt(oe)?(a="}",oe++):(a=n,0===ge&&de(C)),a!==n){for(c=[],g=Te();g!==n;)c.push(g),g=Te();if(c!==n){for(g=[],l=Qe();l!==n;)g.push(l),l=Qe();if(g!==n){for(l=[],u=Te();u!==n;)l.push(u),u=Te();l!==n?(ie=t,r=function(e,t){return{type:"group",group:e,args:t}}(i,g),t=r):(oe=t,t=n)}else oe=t,t=n}else oe=t,t=n}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;else oe=t,t=n;if(t===n){for(t=oe,r=[],A=Te();A!==n;)r.push(A),A=Te();if(r!==n){for(A=[],o=me();o!==n;)A.push(o),o=me();if(A!==n){for(o=[],i=Te();i!==n;)o.push(i),i=Te();if(o!==n){if(i=[],(s=we())!==n)for(;s!==n;)i.push(s),s=we();else i=n;if(i!==n){for(s=[],a=Te();a!==n;)s.push(a),a=Te();s!==n?(ie=t,r=function(e,t){return{type:"command",args:t,envs:e}}(A,i),t=r):(oe=t,t=n)}else oe=t,t=n}else oe=t,t=n}else oe=t,t=n}else oe=t,t=n;if(t===n){for(t=oe,r=[],A=Te();A!==n;)r.push(A),A=Te();if(r!==n){if(A=[],(o=me())!==n)for(;o!==n;)A.push(o),o=me();else A=n;if(A!==n){for(o=[],i=Te();i!==n;)o.push(i),i=Te();o!==n?(ie=t,t=r={type:"envs",envs:A}):(oe=t,t=n)}else oe=t,t=n}else oe=t,t=n}}}return t}())!==n?((A=function(){var t,r,A,o,i,s,a;t=oe,r=[],A=Te();for(;A!==n;)r.push(A),A=Te();if(r!==n)if((A=function(){var t;"|&"===e.substr(oe,2)?(t="|&",oe+=2):(t=n,0===ge&&de(g));t===n&&(124===e.charCodeAt(oe)?(t="|",oe++):(t=n,0===ge&&de(l)));return t}())!==n){for(o=[],i=Te();i!==n;)o.push(i),i=Te();if(o!==n)if((i=ye())!==n){for(s=[],a=Te();a!==n;)s.push(a),a=Te();s!==n?(ie=t,t=r={type:A,chain:i}):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;else oe=t,t=n;return t}())===n&&(A=null),A!==n?(ie=t,o=r,t=r=(i=A)?{...o,then:i}:o):(oe=t,t=n)):(oe=t,t=n),t}function me(){var t,r,A,o,i,s;if(t=oe,(r=Le())!==n)if(61===e.charCodeAt(oe)?(A="=",oe++):(A=n,0===ge&&de(u)),A!==n)if((o=be())!==n){for(i=[],s=Te();s!==n;)i.push(s),s=Te();i!==n?(ie=t,t=r={name:r,args:[o]}):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n;else oe=t,t=n;if(t===n)if(t=oe,(r=Le())!==n)if(61===e.charCodeAt(oe)?(A="=",oe++):(A=n,0===ge&&de(u)),A!==n){for(o=[],i=Te();i!==n;)o.push(i),i=Te();o!==n?(ie=t,t=r=function(e){return{name:e,args:[]}}(r)):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n;return t}function we(){var e,t,r;for(e=oe,t=[],r=Te();r!==n;)t.push(r),r=Te();if(t!==n&&(r=Qe())!==n?(ie=e,e=t=r):(oe=e,e=n),e===n){for(e=oe,t=[],r=Te();r!==n;)t.push(r),r=Te();t!==n&&(r=De())!==n?(ie=e,e=t=r):(oe=e,e=n)}return e}function Qe(){var t,r,A,o;for(t=oe,r=[],A=Te();A!==n;)r.push(A),A=Te();return r!==n&&(A=function(){var t;">>"===e.substr(oe,2)?(t=">>",oe+=2):(t=n,0===ge&&de(f));t===n&&(">&"===e.substr(oe,2)?(t=">&",oe+=2):(t=n,0===ge&&de(I)),t===n&&(62===e.charCodeAt(oe)?(t=">",oe++):(t=n,0===ge&&de(E)),t===n&&("<<<"===e.substr(oe,3)?(t="<<<",oe+=3):(t=n,0===ge&&de(B)),t===n&&("<&"===e.substr(oe,2)?(t="<&",oe+=2):(t=n,0===ge&&de(y)),t===n&&(60===e.charCodeAt(oe)?(t="<",oe++):(t=n,0===ge&&de(m)))))));return t}())!==n&&(o=De())!==n?(ie=t,t=r={type:"redirection",subtype:A,args:[o]}):(oe=t,t=n),t}function De(){var e,t,r;for(e=oe,t=[],r=Te();r!==n;)t.push(r),r=Te();return t!==n&&(r=be())!==n?(ie=e,e=t=r):(oe=e,e=n),e}function be(){var e,t,r,A;if(e=oe,t=[],(r=ve())!==n)for(;r!==n;)t.push(r),r=ve();else t=n;return t!==n&&(ie=e,A=t,t={type:"argument",segments:[].concat(...A)}),e=t}function ve(){var t,r;return t=oe,(r=function(){var t,r,A,o;t=oe,39===e.charCodeAt(oe)?(r="'",oe++):(r=n,0===ge&&de(w));r!==n&&(A=function(){var t,r,A,o,i;t=oe,r=[],A=oe,92===e.charCodeAt(oe)?(o="\\",oe++):(o=n,0===ge&&de(b));o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n);A===n&&(S.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(k)));for(;A!==n;)r.push(A),A=oe,92===e.charCodeAt(oe)?(o="\\",oe++):(o=n,0===ge&&de(b)),o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n),A===n&&(S.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(k)));r!==n&&(ie=t,r=N(r));return t=r}())!==n?(39===e.charCodeAt(oe)?(o="'",oe++):(o=n,0===ge&&de(w)),o!==n?(ie=t,r=function(e){return[{type:"text",text:e}]}(A),t=r):(oe=t,t=n)):(oe=t,t=n);return t}())!==n&&(ie=t,r=r),(t=r)===n&&(t=oe,(r=function(){var t,r,A,o;t=oe,34===e.charCodeAt(oe)?(r='"',oe++):(r=n,0===ge&&de(Q));if(r!==n){for(A=[],o=Se();o!==n;)A.push(o),o=Se();A!==n?(34===e.charCodeAt(oe)?(o='"',oe++):(o=n,0===ge&&de(Q)),o!==n?(ie=t,t=r=A):(oe=t,t=n)):(oe=t,t=n)}else oe=t,t=n;return t}())!==n&&(ie=t,r=r),(t=r)===n&&(t=oe,(r=function(){var e,t,r;if(e=oe,t=[],(r=ke())!==n)for(;r!==n;)t.push(r),r=ke();else t=n;t!==n&&(ie=e,t=t);return e=t}())!==n&&(ie=t,r=r),t=r)),t}function Se(){var t,r,A;return t=oe,(r=Me())!==n&&(ie=t,r={type:"arithmetic",arithmetic:r,quoted:!0}),(t=r)===n&&(t=oe,(r=Re())!==n&&(ie=t,r={type:"shell",shell:r,quoted:!0}),(t=r)===n&&(t=oe,(r=xe())!==n&&(ie=t,A=r,r={type:"variable",...A,quoted:!0}),(t=r)===n&&(t=oe,(r=function(){var t,r,A,o,i;t=oe,r=[],A=oe,92===e.charCodeAt(oe)?(o="\\",oe++):(o=n,0===ge&&de(b));o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n);A===n&&(F.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(K)));if(A!==n)for(;A!==n;)r.push(A),A=oe,92===e.charCodeAt(oe)?(o="\\",oe++):(o=n,0===ge&&de(b)),o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n),A===n&&(F.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(K)));else r=n;r!==n&&(ie=t,r=N(r));return t=r}())!==n&&(ie=t,r=D(r)),t=r))),t}function ke(){var t,A,o;return t=oe,(A=Me())!==n&&(ie=t,A={type:"arithmetic",arithmetic:A,quoted:!1}),(t=A)===n&&(t=oe,(A=Re())!==n&&(ie=t,A={type:"shell",shell:A,quoted:!1}),(t=A)===n&&(t=oe,(A=xe())!==n&&(ie=t,o=A,A={type:"variable",...o,quoted:!1}),(t=A)===n&&(t=oe,(A=function(){var t,A;t=oe,(A=function(){var t,r,A,o,i;t=oe,r=[],A=oe,o=oe,ge++,i=Ue(),ge--,i===n?o=void 0:(oe=o,o=n);o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n);if(A!==n)for(;A!==n;)r.push(A),A=oe,o=oe,ge++,i=Ue(),ge--,i===n?o=void 0:(oe=o,o=n),o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n);else r=n;r!==n&&(ie=t,r=N(r));return t=r}())!==n?(ie=oe,o=A,(r.isGlobPattern(o)?void 0:n)!==n?(ie=t,t=A=A):(oe=t,t=n)):(oe=t,t=n);var o;return t}())!==n&&(ie=t,A={type:"glob",pattern:A}),(t=A)===n&&(t=oe,(A=function(){var t,r,A,o,i;t=oe,r=[],A=oe,92===e.charCodeAt(oe)?(o="\\",oe++):(o=n,0===ge&&de(b));o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n);A===n&&(A=oe,o=oe,ge++,i=Oe(),ge--,i===n?o=void 0:(oe=o,o=n),o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n));if(A!==n)for(;A!==n;)r.push(A),A=oe,92===e.charCodeAt(oe)?(o="\\",oe++):(o=n,0===ge&&de(b)),o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n),A===n&&(A=oe,o=oe,ge++,i=Oe(),ge--,i===n?o=void 0:(oe=o,o=n),o!==n?(e.length>oe?(i=e.charAt(oe),oe++):(i=n,0===ge&&de(v)),i!==n?(ie=A,A=o=i):(oe=A,A=n)):(oe=A,A=n));else r=n;r!==n&&(ie=t,r=N(r));return t=r}())!==n&&(ie=t,A=D(A)),t=A)))),t}function Ne(){var t,r,A,o,i,s,a,c;if(t=oe,45===e.charCodeAt(oe)?(r="-",oe++):(r=n,0===ge&&de(M)),r===n&&(43===e.charCodeAt(oe)?(r="+",oe++):(r=n,0===ge&&de(R))),r===n&&(r=null),r!==n){if(A=[],x.test(e.charAt(oe))?(o=e.charAt(oe),oe++):(o=n,0===ge&&de(L)),o!==n)for(;o!==n;)A.push(o),x.test(e.charAt(oe))?(o=e.charAt(oe),oe++):(o=n,0===ge&&de(L));else A=n;if(A!==n)if(46===e.charCodeAt(oe)?(o=".",oe++):(o=n,0===ge&&de(P)),o!==n){if(i=[],x.test(e.charAt(oe))?(s=e.charAt(oe),oe++):(s=n,0===ge&&de(L)),s!==n)for(;s!==n;)i.push(s),x.test(e.charAt(oe))?(s=e.charAt(oe),oe++):(s=n,0===ge&&de(L));else i=n;i!==n?(ie=t,a=i,t=r={type:"number",value:("-"===r?-1:1)*parseFloat(A.join("")+"."+a.join(""))}):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;if(t===n){if(t=oe,45===e.charCodeAt(oe)?(r="-",oe++):(r=n,0===ge&&de(M)),r===n&&(43===e.charCodeAt(oe)?(r="+",oe++):(r=n,0===ge&&de(R))),r===n&&(r=null),r!==n){if(A=[],x.test(e.charAt(oe))?(o=e.charAt(oe),oe++):(o=n,0===ge&&de(L)),o!==n)for(;o!==n;)A.push(o),x.test(e.charAt(oe))?(o=e.charAt(oe),oe++):(o=n,0===ge&&de(L));else A=n;A!==n?(ie=t,t=r=function(e,t){return{type:"number",value:("-"===e?-1:1)*parseInt(t.join(""))}}(r,A)):(oe=t,t=n)}else oe=t,t=n;if(t===n&&(t=oe,(r=xe())!==n&&(ie=t,c=r,r={type:"variable",...c}),(t=r)===n&&(t=oe,(r=Pe())!==n&&(ie=t,r={type:"variable",name:r}),(t=r)===n)))if(t=oe,40===e.charCodeAt(oe)?(r="(",oe++):(r=n,0===ge&&de(h)),r!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();if(A!==n)if((o=Ke())!==n){for(i=[],s=Te();s!==n;)i.push(s),s=Te();i!==n?(41===e.charCodeAt(oe)?(s=")",oe++):(s=n,0===ge&&de(p)),s!==n?(ie=t,t=r=o):(oe=t,t=n)):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n}return t}function Fe(){var t,r,A,o,i,s;if(t=oe,(r=Ne())!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();if(A!==n)if(42===e.charCodeAt(oe)?(o="*",oe++):(o=n,0===ge&&de(O)),o!==n){for(i=[],s=Te();s!==n;)i.push(s),s=Te();i!==n&&(s=Fe())!==n?(ie=t,t=r={type:"multiplication",left:r,right:s}):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;if(t===n){if(t=oe,(r=Ne())!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();if(A!==n)if(47===e.charCodeAt(oe)?(o="/",oe++):(o=n,0===ge&&de(U)),o!==n){for(i=[],s=Te();s!==n;)i.push(s),s=Te();i!==n&&(s=Fe())!==n?(ie=t,t=r=function(e,t){return{type:"division",left:e,right:t}}(r,s)):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;t===n&&(t=Ne())}return t}function Ke(){var t,r,A,o,i,s;if(t=oe,(r=Fe())!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();if(A!==n)if(43===e.charCodeAt(oe)?(o="+",oe++):(o=n,0===ge&&de(R)),o!==n){for(i=[],s=Te();s!==n;)i.push(s),s=Te();i!==n&&(s=Ke())!==n?(ie=t,t=r={type:"addition",left:r,right:s}):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;if(t===n){if(t=oe,(r=Fe())!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();if(A!==n)if(45===e.charCodeAt(oe)?(o="-",oe++):(o=n,0===ge&&de(M)),o!==n){for(i=[],s=Te();s!==n;)i.push(s),s=Te();i!==n&&(s=Ke())!==n?(ie=t,t=r=function(e,t){return{type:"subtraction",left:e,right:t}}(r,s)):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;t===n&&(t=Fe())}return t}function Me(){var t,r,A,o,i,s;if(t=oe,"$(("===e.substr(oe,3)?(r="$((",oe+=3):(r=n,0===ge&&de(T)),r!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();if(A!==n)if((o=Ke())!==n){for(i=[],s=Te();s!==n;)i.push(s),s=Te();i!==n?("))"===e.substr(oe,2)?(s="))",oe+=2):(s=n,0===ge&&de(j)),s!==n?(ie=t,t=r=o):(oe=t,t=n)):(oe=t,t=n)}else oe=t,t=n;else oe=t,t=n}else oe=t,t=n;return t}function Re(){var t,r,A,o;return t=oe,"$("===e.substr(oe,2)?(r="$(",oe+=2):(r=n,0===ge&&de(Y)),r!==n&&(A=Ie())!==n?(41===e.charCodeAt(oe)?(o=")",oe++):(o=n,0===ge&&de(p)),o!==n?(ie=t,t=r=A):(oe=t,t=n)):(oe=t,t=n),t}function xe(){var t,r,A,o,i,s;return t=oe,"${"===e.substr(oe,2)?(r="${",oe+=2):(r=n,0===ge&&de(G)),r!==n&&(A=Pe())!==n?(":-"===e.substr(oe,2)?(o=":-",oe+=2):(o=n,0===ge&&de(H)),o!==n&&(i=function(){var e,t,r,A,o;for(e=oe,t=[],r=Te();r!==n;)t.push(r),r=Te();if(t!==n){if(r=[],(A=De())!==n)for(;A!==n;)r.push(A),A=De();else r=n;if(r!==n){for(A=[],o=Te();o!==n;)A.push(o),o=Te();A!==n?(ie=e,e=t=r):(oe=e,e=n)}else oe=e,e=n}else oe=e,e=n;return e}())!==n?(125===e.charCodeAt(oe)?(s="}",oe++):(s=n,0===ge&&de(C)),s!==n?(ie=t,t=r={name:A,defaultValue:i}):(oe=t,t=n)):(oe=t,t=n)):(oe=t,t=n),t===n&&(t=oe,"${"===e.substr(oe,2)?(r="${",oe+=2):(r=n,0===ge&&de(G)),r!==n&&(A=Pe())!==n?(":-}"===e.substr(oe,3)?(o=":-}",oe+=3):(o=n,0===ge&&de(J)),o!==n?(ie=t,t=r=function(e){return{name:e,defaultValue:[]}}(A)):(oe=t,t=n)):(oe=t,t=n),t===n&&(t=oe,"${"===e.substr(oe,2)?(r="${",oe+=2):(r=n,0===ge&&de(G)),r!==n&&(A=Pe())!==n?(125===e.charCodeAt(oe)?(o="}",oe++):(o=n,0===ge&&de(C)),o!==n?(ie=t,t=r=q(A)):(oe=t,t=n)):(oe=t,t=n),t===n&&(t=oe,36===e.charCodeAt(oe)?(r="$",oe++):(r=n,0===ge&&de(z)),r!==n&&(A=Pe())!==n?(ie=t,t=r=q(A)):(oe=t,t=n)))),t}function Le(){var t,r,A;if(t=oe,r=[],W.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(V)),A!==n)for(;A!==n;)r.push(A),W.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(V));else r=n;return r!==n&&(ie=t,r=X()),t=r}function Pe(){var t,r,A;if(t=oe,r=[],_.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(Z)),A!==n)for(;A!==n;)r.push(A),_.test(e.charAt(oe))?(A=e.charAt(oe),oe++):(A=n,0===ge&&de(Z));else r=n;return r!==n&&(ie=t,r=X()),t=r}function Oe(){var t;return $.test(e.charAt(oe))?(t=e.charAt(oe),oe++):(t=n,0===ge&&de(ee)),t}function Ue(){var t;return te.test(e.charAt(oe))?(t=e.charAt(oe),oe++):(t=n,0===ge&&de(re)),t}function Te(){var t,r;if(t=[],Ae.test(e.charAt(oe))?(r=e.charAt(oe),oe++):(r=n,0===ge&&de(ne)),r!==n)for(;r!==n;)t.push(r),Ae.test(e.charAt(oe))?(r=e.charAt(oe),oe++):(r=n,0===ge&&de(ne));else t=n;return t}if((A=i())!==n&&oe===e.length)return A;throw A!==n&&oe{"use strict";function t(e,r,A,n){this.message=e,this.expected=r,this.found=A,this.location=n,this.name="SyntaxError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}!function(e,t){function r(){this.constructor=e}r.prototype=t.prototype,e.prototype=new r}(t,Error),t.buildMessage=function(e,t){var r={literal:function(e){return`"${n(e.text)}"`},class:function(e){var t,r="";for(t=0;t0){for(t=1,A=1;t'"%@`\-]/,I=oe(["\r","\n","\t"," ","?",":",",","]","[","{","}","#","&","*","!","|",">","'",'"',"%","@","`","-"],!0,!1),E=/^[^\r\n\t ,\][{}:#"']/,B=oe(["\r","\n","\t"," ",",","]","[","{","}",":","#",'"',"'"],!0,!1),y=function(){return Ae().replace(/^ *| *$/g,"")},m=ne("--",!1),w=/^[a-zA-Z\/0-9]/,Q=oe([["a","z"],["A","Z"],"/",["0","9"]],!1,!1),D=/^[^\r\n\t :,]/,b=oe(["\r","\n","\t"," ",":",","],!0,!1),v=ne("null",!1),S=ne("true",!1),k=ne("false",!1),N=ie("string"),F=ne('"',!1),K=/^[^"\\\0-\x1F\x7F]/,M=oe(['"',"\\",["\0",""],""],!0,!1),R=ne('\\"',!1),x=ne("\\\\",!1),L=ne("\\/",!1),P=ne("\\b",!1),O=ne("\\f",!1),U=ne("\\n",!1),T=ne("\\r",!1),j=ne("\\t",!1),Y=ne("\\u",!1),G=/^[0-9a-fA-F]/,H=oe([["0","9"],["a","f"],["A","F"]],!1,!1),J=ie("blank space"),q=/^[ \t]/,z=oe([" ","\t"],!1,!1),W=(ie("white space"),oe([" ","\t","\n","\r"],!1,!1),ne("\r\n",!1)),V=ne("\n",!1),X=ne("\r",!1),_=0,Z=0,$=[{line:1,column:1}],ee=0,te=[],re=0;if("startRule"in r){if(!(r.startRule in o))throw new Error(`Can't start parsing from rule "${r.startRule}".`);i=o[r.startRule]}function Ae(){return e.substring(Z,_)}function ne(e,t){return{type:"literal",text:e,ignoreCase:t}}function oe(e,t,r){return{type:"class",parts:e,inverted:t,ignoreCase:r}}function ie(e){return{type:"other",description:e}}function se(t){var r,A=$[t];if(A)return A;for(r=t-1;!$[r];)r--;for(A={line:(A=$[r]).line,column:A.column};ree&&(ee=_,te=[]),te.push(e))}function ge(e,r,A){return new t(t.buildMessage(e,r),e,r,A)}function le(){return he()}function ue(){var t,r,A;return t=_,Ce()!==n?(45===e.charCodeAt(_)?(r="-",_++):(r=n,0===re&&ce(s)),r!==n&&be()!==n&&(A=de())!==n?(Z=t,t=A):(_=t,t=n)):(_=t,t=n),t}function he(){var e,t,r,A;for(e=_,t=[],r=pe();r!==n;)t.push(r),r=pe();return t!==n&&(Z=e,A=t,t=Object.assign({},...A)),e=t}function pe(){var t,r,A,o,i,s,p,d,C,f,I,E;if(t=_,(r=be())===n&&(r=null),r!==n){if(A=_,35===e.charCodeAt(_)?(o="#",_++):(o=n,0===re&&ce(a)),o!==n){if(i=[],s=_,p=_,re++,d=Se(),re--,d===n?p=void 0:(_=p,p=n),p!==n?(e.length>_?(d=e.charAt(_),_++):(d=n,0===re&&ce(c)),d!==n?s=p=[p,d]:(_=s,s=n)):(_=s,s=n),s!==n)for(;s!==n;)i.push(s),s=_,p=_,re++,d=Se(),re--,d===n?p=void 0:(_=p,p=n),p!==n?(e.length>_?(d=e.charAt(_),_++):(d=n,0===re&&ce(c)),d!==n?s=p=[p,d]:(_=s,s=n)):(_=s,s=n);else i=n;i!==n?A=o=[o,i]:(_=A,A=n)}else _=A,A=n;if(A===n&&(A=null),A!==n){if(o=[],(i=ve())!==n)for(;i!==n;)o.push(i),i=ve();else o=n;o!==n?(Z=t,t=r={}):(_=t,t=n)}else _=t,t=n}else _=t,t=n;if(t===n&&(t=_,(r=Ce())!==n&&(A=function(){var e;(e=we())===n&&(e=Be());return e}())!==n?((o=be())===n&&(o=null),o!==n?(58===e.charCodeAt(_)?(i=":",_++):(i=n,0===re&&ce(g)),i!==n?((s=be())===n&&(s=null),s!==n&&(p=de())!==n?(Z=t,t=r=l(A,p)):(_=t,t=n)):(_=t,t=n)):(_=t,t=n)):(_=t,t=n),t===n&&(t=_,(r=Ce())!==n&&(A=Ee())!==n?((o=be())===n&&(o=null),o!==n?(58===e.charCodeAt(_)?(i=":",_++):(i=n,0===re&&ce(g)),i!==n?((s=be())===n&&(s=null),s!==n&&(p=de())!==n?(Z=t,t=r=l(A,p)):(_=t,t=n)):(_=t,t=n)):(_=t,t=n)):(_=t,t=n),t===n))){if(t=_,(r=Ce())!==n)if((A=Ee())!==n)if((o=be())!==n)if((i=function(){var e;(e=me())===n&&(e=we())===n&&(e=ye());return e}())!==n){if(s=[],(p=ve())!==n)for(;p!==n;)s.push(p),p=ve();else s=n;s!==n?(Z=t,t=r=l(A,i)):(_=t,t=n)}else _=t,t=n;else _=t,t=n;else _=t,t=n;else _=t,t=n;if(t===n)if(t=_,(r=Ce())!==n)if((A=Ee())!==n){if(o=[],i=_,(s=be())===n&&(s=null),s!==n?(44===e.charCodeAt(_)?(p=",",_++):(p=n,0===re&&ce(u)),p!==n?((d=be())===n&&(d=null),d!==n&&(C=Ee())!==n?(Z=i,i=s=h(0,C)):(_=i,i=n)):(_=i,i=n)):(_=i,i=n),i!==n)for(;i!==n;)o.push(i),i=_,(s=be())===n&&(s=null),s!==n?(44===e.charCodeAt(_)?(p=",",_++):(p=n,0===re&&ce(u)),p!==n?((d=be())===n&&(d=null),d!==n&&(C=Ee())!==n?(Z=i,i=s=h(0,C)):(_=i,i=n)):(_=i,i=n)):(_=i,i=n);else o=n;o!==n?((i=be())===n&&(i=null),i!==n?(58===e.charCodeAt(_)?(s=":",_++):(s=n,0===re&&ce(g)),s!==n?((p=be())===n&&(p=null),p!==n&&(d=de())!==n?(Z=t,f=A,I=o,E=d,t=r=Object.assign({},...[f].concat(I).map(e=>({[e]:E})))):(_=t,t=n)):(_=t,t=n)):(_=t,t=n)):(_=t,t=n)}else _=t,t=n;else _=t,t=n}return t}function de(){var t,r,A,o,i,a,c;if(t=_,r=_,re++,A=_,(o=Se())!==n&&(i=function(){var t,r,A;t=_,r=[],32===e.charCodeAt(_)?(A=" ",_++):(A=n,0===re&&ce(d));for(;A!==n;)r.push(A),32===e.charCodeAt(_)?(A=" ",_++):(A=n,0===re&&ce(d));r!==n?(Z=_,(A=(A=r.length===(Ne+1)*ke)?void 0:n)!==n?t=r=[r,A]:(_=t,t=n)):(_=t,t=n);return t}())!==n?(45===e.charCodeAt(_)?(a="-",_++):(a=n,0===re&&ce(s)),a!==n&&(c=be())!==n?A=o=[o,i,a,c]:(_=A,A=n)):(_=A,A=n),re--,A!==n?(_=r,r=void 0):r=n,r!==n&&(A=ve())!==n&&(o=fe())!==n&&(i=function(){var e,t,r,A;for(e=_,t=[],r=ue();r!==n;)t.push(r),r=ue();return t!==n&&(Z=e,A=t,t=[].concat(...A)),e=t}())!==n&&(a=Ie())!==n?(Z=t,t=r=i):(_=t,t=n),t===n&&(t=_,(r=Se())!==n&&(A=fe())!==n&&(o=he())!==n&&(i=Ie())!==n?(Z=t,t=r=o):(_=t,t=n),t===n))if(t=_,(r=function(){var t;(t=me())===n&&(t=function(){var t,r;t=_,"true"===e.substr(_,4)?(r="true",_+=4):(r=n,0===re&&ce(S));r!==n&&(Z=t,r=!0);(t=r)===n&&(t=_,"false"===e.substr(_,5)?(r="false",_+=5):(r=n,0===re&&ce(k)),r!==n&&(Z=t,r=!1),t=r);return t}())===n&&(t=we())===n&&(t=Be());return t}())!==n){if(A=[],(o=ve())!==n)for(;o!==n;)A.push(o),o=ve();else A=n;A!==n?(Z=t,t=r=r):(_=t,t=n)}else _=t,t=n;return t}function Ce(){var t,r,A;for(re++,t=_,r=[],32===e.charCodeAt(_)?(A=" ",_++):(A=n,0===re&&ce(d));A!==n;)r.push(A),32===e.charCodeAt(_)?(A=" ",_++):(A=n,0===re&&ce(d));return r!==n?(Z=_,(A=(A=r.length===Ne*ke)?void 0:n)!==n?t=r=[r,A]:(_=t,t=n)):(_=t,t=n),re--,t===n&&(r=n,0===re&&ce(p)),t}function fe(){return Z=_,Ne++,!0?void 0:n}function Ie(){return Z=_,Ne--,!0?void 0:n}function Ee(){var e,t,r;if((e=we())===n){if(e=_,t=[],(r=ye())!==n)for(;r!==n;)t.push(r),r=ye();else t=n;t!==n&&(Z=e,t=Ae()),e=t}return e}function Be(){var t,r,A,o,i,s;if(re++,t=_,f.test(e.charAt(_))?(r=e.charAt(_),_++):(r=n,0===re&&ce(I)),r!==n){for(A=[],o=_,(i=be())===n&&(i=null),i!==n?(E.test(e.charAt(_))?(s=e.charAt(_),_++):(s=n,0===re&&ce(B)),s!==n?o=i=[i,s]:(_=o,o=n)):(_=o,o=n);o!==n;)A.push(o),o=_,(i=be())===n&&(i=null),i!==n?(E.test(e.charAt(_))?(s=e.charAt(_),_++):(s=n,0===re&&ce(B)),s!==n?o=i=[i,s]:(_=o,o=n)):(_=o,o=n);A!==n?(Z=t,t=r=y()):(_=t,t=n)}else _=t,t=n;return re--,t===n&&(r=n,0===re&&ce(C)),t}function ye(){var t,r,A,o,i;if(t=_,"--"===e.substr(_,2)?(r="--",_+=2):(r=n,0===re&&ce(m)),r===n&&(r=null),r!==n)if(w.test(e.charAt(_))?(A=e.charAt(_),_++):(A=n,0===re&&ce(Q)),A!==n){for(o=[],D.test(e.charAt(_))?(i=e.charAt(_),_++):(i=n,0===re&&ce(b));i!==n;)o.push(i),D.test(e.charAt(_))?(i=e.charAt(_),_++):(i=n,0===re&&ce(b));o!==n?(Z=t,t=r=y()):(_=t,t=n)}else _=t,t=n;else _=t,t=n;return t}function me(){var t,r;return t=_,"null"===e.substr(_,4)?(r="null",_+=4):(r=n,0===re&&ce(v)),r!==n&&(Z=t,r=null),t=r}function we(){var t,r,A,o;return re++,t=_,34===e.charCodeAt(_)?(r='"',_++):(r=n,0===re&&ce(F)),r!==n?(34===e.charCodeAt(_)?(A='"',_++):(A=n,0===re&&ce(F)),A!==n?(Z=t,t=r=""):(_=t,t=n)):(_=t,t=n),t===n&&(t=_,34===e.charCodeAt(_)?(r='"',_++):(r=n,0===re&&ce(F)),r!==n&&(A=function(){var e,t,r;if(e=_,t=[],(r=Qe())!==n)for(;r!==n;)t.push(r),r=Qe();else t=n;t!==n&&(Z=e,t=t.join(""));return e=t}())!==n?(34===e.charCodeAt(_)?(o='"',_++):(o=n,0===re&&ce(F)),o!==n?(Z=t,t=r=A):(_=t,t=n)):(_=t,t=n)),re--,t===n&&(r=n,0===re&&ce(N)),t}function Qe(){var t,r,A,o,i,s,a,c,g,l;return K.test(e.charAt(_))?(t=e.charAt(_),_++):(t=n,0===re&&ce(M)),t===n&&(t=_,'\\"'===e.substr(_,2)?(r='\\"',_+=2):(r=n,0===re&&ce(R)),r!==n&&(Z=t,r='"'),(t=r)===n&&(t=_,"\\\\"===e.substr(_,2)?(r="\\\\",_+=2):(r=n,0===re&&ce(x)),r!==n&&(Z=t,r="\\"),(t=r)===n&&(t=_,"\\/"===e.substr(_,2)?(r="\\/",_+=2):(r=n,0===re&&ce(L)),r!==n&&(Z=t,r="/"),(t=r)===n&&(t=_,"\\b"===e.substr(_,2)?(r="\\b",_+=2):(r=n,0===re&&ce(P)),r!==n&&(Z=t,r="\b"),(t=r)===n&&(t=_,"\\f"===e.substr(_,2)?(r="\\f",_+=2):(r=n,0===re&&ce(O)),r!==n&&(Z=t,r="\f"),(t=r)===n&&(t=_,"\\n"===e.substr(_,2)?(r="\\n",_+=2):(r=n,0===re&&ce(U)),r!==n&&(Z=t,r="\n"),(t=r)===n&&(t=_,"\\r"===e.substr(_,2)?(r="\\r",_+=2):(r=n,0===re&&ce(T)),r!==n&&(Z=t,r="\r"),(t=r)===n&&(t=_,"\\t"===e.substr(_,2)?(r="\\t",_+=2):(r=n,0===re&&ce(j)),r!==n&&(Z=t,r="\t"),(t=r)===n&&(t=_,"\\u"===e.substr(_,2)?(r="\\u",_+=2):(r=n,0===re&&ce(Y)),r!==n&&(A=De())!==n&&(o=De())!==n&&(i=De())!==n&&(s=De())!==n?(Z=t,a=A,c=o,g=i,l=s,t=r=String.fromCharCode(parseInt(`0x${a}${c}${g}${l}`))):(_=t,t=n)))))))))),t}function De(){var t;return G.test(e.charAt(_))?(t=e.charAt(_),_++):(t=n,0===re&&ce(H)),t}function be(){var t,r;if(re++,t=[],q.test(e.charAt(_))?(r=e.charAt(_),_++):(r=n,0===re&&ce(z)),r!==n)for(;r!==n;)t.push(r),q.test(e.charAt(_))?(r=e.charAt(_),_++):(r=n,0===re&&ce(z));else t=n;return re--,t===n&&(r=n,0===re&&ce(J)),t}function ve(){var e,t,r,A,o,i;if(e=_,(t=Se())!==n){for(r=[],A=_,(o=be())===n&&(o=null),o!==n&&(i=Se())!==n?A=o=[o,i]:(_=A,A=n);A!==n;)r.push(A),A=_,(o=be())===n&&(o=null),o!==n&&(i=Se())!==n?A=o=[o,i]:(_=A,A=n);r!==n?e=t=[t,r]:(_=e,e=n)}else _=e,e=n;return e}function Se(){var t;return"\r\n"===e.substr(_,2)?(t="\r\n",_+=2):(t=n,0===re&&ce(W)),t===n&&(10===e.charCodeAt(_)?(t="\n",_++):(t=n,0===re&&ce(V)),t===n&&(13===e.charCodeAt(_)?(t="\r",_++):(t=n,0===re&&ce(X)))),t}const ke=2;let Ne=0;if((A=i())!==n&&_===e.length)return A;throw A!==n&&_{let A;e.exports=()=>(void 0===A&&(A=r(78761).brotliDecompressSync(Buffer.from("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","base64")).toString()),A)},42357:e=>{"use strict";e.exports=require("assert")},64293:e=>{"use strict";e.exports=require("buffer")},63129:e=>{"use strict";e.exports=require("child_process")},27619:e=>{"use strict";e.exports=require("constants")},76417:e=>{"use strict";e.exports=require("crypto")},40881:e=>{"use strict";e.exports=require("dns")},28614:e=>{"use strict";e.exports=require("events")},35747:e=>{"use strict";e.exports=require("fs")},98605:e=>{"use strict";e.exports=require("http")},97565:e=>{"use strict";e.exports=require("http2")},57211:e=>{"use strict";e.exports=require("https")},32282:e=>{"use strict";e.exports=require("module")},11631:e=>{"use strict";e.exports=require("net")},12087:e=>{"use strict";e.exports=require("os")},85622:e=>{"use strict";e.exports=require("path")},71191:e=>{"use strict";e.exports=require("querystring")},51058:e=>{"use strict";e.exports=require("readline")},92413:e=>{"use strict";e.exports=require("stream")},24304:e=>{"use strict";e.exports=require("string_decoder")},4016:e=>{"use strict";e.exports=require("tls")},33867:e=>{"use strict";e.exports=require("tty")},78835:e=>{"use strict";e.exports=require("url")},31669:e=>{"use strict";e.exports=require("util")},78761:e=>{"use strict";e.exports=require("zlib")}},t={};function r(A){if(t[A])return t[A].exports;var n=t[A]={id:A,loaded:!1,exports:{}};return e[A].call(n.exports,n,n.exports,r),n.loaded=!0,n.exports}return r.c=t,r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.t=function(e,t){if(1&t&&(e=this(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var A=Object.create(null);r.r(A);var n={};if(2&t&&"object"==typeof e&&e)for(const t in e)n[t]=()=>e[t];return n.default=()=>e,r.d(A,n),A},r.d=(e,t)=>{for(var A in t)r.o(t,A)&&!r.o(e,A)&&Object.defineProperty(e,A,{enumerable:!0,get:t[A]})},r.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r(43418)})(); \ No newline at end of file diff --git a/.yarn/sdks/eslint/bin/eslint.js b/.yarn/sdks/eslint/bin/eslint.js new file mode 100755 index 00000000..4e7554dc --- /dev/null +++ b/.yarn/sdks/eslint/bin/eslint.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require eslint/bin/eslint.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real eslint/bin/eslint.js your application uses +module.exports = absRequire(`eslint/bin/eslint.js`); diff --git a/.yarn/sdks/eslint/lib/api.js b/.yarn/sdks/eslint/lib/api.js new file mode 100644 index 00000000..ac3c9fc0 --- /dev/null +++ b/.yarn/sdks/eslint/lib/api.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require eslint/lib/api.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real eslint/lib/api.js your application uses +module.exports = absRequire(`eslint/lib/api.js`); diff --git a/.yarn/sdks/eslint/package.json b/.yarn/sdks/eslint/package.json new file mode 100644 index 00000000..e425c68c --- /dev/null +++ b/.yarn/sdks/eslint/package.json @@ -0,0 +1,6 @@ +{ + "name": "eslint", + "version": "7.19.0-pnpify", + "main": "./lib/api.js", + "type": "commonjs" +} diff --git a/.yarn/sdks/integrations.yml b/.yarn/sdks/integrations.yml new file mode 100644 index 00000000..76ed42ba --- /dev/null +++ b/.yarn/sdks/integrations.yml @@ -0,0 +1,5 @@ +# This file is automatically generated by PnPify. +# Manual changes will be lost! + +integrations: + - vscode diff --git a/.yarn/sdks/prettier/index.js b/.yarn/sdks/prettier/index.js new file mode 100755 index 00000000..80134e18 --- /dev/null +++ b/.yarn/sdks/prettier/index.js @@ -0,0 +1,30 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve, dirname} = require(`path`); + +const relPnpApiPath = "../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require prettier/index.js + require(absPnpApiPath).setup(); + } + + const pnpifyResolution = require.resolve(`@yarnpkg/pnpify`, {paths: [dirname(absPnpApiPath)]}); + if (typeof global[`__yarnpkg_sdk_is_using_pnpify__`] === `undefined`) { + Object.defineProperty(global, `__yarnpkg_sdk_is_using_pnpify__`, {configurable: true, value: true}); + + process.env.NODE_OPTIONS += ` -r ${pnpifyResolution}`; + + // Apply PnPify to the current process + absRequire(pnpifyResolution).patchFs(); + } +} + +// Defer to the real prettier/index.js your application uses +module.exports = absRequire(`prettier/index.js`); diff --git a/.yarn/sdks/prettier/package.json b/.yarn/sdks/prettier/package.json new file mode 100644 index 00000000..ab2cedc4 --- /dev/null +++ b/.yarn/sdks/prettier/package.json @@ -0,0 +1,6 @@ +{ + "name": "prettier", + "version": "2.2.1-pnpify", + "main": "./index.js", + "type": "commonjs" +} diff --git a/.yarn/sdks/typescript/bin/tsc b/.yarn/sdks/typescript/bin/tsc new file mode 100755 index 00000000..06e51d0d --- /dev/null +++ b/.yarn/sdks/typescript/bin/tsc @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsc + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/bin/tsc your application uses +module.exports = absRequire(`typescript/bin/tsc`); diff --git a/.yarn/sdks/typescript/bin/tsserver b/.yarn/sdks/typescript/bin/tsserver new file mode 100755 index 00000000..2d03f3d9 --- /dev/null +++ b/.yarn/sdks/typescript/bin/tsserver @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/bin/tsserver + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/bin/tsserver your application uses +module.exports = absRequire(`typescript/bin/tsserver`); diff --git a/.yarn/sdks/typescript/lib/tsc.js b/.yarn/sdks/typescript/lib/tsc.js new file mode 100644 index 00000000..e030711c --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsc.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsc.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsc.js your application uses +module.exports = absRequire(`typescript/lib/tsc.js`); diff --git a/.yarn/sdks/typescript/lib/tsserver.js b/.yarn/sdks/typescript/lib/tsserver.js new file mode 100644 index 00000000..1d6dfb61 --- /dev/null +++ b/.yarn/sdks/typescript/lib/tsserver.js @@ -0,0 +1,111 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +const moduleWrapper = tsserver => { + const {isAbsolute} = require(`path`); + const pnpApi = require(`pnpapi`); + + const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => { + return `${locator.name}@${locator.reference}`; + })); + + // VSCode sends the zip paths to TS using the "zip://" prefix, that TS + // doesn't understand. This layer makes sure to remove the protocol + // before forwarding it to TS, and to add it back on all returned paths. + + function toEditorPath(str) { + // We add the `zip:` prefix to both `.zip/` paths and virtual paths + if (isAbsolute(str) && !str.match(/^\^zip:/) && (str.match(/\.zip\//) || str.match(/\$\$virtual\//))) { + // We also take the opportunity to turn virtual paths into physical ones; + // this makes is much easier to work with workspaces that list peer + // dependencies, since otherwise Ctrl+Click would bring us to the virtual + // file instances instead of the real ones. + // + // We only do this to modules owned by the the dependency tree roots. + // This avoids breaking the resolution when jumping inside a vendor + // with peer dep (otherwise jumping into react-dom would show resolution + // errors on react). + // + const resolved = pnpApi.resolveVirtual(str); + if (resolved) { + const locator = pnpApi.findPackageLocator(resolved); + if (locator && dependencyTreeRoots.has(`${locator.name}@${locator.reference}`)) { + str = resolved; + } + } + + str = str.replace(/\\/g, `/`) + str = str.replace(/^\/?/, `/`); + + // Absolute VSCode `Uri.fsPath`s need to start with a slash. + // VSCode only adds it automatically for supported schemes, + // so we have to do it manually for the `zip` scheme. + // The path needs to start with a caret otherwise VSCode doesn't handle the protocol + // + // Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910 + // + if (str.match(/\.zip\//)) { + str = `${isVSCode ? `^` : ``}zip:${str}`; + } + } + + return str; + } + + function fromEditorPath(str) { + return process.platform === `win32` + ? str.replace(/^\^?zip:\//, ``) + : str.replace(/^\^?zip:/, ``); + } + + // And here is the point where we hijack the VSCode <-> TS communications + // by adding ourselves in the middle. We locate everything that looks + // like an absolute path of ours and normalize it. + + const Session = tsserver.server.Session; + const {onMessage: originalOnMessage, send: originalSend} = Session.prototype; + let isVSCode = false; + + return Object.assign(Session.prototype, { + onMessage(/** @type {string} */ message) { + const parsedMessage = JSON.parse(message) + + if ( + parsedMessage != null && + typeof parsedMessage === `object` && + parsedMessage.arguments && + parsedMessage.arguments.hostInfo === `vscode` + ) { + isVSCode = true; + } + + return originalOnMessage.call(this, JSON.stringify(parsedMessage, (key, value) => { + return typeof value === `string` ? fromEditorPath(value) : value; + })); + }, + + send(/** @type {any} */ msg) { + return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => { + return typeof value === `string` ? toEditorPath(value) : value; + }))); + } + }); +}; + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/tsserver.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/tsserver.js your application uses +module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`)); diff --git a/.yarn/sdks/typescript/lib/typescript.js b/.yarn/sdks/typescript/lib/typescript.js new file mode 100644 index 00000000..7e3c852f --- /dev/null +++ b/.yarn/sdks/typescript/lib/typescript.js @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +const {existsSync} = require(`fs`); +const {createRequire, createRequireFromPath} = require(`module`); +const {resolve} = require(`path`); + +const relPnpApiPath = "../../../../.pnp.js"; + +const absPnpApiPath = resolve(__dirname, relPnpApiPath); +const absRequire = (createRequire || createRequireFromPath)(absPnpApiPath); + +if (existsSync(absPnpApiPath)) { + if (!process.versions.pnp) { + // Setup the environment to be able to require typescript/lib/typescript.js + require(absPnpApiPath).setup(); + } +} + +// Defer to the real typescript/lib/typescript.js your application uses +module.exports = absRequire(`typescript/lib/typescript.js`); diff --git a/.yarn/sdks/typescript/package.json b/.yarn/sdks/typescript/package.json new file mode 100644 index 00000000..db217567 --- /dev/null +++ b/.yarn/sdks/typescript/package.json @@ -0,0 +1,6 @@ +{ + "name": "typescript", + "version": "4.1.5-pnpify", + "main": "./lib/typescript.js", + "type": "commonjs" +} diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 00000000..12d38c05 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,7 @@ +nodeLinker: pnp + +plugins: + - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs + spec: "@yarnpkg/plugin-interactive-tools" + +yarnPath: .yarn/releases/yarn-2.4.1.cjs diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md deleted file mode 100644 index 53e613dd..00000000 --- a/ATTRIBUTION.md +++ /dev/null @@ -1,72 +0,0 @@ - - -# Attribution - -* [Dungeonslayers] by Christian Kennig is licensed under [CC BY-NC-SA 3.0 DE]. -* The icons in [assets/icons/official] are derivative work of icons from - [Dungeonslayers] by Christian Kennig, used under [CC BY-NC-SA 3.0 DE]. They are - licensed under [CC BY-NC-SA 4.0]. -* The compendium packs in [packs] are derivative work of [Dungeonslayers] - by Christian Kennig, used under [CC BY-NC-SA 3.0 DE]. They are licensed under - [CC BY-NC-SA 4.0]. -* The icons in [assets/icons/game-icons/acro-asercion] by Caro Asercion from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/cathelineau] by Cathelineau from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/darkzaitev] by [DarkZaitzev] from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/delapouite] by [Delapouite] from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/heavenly-dog] by [HeavenlyDog] from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/lorc] by [Lorc] from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/sbed] by [Sbed] from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/skoll] by Skoll from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The icons in [assets/icons/game-icons/willdabeast] by [Willdabeast] from - [Game-icons.net] are licensed under [CC BY 3.0]. -* The images in [assets/tokens/devin-night] by [Devin Night] are - licensed under these custom [Token Usage Rights]. -* The [Lora] font in [fonts/Lora] by The Lora Project Authors is licensed - under [OFL 1.1]. -* The Woodstamp font in [fonts/Woodstamp] by [Ryoichi Tsunekawa] is licensed - under a custom [EULA](LICENSES/LicenseRef-Woodstamp.txt). - -[Dungeonslayers]: https://www.dungeonslayers.net/ -[Game-icons.net]: https://game-icons.net/ -[DarkZaitzev]: http://darkzaitzev.deviantart.com/ -[Delapouite]: https://delapouite.com/ -[HeavenlyDog]: http://www.gnomosygoblins.blogspot.com/ -[Lorc]: http://lorcblog.blogspot.com/ -[Sbed]: http://opengameart.org/content/95-game-icons -[Willdabeast]: http://wjbstories.blogspot.com/ -[Devin Night]: https://immortalnights.com/ -[Lora]: https://github.com/cyrealtype/Lora-Cyrillic -[Ryoichi Tsunekawa]: https://dharmatype.com/ - -[CC BY-NC-SA 3.0 DE]: https://creativecommons.org/licenses/by-nc-sa/3.0/de/legalcode -[CC BY-NC-SA 4.0]: LICENSES/CC-BY-NC-SA-4.0.txt -[CC BY 3.0]: LICENSES/CC-BY-3.0.txt -[Token Usage Rights]: LICENSES/LicenseRef-DevinNightTokenUsageRights.txt -[OFL 1.1]: LICENSES/OFL-1.1.txt - -[assets/icons/official]: assets/icons/official -[packs]: packs -[assets/icons/game-icons/acro-asercion]: assets/icons/game-icons/acro-asercion/ -[assets/icons/game-icons/cathelineau]: assets/icons/game-icons/cathelineau/ -[assets/icons/game-icons/darkzaitev]: assets/icons/game-icons/darkzaitev/ -[assets/icons/game-icons/delapouite]: assets/icons/game-icons/delapouite/ -[assets/icons/game-icons/heavenly-dog]: assets/icons/game-icons/heavenly-dog/ -[assets/icons/game-icons/lorc]: assets/icons/game-icons/lorc/ -[assets/icons/game-icons/sbed]: assets/icons/game-icons/sbed/ -[assets/icons/game-icons/skoll]: assets/icons/game-icons/skoll/ -[assets/icons/game-icons/willdabeast]: assets/icons/game-icons/willdabeast/ -[assets/tokens/devin-night]: assets/tokens/devin-night -[fonts/Lora]: fonts/Lora/ -[fonts/Woodstamp]: fonts/Woodstamp/ diff --git a/LICENSES/MIT.txt b/LICENSE similarity index 92% rename from LICENSES/MIT.txt rename to LICENSE index 2071b23b..5c296ab7 100644 --- a/LICENSES/MIT.txt +++ b/LICENSE @@ -1,6 +1,4 @@ -MIT License - -Copyright (c) +Copyright 2020 Johannes Loher, Gesina Schwalbe, Oliver Rümpelein, Siegfried Krug Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/LICENSE.md b/LICENSE.md deleted file mode 100644 index 2b43b515..00000000 --- a/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ - - -# Licensing - -This project is being developed under the terms of the -[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT] for Foundry Virtual Tabletop. - -The project itself is licensed under multiple licenses. [REUSE] is used to -specify the licenses for the individual files. Most of the licenses are -specified either inside the source file or by an accompanying `.license` file, -but for some files, the licenses are specified in [.reuse/dep5]. Some of the -work that is being reused by this project requires attribution to the original -author(s). You can find these attributions in [ATTRIBUTION.md](ATTRIBUTION.md). - -[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/ -[REUSE]: https://reuse.software/ -[.reuse/dep5]: .reuse/dep5 diff --git a/LICENSES/CC-BY-3.0.txt b/LICENSES/CC-BY-3.0.txt deleted file mode 100644 index 465aae75..00000000 --- a/LICENSES/CC-BY-3.0.txt +++ /dev/null @@ -1,93 +0,0 @@ -Creative Commons Attribution 3.0 Unported - - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - -License - -THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. - -BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. - -1. Definitions - - a. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License. - - b. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License. - - c. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership. - - d. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License. - - e. "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast. - - f. "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work. - - g. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. - - h. "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images. - - i. "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium. - -2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. - -3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: - - a. to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections; - - b. to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified."; - - c. to Distribute and Publicly Perform the Work including as incorporated in Collections; and, - - d. to Distribute and Publicly Perform Adaptations. - - e. For the avoidance of doubt: - - i. Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; - - ii. Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and, - - iii. Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License. - -The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved. - -4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: - - a. You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested. - - b. If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties. - - c. Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise. - -5. Representations, Warranties and Disclaimer - -UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. - -6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -7. Termination - - a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. - - b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. - -8. Miscellaneous - - a. Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. - - b. Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. - - c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. - - d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. - - e. This License may not be modified without the mutual written agreement of the Licensor and You. - - f. The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law. - -Creative Commons Notice - -Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. - -Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License. - -Creative Commons may be contacted at http://creativecommons.org/. diff --git a/LICENSES/CC-BY-NC-SA-4.0.txt b/LICENSES/CC-BY-NC-SA-4.0.txt deleted file mode 100644 index baee873b..00000000 --- a/LICENSES/CC-BY-NC-SA-4.0.txt +++ /dev/null @@ -1,170 +0,0 @@ -Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International - - Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. - -Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. - -Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. - -Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. - -Section 1 – Definitions. - - a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. - - c. BY-NC-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. - - e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. - - i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. - - k. NonCommercial means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. - - l. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. - - m. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. - - n. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. - -Section 2 – Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: - - A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and - - B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. - - 3. Term. The term of this Public License is specified in Section 6(a). - - 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. - - 5. Downstream recipients. - - A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. - - B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. - - C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. - - 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this Public License. - - 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. - -Section 3 – License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified form), You must: - - A. retain the following if it is supplied by the Licensor with the Licensed Material: - - i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of warranties; - - v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; - - B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and - - C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. - - 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. - - b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. - - 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. - -Section 4 – Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only; - - b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and - - c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. -For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. - -Section 5 – Disclaimer of Warranties and Limitation of Liability. - - a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. - - b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. - - c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. - -Section 6 – Term and Termination. - - a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. - -Section 7 – Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. - -Section 8 – Interpretation. - - a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. - - c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. - - d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. - -Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. - -Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/LicenseRef-DevinNightTokenUsageRights.txt b/LICENSES/LicenseRef-DevinNightTokenUsageRights.txt deleted file mode 100644 index 147c502b..00000000 --- a/LICENSES/LicenseRef-DevinNightTokenUsageRights.txt +++ /dev/null @@ -1,28 +0,0 @@ - -Token Usage Rights - -Usage Rights -I retain all rights to the artwork and tokens. You may use my tokens for personal use. You may distribute the free tokens but please do not distribute my premium token sets. After purchasing the tokens you can use them in any of your personal games. You may also share them with your regular gaming group. - -Usage Rights for Streaming. -If you are planning on using my tokens in your streamed games, please add a link to my site and “Tokens by Devin Night” or “Some tokens by Devin Night” or “The really awesome tokens were made by Devin Night, he’s so hot right now.” I would also like to be given a heads up, but it is not neccessary. No money is required to use them for streaming. - -Token rights for use in commercial products. -You can use any number of the free tokens in your adventures. (Dark Heroes, both Pathfinder sets and the Space Opera tokens may not be used in any free or commercial product) -You can use 10-20 premium tokens (from packs 21- newest releases, excluding Tome of Beast tokens) at a cost of $10 per token. -Token packs bought from the store do not qualify for commercial use. However any token that exists in my packs may be purchased for commercial use. (with the exception of Tome of Beasts, the Pathfinder sets, Dark Heroes and Space Opera tokens) -For $25 I can make a custom token that you can use exclusively in your commercial product. If I can also sell that token on my site the price is $15. For $10 per token I can modify an existing token to make it match your needs more closely. -The above costs are for the usage of tokens in one product. -Custom tokens made specifically for you may be used in multiple products. -Tokens cannot be bundled separately and may not make up the majority of the product. -Credit to Devin Night (https://immortalnights.com/tokensite/) must appear somewhere in the credit section. -Art may not be modified without my permission. If permission is granted you have the right to alter the tokens in any manner you wish as long as it maintains my standards of work. Altering the token does not make it your work or void my ownership of the art. -I retain all rights to the art and any derivative art. - -I retain the right to re-use and display all token art that I create. In general, I will not re-use a custom token exactly as it was made. In cases involving larger sets of custom tokens, I may release these tokens in token packs. I will do my best to keep all unique tokens of characters exclusive to the purchaser for one year. After that time It will probably be included in a token pack. - -If posting screenshots of the tokens in action please credit Devin Night. - -Please do not use the tokens or any derived work for commercial or non-commercial purposes unless you have contacted me and received permission to do so. - -Thank you. Creating tokens is my main source of income and it allows me to keep my wife and children happy. diff --git a/LICENSES/LicenseRef-Woodstamp.txt b/LICENSES/LicenseRef-Woodstamp.txt deleted file mode 100644 index 084007c6..00000000 --- a/LICENSES/LicenseRef-Woodstamp.txt +++ /dev/null @@ -1,59 +0,0 @@ - - - - -<<<<<<<<<<<<<<<< ENGLISH >>>>>>>>>>>>>>>>> - -Freewares EULA ( the End User License Agreement )This document is a legal agreement between you, the end user, and Flat-it type foundry. - - -By using or installing Flat it type foundry Freewares ( Free typefaces, Free brushes and Screensavers ) , you agree to be bound by the terms of this Agreement. -Freeware means that you can download it and use it for your commercial and non-commercial works for free. - -Here is a list of things you could do, Only if you want to: -* Mail me about your works -* Link http://flat-it.com/ Download our banners -* Send me a sample of the work you did using Flat it type foundry Freewares -* Mail me some print material you did using Flat it type foundry Freewares -* Credit "Flat-it"on your work -* Smile - -You may not redistribute without permission. - - -DISCLAIMER -Flat-it's freewares are provided to you free of charge. -We give no warranty in relation to these freewares, and you use them at your own risk. -Flat-it.com will not be liable for any damage to your system, any loss or corruption of any data or software, or any other loss or damage that you may suffer as a result of downloading or using these freewares, whether it results from our negligence or in any other way. - - - - - - - - - -<<<<<<<<<<<<<<<< JAPANESE >>>>>>>>>>>>>>>>> - -�t���[�E�F�A�@���C�Z���X - -Flat-it������肵���t���[�E�F�A�i�t���[�t�H���g�A�t���[�u���V�A�X�N���[���Z�C�o�[�j�̎g�p�͈ȉ��Ɏ������C�Z���X�ɓ��ӂ���K�v������܂��B -�t���[�E�F�A�͏��p�A�񏤗p�i�l�g�p�Ȃǁj�Ɋւ�炷�����ł����p���������܂��B���쌠��Flat-it(http://flat-it.com/)�ɂ���܂��B - -�g�p�ɍۂ��Ă͎��̃��X�g�ɏ]���ĉ������B - -*�@�C���������烁�[���ȂǂŘA�����������B -*�@�C����������Flat-it(http://flat-it.com/)�Ƀ����N���ĉ������B -*�@�C����������g�p������i�̃T���v���i�摜�Ȃǁj�������肭�������B -*�@�C����������H�Ɛ��i�ȂǏ��Ǝg�p�̍ۂ͏��i���ЂƂ‰������B -*�@�C����������"Flat-it"�ƃN���W�b�g�����Ă������� - -�܂��A�����̃t���[�E�F�A���Ĕz�z����ꍇ�ɂ͋��‚��K�v�ł��B - - -�Ɛӎ��� -Flat-it�͂����t���[�E�F�A�Ɋւ��Ă��q�l������������Ȃ鑹�Q�ɂ‚��Ă��A��؂̐ӔC�𕉂�Ȃ����̂Ƃ��܂��B���q�l�����g�̐ӔC�ł����p�������B -Flat-it�͂����t���[�E�F�A�̗��p�ɂ���Đ����������Ȃ�ۏؐӔC�������܂���B - -info@flat-it.com diff --git a/README.md b/README.md index 63c6f1b2..e2885add 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,7 @@ - - # DS4 -[![status-badge](https://ci.f3l.de/api/badges/5/status.svg)](https://ci.f3l.de/repos/5) -[![REUSE status](https://api.reuse.software/badge/git.f3l.de/dungeonslayers/ds4)](https://api.reuse.software/info/git.f3l.de/dungeonslayers/ds4) -[![Forge installs](https://img.shields.io/badge/dynamic/json?label=Forge%20Installs&query=package.installs&suffix=%25&url=https%3A%2F%2Fforge-vtt.com%2Fapi%2Fbazaar%2Fpackage%2Fds4&colorB=4aa94a)](https://forge-vtt.com/bazaar#package=ds4) -[![Supported foundry versions](https://img.shields.io/endpoint?url=https://foundryshields.com/version?url=https%3A%2F%2Fgit.f3l.de%2Fapi%2Fpackages%2Fdungeonslayers%2Fgeneric%2Fds4%2Flatest%2Fsystem.json)](https://git.f3l.de/dungeonslayers/ds4) -[![Matrix](https://img.shields.io/matrix/ds4%3Aim.f3l.de?server_fqdn=im.f3l.de&logo=matrix&color=0DBD8B)](https://matrix.to/#/#ds4:im.f3l.de) -[![Ko-fi](https://img.shields.io/badge/Ko--fi-ghostfvtt-00B9FE?logo=kofi)](https://ko-fi.com/ghostfvtt) - -An implementation of the [Dungeonslayers] 4 game system for [Foundry Virtual -Tabletop]. +An implementation of the Dungeonslayers 4 game system for [Foundry Virtual +Tabletop](http://foundryvtt.com). This system provides sheet support for Actors and Items and mechanical support for dice and rules necessary to play games of Dungeonslayers 4. @@ -23,19 +9,20 @@ for dice and rules necessary to play games of Dungeonslayers 4. ## Installation To install and use the Dungeonslayers 4 system for Foundry Virtual Tabletop, -find it in the list in the **Install System** dialog on the Setup menu of the -application. Alternatively, paste the following Manifest URL in that dialog: +simply paste the following URL into the **Install System** dialog on the Setup +menu of the application. -https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json +https://git.f3l.de/dungeonslayers/ds4/-/raw/latest/src/system.json?inline=false ## Development ### Prerequisites -In order to build this system, recent versions of `node` and `pnpm` are -required. Most likely using `npm` or `yarn` also works but only `pnpm` is -officially supported. We recommend using the latest lts version of `node`. If -you use `nvm` to manage your `node` versions, you can simply run +In order to build this system, recent versions of `node` and `yarn` are +required. Most likely using `npm` also works but only `yarn` is officially +supported. We recommend using the latest lts version of `node`, which is +`v14.15.5` at the time of writing. If you use `nvm` to manage your `node` +versions, you can simply run ``` nvm install @@ -43,10 +30,10 @@ nvm install in the project's root directory. -You also need to install the project's dependencies. To do so, run +You also need to install the the project's dependencies. To do so, run ``` -pnpm install +yarn install ``` ### Building @@ -54,13 +41,13 @@ pnpm install You can build the project by running ``` -pnpm build +yarn build ``` Alternatively, you can run ``` -pnpm watch +yarn build:watch ``` to watch for changes and automatically build as necessary. @@ -83,7 +70,7 @@ On platforms other than Linux you need to adjust the path accordingly. Then run ``` -pnpm link-package +yarn link-project ``` ### Running the tests @@ -91,27 +78,32 @@ pnpm link-package You can run the tests with the following command: ``` -pnpm test +yarn test ``` ## Contributing -Code and content contributions are accepted. To report issues, please contact us in [Matrix](https://matrix.to/#/#ds4:im.f3l.de). +Code and content contributions are accepted. Please feel free to submit issues +to the issue tracker or submit merge requests for code changes. To create an +issue, send a mail to [git+dungeonslayers-ds4-155-issue-@git.f3l.de](mailto:git+dungeonslayers-ds4-155-issue-@git.f3l.de). ## Licensing -This project is being developed under the terms of the -[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT] for Foundry Virtual Tabletop. +[Dungeonslayers](http://dungeonslayers.de/) (© Christian Kennig) is licensed +under [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.en). -The project itself is licensed under multiple licenses. [REUSE] is used to -specify the licenses for the individual files. Most of the licenses are -specified either inside the source file or by an accompanying `.license` file, -but for some files, the licenses are specified in [.reuse/dep5]. Some of the -work that is being reused by this project requires attribution to the original -author(s). You can find these attributions in [ATTRIBUTION.md](ATTRIBUTION.md). +The icons in [src/assets/icons/official](src/assets/icons/official) are slightly +modified versions of original Dungeonslayers icons, which have also been +published under CC BY-NC-SA 3.0. Hence the modified icons are also published +under this license. A copy of this license can be found under +[src/assets/icons/official/LICENSE](src/assets/icons/official/LICENSE). -[Dungeonslayers]: https://www.dungeonslayers.net/ -[Foundry Virtual Tabletop]: http://foundryvtt.com/ -[LIMITED LICENSE AGREEMENT FOR MODULE DEVELOPMENT]: https://foundryvtt.com/article/license/ -[REUSE]: https://reuse.software/ -[.reuse/dep5]: .reuse/dep5 +Similarly, the compendium packs found in [src/packs](src/packs) are based on +Dungeonslayers and thus are also released under CC BY-NC-SA 3.0. + +The icons in [src/assets/icons/game-icons](src/assets/icons/game-icons) are work +by https://game-icons.net/ and are licensed under [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/). +A copy of this license can be found under [src/assets/icons/game-icons/LICENSE](src/assets/icons/game-icons/LICENSE) + +The software component of this project is licensed under the MIT License, a copy +of which can be found under [LICENSE](LICENSE). diff --git a/REUSE.toml b/REUSE.toml deleted file mode 100644 index a3daa65a..00000000 --- a/REUSE.toml +++ /dev/null @@ -1,116 +0,0 @@ -# SPDX-FileCopyrightText: 2025 Johannes Loher -# -# SPDX-License-Identifier: MIT - -version = 1 -SPDX-PackageName = "ds4" -SPDX-PackageSupplier = "Johannes Loher " -SPDX-PackageDownloadLocation = "https://git.f3l.de/dungeonslayers/ds4" - -[[annotations]] -path = "assets/icons/official/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "2021 Johannes Loher" -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" - -[[annotations]] -path = "assets/icons/game-icons/caro-asercion/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Caro Asercion" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/cathelineau/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Cathelineau" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/darkzaitev/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "DarkZaitzev, http://darkzaitzev.deviantart.com/" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/delapouite/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Delapouite, https://delapouite.com/" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/heavenly-dog/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "HeavenlyDog, http://www.gnomosygoblins.blogspot.com/" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/lorc/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Lorc, http://lorcblog.blogspot.com/" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/sbed/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Sbed, http://opengameart.org/content/95-game-icons" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/skoll/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Skoll" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/icons/game-icons/willdabeast/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Willdabeast, http://wjbstories.blogspot.com/" -SPDX-License-Identifier = "CC-BY-3.0" - -[[annotations]] -path = "assets/tokens/devin-night/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "Devin Night, https://immortalnights.com/" -SPDX-License-Identifier = "LicenseRef-DevinNightTokenUsageRights" - -[[annotations]] -path = "packs/creatures/**" -precedence = "aggregate" -SPDX-FileCopyrightText = ["2021 Sascha Martens", "2021 Johannes Loher"] -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" - -[[annotations]] -path = "packs/items/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "2021 Johannes Loher" -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" - -[[annotations]] -path = "packs/languages-and-scripts/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "2021 Johannes Loher" -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" - -[[annotations]] -path = "packs/racial-abilities/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "2021 Johannes Loher" -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" - -[[annotations]] -path = "packs/special-creature-abilities/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "2021 Johannes Loher" -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" - -[[annotations]] -path = "packs/spells/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "2021 Sascha Martens" -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" - -[[annotations]] -path = "packs/talents/**" -precedence = "aggregate" -SPDX-FileCopyrightText = "2022 Johannes Loher" -SPDX-License-Identifier = "CC-BY-NC-SA-4.0" diff --git a/assets/icons/game-icons/cathelineau/dread.svg b/assets/icons/game-icons/cathelineau/dread.svg deleted file mode 100644 index c0358c98..00000000 --- a/assets/icons/game-icons/cathelineau/dread.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/cathelineau/fomorian.svg b/assets/icons/game-icons/cathelineau/fomorian.svg deleted file mode 100644 index d00b1ae5..00000000 --- a/assets/icons/game-icons/cathelineau/fomorian.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/aspergillum.svg b/assets/icons/game-icons/delapouite/aspergillum.svg deleted file mode 100644 index 73365614..00000000 --- a/assets/icons/game-icons/delapouite/aspergillum.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/backward-time.svg b/assets/icons/game-icons/delapouite/backward-time.svg deleted file mode 100644 index 02e4d4dd..00000000 --- a/assets/icons/game-icons/delapouite/backward-time.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/ballerina-shoes.svg b/assets/icons/game-icons/delapouite/ballerina-shoes.svg deleted file mode 100644 index a5e169af..00000000 --- a/assets/icons/game-icons/delapouite/ballerina-shoes.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/bolt-spell-cast.svg b/assets/icons/game-icons/delapouite/bolt-spell-cast.svg deleted file mode 100644 index fd45f98f..00000000 --- a/assets/icons/game-icons/delapouite/bolt-spell-cast.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/brick-wall.svg b/assets/icons/game-icons/delapouite/brick-wall.svg deleted file mode 100644 index ee488d4f..00000000 --- a/assets/icons/game-icons/delapouite/brick-wall.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/chalk-outline-murder.svg b/assets/icons/game-icons/delapouite/chalk-outline-murder.svg deleted file mode 100644 index eeba8c9d..00000000 --- a/assets/icons/game-icons/delapouite/chalk-outline-murder.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/charging-bull.svg b/assets/icons/game-icons/delapouite/charging-bull.svg deleted file mode 100644 index 227d5a73..00000000 --- a/assets/icons/game-icons/delapouite/charging-bull.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/cherry.svg b/assets/icons/game-icons/delapouite/cherry.svg deleted file mode 100644 index 4d806c3e..00000000 --- a/assets/icons/game-icons/delapouite/cherry.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/contract.svg b/assets/icons/game-icons/delapouite/contract.svg deleted file mode 100644 index af6c5101..00000000 --- a/assets/icons/game-icons/delapouite/contract.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/convince.svg b/assets/icons/game-icons/delapouite/convince.svg deleted file mode 100644 index 7e3dc5b6..00000000 --- a/assets/icons/game-icons/delapouite/convince.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/expand.svg b/assets/icons/game-icons/delapouite/expand.svg deleted file mode 100644 index 1ed71aba..00000000 --- a/assets/icons/game-icons/delapouite/expand.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/extra-time.svg b/assets/icons/game-icons/delapouite/extra-time.svg deleted file mode 100644 index 0f9ca9a5..00000000 --- a/assets/icons/game-icons/delapouite/extra-time.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/firewall.svg b/assets/icons/game-icons/delapouite/firewall.svg deleted file mode 100644 index 37431fd4..00000000 --- a/assets/icons/game-icons/delapouite/firewall.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/fog.svg b/assets/icons/game-icons/delapouite/fog.svg deleted file mode 100644 index b5aabfbf..00000000 --- a/assets/icons/game-icons/delapouite/fog.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/frozen-body.svg b/assets/icons/game-icons/delapouite/frozen-body.svg deleted file mode 100644 index 0b410acb..00000000 --- a/assets/icons/game-icons/delapouite/frozen-body.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/half-dead.svg b/assets/icons/game-icons/delapouite/half-dead.svg deleted file mode 100644 index c4442063..00000000 --- a/assets/icons/game-icons/delapouite/half-dead.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/hand-wing.svg b/assets/icons/game-icons/delapouite/hand-wing.svg deleted file mode 100644 index 9382cf63..00000000 --- a/assets/icons/game-icons/delapouite/hand-wing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/healing.svg b/assets/icons/game-icons/delapouite/healing.svg deleted file mode 100644 index 3bbe5c49..00000000 --- a/assets/icons/game-icons/delapouite/healing.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/heart-wings.svg b/assets/icons/game-icons/delapouite/heart-wings.svg deleted file mode 100644 index c9fb8e40..00000000 --- a/assets/icons/game-icons/delapouite/heart-wings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/hole.svg b/assets/icons/game-icons/delapouite/hole.svg deleted file mode 100644 index 08fa4853..00000000 --- a/assets/icons/game-icons/delapouite/hole.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/holy-hand-grenade.svg b/assets/icons/game-icons/delapouite/holy-hand-grenade.svg deleted file mode 100644 index a03c1e60..00000000 --- a/assets/icons/game-icons/delapouite/holy-hand-grenade.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/holy-water.svg b/assets/icons/game-icons/delapouite/holy-water.svg deleted file mode 100644 index 7e18e512..00000000 --- a/assets/icons/game-icons/delapouite/holy-water.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/human-ear.svg b/assets/icons/game-icons/delapouite/human-ear.svg deleted file mode 100644 index e815ccd9..00000000 --- a/assets/icons/game-icons/delapouite/human-ear.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/invisible-face.svg b/assets/icons/game-icons/delapouite/invisible-face.svg deleted file mode 100644 index 13fa869e..00000000 --- a/assets/icons/game-icons/delapouite/invisible-face.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/invisible.svg b/assets/icons/game-icons/delapouite/invisible.svg deleted file mode 100644 index d464c035..00000000 --- a/assets/icons/game-icons/delapouite/invisible.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/kneeling.svg b/assets/icons/game-icons/delapouite/kneeling.svg deleted file mode 100644 index b586b3eb..00000000 --- a/assets/icons/game-icons/delapouite/kneeling.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/ladder.svg b/assets/icons/game-icons/delapouite/ladder.svg deleted file mode 100644 index 04c0cdda..00000000 --- a/assets/icons/game-icons/delapouite/ladder.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/lovers.svg b/assets/icons/game-icons/delapouite/lovers.svg deleted file mode 100644 index 61f6aaf1..00000000 --- a/assets/icons/game-icons/delapouite/lovers.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magic-axe.svg b/assets/icons/game-icons/delapouite/magic-axe.svg deleted file mode 100644 index d3d736f7..00000000 --- a/assets/icons/game-icons/delapouite/magic-axe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magic-broom.svg b/assets/icons/game-icons/delapouite/magic-broom.svg deleted file mode 100644 index f06fe3c2..00000000 --- a/assets/icons/game-icons/delapouite/magic-broom.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magic-hat.svg b/assets/icons/game-icons/delapouite/magic-hat.svg deleted file mode 100644 index 856d0f67..00000000 --- a/assets/icons/game-icons/delapouite/magic-hat.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/magick-trick.svg b/assets/icons/game-icons/delapouite/magick-trick.svg deleted file mode 100644 index 84a7c5bb..00000000 --- a/assets/icons/game-icons/delapouite/magick-trick.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/misdirection.svg b/assets/icons/game-icons/delapouite/misdirection.svg deleted file mode 100644 index 9c32e290..00000000 --- a/assets/icons/game-icons/delapouite/misdirection.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/potato.svg b/assets/icons/game-icons/delapouite/potato.svg deleted file mode 100644 index 94b7af18..00000000 --- a/assets/icons/game-icons/delapouite/potato.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/rusty-sword.svg b/assets/icons/game-icons/delapouite/rusty-sword.svg deleted file mode 100644 index 24b0bb73..00000000 --- a/assets/icons/game-icons/delapouite/rusty-sword.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/secret-door.svg b/assets/icons/game-icons/delapouite/secret-door.svg deleted file mode 100644 index 892f9d58..00000000 --- a/assets/icons/game-icons/delapouite/secret-door.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/shower.svg b/assets/icons/game-icons/delapouite/shower.svg deleted file mode 100644 index 434f8ed4..00000000 --- a/assets/icons/game-icons/delapouite/shower.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/silenced.svg b/assets/icons/game-icons/delapouite/silenced.svg deleted file mode 100644 index 30652a0b..00000000 --- a/assets/icons/game-icons/delapouite/silenced.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/spy.svg b/assets/icons/game-icons/delapouite/spy.svg deleted file mode 100644 index 52d2268c..00000000 --- a/assets/icons/game-icons/delapouite/spy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/steam.svg b/assets/icons/game-icons/delapouite/steam.svg deleted file mode 100644 index 84c00747..00000000 --- a/assets/icons/game-icons/delapouite/steam.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/stone-wall.svg b/assets/icons/game-icons/delapouite/stone-wall.svg deleted file mode 100644 index 102ec28b..00000000 --- a/assets/icons/game-icons/delapouite/stone-wall.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/sun-spear.svg b/assets/icons/game-icons/delapouite/sun-spear.svg deleted file mode 100644 index 9a6ad57f..00000000 --- a/assets/icons/game-icons/delapouite/sun-spear.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/sunglasses.svg b/assets/icons/game-icons/delapouite/sunglasses.svg deleted file mode 100644 index a5d6cf2e..00000000 --- a/assets/icons/game-icons/delapouite/sunglasses.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/templar-shield.svg b/assets/icons/game-icons/delapouite/templar-shield.svg deleted file mode 100644 index 6cdfc0a4..00000000 --- a/assets/icons/game-icons/delapouite/templar-shield.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/tightrope.svg b/assets/icons/game-icons/delapouite/tightrope.svg deleted file mode 100644 index 9de169cf..00000000 --- a/assets/icons/game-icons/delapouite/tightrope.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/walk.svg b/assets/icons/game-icons/delapouite/walk.svg deleted file mode 100644 index ae121c0f..00000000 --- a/assets/icons/game-icons/delapouite/walk.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg b/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg deleted file mode 100644 index 8fa69a7e..00000000 --- a/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/heavenly-dog/catapult.svg b/assets/icons/game-icons/heavenly-dog/catapult.svg deleted file mode 100644 index 44c7b645..00000000 --- a/assets/icons/game-icons/heavenly-dog/catapult.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/angel-wings.svg b/assets/icons/game-icons/lorc/angel-wings.svg deleted file mode 100644 index 459cac41..00000000 --- a/assets/icons/game-icons/lorc/angel-wings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/aura.svg b/assets/icons/game-icons/lorc/aura.svg deleted file mode 100644 index 78e896f7..00000000 --- a/assets/icons/game-icons/lorc/aura.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/beams-aura.svg b/assets/icons/game-icons/lorc/beams-aura.svg deleted file mode 100644 index f49c9d5d..00000000 --- a/assets/icons/game-icons/lorc/beams-aura.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/bell-shield.svg b/assets/icons/game-icons/lorc/bell-shield.svg deleted file mode 100644 index 0dbebf65..00000000 --- a/assets/icons/game-icons/lorc/bell-shield.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/blade-fall.svg b/assets/icons/game-icons/lorc/blade-fall.svg deleted file mode 100644 index 94fe521d..00000000 --- a/assets/icons/game-icons/lorc/blade-fall.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/body-swapping.svg b/assets/icons/game-icons/lorc/body-swapping.svg deleted file mode 100644 index 258fc6b1..00000000 --- a/assets/icons/game-icons/lorc/body-swapping.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/bubbling-beam.svg b/assets/icons/game-icons/lorc/bubbling-beam.svg deleted file mode 100644 index fcb17a3e..00000000 --- a/assets/icons/game-icons/lorc/bubbling-beam.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/chained-heart.svg b/assets/icons/game-icons/lorc/chained-heart.svg deleted file mode 100644 index 4cd31061..00000000 --- a/assets/icons/game-icons/lorc/chained-heart.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/diamond-hard.svg b/assets/icons/game-icons/lorc/diamond-hard.svg deleted file mode 100644 index 0872ba38..00000000 --- a/assets/icons/game-icons/lorc/diamond-hard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/duality.svg b/assets/icons/game-icons/lorc/duality.svg deleted file mode 100644 index 9c535b50..00000000 --- a/assets/icons/game-icons/lorc/duality.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/earth-spit.svg b/assets/icons/game-icons/lorc/earth-spit.svg deleted file mode 100644 index 9c991a41..00000000 --- a/assets/icons/game-icons/lorc/earth-spit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/energy-arrow.svg b/assets/icons/game-icons/lorc/energy-arrow.svg deleted file mode 100644 index 5ca045d2..00000000 --- a/assets/icons/game-icons/lorc/energy-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/energy-breath.svg b/assets/icons/game-icons/lorc/energy-breath.svg deleted file mode 100644 index 04aa4c78..00000000 --- a/assets/icons/game-icons/lorc/energy-breath.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/envelope.svg b/assets/icons/game-icons/lorc/envelope.svg deleted file mode 100644 index 03886d5c..00000000 --- a/assets/icons/game-icons/lorc/envelope.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/explosion-rays.svg b/assets/icons/game-icons/lorc/explosion-rays.svg deleted file mode 100644 index 350532ef..00000000 --- a/assets/icons/game-icons/lorc/explosion-rays.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-breath.svg b/assets/icons/game-icons/lorc/fire-breath.svg deleted file mode 100644 index 03ea456e..00000000 --- a/assets/icons/game-icons/lorc/fire-breath.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-ray-small.svg b/assets/icons/game-icons/lorc/fire-ray-small.svg deleted file mode 100644 index 93391343..00000000 --- a/assets/icons/game-icons/lorc/fire-ray-small.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-ray.svg b/assets/icons/game-icons/lorc/fire-ray.svg deleted file mode 100644 index ce5d5307..00000000 --- a/assets/icons/game-icons/lorc/fire-ray.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-tail.svg b/assets/icons/game-icons/lorc/fire-tail.svg deleted file mode 100644 index 5e585476..00000000 --- a/assets/icons/game-icons/lorc/fire-tail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fire-wave.svg b/assets/icons/game-icons/lorc/fire-wave.svg deleted file mode 100644 index 89d16e50..00000000 --- a/assets/icons/game-icons/lorc/fire-wave.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/foamy-disc.svg b/assets/icons/game-icons/lorc/foamy-disc.svg deleted file mode 100644 index 18f23e51..00000000 --- a/assets/icons/game-icons/lorc/foamy-disc.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/fragrance.svg b/assets/icons/game-icons/lorc/fragrance.svg deleted file mode 100644 index 66e5095c..00000000 --- a/assets/icons/game-icons/lorc/fragrance.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/ghost-ally.svg b/assets/icons/game-icons/lorc/ghost-ally.svg deleted file mode 100644 index 9d68f44d..00000000 --- a/assets/icons/game-icons/lorc/ghost-ally.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/glowing-hands.svg b/assets/icons/game-icons/lorc/glowing-hands.svg deleted file mode 100644 index 6128125e..00000000 --- a/assets/icons/game-icons/lorc/glowing-hands.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/hammer-drop.svg b/assets/icons/game-icons/lorc/hammer-drop.svg deleted file mode 100644 index 098369a6..00000000 --- a/assets/icons/game-icons/lorc/hammer-drop.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/heart-inside.svg b/assets/icons/game-icons/lorc/heart-inside.svg deleted file mode 100644 index 63cec26f..00000000 --- a/assets/icons/game-icons/lorc/heart-inside.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/icicles-aura.svg b/assets/icons/game-icons/lorc/icicles-aura.svg deleted file mode 100644 index 6aed9c96..00000000 --- a/assets/icons/game-icons/lorc/icicles-aura.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/ifrit.svg b/assets/icons/game-icons/lorc/ifrit.svg deleted file mode 100644 index 00818b97..00000000 --- a/assets/icons/game-icons/lorc/ifrit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/laser-precision.svg b/assets/icons/game-icons/lorc/laser-precision.svg deleted file mode 100644 index 1bb79ceb..00000000 --- a/assets/icons/game-icons/lorc/laser-precision.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/laser-sparks.svg b/assets/icons/game-icons/lorc/laser-sparks.svg deleted file mode 100644 index 05f4fdf9..00000000 --- a/assets/icons/game-icons/lorc/laser-sparks.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/lips.svg b/assets/icons/game-icons/lorc/lips.svg deleted file mode 100644 index 7980f4ed..00000000 --- a/assets/icons/game-icons/lorc/lips.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/mad-scientist.svg b/assets/icons/game-icons/lorc/mad-scientist.svg deleted file mode 100644 index 8a114f8f..00000000 --- a/assets/icons/game-icons/lorc/mad-scientist.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/magic-palm.svg b/assets/icons/game-icons/lorc/magic-palm.svg deleted file mode 100644 index 24eff4e7..00000000 --- a/assets/icons/game-icons/lorc/magic-palm.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/magic-portal.svg b/assets/icons/game-icons/lorc/magic-portal.svg deleted file mode 100644 index 1a221ce7..00000000 --- a/assets/icons/game-icons/lorc/magic-portal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/magic-swirl.svg b/assets/icons/game-icons/lorc/magic-swirl.svg deleted file mode 100644 index f7cd61a1..00000000 --- a/assets/icons/game-icons/lorc/magic-swirl.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/middle-arrow.svg b/assets/icons/game-icons/lorc/middle-arrow.svg deleted file mode 100644 index 4d049a75..00000000 --- a/assets/icons/game-icons/lorc/middle-arrow.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/mine-explosion.svg b/assets/icons/game-icons/lorc/mine-explosion.svg deleted file mode 100644 index e36b87b4..00000000 --- a/assets/icons/game-icons/lorc/mine-explosion.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/mirror-mirror.svg b/assets/icons/game-icons/lorc/mirror-mirror.svg deleted file mode 100644 index d4baaf4e..00000000 --- a/assets/icons/game-icons/lorc/mirror-mirror.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/omega.svg b/assets/icons/game-icons/lorc/omega.svg deleted file mode 100644 index 7090ee16..00000000 --- a/assets/icons/game-icons/lorc/omega.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/padlock.svg b/assets/icons/game-icons/lorc/padlock.svg deleted file mode 100644 index ce43d14d..00000000 --- a/assets/icons/game-icons/lorc/padlock.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/paw-heart.svg b/assets/icons/game-icons/lorc/paw-heart.svg deleted file mode 100644 index 2a0c6eb8..00000000 --- a/assets/icons/game-icons/lorc/paw-heart.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/pointy-sword.svg b/assets/icons/game-icons/lorc/pointy-sword.svg deleted file mode 100644 index 481a2265..00000000 --- a/assets/icons/game-icons/lorc/pointy-sword.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/relationship-bounds.svg b/assets/icons/game-icons/lorc/relationship-bounds.svg deleted file mode 100644 index e3dc11e6..00000000 --- a/assets/icons/game-icons/lorc/relationship-bounds.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/run.svg b/assets/icons/game-icons/lorc/run.svg deleted file mode 100644 index 74ffbbef..00000000 --- a/assets/icons/game-icons/lorc/run.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/shadow-follower.svg b/assets/icons/game-icons/lorc/shadow-follower.svg deleted file mode 100644 index b05b9370..00000000 --- a/assets/icons/game-icons/lorc/shadow-follower.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/shard-sword.svg b/assets/icons/game-icons/lorc/shard-sword.svg deleted file mode 100644 index e90afe6f..00000000 --- a/assets/icons/game-icons/lorc/shard-sword.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/shiny-omega.svg b/assets/icons/game-icons/lorc/shiny-omega.svg deleted file mode 100644 index d56ae4f2..00000000 --- a/assets/icons/game-icons/lorc/shiny-omega.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sinusoidal-beam.svg b/assets/icons/game-icons/lorc/sinusoidal-beam.svg deleted file mode 100644 index a89afeb4..00000000 --- a/assets/icons/game-icons/lorc/sinusoidal-beam.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/skull-mask.svg b/assets/icons/game-icons/lorc/skull-mask.svg deleted file mode 100644 index 8c6f34c6..00000000 --- a/assets/icons/game-icons/lorc/skull-mask.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sleepy.svg b/assets/icons/game-icons/lorc/sleepy.svg deleted file mode 100644 index c78e5657..00000000 --- a/assets/icons/game-icons/lorc/sleepy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sliced-bread.svg b/assets/icons/game-icons/lorc/sliced-bread.svg deleted file mode 100644 index edee650b..00000000 --- a/assets/icons/game-icons/lorc/sliced-bread.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/smoking-orb.svg b/assets/icons/game-icons/lorc/smoking-orb.svg deleted file mode 100644 index f4233bb7..00000000 --- a/assets/icons/game-icons/lorc/smoking-orb.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/snail.svg b/assets/icons/game-icons/lorc/snail.svg deleted file mode 100644 index a9422814..00000000 --- a/assets/icons/game-icons/lorc/snail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sparkling-sabre.svg b/assets/icons/game-icons/lorc/sparkling-sabre.svg deleted file mode 100644 index 00e20aa3..00000000 --- a/assets/icons/game-icons/lorc/sparkling-sabre.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/spear-hook.svg b/assets/icons/game-icons/lorc/spear-hook.svg deleted file mode 100644 index f13d3c38..00000000 --- a/assets/icons/game-icons/lorc/spear-hook.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/spider-web.svg b/assets/icons/game-icons/lorc/spider-web.svg deleted file mode 100644 index a24a4524..00000000 --- a/assets/icons/game-icons/lorc/spider-web.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/static-guard.svg b/assets/icons/game-icons/lorc/static-guard.svg deleted file mode 100644 index 1f6f7231..00000000 --- a/assets/icons/game-icons/lorc/static-guard.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sunbeams.svg b/assets/icons/game-icons/lorc/sunbeams.svg deleted file mode 100644 index f86c8283..00000000 --- a/assets/icons/game-icons/lorc/sunbeams.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/sword-wound.svg b/assets/icons/game-icons/lorc/sword-wound.svg deleted file mode 100644 index ad480381..00000000 --- a/assets/icons/game-icons/lorc/sword-wound.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/tear-tracks.svg b/assets/icons/game-icons/lorc/tear-tracks.svg deleted file mode 100644 index 676aabc0..00000000 --- a/assets/icons/game-icons/lorc/tear-tracks.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/teleport.svg b/assets/icons/game-icons/lorc/teleport.svg deleted file mode 100644 index d09575df..00000000 --- a/assets/icons/game-icons/lorc/teleport.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/terror.svg b/assets/icons/game-icons/lorc/terror.svg deleted file mode 100644 index 78b1aa91..00000000 --- a/assets/icons/game-icons/lorc/terror.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/time-trap.svg b/assets/icons/game-icons/lorc/time-trap.svg deleted file mode 100644 index 32911078..00000000 --- a/assets/icons/game-icons/lorc/time-trap.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/tripwire.svg b/assets/icons/game-icons/lorc/tripwire.svg deleted file mode 100644 index f4d804c1..00000000 --- a/assets/icons/game-icons/lorc/tripwire.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/two-feathers.svg b/assets/icons/game-icons/lorc/two-feathers.svg deleted file mode 100644 index b566db1d..00000000 --- a/assets/icons/game-icons/lorc/two-feathers.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/two-shadows.svg b/assets/icons/game-icons/lorc/two-shadows.svg deleted file mode 100644 index cd1efbb5..00000000 --- a/assets/icons/game-icons/lorc/two-shadows.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/lorc/voodoo-doll.svg b/assets/icons/game-icons/lorc/voodoo-doll.svg deleted file mode 100644 index 642349d0..00000000 --- a/assets/icons/game-icons/lorc/voodoo-doll.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/sbed/health-normal.svg b/assets/icons/game-icons/sbed/health-normal.svg deleted file mode 100644 index e8cade05..00000000 --- a/assets/icons/game-icons/sbed/health-normal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/sbed/weight-crush.svg b/assets/icons/game-icons/sbed/weight-crush.svg deleted file mode 100644 index c0fb8132..00000000 --- a/assets/icons/game-icons/sbed/weight-crush.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/blood.svg b/assets/icons/game-icons/skoll/blood.svg deleted file mode 100644 index 2051637d..00000000 --- a/assets/icons/game-icons/skoll/blood.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/halt.svg b/assets/icons/game-icons/skoll/halt.svg deleted file mode 100644 index 68a70756..00000000 --- a/assets/icons/game-icons/skoll/halt.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/pentacle.svg b/assets/icons/game-icons/skoll/pentacle.svg deleted file mode 100644 index a7bd85e0..00000000 --- a/assets/icons/game-icons/skoll/pentacle.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/raise-skeleton.svg b/assets/icons/game-icons/skoll/raise-skeleton.svg deleted file mode 100644 index fee9e834..00000000 --- a/assets/icons/game-icons/skoll/raise-skeleton.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/skoll/raise-zombie.svg b/assets/icons/game-icons/skoll/raise-zombie.svg deleted file mode 100644 index 746e30f6..00000000 --- a/assets/icons/game-icons/skoll/raise-zombie.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/willdabeast/chain-lightning.svg b/assets/icons/game-icons/willdabeast/chain-lightning.svg deleted file mode 100644 index 5b5e005e..00000000 --- a/assets/icons/game-icons/willdabeast/chain-lightning.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/icons/game-icons/willdabeast/chain-mail.svg b/assets/icons/game-icons/willdabeast/chain-mail.svg deleted file mode 100644 index cfa5c5ef..00000000 --- a/assets/icons/game-icons/willdabeast/chain-mail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/assets/tokens/devin-night/alligator-green.png b/assets/tokens/devin-night/alligator-green.png deleted file mode 100644 index b8bec32f..00000000 Binary files a/assets/tokens/devin-night/alligator-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/alligator-olive.png b/assets/tokens/devin-night/alligator-olive.png deleted file mode 100644 index 05859b74..00000000 Binary files a/assets/tokens/devin-night/alligator-olive.png and /dev/null differ diff --git a/assets/tokens/devin-night/basilisk-green.png b/assets/tokens/devin-night/basilisk-green.png deleted file mode 100644 index c660d43a..00000000 Binary files a/assets/tokens/devin-night/basilisk-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/basilisk-purple.png b/assets/tokens/devin-night/basilisk-purple.png deleted file mode 100644 index 7f33089e..00000000 Binary files a/assets/tokens/devin-night/basilisk-purple.png and /dev/null differ diff --git a/assets/tokens/devin-night/bear-1.png b/assets/tokens/devin-night/bear-1.png deleted file mode 100644 index ecea9d97..00000000 Binary files a/assets/tokens/devin-night/bear-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/bear-2.png b/assets/tokens/devin-night/bear-2.png deleted file mode 100644 index 362862ce..00000000 Binary files a/assets/tokens/devin-night/bear-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/boar-brown-1.png b/assets/tokens/devin-night/boar-brown-1.png deleted file mode 100644 index 5a50d1b3..00000000 Binary files a/assets/tokens/devin-night/boar-brown-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/boar-brown-2.png b/assets/tokens/devin-night/boar-brown-2.png deleted file mode 100644 index ec6a07aa..00000000 Binary files a/assets/tokens/devin-night/boar-brown-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/boar-greenish-1.png b/assets/tokens/devin-night/boar-greenish-1.png deleted file mode 100644 index c64f246b..00000000 Binary files a/assets/tokens/devin-night/boar-greenish-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/boar-greenish-2.png b/assets/tokens/devin-night/boar-greenish-2.png deleted file mode 100644 index cbe7d293..00000000 Binary files a/assets/tokens/devin-night/boar-greenish-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/dog-hound.png b/assets/tokens/devin-night/dog-hound.png deleted file mode 100644 index eeff4588..00000000 Binary files a/assets/tokens/devin-night/dog-hound.png and /dev/null differ diff --git a/assets/tokens/devin-night/dog-pitbull-1.png b/assets/tokens/devin-night/dog-pitbull-1.png deleted file mode 100644 index 2db59b40..00000000 Binary files a/assets/tokens/devin-night/dog-pitbull-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/dog-pitbull-2.png b/assets/tokens/devin-night/dog-pitbull-2.png deleted file mode 100644 index 0488fdbd..00000000 Binary files a/assets/tokens/devin-night/dog-pitbull-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/dog-small.png b/assets/tokens/devin-night/dog-small.png deleted file mode 100644 index 32bffbd3..00000000 Binary files a/assets/tokens/devin-night/dog-small.png and /dev/null differ diff --git a/assets/tokens/devin-night/dog-wolfhound.png b/assets/tokens/devin-night/dog-wolfhound.png deleted file mode 100644 index d6cfc0a3..00000000 Binary files a/assets/tokens/devin-night/dog-wolfhound.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-black.png b/assets/tokens/devin-night/dragon-black.png deleted file mode 100644 index 3e5ee80b..00000000 Binary files a/assets/tokens/devin-night/dragon-black.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-blue.png b/assets/tokens/devin-night/dragon-blue.png deleted file mode 100644 index 2cc1ee3e..00000000 Binary files a/assets/tokens/devin-night/dragon-blue.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-bronze.png b/assets/tokens/devin-night/dragon-bronze.png deleted file mode 100644 index 85645354..00000000 Binary files a/assets/tokens/devin-night/dragon-bronze.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-gold.png b/assets/tokens/devin-night/dragon-gold.png deleted file mode 100644 index 6a1fe695..00000000 Binary files a/assets/tokens/devin-night/dragon-gold.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-green.png b/assets/tokens/devin-night/dragon-green.png deleted file mode 100644 index 0c563d50..00000000 Binary files a/assets/tokens/devin-night/dragon-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-red.png b/assets/tokens/devin-night/dragon-red.png deleted file mode 100644 index 68eb2dd7..00000000 Binary files a/assets/tokens/devin-night/dragon-red.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-silver.png b/assets/tokens/devin-night/dragon-silver.png deleted file mode 100644 index 9e823482..00000000 Binary files a/assets/tokens/devin-night/dragon-silver.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-white.png b/assets/tokens/devin-night/dragon-white.png deleted file mode 100644 index f65d82d3..00000000 Binary files a/assets/tokens/devin-night/dragon-white.png and /dev/null differ diff --git a/assets/tokens/devin-night/dragon-yellow.png b/assets/tokens/devin-night/dragon-yellow.png deleted file mode 100644 index 1ddae600..00000000 Binary files a/assets/tokens/devin-night/dragon-yellow.png and /dev/null differ diff --git a/assets/tokens/devin-night/eagle.png b/assets/tokens/devin-night/eagle.png deleted file mode 100644 index 5d63efe3..00000000 Binary files a/assets/tokens/devin-night/eagle.png and /dev/null differ diff --git a/assets/tokens/devin-night/feline-predator-dire-tiger.png b/assets/tokens/devin-night/feline-predator-dire-tiger.png deleted file mode 100644 index 08f2724d..00000000 Binary files a/assets/tokens/devin-night/feline-predator-dire-tiger.png and /dev/null differ diff --git a/assets/tokens/devin-night/feline-predator-panther.png b/assets/tokens/devin-night/feline-predator-panther.png deleted file mode 100644 index ea76bc1d..00000000 Binary files a/assets/tokens/devin-night/feline-predator-panther.png and /dev/null differ diff --git a/assets/tokens/devin-night/feline-predator-tiger-dark.png b/assets/tokens/devin-night/feline-predator-tiger-dark.png deleted file mode 100644 index a3eee59d..00000000 Binary files a/assets/tokens/devin-night/feline-predator-tiger-dark.png and /dev/null differ diff --git a/assets/tokens/devin-night/feline-predator-tiger.png b/assets/tokens/devin-night/feline-predator-tiger.png deleted file mode 100644 index 6b565ae8..00000000 Binary files a/assets/tokens/devin-night/feline-predator-tiger.png and /dev/null differ diff --git a/assets/tokens/devin-night/gargoyle-gray.png b/assets/tokens/devin-night/gargoyle-gray.png deleted file mode 100644 index 62f344a7..00000000 Binary files a/assets/tokens/devin-night/gargoyle-gray.png and /dev/null differ diff --git a/assets/tokens/devin-night/gargoyle-white.png b/assets/tokens/devin-night/gargoyle-white.png deleted file mode 100644 index 91632950..00000000 Binary files a/assets/tokens/devin-night/gargoyle-white.png and /dev/null differ diff --git a/assets/tokens/devin-night/ghost-1.png b/assets/tokens/devin-night/ghost-1.png deleted file mode 100644 index 1f538015..00000000 Binary files a/assets/tokens/devin-night/ghost-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/ghost-2.png b/assets/tokens/devin-night/ghost-2.png deleted file mode 100644 index e7207061..00000000 Binary files a/assets/tokens/devin-night/ghost-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-lizard-gray.png b/assets/tokens/devin-night/giant-lizard-gray.png deleted file mode 100644 index 6545473f..00000000 Binary files a/assets/tokens/devin-night/giant-lizard-gray.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-lizard-olive-spotted-1.png b/assets/tokens/devin-night/giant-lizard-olive-spotted-1.png deleted file mode 100644 index 66599e1d..00000000 Binary files a/assets/tokens/devin-night/giant-lizard-olive-spotted-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-lizard-olive-spotted-2.png b/assets/tokens/devin-night/giant-lizard-olive-spotted-2.png deleted file mode 100644 index 1d4bfe4e..00000000 Binary files a/assets/tokens/devin-night/giant-lizard-olive-spotted-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-lizard-olive.png b/assets/tokens/devin-night/giant-lizard-olive.png deleted file mode 100644 index be23cb27..00000000 Binary files a/assets/tokens/devin-night/giant-lizard-olive.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-lizard-purple.png b/assets/tokens/devin-night/giant-lizard-purple.png deleted file mode 100644 index 520395b5..00000000 Binary files a/assets/tokens/devin-night/giant-lizard-purple.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-rat-brown.png b/assets/tokens/devin-night/giant-rat-brown.png deleted file mode 100644 index b82b6224..00000000 Binary files a/assets/tokens/devin-night/giant-rat-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-rat-gray.png b/assets/tokens/devin-night/giant-rat-gray.png deleted file mode 100644 index 533c950d..00000000 Binary files a/assets/tokens/devin-night/giant-rat-gray.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-snake-brown.png b/assets/tokens/devin-night/giant-snake-brown.png deleted file mode 100644 index 15817361..00000000 Binary files a/assets/tokens/devin-night/giant-snake-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/giant-snake-green.png b/assets/tokens/devin-night/giant-snake-green.png deleted file mode 100644 index f00402e9..00000000 Binary files a/assets/tokens/devin-night/giant-snake-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/goblin-branch-brown-hair.png b/assets/tokens/devin-night/goblin-branch-brown-hair.png deleted file mode 100644 index 92b83d8c..00000000 Binary files a/assets/tokens/devin-night/goblin-branch-brown-hair.png and /dev/null differ diff --git a/assets/tokens/devin-night/goblin-branch-purple-hair.png b/assets/tokens/devin-night/goblin-branch-purple-hair.png deleted file mode 100644 index 859dcfc7..00000000 Binary files a/assets/tokens/devin-night/goblin-branch-purple-hair.png and /dev/null differ diff --git a/assets/tokens/devin-night/goblin-knife.png b/assets/tokens/devin-night/goblin-knife.png deleted file mode 100644 index 7dc703da..00000000 Binary files a/assets/tokens/devin-night/goblin-knife.png and /dev/null differ diff --git a/assets/tokens/devin-night/harpy-brown.png b/assets/tokens/devin-night/harpy-brown.png deleted file mode 100644 index d1962cdc..00000000 Binary files a/assets/tokens/devin-night/harpy-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/harpy-pruple.png b/assets/tokens/devin-night/harpy-pruple.png deleted file mode 100644 index 2d41b5e9..00000000 Binary files a/assets/tokens/devin-night/harpy-pruple.png and /dev/null differ diff --git a/assets/tokens/devin-night/hobgoblin-bow-blue.png b/assets/tokens/devin-night/hobgoblin-bow-blue.png deleted file mode 100644 index ad93d9d3..00000000 Binary files a/assets/tokens/devin-night/hobgoblin-bow-blue.png and /dev/null differ diff --git a/assets/tokens/devin-night/hobgoblin-bow-green.png b/assets/tokens/devin-night/hobgoblin-bow-green.png deleted file mode 100644 index 731e9dd0..00000000 Binary files a/assets/tokens/devin-night/hobgoblin-bow-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/hobgoblin-sword-naked.png b/assets/tokens/devin-night/hobgoblin-sword-naked.png deleted file mode 100644 index c2f9e13c..00000000 Binary files a/assets/tokens/devin-night/hobgoblin-sword-naked.png and /dev/null differ diff --git a/assets/tokens/devin-night/hobgoblin-sword-purple.png b/assets/tokens/devin-night/hobgoblin-sword-purple.png deleted file mode 100644 index 37ab7728..00000000 Binary files a/assets/tokens/devin-night/hobgoblin-sword-purple.png and /dev/null differ diff --git a/assets/tokens/devin-night/horse-black.png b/assets/tokens/devin-night/horse-black.png deleted file mode 100644 index 8ee08ace..00000000 Binary files a/assets/tokens/devin-night/horse-black.png and /dev/null differ diff --git a/assets/tokens/devin-night/horse-brown.png b/assets/tokens/devin-night/horse-brown.png deleted file mode 100644 index 215ff507..00000000 Binary files a/assets/tokens/devin-night/horse-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/horse-white-brown.png b/assets/tokens/devin-night/horse-white-brown.png deleted file mode 100644 index 4e1465ab..00000000 Binary files a/assets/tokens/devin-night/horse-white-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/horse-white.png b/assets/tokens/devin-night/horse-white.png deleted file mode 100644 index 130f39c2..00000000 Binary files a/assets/tokens/devin-night/horse-white.png and /dev/null differ diff --git a/assets/tokens/devin-night/hydra-blue.png b/assets/tokens/devin-night/hydra-blue.png deleted file mode 100644 index a7539e2b..00000000 Binary files a/assets/tokens/devin-night/hydra-blue.png and /dev/null differ diff --git a/assets/tokens/devin-night/hydra-purple.png b/assets/tokens/devin-night/hydra-purple.png deleted file mode 100644 index d36961e3..00000000 Binary files a/assets/tokens/devin-night/hydra-purple.png and /dev/null differ diff --git a/assets/tokens/devin-night/kobold-green.png b/assets/tokens/devin-night/kobold-green.png deleted file mode 100644 index b7c90a6e..00000000 Binary files a/assets/tokens/devin-night/kobold-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/kobold-red.png b/assets/tokens/devin-night/kobold-red.png deleted file mode 100644 index 75f7cf77..00000000 Binary files a/assets/tokens/devin-night/kobold-red.png and /dev/null differ diff --git a/assets/tokens/devin-night/lich.png b/assets/tokens/devin-night/lich.png deleted file mode 100644 index 9e1166b0..00000000 Binary files a/assets/tokens/devin-night/lich.png and /dev/null differ diff --git a/assets/tokens/devin-night/lizard-man-brown.png b/assets/tokens/devin-night/lizard-man-brown.png deleted file mode 100644 index 02eabb3c..00000000 Binary files a/assets/tokens/devin-night/lizard-man-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/lizard-man-gray.png b/assets/tokens/devin-night/lizard-man-gray.png deleted file mode 100644 index b970ecca..00000000 Binary files a/assets/tokens/devin-night/lizard-man-gray.png and /dev/null differ diff --git a/assets/tokens/devin-night/lizard-man-green-bright.png b/assets/tokens/devin-night/lizard-man-green-bright.png deleted file mode 100644 index 434230b9..00000000 Binary files a/assets/tokens/devin-night/lizard-man-green-bright.png and /dev/null differ diff --git a/assets/tokens/devin-night/lizard-man-green-dark.png b/assets/tokens/devin-night/lizard-man-green-dark.png deleted file mode 100644 index 4cd6ce1b..00000000 Binary files a/assets/tokens/devin-night/lizard-man-green-dark.png and /dev/null differ diff --git a/assets/tokens/devin-night/lizard-man-purple.png b/assets/tokens/devin-night/lizard-man-purple.png deleted file mode 100644 index 6b77e41d..00000000 Binary files a/assets/tokens/devin-night/lizard-man-purple.png and /dev/null differ diff --git a/assets/tokens/devin-night/medusa-pale.png b/assets/tokens/devin-night/medusa-pale.png deleted file mode 100644 index 29e75e9f..00000000 Binary files a/assets/tokens/devin-night/medusa-pale.png and /dev/null differ diff --git a/assets/tokens/devin-night/medusa-red.png b/assets/tokens/devin-night/medusa-red.png deleted file mode 100644 index 402b4f00..00000000 Binary files a/assets/tokens/devin-night/medusa-red.png and /dev/null differ diff --git a/assets/tokens/devin-night/minotaur-balck.png b/assets/tokens/devin-night/minotaur-balck.png deleted file mode 100644 index 47416703..00000000 Binary files a/assets/tokens/devin-night/minotaur-balck.png and /dev/null differ diff --git a/assets/tokens/devin-night/minotaur-brown-braid.png b/assets/tokens/devin-night/minotaur-brown-braid.png deleted file mode 100644 index 5e9c8cb8..00000000 Binary files a/assets/tokens/devin-night/minotaur-brown-braid.png and /dev/null differ diff --git a/assets/tokens/devin-night/minotaur-brown.png b/assets/tokens/devin-night/minotaur-brown.png deleted file mode 100644 index bc2eeb1b..00000000 Binary files a/assets/tokens/devin-night/minotaur-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/monster-spider.png b/assets/tokens/devin-night/monster-spider.png deleted file mode 100644 index a4e1ac63..00000000 Binary files a/assets/tokens/devin-night/monster-spider.png and /dev/null differ diff --git a/assets/tokens/devin-night/nether-wolf.png b/assets/tokens/devin-night/nether-wolf.png deleted file mode 100644 index 954e5f47..00000000 Binary files a/assets/tokens/devin-night/nether-wolf.png and /dev/null differ diff --git a/assets/tokens/devin-night/ogre-blue.png b/assets/tokens/devin-night/ogre-blue.png deleted file mode 100644 index d70aa03d..00000000 Binary files a/assets/tokens/devin-night/ogre-blue.png and /dev/null differ diff --git a/assets/tokens/devin-night/ogre-brown.png b/assets/tokens/devin-night/ogre-brown.png deleted file mode 100644 index 2cfc8998..00000000 Binary files a/assets/tokens/devin-night/ogre-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/ogre-gray.png b/assets/tokens/devin-night/ogre-gray.png deleted file mode 100644 index 5bcff600..00000000 Binary files a/assets/tokens/devin-night/ogre-gray.png and /dev/null differ diff --git a/assets/tokens/devin-night/orc-blue.png b/assets/tokens/devin-night/orc-blue.png deleted file mode 100644 index 9d90b089..00000000 Binary files a/assets/tokens/devin-night/orc-blue.png and /dev/null differ diff --git a/assets/tokens/devin-night/orc-red.png b/assets/tokens/devin-night/orc-red.png deleted file mode 100644 index a352f61a..00000000 Binary files a/assets/tokens/devin-night/orc-red.png and /dev/null differ diff --git a/assets/tokens/devin-night/owldritch-brown.png b/assets/tokens/devin-night/owldritch-brown.png deleted file mode 100644 index 96c122e4..00000000 Binary files a/assets/tokens/devin-night/owldritch-brown.png and /dev/null differ diff --git a/assets/tokens/devin-night/owldritch-tan.png b/assets/tokens/devin-night/owldritch-tan.png deleted file mode 100644 index 76945460..00000000 Binary files a/assets/tokens/devin-night/owldritch-tan.png and /dev/null differ diff --git a/assets/tokens/devin-night/rat-brown-1.png b/assets/tokens/devin-night/rat-brown-1.png deleted file mode 100644 index 31a39f7f..00000000 Binary files a/assets/tokens/devin-night/rat-brown-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/rat-brown-2.png b/assets/tokens/devin-night/rat-brown-2.png deleted file mode 100644 index 781067e3..00000000 Binary files a/assets/tokens/devin-night/rat-brown-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/rat-gray.png b/assets/tokens/devin-night/rat-gray.png deleted file mode 100644 index 600b58da..00000000 Binary files a/assets/tokens/devin-night/rat-gray.png and /dev/null differ diff --git a/assets/tokens/devin-night/rat-tan.png b/assets/tokens/devin-night/rat-tan.png deleted file mode 100644 index 2b3766dd..00000000 Binary files a/assets/tokens/devin-night/rat-tan.png and /dev/null differ diff --git a/assets/tokens/devin-night/rust-bug.png b/assets/tokens/devin-night/rust-bug.png deleted file mode 100644 index dd32e839..00000000 Binary files a/assets/tokens/devin-night/rust-bug.png and /dev/null differ diff --git a/assets/tokens/devin-night/shadow.png b/assets/tokens/devin-night/shadow.png deleted file mode 100644 index a3d598c0..00000000 Binary files a/assets/tokens/devin-night/shadow.png and /dev/null differ diff --git a/assets/tokens/devin-night/skeleton-blue.png b/assets/tokens/devin-night/skeleton-blue.png deleted file mode 100644 index d1f5877b..00000000 Binary files a/assets/tokens/devin-night/skeleton-blue.png and /dev/null differ diff --git a/assets/tokens/devin-night/skeleton-green.png b/assets/tokens/devin-night/skeleton-green.png deleted file mode 100644 index a4aa0ba7..00000000 Binary files a/assets/tokens/devin-night/skeleton-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/troll-blue.png b/assets/tokens/devin-night/troll-blue.png deleted file mode 100644 index bbb13ba3..00000000 Binary files a/assets/tokens/devin-night/troll-blue.png and /dev/null differ diff --git a/assets/tokens/devin-night/troll-green-vambraces.png b/assets/tokens/devin-night/troll-green-vambraces.png deleted file mode 100644 index 8804b8c1..00000000 Binary files a/assets/tokens/devin-night/troll-green-vambraces.png and /dev/null differ diff --git a/assets/tokens/devin-night/troll-green.png b/assets/tokens/devin-night/troll-green.png deleted file mode 100644 index cc7ad9eb..00000000 Binary files a/assets/tokens/devin-night/troll-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/troll-tan.png b/assets/tokens/devin-night/troll-tan.png deleted file mode 100644 index f167bedc..00000000 Binary files a/assets/tokens/devin-night/troll-tan.png and /dev/null differ diff --git a/assets/tokens/devin-night/vampire-bat.png b/assets/tokens/devin-night/vampire-bat.png deleted file mode 100644 index 32339173..00000000 Binary files a/assets/tokens/devin-night/vampire-bat.png and /dev/null differ diff --git a/assets/tokens/devin-night/war-horse.png b/assets/tokens/devin-night/war-horse.png deleted file mode 100644 index 7da7908a..00000000 Binary files a/assets/tokens/devin-night/war-horse.png and /dev/null differ diff --git a/assets/tokens/devin-night/wolf-1.png b/assets/tokens/devin-night/wolf-1.png deleted file mode 100644 index 7b73da53..00000000 Binary files a/assets/tokens/devin-night/wolf-1.png and /dev/null differ diff --git a/assets/tokens/devin-night/wolf-2.png b/assets/tokens/devin-night/wolf-2.png deleted file mode 100644 index db914014..00000000 Binary files a/assets/tokens/devin-night/wolf-2.png and /dev/null differ diff --git a/assets/tokens/devin-night/wolf-3.png b/assets/tokens/devin-night/wolf-3.png deleted file mode 100644 index 9558e8f6..00000000 Binary files a/assets/tokens/devin-night/wolf-3.png and /dev/null differ diff --git a/assets/tokens/devin-night/zombie-female-green.png b/assets/tokens/devin-night/zombie-female-green.png deleted file mode 100644 index d042bf69..00000000 Binary files a/assets/tokens/devin-night/zombie-female-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/zombie-female-red.png b/assets/tokens/devin-night/zombie-female-red.png deleted file mode 100644 index 19a6cde4..00000000 Binary files a/assets/tokens/devin-night/zombie-female-red.png and /dev/null differ diff --git a/assets/tokens/devin-night/zombie-male-beige.png b/assets/tokens/devin-night/zombie-male-beige.png deleted file mode 100644 index 87cda96a..00000000 Binary files a/assets/tokens/devin-night/zombie-male-beige.png and /dev/null differ diff --git a/assets/tokens/devin-night/zombie-male-green.png b/assets/tokens/devin-night/zombie-male-green.png deleted file mode 100644 index bcde62ee..00000000 Binary files a/assets/tokens/devin-night/zombie-male-green.png and /dev/null differ diff --git a/assets/tokens/devin-night/zombie-male-yellow.png b/assets/tokens/devin-night/zombie-male-yellow.png deleted file mode 100644 index 62656dfc..00000000 Binary files a/assets/tokens/devin-night/zombie-male-yellow.png and /dev/null differ diff --git a/commitlint.config.js b/commitlint.config.js deleted file mode 100644 index 7401f777..00000000 --- a/commitlint.config.js +++ /dev/null @@ -1,8 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -/** - * @type {import("@commitlint/types").UserConfig} - */ -export default { extends: ["@commitlint/config-conventional"] }; diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 1f584aea..00000000 --- a/eslint.config.js +++ /dev/null @@ -1,65 +0,0 @@ -// SPDX-FileCopyrightText: 2025 Johannes Loher -// -// SPDX-License-Identifier: MIT - -// @ts-check - -import eslint from "@eslint/js"; -import eslintConfigPrettier from "eslint-config-prettier"; -import tseslint from "typescript-eslint"; -import globals from "globals"; - -const foundryGlobals = { - ActiveEffect: false, - ActiveEffectConfig: false, - Actor: false, - ActorSheet: false, - canvas: false, - Canvas: false, - ChatMessage: false, - CONFIG: false, - DocumentSheetConfig: false, - game: false, - Game: false, - Hooks: false, - Item: false, - ItemSheet: false, - Macro: false, - Notifications: false, - ui: false, - loadTemplates: false, - foundry: false, - Dialog: false, - renderTemplate: false, - TokenDocument: false, - Roll: false, - TextEditor: false, - CONST: false, - getProperty: false, - fromUuid: false, -}; - -export default tseslint.config( - { - ignores: ["dist/**", "client", "common"], - }, - eslint.configs.recommended, - tseslint.configs.recommended, - { - languageOptions: { - parserOptions: { - ecmaVersion: 2020, - sourceType: "module", - }, - globals: { ...globals.browser, ...globals.jquery, ...foundryGlobals }, - }, - }, - { - files: ["tools/**", "*"], - languageOptions: { - parserOptions: {}, - globals: globals.node, - }, - }, - eslintConfigPrettier, -); diff --git a/fonts/Lora/Lora-Bold.woff.license b/fonts/Lora/Lora-Bold.woff.license deleted file mode 100644 index 00399660..00000000 --- a/fonts/Lora/Lora-Bold.woff.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". - -SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora-BoldItalic.woff.license b/fonts/Lora/Lora-BoldItalic.woff.license deleted file mode 100644 index 00399660..00000000 --- a/fonts/Lora/Lora-BoldItalic.woff.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". - -SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora-Italic.woff.license b/fonts/Lora/Lora-Italic.woff.license deleted file mode 100644 index 00399660..00000000 --- a/fonts/Lora/Lora-Italic.woff.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". - -SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora-Regular.woff.license b/fonts/Lora/Lora-Regular.woff.license deleted file mode 100644 index 00399660..00000000 --- a/fonts/Lora/Lora-Regular.woff.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". - -SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Lora/Lora.woff.license b/fonts/Lora/Lora.woff.license deleted file mode 100644 index 00399660..00000000 --- a/fonts/Lora/Lora.woff.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora". - -SPDX-License-Identifier: OFL-1.1 \ No newline at end of file diff --git a/fonts/Woodstamp/Woodstamp.woff.license b/fonts/Woodstamp/Woodstamp.woff.license deleted file mode 100644 index e99a18a4..00000000 --- a/fonts/Woodstamp/Woodstamp.woff.license +++ /dev/null @@ -1,3 +0,0 @@ -Copyright (c) 2007 by Ryoichi Tsunekawa. All rights reserved. - -SPDX-License-Identifier: LicenseRef-Woodstamp \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 00000000..f35486d9 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,225 @@ +const { rollup } = require("rollup"); +const argv = require("yargs").argv; +const chalk = require("chalk"); +const fs = require("fs-extra"); +const gulp = require("gulp"); +const path = require("path"); +const rollupConfig = require("./rollup.config"); +const semver = require("semver"); +const sass = require("gulp-sass"); +sass.compiler = require("sass"); + +/********************/ +/* CONFIGURATION */ +/********************/ + +const name = path.basename(path.resolve(".")); +const sourceDirectory = "./src"; +const distDirectory = "./dist"; +const stylesDirectory = path.join(sourceDirectory, "scss"); +const stylesExtension = ".scss"; +const sourceFileExtension = ".ts"; +const staticFiles = ["assets", "fonts", "lang", "packs", "templates", "system.json", "template.json"]; +const getDownloadURL = (version) => + `https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/${version}/download?job=build`; + +/********************/ +/* BUILD */ +/********************/ + +/** + * Build the distributable JavaScript code + */ +async function buildCode() { + const build = await rollup({ input: rollupConfig.input, plugins: rollupConfig.plugins }); + return build.write(rollupConfig.output); +} + +/** + * Build style sheets + */ +function buildStyles() { + return gulp + .src(path.join(stylesDirectory, `${name}${stylesExtension}`)) + .pipe(sass().on("error", sass.logError)) + .pipe(gulp.dest(path.join(distDirectory, "css"))); +} + +/** + * Copy static files + */ +async function copyFiles() { + for (const file of staticFiles) { + if (fs.existsSync(path.join(sourceDirectory, file))) { + await fs.copy(path.join(sourceDirectory, file), path.join(distDirectory, file)); + } + } +} + +/** + * Watch for changes for each build step + */ +function buildWatch() { + gulp.watch( + path.join(sourceDirectory, "**", `*${sourceFileExtension}`).replace(/\\/g, "/"), + { ignoreInitial: false }, + buildCode, + ); + gulp.watch( + path.join(stylesDirectory, "**", `*${stylesExtension}`).replace(/\\/g, "/"), + { ignoreInitial: false }, + buildStyles, + ); + gulp.watch( + staticFiles.map((file) => path.join(sourceDirectory, file).replace(/\\/g, "/")), + { ignoreInitial: false }, + copyFiles, + ); +} + +/********************/ +/* CLEAN */ +/********************/ + +/** + * Remove built files from `dist` folder while ignoring source files + */ +async function clean() { + const files = [...staticFiles, "module"]; + + if (fs.existsSync(path.join(stylesDirectory, `${name}${stylesExtension}`))) { + files.push("css"); + } + + console.log(" ", chalk.yellow("Files to clean:")); + console.log(" ", chalk.blueBright(files.join("\n "))); + + for (const filePath of files) { + await fs.remove(path.join(distDirectory, filePath)); + } +} + +/********************/ +/* LINK */ +/********************/ + +/** + * Get the data path of Foundry VTT based on what is configured in `foundryconfig.json` + */ +function getDataPath() { + const config = fs.readJSONSync("foundryconfig.json"); + + if (config?.dataPath) { + if (!fs.existsSync(path.resolve(config.dataPath))) { + throw new Error("User Data path invalid, no Data directory found"); + } + + return path.resolve(config.dataPath); + } else { + throw new Error("No User Data path defined in foundryconfig.json"); + } +} + +/** + * Link build to User Data folder + */ +async function linkUserData() { + let destinationDirectory; + if (fs.existsSync(path.resolve(".", sourceDirectory, "system.json"))) { + destinationDirectory = "systems"; + } else { + throw new Error(`Could not find ${chalk.blueBright("system.json")}`); + } + + const linkDirectory = path.resolve(getDataPath(), destinationDirectory, name); + + if (argv.clean || argv.c) { + console.log(chalk.yellow(`Removing build in ${chalk.blueBright(linkDirectory)}.`)); + + await fs.remove(linkDirectory); + } else if (!fs.existsSync(linkDirectory)) { + console.log(chalk.green(`Copying build to ${chalk.blueBright(linkDirectory)}.`)); + await fs.ensureDir(path.resolve(linkDirectory, "..")); + await fs.symlink(path.resolve(".", distDirectory), linkDirectory); + } +} + +/********************/ +/* VERSIONING */ +/********************/ + +/** + * Get the contents of the manifest file as object. + */ +function getManifest() { + const manifestPath = path.join(sourceDirectory, "system.json"); + + if (fs.existsSync(manifestPath)) { + return { + file: fs.readJSONSync(manifestPath), + name: "system.json", + }; + } +} + +/** + * Get the target version based on on the current version and the argument passed as release. + */ +function getTargetVersion(currentVersion, release) { + if (["major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease"].includes(release)) { + return semver.inc(currentVersion, release); + } else { + return semver.valid(release); + } +} + +/** + * Update version and download URL. + */ +function bumpVersion(cb) { + const packageJson = fs.readJSONSync("package.json"); + const manifest = getManifest(); + + if (!manifest) cb(Error(chalk.red("Manifest JSON not found"))); + + try { + const release = argv.release || argv.r; + + const currentVersion = packageJson.version; + + if (!release) { + return cb(Error("Missing release type")); + } + + const targetVersion = getTargetVersion(currentVersion, release); + + if (!targetVersion) { + return cb(new Error(chalk.red("Error: Incorrect version arguments"))); + } + + if (targetVersion === currentVersion) { + return cb(new Error(chalk.red("Error: Target version is identical to current version"))); + } + + console.log(`Updating version number to '${targetVersion}'`); + + packageJson.version = targetVersion; + fs.writeJSONSync("package.json", packageJson, { spaces: 4 }); + + manifest.file.version = targetVersion; + manifest.file.download = getDownloadURL(targetVersion); + fs.writeJSONSync(path.join(sourceDirectory, manifest.name), manifest.file, { spaces: 4 }); + + return cb(); + } catch (err) { + cb(err); + } +} + +const execBuild = gulp.parallel(buildCode, buildStyles, copyFiles); + +exports.build = gulp.series(clean, execBuild); +exports.watch = buildWatch; +exports.clean = clean; +exports.link = linkUserData; +exports.bumpVersion = bumpVersion; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..01b23279 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + preset: "ts-jest", + testEnvironment: "node", + globals: { + "ts-jest": { + tsconfig: "/spec/tsconfig.spec.json", + }, + }, +}; diff --git a/jsconfig.json b/jsconfig.json deleted file mode 100644 index 8b929d6f..00000000 --- a/jsconfig.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "compilerOptions": { - "module": "es2022", - "target": "ES2022" - }, - "exclude": ["node_modules", "dist"], - "include": ["src", "client", "common"] -} diff --git a/jsconfig.json.license b/jsconfig.json.license deleted file mode 100644 index 467ee146..00000000 --- a/jsconfig.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2022 Johannes Loher - -SPDX-License-Identifier: MIT diff --git a/lang/de.json b/lang/de.json deleted file mode 100644 index 7d49ef08..00000000 --- a/lang/de.json +++ /dev/null @@ -1,391 +0,0 @@ -{ - "DS4.UserInteractionAdd": "Neu", - "DS4.UserInteractionAddItemTitle": "Item Erstellen", - "DS4.UserInteractionEditItemTitle": "Item Bearbeiten", - "DS4.UserInteractionDeleteItemTitle": "Item Löschen", - "DS4.UserInteractionAddEffectTitle": "Effekt Erstellen", - "DS4.UserInteractionEditEffectTitle": "Effekt Bearbeiten", - "DS4.UserInteractionDeleteEffectTitle": "Effekt Löschen", - "DS4.DocumentImageAltText": "Bild von {name}", - "DS4.RollableImageRollableTitle": "Für {name} würfeln", - "DS4.DiceOverlayImageAltText": "Bild eines W20", - "DS4.HeadingValues": "Werte", - "DS4.HeadingBiography": "Biografie", - "DS4.HeadingProperties": "Eigenschaften", - "DS4.HeadingEffects": "Effekte", - "DS4.HeadingInventory": "Inventar", - "DS4.HeadingAbilities": "Fähigkeiten", - "DS4.HeadingSpells": "Zaubersprüche", - "DS4.HeadingDescription": "Beschreibung", - "DS4.AttackType": "Angriffsart", - "DS4.AttackTypeAbbr": "AA", - "DS4.SortByAttackType": "Nach Angriffsart sortieren", - "DS4.DialogAttackTypeSelection": "Welche Angriffsart?", - "DS4.DialogAttributeTraitSelection": "Welches Attribut und welche Eigenschaft?", - "DS4.WeaponBonus": "Waffenbonus", - "DS4.WeaponBonusAbbr": "WB", - "DS4.SortByWeaponBonus": "Nach Waffenbonus sortieren", - "DS4.OpponentDefense": "Gegnerabwehr", - "DS4.OpponentDefenseAbbr": "GA", - "DS4.SortByOpponentDefense": "Nach Gegnerabwehr sortieren", - "DS4.OpponentDefenseMelee": "Gegnerabwehr für Schlagen", - "DS4.OpponentDefenseRanged": "Gegnerabwehr für Schießen", - "DS4.AttackTypeMelee": "Schlagen", - "DS4.AttackTypeRanged": "Schießen", - "DS4.AttackTypeMeleeRanged": "Schlagen + Schießen", - "DS4.Description": "Beschreibung", - "DS4.SortByDescription": "Nach Beschreibung sortieren", - "DS4.Quantity": "Menge", - "DS4.SortByQuantity": "Nach Menge sortieren", - "DS4.PriceGold": "Preis (Gold)", - "DS4.StorageLocation": "Wo gelagert", - "DS4.SortByStorageLocation": "Nach Lagerungsort sortieren", - "DS4.ItemEquipped": "Ausgerüstet", - "DS4.ItemEquippedAbbr": "A", - "DS4.SortByItemEquipped": "Nach Ausgerüstet sortieren", - "DS4.ItemAvailability": "Verfügbarkeit", - "DS4.ItemAvailabilityHamlet": "Dorf", - "DS4.ItemAvailabilityVilage": "Kleinstadt", - "DS4.ItemAvailabilityCity": "Großstadt", - "DS4.ItemAvailabilityElves": "Elfen", - "DS4.ItemAvailabilityDwarves": "Zwerge", - "DS4.ItemAvailabilityUnset": "nicht gesetzt", - "DS4.ItemAvailabilityNowhere": "nirgendwo", - "DS4.ItemName": "Name", - "DS4.SortByItemName": "Nach Name sortieren", - "DS4.ItemTypeWeapon": "Waffe", - "DS4.ItemTypeWeaponPlural": "Waffen", - "DS4.ItemTypeArmor": "Panzerung", - "DS4.ItemTypeArmorPlural": "Panzerungen", - "DS4.ItemTypeShield": "Schild", - "DS4.ItemTypeShieldPlural": "Schilde", - "DS4.ItemTypeSpell": "Zauberspruch", - "DS4.ItemTypeSpellPlural": "Zaubersprüche", - "DS4.ItemTypeEquipment": "Ausrüstung", - "DS4.ItemTypeEquipmentPlural": "Ausrüstung", - "DS4.ItemTypeLoot": "Beute", - "DS4.ItemTypeLootPlural": "Beute", - "DS4.ItemTypeTalent": "Talent", - "DS4.ItemTypeTalentPlural": "Talente", - "DS4.ItemTypeRacialAbility": "Volksfähigkeit", - "DS4.ItemTypeRacialAbilityPlural": "Volksfähigkeiten", - "DS4.ItemTypeLanguage": "Sprache", - "DS4.ItemTypeLanguagePlural": "Sprachen", - "DS4.ItemTypeAlphabet": "Schriftzeichen", - "DS4.ItemTypeAlphabetPlural": "Schriftzeichen", - "DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit", - "DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten", - "DS4.ItemWeaponCheckFlavor": "{actor} greift mit {weapon} an.", - "DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} greift mit {weapon} an.
Gegnerabwehr: {opponentDefense}", - "DS4.ItemSpellCheckFlavor": "{actor} wirkt {spell}.", - "DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} wirkt {spell}.
Gegnerabwehr: {opponentDefense}", - "DS4.ItemPropertiesArmor": "Panzerungseigenschaften", - "DS4.ItemPropertiesEquipable": "Ausrüstungseigenschaften", - "DS4.ItemPropertiesPhysical": "Physische Eigenschaften", - "DS4.ItemPropertiesProtective": "Schützende Eigenschaften", - "DS4.ItemPropertiesSpecialCreatureAbility": "Besondere Kreaturenfähigkeitseigenschaften", - "DS4.ItemPropertiesSpell": "Zaubereigenschaften", - "DS4.ItemPropertiesTalent": "Talenteigenschaften", - "DS4.ItemPropertiesWeapon": "Waffeneigenschaften", - "DS4.ArmorType": "Panzerungstyp", - "DS4.ArmorTypeAbbr": "PAT", - "DS4.SortByArmorType": "Nach Panzerungstyp sortieren", - "DS4.ArmorMaterialType": "Materialtyp", - "DS4.ArmorMaterialTypeAbbr": "Mat.", - "DS4.SortByArmorMaterialType": "Nach Materialtyp sortieren", - "DS4.ArmorValue": "Panzerungswert", - "DS4.ArmorValueAbbr": "PA", - "DS4.SortByArmorValue": "Nach Panzerungswert sortieren", - "DS4.ArmorTypeBody": "Körper", - "DS4.ArmorTypeBodyAbbr": "Körper", - "DS4.ArmorTypeHelmet": "Helm", - "DS4.ArmorTypeHelmetAbbr": "Helm", - "DS4.ArmorTypeVambrace": "Armschienen", - "DS4.ArmorTypeVambraceAbbr": "Arm", - "DS4.ArmorTypeGreaves": "Beinschienen", - "DS4.ArmorTypeGreavesAbbr": "Bein", - "DS4.ArmorTypeVambraceGreaves": "Armschienen + Beinschienen", - "DS4.ArmorTypeVambraceGreavesAbbr": "A+B", - "DS4.ArmorMaterialTypeCloth": "Stoff", - "DS4.ArmorMaterialTypeClothAbbr": "Stoff", - "DS4.ArmorMaterialTypeLeather": "Leder", - "DS4.ArmorMaterialTypeLeatherAbbr": "Leder", - "DS4.ArmorMaterialTypeChain": "Ketten", - "DS4.ArmorMaterialTypeChainAbbr": "Ketten", - "DS4.ArmorMaterialTypePlate": "Platten", - "DS4.ArmorMaterialTypePlateAbbr": "Platten", - "DS4.ArmorMaterialTypeNatural": "Natürlich", - "DS4.ArmorMaterialTypeNaturalAbbr": "Natürlich", - "DS4.SpellType": "Zauberspruchtyp", - "DS4.SpellTypeAbbr": "T", - "DS4.SpellTypeDescription": "Der Typ des Zauberspruchs.", - "DS4.SortBySpellType": "Nach Zauberspruchtyp sortieren", - "DS4.SpellTypeSpellcasting": "Zaubern", - "DS4.SpellTypeTargetedSpellcasting": "Zielzaubern", - "DS4.SpellGroups": "Zaubergruppen", - "DS4.SpellGroupsDescription": "Zaubergruppen, denen der Zauberspruch zugehörig ist.", - "DS4.SpellGroupLightning": "Blitz", - "DS4.SpellGroupEarth": "Erde, Fels, Stein", - "DS4.SpellGroupWater": "Wasser", - "DS4.SpellGroupIce": "Eis, Frost", - "DS4.SpellGroupFire": "Feuer", - "DS4.SpellGroupHealing": "Heilung", - "DS4.SpellGroupLight": "Licht", - "DS4.SpellGroupAir": "Luft", - "DS4.SpellGroupTransport": "Transport", - "DS4.SpellGroupDamage": "Schaden", - "DS4.SpellGroupShadow": "Schatten", - "DS4.SpellGroupProtection": "Schutz", - "DS4.SpellGroupMindAffecting": "Geistesbeeinflussend", - "DS4.SpellGroupDemonology": "Dämonologie", - "DS4.SpellGroupNecromancy": "Nekromantie", - "DS4.SpellGroupTransmutation": "Verwandlung", - "DS4.SpellGroupArea": "Fläche", - "DS4.SpellModifier": "Zauberbonus", - "DS4.SpellModifierNumerical": "Zauberbonus (numerisch)", - "DS4.SpellModifierComplex": "Zauberbonus (komplex)", - "DS4.SpellModifierAbbr": "ZB", - "DS4.SpellModifierNumericalDescription": "Der numerische Zauberbonus auf die Probe.", - "DS4.SpellModifierComplexDescription": "Ein komplexer Zauberbonus auf die Probe (zum Beispiel abhängig von Werten des Ziels). Wenn diese Art von Zauberbonus angegeben ist, wird der numerische ignoriert.", - "DS4.SortBySpellModifier": "Nach Zauberbonus sortieren", - "DS4.SpellDistance": "Distanz", - "DS4.SpellDistanceDescription": "Die maximale Entfernung zum Ziel. „Selbst“ bedeutet, dass nur der Zauberwirker selbst das Ziel des Zaubers sein kann.", - "DS4.SpellEffectRadius": "Wirkungsradius", - "DS4.SpellEffectRadiusDescription": "Der Wirkungsradius des Zaubers.", - "DS4.SpellDuration": "Dauer", - "DS4.SpellDurationDescription": "Die Wirkungszeit des Zaubers.", - "DS4.CooldownDuration": "Abklingzeit", - "DS4.CooldownDurationDescription": "Die Dauer, die der Zauber nach erfolgreichem Wirken nicht einsetzbar ist.", - "DS4.CooldownDuration0R": "0 Kampfrunden", - "DS4.CooldownDuration1R": "1 Kampfrunde", - "DS4.CooldownDuration2R": "2 Kampfrunden", - "DS4.CooldownDuration5R": "5 Kampfrunden", - "DS4.CooldownDuration10R": "10 Kampfrunden", - "DS4.CooldownDuration100R": "100 Kampfrunden", - "DS4.CooldownDuration1D": "1 Tag", - "DS4.CooldownDurationD20D": "W20 Tage", - "DS4.SpellAllowsDefense": "Erlaubt Abwehr", - "DS4.SpellAllowsDefenseDescription": "Ist eine Abwehren-Probe gegen diesen Zauber erlaubt?", - "DS4.SpellMinimumLevel": "Zugangsstufe", - "DS4.SpellMinimumLevelDescription": "Die minimale Stufe, ab der ein Zauberwirker den Zauberspruch erlernen kann.", - "DS4.SpellCasterClassHealer": "Heiler", - "DS4.SpellCasterClassSorcerer": "Schwarzmagier", - "DS4.SpellCasterClassWizard": "Zauberer", - "DS4.SpellPrice": "Preis (Gold)", - "DS4.SpellPriceDescription": "Der Kaufpreis des Zauberspruchs.", - "DS4.EffectEnabled": "Eingeschaltet", - "DS4.EffectEnabledAbbr": "E", - "DS4.EffectActive": "Aktiv (unter Betrachtung, ob ein eventuelles Quellen-Item ausgerüstet ist usw.)", - "DS4.EffectActiveAbbr": "A", - "DS4.EffectName": "Name", - "DS4.EffectSourceName": "Quelle", - "DS4.EffectFactor": "Faktor (wie oft der Effekt angewendet wird)", - "DS4.EffectFactorAbbr": "F", - "DS4.ActorName": "Name", - "DS4.ActorImageAltText": "Bild des Aktors", - "DS4.ActorTypeCharacter": "Charakter", - "DS4.ActorTypeCreature": "Kreatur", - "DS4.Attribute": "Attribut", - "DS4.AttributeBody": "Körper", - "DS4.AttributeMobility": "Agilität", - "DS4.AttributeMind": "Geist", - "DS4.Trait": "Eigenschaft", - "DS4.TraitStrength": "Stärke", - "DS4.TraitConstitution": "Härte", - "DS4.TraitAgility": "Bewegung", - "DS4.TraitDexterity": "Geschick", - "DS4.TraitIntellect": "Verstand", - "DS4.TraitAura": "Aura", - "DS4.CombatValuesHitPoints": "Lebenskraft", - "DS4.CombatValuesHitPointsCurrent": "Aktuelle Lebenskraft", - "DS4.CombatValuesHitPointsCurrentAbbr": "LK", - "DS4.CombatValuesDefense": "Abwehr", - "DS4.CombatValuesInitiative": "Initiative", - "DS4.CombatValuesMovement": "Laufen", - "DS4.CombatValuesMeleeAttack": "Schlagen", - "DS4.CombatValuesRangedAttack": "Schießen", - "DS4.CombatValuesSpellcasting": "Zaubern", - "DS4.CombatValuesTargetedSpellcasting": "Zielzaubern", - "DS4.CombatValuesHitPointsSheet": "Lebenskraft", - "DS4.CombatValuesDefenseSheet": "Abwehr", - "DS4.CombatValuesInitiativeSheet": "Initiative", - "DS4.CombatValuesMovementSheet": "Laufen", - "DS4.CombatValuesMeleeAttackSheet": "Schlagen", - "DS4.CombatValuesRangedAttackSheet": "Schießen", - "DS4.CombatValuesSpellcastingSheet": "Zaubern", - "DS4.CombatValuesTargetedSpellcastingSheet": "Zielzaubern", - "DS4.CharacterBaseInfoRace": "Volk", - "DS4.CharacterBaseInfoClass": "Klasse", - "DS4.CharacterBaseInfoHeroClass": "Heldenklasse", - "DS4.CharacterBaseInfoCulture": "Kultur", - "DS4.CharacterProgressionLevel": "Stufe", - "DS4.CharacterProgressionLevelAbbr": "ST", - "DS4.CharacterProgressionExperiencePoints": "Erfahrungspunkte", - "DS4.CharacterProgressionExperiencePointsAbbr": "EP", - "DS4.CharacterProgressionTalentPoints": "Talentpunkte", - "DS4.CharacterProgressionProgressPoints": "Lernpunkte", - "DS4.CharacterSlayerPoints": "Slayerpunkte", - "DS4.CharacterSlayerPointsAbbr": "SP", - "DS4.TalentRank": "Rang", - "DS4.SortByTalentRank": "Nach Rang sortieren", - "DS4.TalentRankBase": "Erworben", - "DS4.TalentRankMax": "Maximum", - "DS4.TalentRankMod": "Zusätzlich", - "DS4.TalentRankTotal": "Gesamt", - "DS4.CharacterLanguageLanguages": "Sprachen", - "DS4.CharacterLanguageAlphabets": "Schriftzeichen", - "DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte", - "DS4.CharacterProfileBiography": "Biographie", - "DS4.CharacterProfileGender": "Geschlecht", - "DS4.CharacterProfileBirthday": "Geburtstag", - "DS4.CharacterProfileBirthplace": "Geburtsort", - "DS4.CharacterProfileAge": "Alter", - "DS4.CharacterProfileHeight": "Größe [cm]", - "DS4.CharacterProfileHairColor": "Haarfarbe", - "DS4.CharacterProfileWeight": "Gewicht [kg]", - "DS4.CharacterProfileEyeColor": "Augenfarbe", - "DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften", - "DS4.CharacterCurrencyGold": "Gold", - "DS4.CharacterCurrencySilver": "Silber", - "DS4.CharacterCurrencyCopper": "Kupfer", - "DS4.CharacterCurrency": "Währung", - "DS4.CreatureTypeAnimal": "Tier", - "DS4.CreatureTypeConstruct": "Konstrukt", - "DS4.CreatureTypeHumanoid": "Humanoid", - "DS4.CreatureTypeMagicalEntity": "Magisches Wesen", - "DS4.CreatureTypePlantBeing": "Pflanzenwesen", - "DS4.CreatureTypeUndead": "Untot", - "DS4.CreatureSizeCategoryTiny": "Winzig", - "DS4.CreatureSizeCategorySmall": "Klein", - "DS4.CreatureSizeCategoryNormal": "Normal", - "DS4.CreatureSizeCategoryLarge": "Groß", - "DS4.CreatureSizeCategoryHuge": "Riesig", - "DS4.CreatureSizeCategoryColossal": "Gewaltig", - "DS4.CreatureBaseInfoLoot": "Beute", - "DS4.CreatureBaseInfoFoeFactor": "Gegnerhärte", - "DS4.CreatureBaseInfoCreatureType": "Kreaturengruppe", - "DS4.CreatureBaseInfoSizeCategory": "Größenkategorie", - "DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte", - "DS4.CreatureBaseInfoDescription": "Beschreibung", - "DS4.WarningActorCannotOwnItem": "Der Aktor '{actorName}' vom Typ '{actorType}' kann das Item '{itemName}' vom Typ '{itemType}' nicht besitzen.", - "DS4.ErrorDiceCoupFumbleOverlap": "Es gibt eine Überlappung zwischen Patzern und Immersiegen.", - "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.", - "DS4.ErrorInvalidNumberOfDice": "Ungültige Anzahl an Würfeln.", - "DS4.ErrorInvalidActorType": "Ungültiger Aktortyp '{type}'.", - "DS4.ErrorInvalidItemType": "Ungültiger Itemtyp '{type}'.", - "DS4.ErrorDuringMigration": "Fehler während der Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", - "DS4.ErrorDuringCompendiumMigration": "Fehler während der Aktualisierung Kompendiums '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", - "DS4.ErrorCannotRollUnownedItem": "Für das Item '{name}' ({id}) kann nicht gewürfelt werden, da es keinem Aktor gehört.", - "DS4.ErrorRollingForItemTypeNotPossible": "Würfeln ist für Items vom Typ '{type}' nicht möglich.", - "DS4.ErrorUnexpectedAttackType": "Unerwartete Angriffsart '{actualType}', erwartete Angriffsarten: {expectedTypes}", - "DS4.ErrorUnexpectedAttribute": "Unerwartetes Attribut '{actualAttribute}', erwartete Attribute: {expectedTypes}", - "DS4.ErrorUnexpectedTrait": "Unerwartete Eigenschaft '{actualTrait}', erwartete Eigenschaften: {expectedTypes}", - "DS4.ErrorCanvasIsNotInitialized": "Canvas ist noch nicht initialisiert.", - "DS4.ErrorCannotDragMissingCheck": "Die Probe '{check}' per Drag & Drop zu ziehen ist nicht möglich, denn sie existiert nicht.", - "DS4.WarningItemMustBeEquippedToBeRolled": "Um für das Item '{name}' ({id}) vom Typ '{type}' zu würfeln, muss es ausgerüstet sein.", - "DS4.WarningMustControlActorToUseRollItemMacro": "Um ein Item-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", - "DS4.WarningMustControlActorToUseRollCheckMacro": "Um ein Proben-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", - "DS4.WarningControlledActorDoesNotHaveItem": "Der kontrollierte Aktor '{actorName}' ({actorId}) hat kein Item mit der ID '{itemId}'.", - "DS4.WarningItemIsNotRollable": "Für das Item '{name}' ({id}) vom Typ '{type}' kann nicht gewürfelt werden.", - "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Makros können nur für besessene Items angelegt werden.", - "DS4.WarningInvalidCheckDropped": "Eine ungültige Probe wurde auf die Hotbar gezogen.", - "DS4.WarningSystemUpdateCompletedWithErrors": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} abgeschlossen, aber es sind Fehler aufgetreten. Bitte prüfen Sie in der Entwicklerkonsole, ob es sich um relevante Fehler handelt, oder ob sie ignoriert werden können. Insbesondere kann https://github.com/foundryvtt/foundryvtt/issues/9672 zu Fehlern führen, die ignoriert werden können.", - "DS4.InfoManuallyEnterSpellModifier": "Der korrekte Wert für den Zauberbonus '{spellModifier}' des Zaubers '{name}' muss manuell angegeben werden.", - "DS4.InfoSystemUpdateStart": "Aktualisiere DS4 System von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.", - "DS4.InfoSystemUpdateCompletedSuccessfully": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!", - "DS4.InfoCompendiumMigrationStart": "Aktualisiere Kompendium '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.", - "DS4.InfoCompendiumMigrationCompleted": "Aktualisierung des Kompendiums '{pack}' für DS4 von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!", - "DS4.UnitRounds": "Runden", - "DS4.UnitRoundsAbbr": "Rnd", - "DS4.UnitMinutes": "Minuten", - "DS4.UnitMinutesAbbr": "min", - "DS4.UnitHours": "Stunden", - "DS4.UnitHoursAbbr": "h", - "DS4.UnitDays": "Tage", - "DS4.UnitDaysAbbr": "d", - "DS4.UnitMeters": "Meter", - "DS4.UnitMetersAbbr": "m", - "DS4.UnitKilometers": "Kilometer", - "DS4.UnitKilometersAbbr": "km", - "DS4.UnitCustom": "individuell", - "DS4.UnitCustomAbbr": " ", - "DS4.GenericOkButton": "OK", - "DS4.GenericCancelButton": "Abbrechen", - "DS4.DialogRollOptionsDefaultTitle": "Proben-Optionen", - "DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde '{exType}', tatsächlich erhalten wurde '{realType}'.", - "DS4.ErrorCouldNotFindForm": "Konnte HTML Element '{htmlElement}' nicht finden.", - "DS4.ErrorActorDoesNotHaveItem": "Der Aktor '{actor}' hat kein Item mit der UUID '{uuid}'.", - "DS4.ErrorUnexpectedError": "Es gab einen unerwarteten Fehler im Dungeonslayers 4 System. Für mehr Details schauen Sie bitte in die Konsole (F12).", - "DS4.ErrorItemDoesNotHaveEffect": "Das Item '{item}' hat keinen Effekt mit der ID '{id}'.", - "DS4.ErrorActorDoesNotHaveEffect": "Der Aktor '{actor}' hat keinen Effekt mit der UUID '{uuid}'.", - "DS4.DialogRollOptionsCheckTargetNumberLabel": "Probenwert", - "DS4.DialogRollOptionsCheckModifierLabel": "Modifikator", - "DS4.DialogRollOptionsCheckModifierCustomLabel": "Individueller Modifikator", - "DS4.DialogRollOptionsMaximumCoupResultLabel": "Immersieg bis", - "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Patzer ab", - "DS4.DialogRollOptionsRollModeLabel": "Sichtbarkeit", - "DS4.CheckModifierRoutine": "Routine", - "DS4.CheckModifierVeryEasy": "Sehr Leicht", - "DS4.CheckModifierEasy": "Leicht", - "DS4.CheckModifierMormal": "Normal", - "DS4.CheckModifierDifficult": "Schwer", - "DS4.CheckModifierVeryDifficult": "Sehr Schwer", - "DS4.CheckModifierExtremelyDifficult": "Äußerst Schwer", - "DS4.CheckModifierCustom": "Individuell", - "DS4.TooltipBaseValue": "Basiswert", - "DS4.TooltipModifier": "Modifikator", - "DS4.TooltipEffects": "Effekte", - "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slayende Würfel", - "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Benutze Slayende Würfel bei automatisierten Proben.", - "DS4.SettingShowSlayerPointsName": "Slayerpunkte", - "DS4.SettingShowSlayerPointsHint": "Zeige Slayerpunkte im Charakterbogen an.", - "DS4.Checks": "Proben", - "DS4.ChecksAppraise": "Schätzen", - "DS4.ChecksChangeSpell": "Zauber Wechseln", - "DS4.ChecksClimb": "Klettern", - "DS4.ChecksCommunicate": "Verständigen", - "DS4.ChecksDecipherScript": "Inschrift Entziffern", - "DS4.ChecksDefend": "Abwehren", - "DS4.ChecksDefyPoison": "Gift Trotzen", - "DS4.ChecksDisableTraps": "Fallen Entschärfen", - "DS4.ChecksFeatOfStrength": "Kraftakt", - "DS4.ChecksFlirt": "Flirten", - "DS4.ChecksHaggle": "Feilschen", - "DS4.ChecksHide": "Verbergen", - "DS4.ChecksIdentifyMagic": "Magie Erkennen", - "DS4.ChecksJump": "Springen", - "DS4.ChecksKnowledge": "Wissen", - "DS4.ChecksOpenLock": "Schlösser Öffnen", - "DS4.ChecksPerception": "Bemerken", - "DS4.ChecksPickPocket": "Taschendiebstahl", - "DS4.ChecksReadTracks": "Spuren Lesen", - "DS4.ChecksResistDisease": "Krankheit Trotzen", - "DS4.ChecksRide": "Reiten", - "DS4.ChecksSearch": "Suchen", - "DS4.ChecksSenseMagic": "Magie Erspüren", - "DS4.ChecksSneak": "Schleichen", - "DS4.ChecksStartFire": "Feuer Machen", - "DS4.ChecksSwim": "Schwimmen", - "DS4.ChecksWakeUp": "Erwachen", - "DS4.ChecksWorkMechanism": "Mechanismus Öffnen", - "DS4.ActorCheckFlavor": "{actor} würfelt eine {check} Probe.", - "DS4.ActorGenericCheckFlavor": "{actor} würfelt eine Probe gegen {attribute} + {trait}.", - "DS4.CheckTooltip": "{check} Probe würfeln", - "DS4.NewWeaponName": "Neue Waffe", - "DS4.NewArmorName": "Neue Panzerung", - "DS4.NewShieldName": "Neuer Schild", - "DS4.NewSpellName": "Neuer Zauberspruch", - "DS4.NewEquipmentName": "Neue Ausrüstung", - "DS4.NewLootName": "Neue Beute", - "DS4.NewTalentName": "Neues Talent", - "DS4.NewRacialAbilityName": "Neue Volksfähigkeit", - "DS4.NewLanguageName": "Neue Sprache", - "DS4.NewAlphabetName": "Neue Schriftzeichen", - "DS4.NewSpecialCreatureAbilityName": "Neue Besondere Kreaturenfähigkeit", - "DS4.NewEffectName": "Neuer Effekt", - - "DS4.ActiveEffectApplyToItems": "Auf Items Anwenden", - "DS4.ActiveEffectItemName": "Itemname", - "DS4.ActiveEffectItemCondition": "Bedingung", - "DS4.TooltipNotEditableDueToEffects": "Feld nicht bearbeitbar, weil von Aktiven Effekten beeinflusst" -} diff --git a/lang/de.json.license b/lang/de.json.license deleted file mode 100644 index ff79d3f7..00000000 --- a/lang/de.json.license +++ /dev/null @@ -1,6 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe -SPDX-FileCopyrightText: 2021 Siegfried Krug - -SPDX-License-Identifier: MIT diff --git a/lang/en.json b/lang/en.json deleted file mode 100644 index 847f0aea..00000000 --- a/lang/en.json +++ /dev/null @@ -1,391 +0,0 @@ -{ - "DS4.UserInteractionAdd": "Add", - "DS4.UserInteractionAddItemTitle": "Create Item", - "DS4.UserInteractionEditItemTitle": "Edit Item", - "DS4.UserInteractionDeleteItemTitle": "Delete Item", - "DS4.UserInteractionAddEffectTitle": "Create Effect", - "DS4.UserInteractionEditEffectTitle": "Edit Effect", - "DS4.UserInteractionDeleteEffectTitle": "Delete Effect", - "DS4.DocumentImageAltText": "Image of {name}", - "DS4.RollableImageRollableTitle": "Roll for {name}", - "DS4.DiceOverlayImageAltText": "Image of a d20", - "DS4.HeadingValues": "Values", - "DS4.HeadingBiography": "Biography", - "DS4.HeadingProperties": "Properties", - "DS4.HeadingEffects": "Effects", - "DS4.HeadingInventory": "Inventory", - "DS4.HeadingAbilities": "Abilities", - "DS4.HeadingSpells": "Spells", - "DS4.HeadingDescription": "Description", - "DS4.AttackType": "Attack Type", - "DS4.AttackTypeAbbr": "AT", - "DS4.SortByAttackType": "Sort by Attack Type", - "DS4.DialogAttackTypeSelection": "Which Attack Type?", - "DS4.DialogAttributeTraitSelection": "Which Attribute and Trait?", - "DS4.WeaponBonus": "Weapon Bonus", - "DS4.WeaponBonusAbbr": "WB", - "DS4.SortByWeaponBonus": "Sort by Weapon Bonus", - "DS4.OpponentDefense": "Opponent Defense", - "DS4.OpponentDefenseAbbr": "OD", - "DS4.SortByOpponentDefense": "Sort by Opponent Defense", - "DS4.OpponentDefenseMelee": "Opponent Defense for melee attacks", - "DS4.OpponentDefenseRanged": "Opponent Defense for ranged attacks", - "DS4.AttackTypeMelee": "Melee", - "DS4.AttackTypeRanged": "Ranged", - "DS4.AttackTypeMeleeRanged": "Melee / Ranged", - "DS4.Description": "Description", - "DS4.SortByDescription": "Sort by Description", - "DS4.Quantity": "Quantity", - "DS4.SortByQuantity": "Sort by Quantity", - "DS4.PriceGold": "Price (Gold)", - "DS4.StorageLocation": "Stored at", - "DS4.SortByStorageLocation": "Sort by Storage Location", - "DS4.ItemEquipped": "Equipped", - "DS4.ItemEquippedAbbr": "E", - "DS4.SortByItemEquipped": "Sort by Equipped", - "DS4.ItemAvailability": "Availability", - "DS4.ItemAvailabilityHamlet": "Hamlet", - "DS4.ItemAvailabilityVilage": "Village", - "DS4.ItemAvailabilityCity": "City", - "DS4.ItemAvailabilityElves": "Elves", - "DS4.ItemAvailabilityDwarves": "Dwarves", - "DS4.ItemAvailabilityUnset": "Unset", - "DS4.ItemAvailabilityNowhere": "Nowhere", - "DS4.ItemName": "Name", - "DS4.SortByItemName": "Sort by Name", - "DS4.ItemTypeWeapon": "Weapon", - "DS4.ItemTypeWeaponPlural": "Weapons", - "DS4.ItemTypeArmor": "Armor", - "DS4.ItemTypeArmorPlural": "Armor", - "DS4.ItemTypeShield": "Shield", - "DS4.ItemTypeShieldPlural": "Shields", - "DS4.ItemTypeSpell": "Spell", - "DS4.ItemTypeSpellPlural": "Spells", - "DS4.ItemTypeEquipment": "Equipment", - "DS4.ItemTypeEquipmentPlural": "Equipment", - "DS4.ItemTypeLoot": "Loot", - "DS4.ItemTypeLootPlural": "Loot", - "DS4.ItemTypeTalent": "Talent", - "DS4.ItemTypeTalentPlural": "Talents", - "DS4.ItemTypeRacialAbility": "Racial Ability", - "DS4.ItemTypeRacialAbilityPlural": "Racial Abilities", - "DS4.ItemTypeLanguage": "Language", - "DS4.ItemTypeLanguagePlural": "Languages", - "DS4.ItemTypeAlphabet": "Alphabet", - "DS4.ItemTypeAlphabetPlural": "Alphabets", - "DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability", - "DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities", - "DS4.ItemWeaponCheckFlavor": "{actor} attacks with {weapon}.", - "DS4.ItemWeaponCheckFlavorWithOpponentDefense": "{actor} attacks with {weapon}
Opponent defense: {opponentDefense}", - "DS4.ItemSpellCheckFlavor": "{actor} casts {spell}.", - "DS4.ItemSpellCheckFlavorWithOpponentDefense": "{actor} casts {spell}.
Opponent Defense: {opponentDefense}", - "DS4.ItemPropertiesArmor": "Armor Properties", - "DS4.ItemPropertiesEquipable": "Equipment Properties", - "DS4.ItemPropertiesPhysical": "Physical Properties", - "DS4.ItemPropertiesProtective": "Protective Properties", - "DS4.ItemPropertiesSpecialCreatureAbility": "Special Creature Ability Properties", - "DS4.ItemPropertiesSpell": "Spell Properties", - "DS4.ItemPropertiesTalent": "Talent Properties", - "DS4.ItemPropertiesWeapon": "Weapon Properties", - "DS4.ArmorType": "Armor Type", - "DS4.ArmorTypeAbbr": "AT", - "DS4.SortByArmorType": "Sort by Armor Type", - "DS4.ArmorMaterialType": "Material Type", - "DS4.ArmorMaterialTypeAbbr": "Mat.", - "DS4.SortByArmorMaterialType": "Sort by Material Type", - "DS4.ArmorValue": "Armor Value", - "DS4.ArmorValueAbbr": "AV", - "DS4.SortByArmorValue": "Sort by Armor Value", - "DS4.ArmorTypeBody": "Body", - "DS4.ArmorTypeBodyAbbr": "Body", - "DS4.ArmorTypeHelmet": "Helmet", - "DS4.ArmorTypeHelmetAbbr": "Helm", - "DS4.ArmorTypeVambrace": "Vambrace", - "DS4.ArmorTypeVambraceAbbr": "Vambr", - "DS4.ArmorTypeGreaves": "Greaves", - "DS4.ArmorTypeGreavesAbbr": "Greav", - "DS4.ArmorTypeVambraceGreaves": "Vambrace + Greaves", - "DS4.ArmorTypeVambraceGreavesAbbr": "V+G", - "DS4.ArmorMaterialTypeCloth": "Cloth", - "DS4.ArmorMaterialTypeClothAbbr": "Cloth", - "DS4.ArmorMaterialTypeLeather": "Leather", - "DS4.ArmorMaterialTypeLeatherAbbr": "Leath", - "DS4.ArmorMaterialTypeChain": "Chain", - "DS4.ArmorMaterialTypeChainAbbr": "Chain", - "DS4.ArmorMaterialTypePlate": "Plate", - "DS4.ArmorMaterialTypePlateAbbr": "Plate", - "DS4.ArmorMaterialTypeNatural": "Natural", - "DS4.ArmorMaterialTypeNaturalAbbr": "Natural", - "DS4.SpellType": "Spell Type", - "DS4.SpellTypeAbbr": "T", - "DS4.SpellTypeDescription": "The type of the spell.", - "DS4.SortBySpellType": "Sort by Spell Type", - "DS4.SpellTypeSpellcasting": "Spellcasting", - "DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting", - "DS4.SpellGroups": "Spell Groups", - "DS4.SpellGroupsDescription": "Spell groups which the spell belongs to.", - "DS4.SpellGroupLightning": "Lightning", - "DS4.SpellGroupEarth": "Earth, Rock, Stone", - "DS4.SpellGroupWater": "Water", - "DS4.SpellGroupIce": "Ice, Frost", - "DS4.SpellGroupFire": "Fire", - "DS4.SpellGroupHealing": "Healing", - "DS4.SpellGroupLight": "Light", - "DS4.SpellGroupAir": "Air", - "DS4.SpellGroupTransport": "Transport", - "DS4.SpellGroupDamage": "Damage", - "DS4.SpellGroupShadow": "Shadow", - "DS4.SpellGroupProtection": "Protection", - "DS4.SpellGroupMindAffecting": "Mind Affecting", - "DS4.SpellGroupDemonology": "Demonologie", - "DS4.SpellGroupNecromancy": "Necromancy", - "DS4.SpellGroupTransmutation": "Transmutation", - "DS4.SpellGroupArea": "Area", - "DS4.SpellModifier": "Spell Modifier", - "DS4.SpellModifierNumerical": "Spell Modifier (numerical)", - "DS4.SpellModifierComplex": "Spell Modifier (complex)", - "DS4.SpellModifierAbbr": "SM", - "DS4.SpellModifierNumericalDescription": "The numerical spell modifier for the corresponding check.", - "DS4.SpellModifierComplexDescription": "A complex spell modifier for the corresponding check (for example, dependent on the target’s values). If given, the numerical spell bonus is ignored.", - "DS4.SortBySpellModifier": "Sort by Spell Modifier", - "DS4.SpellDistance": "Distance", - "DS4.SpellDistanceDescription": "The maximum distance to the target, “Self” meaning that only the caster can be the target of this spell.", - "DS4.SpellEffectRadius": "Area of Effect Radius", - "DS4.SpellEffectRadiusDescription": "The radius of the area of effect of the spell.", - "DS4.SpellDuration": "Duration", - "DS4.SpellDurationDescription": "The spell’s duration.", - "DS4.CooldownDuration": "Cooldown Period", - "DS4.CooldownDurationDescription": "The length of time to wait after a successful casting before the spell can be cast again.", - "DS4.CooldownDuration0R": "0 Rounds", - "DS4.CooldownDuration1R": "1 Round", - "DS4.CooldownDuration2R": "2 Rounds", - "DS4.CooldownDuration5R": "5 Rounds", - "DS4.CooldownDuration10R": "10 Rounds", - "DS4.CooldownDuration100R": "100 Rounds", - "DS4.CooldownDuration1D": "1 Day", - "DS4.CooldownDurationD20D": "D20 Days", - "DS4.SpellAllowsDefense": "Allows Defense", - "DS4.SpellAllowsDefenseDescription": "Is it alowed to perform a defense check against this spell?", - "DS4.SpellMinimumLevel": "Minimum Level", - "DS4.SpellMinimumLevelDescription": "The minimum level at which a spell caster may learn the spell.", - "DS4.SpellCasterClassHealer": "Healer", - "DS4.SpellCasterClassSorcerer": "Sorcerer", - "DS4.SpellCasterClassWizard": "Wizard", - "DS4.SpellPrice": "Price (Gold)", - "DS4.SpellPriceDescription": "The price to purchase the spell.", - "DS4.EffectEnabled": "Enabled", - "DS4.EffectEnabledAbbr": "E", - "DS4.EffectActive": "Active (taking into account whether a potential source item is equipped etc.)", - "DS4.EffectActiveAbbr": "A", - "DS4.EffectName": "Name", - "DS4.EffectSourceName": "Source", - "DS4.EffectFactor": "Factor (the number of times the effect is being applied)", - "DS4.EffectFactorAbbr": "F", - "DS4.ActorName": "Name", - "DS4.ActorImageAltText": "Image of the Actor", - "DS4.ActorTypeCharacter": "Character", - "DS4.ActorTypeCreature": "Creature", - "DS4.Attribute": "Attribute", - "DS4.AttributeBody": "Body", - "DS4.AttributeMobility": "Mobility", - "DS4.AttributeMind": "Mind", - "DS4.Trait": "Trait", - "DS4.TraitStrength": "Strength", - "DS4.TraitConstitution": "Constitution", - "DS4.TraitAgility": "Agility", - "DS4.TraitDexterity": "Dexterity", - "DS4.TraitIntellect": "Intellect", - "DS4.TraitAura": "Aura", - "DS4.CombatValuesHitPoints": "Hit Points", - "DS4.CombatValuesHitPointsCurrent": "Current Hit Points", - "DS4.CombatValuesHitPointsCurrentAbbr": "HP", - "DS4.CombatValuesDefense": "Defense", - "DS4.CombatValuesInitiative": "Initiative", - "DS4.CombatValuesMovement": "Movement", - "DS4.CombatValuesMeleeAttack": "Melee Attack", - "DS4.CombatValuesRangedAttack": "Ranged Attack", - "DS4.CombatValuesSpellcasting": "Spellcasting", - "DS4.CombatValuesTargetedSpellcasting": "Targeted Spellcasting", - "DS4.CombatValuesHitPointsSheet": "Hit Points", - "DS4.CombatValuesDefenseSheet": "Defense", - "DS4.CombatValuesInitiativeSheet": "Initiative", - "DS4.CombatValuesMovementSheet": "Movement", - "DS4.CombatValuesMeleeAttackSheet": "Melee Attack", - "DS4.CombatValuesRangedAttackSheet": "RAT", - "DS4.CombatValuesSpellcastingSheet": "Spellcasting", - "DS4.CombatValuesTargetedSpellcastingSheet": "TSC", - "DS4.CharacterBaseInfoRace": "Race", - "DS4.CharacterBaseInfoClass": "Class", - "DS4.CharacterBaseInfoHeroClass": "Hero Class", - "DS4.CharacterBaseInfoCulture": "Culture", - "DS4.CharacterProgressionLevel": "Level", - "DS4.CharacterProgressionLevelAbbr": "LVL", - "DS4.CharacterProgressionExperiencePoints": "Experience Points", - "DS4.CharacterProgressionExperiencePointsAbbr": "XP", - "DS4.CharacterProgressionTalentPoints": "Talent Points", - "DS4.CharacterProgressionProgressPoints": "Progress Points", - "DS4.CharacterSlayerPoints": "Slayer Points", - "DS4.CharacterSlayerPointsAbbr": "SP", - "DS4.TalentRank": "Rank", - "DS4.SortByTalentRank": "Sort by Rank", - "DS4.TalentRankBase": "Acquired", - "DS4.TalentRankMax": "Maximum", - "DS4.TalentRankMod": "Additional", - "DS4.TalentRankTotal": "Total", - "DS4.CharacterLanguageLanguages": "Languages", - "DS4.CharacterLanguageAlphabets": "Alphabets", - "DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points", - "DS4.CharacterProfileBiography": "Biography", - "DS4.CharacterProfileGender": "Gender", - "DS4.CharacterProfileBirthday": "Birthday", - "DS4.CharacterProfileBirthplace": "Birthplace", - "DS4.CharacterProfileAge": "Age", - "DS4.CharacterProfileHeight": "Height [m]", - "DS4.CharacterProfileHairColor": "Hair Color", - "DS4.CharacterProfileWeight": "Weight [kg]", - "DS4.CharacterProfileEyeColor": "Eye Color", - "DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics", - "DS4.CharacterCurrencyGold": "Gold", - "DS4.CharacterCurrencySilver": "Silver", - "DS4.CharacterCurrencyCopper": "Copper", - "DS4.CharacterCurrency": "Currency", - "DS4.CreatureTypeAnimal": "Animal", - "DS4.CreatureTypeConstruct": "Construct", - "DS4.CreatureTypeHumanoid": "Humanoid", - "DS4.CreatureTypeMagicalEntity": "Magical Entity", - "DS4.CreatureTypePlantBeing": "Plant Being", - "DS4.CreatureTypeUndead": "Undead", - "DS4.CreatureSizeCategoryTiny": "Tiny", - "DS4.CreatureSizeCategorySmall": "Small", - "DS4.CreatureSizeCategoryNormal": "Normal", - "DS4.CreatureSizeCategoryLarge": "Large", - "DS4.CreatureSizeCategoryHuge": "Huge", - "DS4.CreatureSizeCategoryColossal": "Colossal", - "DS4.CreatureBaseInfoLoot": "Loot", - "DS4.CreatureBaseInfoFoeFactor": "Foe Factor", - "DS4.CreatureBaseInfoCreatureType": "Creature Type", - "DS4.CreatureBaseInfoSizeCategory": "Size Category", - "DS4.CreatureBaseInfoExperiencePoints": "Experience Points", - "DS4.CreatureBaseInfoDescription": "Description", - "DS4.WarningActorCannotOwnItem": "The actor '{actorName}' of type '{actorType}' cannot own the item '{itemName}' of type '{itemType}'.", - "DS4.ErrorDiceCoupFumbleOverlap": "There is an overlap between Fumbles and Coups.", - "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Maximum recursion depth for slaying dice roll exceeded.", - "DS4.ErrorInvalidNumberOfDice": "Invalid number of dice.", - "DS4.ErrorInvalidActorType": "Invalid actor type '{type}'.", - "DS4.ErrorInvalidItemType": "Invalid item type '{type}'.", - "DS4.ErrorDuringMigration": "Error while migrating DS4 system from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", - "DS4.ErrorDuringCompendiumMigration": "Error while migrating compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", - "DS4.ErrorCannotRollUnownedItem": "Rolling for item '{name}' ({id})is not possible because it is not owned.", - "DS4.ErrorRollingForItemTypeNotPossible": "Rolling is not possible for items of type '{type}'.", - "DS4.ErrorUnexpectedAttackType": "Unexpected attack type '{actualType}', expected it to be one of: {expectedTypes}", - "DS4.ErrorUnexpectedAttribute": "Unexpected attribute '{actualAttribute}', expected it to be one of: {expectedTypes}", - "DS4.ErrorUnexpectedTrait": "Unexpected trait '{actualTrait}', expected it to be one of: {expectedTypes}", - "DS4.ErrorCanvasIsNotInitialized": "Canvas is not initialized yet.", - "DS4.ErrorCannotDragMissingCheck": "Trying to drag the check '{check}' but no such check exists.", - "DS4.WarningItemMustBeEquippedToBeRolled": "To roll for item '{name}' ({id}) of type '{type}', it needs to be equipped.", - "DS4.WarningMustControlActorToUseRollItemMacro": "You must control an actor to be able to use a roll item macro.", - "DS4.WarningMustControlActorToUseRollCheckMacro": "You must control an actor to be able to use a roll check macro.", - "DS4.WarningControlledActorDoesNotHaveItem": "Your controlled actor '{actorName}' ({actorId}) does not have any item with the id '{itemId}'.", - "DS4.WarningItemIsNotRollable": "Item '{name}' ({id}) of type '{type}' is not rollable.", - "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Macros can only be created for owned items.", - "DS4.WarningInvalidCheckDropped": "An invalid check was dropped on the Hotbar.", - "DS4.WarningSystemUpdateCompletedWithErrors": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} completed with errors. Please check the development console (F12) to see whether the errors have significant impact or can be ignored. In particular, https://github.com/foundryvtt/foundryvtt/issues/9672 may cause issues that simply can be ignored.", - "DS4.InfoManuallyEnterSpellModifier": "The correct value of the spell modifier '{spellModifier}' of the spell '{name}' needs to be entered by manually.", - "DS4.InfoSystemUpdateStart": "Migrating DS4 system from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.", - "DS4.InfoSystemUpdateCompletedSuccessfully": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} successful!", - "DS4.InfoCompendiumMigrationStart": "Migrating compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.", - "DS4.InfoCompendiumMigrationCompleted": "Migration of compendium '{pack}' for DS4 from migration version {currentVersion} to {targetVersion} successful!", - "DS4.UnitRounds": "Rounds", - "DS4.UnitRoundsAbbr": "rnd", - "DS4.UnitMinutes": "Minutes", - "DS4.UnitMinutesAbbr": "min", - "DS4.UnitHours": "Hours", - "DS4.UnitHoursAbbr": "h", - "DS4.UnitDays": "Days", - "DS4.UnitDaysAbbr": "d", - "DS4.UnitMeters": "Meters", - "DS4.UnitMetersAbbr": "m", - "DS4.UnitKilometers": "Kilometers", - "DS4.UnitKilometersAbbr": "km", - "DS4.UnitCustom": "Custom Unit", - "DS4.UnitCustomAbbr": " ", - "DS4.GenericOkButton": "Ok", - "DS4.GenericCancelButton": "Cancel", - "DS4.DialogRollOptionsDefaultTitle": "Roll Options", - "DS4.ErrorUnexpectedHtmlType": "Type Error: Expected '{exType}' but got '{realType}'.", - "DS4.ErrorCouldNotFindForm": "Could not find HTML element '{htmlElement}'.", - "DS4.ErrorActorDoesNotHaveItem": "The actor '{actor}' does not have any item with the UUID '{uuid}'.", - "DS4.ErrorUnexpectedError": "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12).", - "DS4.ErrorItemDoesNotHaveEffect": "The item '{item}' does not have any effect with the ID '{id}'.", - "DS4.ErrorActorDoesNotHaveEffect": "The actor '{actor}' does not have any effect with the UUID '{uuid}'.", - "DS4.DialogRollOptionsCheckTargetNumberLabel": "Check Target Number", - "DS4.DialogRollOptionsCheckModifierLabel": "Modifier", - "DS4.DialogRollOptionsCheckModifierCustomLabel": "Custom Modifier", - "DS4.DialogRollOptionsMaximumCoupResultLabel": "Coup to", - "DS4.DialogRollOptionsMinimumFumbleResultLabel": "Fumble from", - "DS4.DialogRollOptionsRollModeLabel": "Visibility", - "DS4.CheckModifierRoutine": "Routine", - "DS4.CheckModifierVeryEasy": "Very Easy", - "DS4.CheckModifierEasy": "Easy", - "DS4.CheckModifierMormal": "Normal", - "DS4.CheckModifierDifficult": "Difficult", - "DS4.CheckModifierVeryDifficult": "Very Difficult", - "DS4.CheckModifierExtremelyDifficult": "Extremely Difficult", - "DS4.CheckModifierCustom": "Custom", - "DS4.TooltipBaseValue": "Base Value", - "DS4.TooltipModifier": "Modifier", - "DS4.TooltipEffects": "Effects", - "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slaying Dice", - "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Use Slaying Dice for automated checks.", - "DS4.SettingShowSlayerPointsName": "Slayer Points", - "DS4.SettingShowSlayerPointsHint": "Show Slayer Points in the character sheet.", - "DS4.Checks": "Checks", - "DS4.ChecksAppraise": "Appraise", - "DS4.ChecksChangeSpell": "Change Spell", - "DS4.ChecksClimb": "Climb", - "DS4.ChecksCommunicate": "Communicate", - "DS4.ChecksDecipherScript": "Decipher Script", - "DS4.ChecksDefend": "Defend", - "DS4.ChecksDefyPoison": "Defy Poison", - "DS4.ChecksDisableTraps": "Disable Traps", - "DS4.ChecksFeatOfStrength": "Feat of Strength", - "DS4.ChecksFlirt": "Flirt", - "DS4.ChecksHaggle": "Haggle", - "DS4.ChecksHide": "Hide", - "DS4.ChecksIdentifyMagic": "Identify Magic", - "DS4.ChecksJump": "Jump", - "DS4.ChecksKnowledge": "Knowledge", - "DS4.ChecksOpenLock": "Open Lock", - "DS4.ChecksPerception": "Perception", - "DS4.ChecksPickPocket": "Pick Pocket", - "DS4.ChecksReadTracks": "Read Tracks", - "DS4.ChecksResistDisease": "Resist Disease", - "DS4.ChecksRide": "Ride", - "DS4.ChecksSearch": "Search", - "DS4.ChecksSenseMagic": "Sense Magic", - "DS4.ChecksSneak": "Sneak", - "DS4.ChecksStartFire": "Start Fire", - "DS4.ChecksSwim": "Swim", - "DS4.ChecksWakeUp": "Wake Up", - "DS4.ChecksWorkMechanism": "Work Mechanism", - "DS4.ActorCheckFlavor": "{actor} rolls a {check} check.", - "DS4.ActorGenericCheckFlavor": "{actor} rolls a check against {attribute} + {trait}.", - "DS4.CheckTooltip": "Roll a {check} check", - "DS4.NewWeaponName": "New Weapon", - "DS4.NewArmorName": "New Armor", - "DS4.NewShieldName": "New Shield", - "DS4.NewSpellName": "New Spell", - "DS4.NewEquipmentName": "New Equipment", - "DS4.NewLootName": "New Loot", - "DS4.NewTalentName": "New Talent", - "DS4.NewRacialAbilityName": "New Racial Ability", - "DS4.NewLanguageName": "New Language", - "DS4.NewAlphabetName": "New Alphabet", - "DS4.NewSpecialCreatureAbilityName": "New Special Creature Ability", - "DS4.NewEffectName": "New Effect", - - "DS4.ActiveEffectApplyToItems": "Apply to Items", - "DS4.ActiveEffectItemName": "Item Name", - "DS4.ActiveEffectItemCondition": "Condition", - "DS4.TooltipNotEditableDueToEffects": "field not editable, because affected by Active Effects" -} diff --git a/lang/en.json.license b/lang/en.json.license deleted file mode 100644 index ff79d3f7..00000000 --- a/lang/en.json.license +++ /dev/null @@ -1,6 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe -SPDX-FileCopyrightText: 2021 Siegfried Krug - -SPDX-License-Identifier: MIT diff --git a/package.json b/package.json index e58b8862..b7d4b3a7 100644 --- a/package.json +++ b/package.json @@ -1,102 +1,81 @@ { - "private": true, - "name": "dungeonslayers4", - "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", - "version": "2.0.5", - "license": "https://git.f3l.de/dungeonslayers/ds4#licensing", - "homepage": "https://git.f3l.de/dungeonslayers/ds4", - "repository": { - "type": "git", - "url": "https://git.f3l.de/dungeonslayers/ds4" - }, - "bugs": { - "url": "https://git.f3l.de/dungeonslayers/ds4/issues" - }, - "contributors": [ - { - "name": "Johannes Loher", - "email": "johannes.loher@fg4f.de" + "private": true, + "name": "dungeonslayers4", + "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", + "version": "0.5.2", + "license": "MIT", + "homepage": "https://git.f3l.de/dungeonslayers/ds4", + "repository": { + "type": "git", + "url": "https://git.f3l.de/dungeonslayers/ds4" }, - { - "name": "Gesina Schwalbe", - "email": "gesina.schwalbe@pheerai.de" + "bugs": { + "url": "https://git.f3l.de/dungeonslayers/ds4/-/issues" }, - { - "name": "Oliver Rümpelein", - "email": "foundryvtt@pheerai.de" + "contributors": [ + { + "name": "Johannes Loher", + "email": "johannes.loher@fg4f.de" + }, + { + "name": "Gesina Schwalbe", + "email": "gesina.schwalbe@pheerai.de" + }, + { + "name": "Oliver Rümpelein", + "email": "foundryvtt@pheerai.de" + }, + { + "name": "Siegfried Krug", + "email": "foundryvtt@asdil1991.de" + } + ], + "scripts": { + "build": "gulp build", + "build:watch": "gulp watch", + "link-project": "gulp link", + "clean": "gulp clean", + "clean:link": "gulp link --clean", + "bump-version": "gulp bumpVersion", + "lint": "eslint --ext .ts,.js .", + "lint:fix": "eslint --ext .ts,.js --fix .", + "test": "jest", + "test:watch": "jest --watch", + "test:ci": "jest --ci --reporters=default --reporters=jest-junit", + "format": "prettier --write \"./**/*.(ts|js|json|scss)\"", + "postinstall": "husky install" }, - { - "name": "Siegfried Krug", - "email": "foundryvtt@asdil1991.de" + "devDependencies": { + "@league-of-foundry-developers/foundry-vtt-types": "^0.7.9-6", + "@rollup/plugin-node-resolve": "^11.2.1", + "@types/fs-extra": "^9.0.11", + "@types/jest": "^26.0.22", + "@typescript-eslint/eslint-plugin": "^4.22.0", + "@typescript-eslint/parser": "^4.22.0", + "chalk": "^4.1.1", + "eslint": "^7.25.0", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-jest": "^24.3.5", + "eslint-plugin-prettier": "^3.4.0", + "fs-extra": "^9.1.0", + "gulp": "^4.0.2", + "gulp-sass": "^4.1.0", + "husky": "^5.2.0", + "jest": "^26.6.3", + "jest-junit": "^12.0.0", + "lint-staged": "^10.5.4", + "prettier": "^2.2.1", + "rollup": "^2.45.2", + "rollup-plugin-typescript2": "^0.30.0", + "sass": "^1.32.8", + "semver": "^7.3.5", + "ts-jest": "^26.5.5", + "tslib": "^2.2.0", + "typescript": "^4.2.4", + "yargs": "^16.2.0" }, - { - "name": "Max Tharr" - }, - { - "name": "Sascha Martens" + "lint-staged": { + "*.ts": "eslint --cache --fix", + "*.(json|scss)": "prettier --write" } - ], - "type": "module", - "scripts": { - "build": "run-s clean:files build:files", - "build:files": "run-p build:rollup build:packs", - "build:rollup": "rollup -c", - "build:packs": "./tools/packs.sh pack", - "watch": "rollup -c -w", - "link-package": "node ./tools/link-package.js", - "clean": "run-p clean:files clean:link", - "clean:files": "rimraf dist", - "clean:link": "node ./tools/link-package.js --clean", - "lint": "eslint .", - "lint:fix": "eslint . --fix", - "format": "pnpm prettier --write", - "format:check": "pnpm prettier --check", - "prettier": "prettier './**/*.(ts|js|cjs|mjs|json|scss|yml|yaml)'", - "test": "run-p test:vitest test:typecheck", - "test:vitest": "vitest run", - "test:typecheck": "tsc --noEmit --project spec/tsconfig.json", - "test:watch": "vitest", - "typecheck": "tsc --noEmit", - "typecheck:watch": "tsc --noEmit --watch", - "bump-version": "node ./tools/bump-version.js", - "changelog": "conventional-changelog -p conventionalcommits -o CHANGELOG.md -r 2" - }, - "devDependencies": { - "@commitlint/cli": "19.7.1", - "@commitlint/config-conventional": "19.7.1", - "@eslint/js": "9.21.0", - "@foundryvtt/foundryvtt-cli": "1.0.4", - "@guanghechen/rollup-plugin-copy": "6.0.4", - "@swc/core": "1.10.18", - "@types/fs-extra": "11.0.4", - "@types/jquery": "3.5.32", - "@types/node": "18.19.76", - "conventional-changelog-cli": "5.0.0", - "conventional-changelog-conventionalcommits": "8.0.0", - "eslint": "9.21.0", - "eslint-config-prettier": "10.0.1", - "fs-extra": "11.3.0", - "globals": "16.0.0", - "handlebars": "4.7.8", - "npm-run-all": "4.1.5", - "prettier": "3.5.2", - "rimraf": "6.0.1", - "rollup": "4.34.8", - "rollup-plugin-styler": "2.0.0", - "rollup-plugin-swc3": "0.12.1", - "sass": "1.85.0", - "semver": "7.7.1", - "tslib": "2.8.1", - "typescript": "5.7.3", - "typescript-eslint": "8.24.1", - "vite": "6.1.1", - "vitest": "3.0.6", - "yargs": "17.7.2" - }, - "packageManager": "pnpm@10.4.1", - "pnpm": { - "onlyBuiltDependencies": [ - "@swc/core" - ] - } } diff --git a/package.json.license b/package.json.license deleted file mode 100644 index e37d279b..00000000 --- a/package.json.license +++ /dev/null @@ -1,5 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver RÜmpelein -SPDX-FileCopyrightText: 2021 Siegfried Krug - -SPDX-License-Identifier: MIT diff --git a/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json b/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json deleted file mode 100644 index 7f36fabd..00000000 --- a/packs/creatures/Adler_HjpxMlpyjPr3hd3r.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "_id": "HjpxMlpyjPr3hd3r", - "name": "Adler", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/eagle.png", - "items": [ - { - "_id": "9vJL3lyC4RTQCZ7e", - "name": "Krallen", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!HjpxMlpyjPr3hd3r.9vJL3lyC4RTQCZ7e" - }, - { - "_id": "zYQAanmjVsNytqBl", - "name": "Federkleid", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!HjpxMlpyjPr3hd3r.zYQAanmjVsNytqBl" - }, - { - "_id": "ysyoJA3dYTu4XXvt", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!HjpxMlpyjPr3hd3r.ysyoJA3dYTu4XXvt" - }, - { - "_id": "k9Ng7RdfvSRN5JVW", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!HjpxMlpyjPr3hd3r.k9Ng7RdfvSRN5JVW" - }, - { - "_id": "zUXT2ZkY12TAu5CU", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", - "duplicateSource": null - }, - "_key": "!actors.items!HjpxMlpyjPr3hd3r.zUXT2ZkY12TAu5CU" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 3, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 1, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 1, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -6, - "value": 7 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:11)", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 52, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Adler", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/eagle.png", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346489, - "modifiedTime": 1740227862866, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!HjpxMlpyjPr3hd3r" -} diff --git a/packs/creatures/Alligator_ttzlBKtMWz981WF3.json b/packs/creatures/Alligator_ttzlBKtMWz981WF3.json deleted file mode 100644 index 00931fbd..00000000 --- a/packs/creatures/Alligator_ttzlBKtMWz981WF3.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "_id": "ttzlBKtMWz981WF3", - "name": "Alligator", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/alligator-green.png", - "items": [ - { - "_id": "Z4ZEuB2l0vo2dJcK", - "name": "Großer Biss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!ttzlBKtMWz981WF3.Z4ZEuB2l0vo2dJcK" - }, - { - "_id": "ACGvtQk97Udg1rih", - "name": "Schuppenpanzer", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!ttzlBKtMWz981WF3.ACGvtQk97Udg1rih" - }, - { - "_id": "Buv9Nzqx0hpPPsew", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!ttzlBKtMWz981WF3.Buv9Nzqx0hpPPsew" - }, - { - "_id": "ree4HN3j8tv7b18k", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", - "duplicateSource": null - }, - "_key": "!actors.items!ttzlBKtMWz981WF3.ree4HN3j8tv7b18k" - }, - { - "_id": "8Aq23UcNNFecGbk9", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!ttzlBKtMWz981WF3.8Aq23UcNNFecGbk9" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 52, - "value": 78 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:14)", - "foeFactor": 10, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 151, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Alligator", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/alligator*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347112, - "modifiedTime": 1740227862918, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!ttzlBKtMWz981WF3" -} diff --git a/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json b/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json deleted file mode 100644 index 555f1a58..00000000 --- a/packs/creatures/Augenball_8E7Mm0LsiqFm6syY.json +++ /dev/null @@ -1,1168 +0,0 @@ -{ - "_id": "8E7Mm0LsiqFm6syY", - "name": "Augenball", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "V7Qw97Fk5MJgijNs", - "name": "Warzenhaut", - "type": "armor", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.V7Qw97Fk5MJgijNs" - }, - { - "_id": "z3o1FUNSKhEWkcpX", - "name": "Antimagie (10 Meter)", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oUR6JglLxmJZduZz" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png", - "effects": [], - "folder": null, - "system": { - "description": "

Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.oUR6JglLxmJZduZz", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.z3o1FUNSKhEWkcpX" - }, - { - "_id": "tKiwh730ZOGMICdg", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.tKiwh730ZOGMICdg" - }, - { - "_id": "SZ8rvHDbY67EqjDN", - "name": "Mehrere Angriffe (+4)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann 4 zusätzliche Zaubersprüche in jeder Runde aktionsfrei wirken, keinen einzelnen Zauberspruch jedoch mehr als einmal. Abklingzeiten müssen weiterhin berücksichtigt werden.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.SZ8rvHDbY67EqjDN" - }, - { - "_id": "v6ojDNs7V5QqwKgT", - "name": "Mehrere Angriffglieder (+4)", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "system": { - "description": "

Greift mit 5 von insgesamt 10 Augen gleichzeitig an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.v6ojDNs7V5QqwKgT" - }, - { - "_id": "coIsPp1V166g8IAm", - "name": "Schweben", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.coIsPp1V166g8IAm" - }, - { - "_id": "kY4uQF3t99ANzx5T", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.kY4uQF3t99ANzx5T" - }, - { - "_id": "JMp5LjImHvoKsbGo", - "name": "Kettenblitz", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", - "effects": [], - "folder": null, - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.gePnhgqnsmdEbj3Z" - } - }, - "system": { - "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen.

\n

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", - "equipped": true, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": true, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": 16, - "wizard": 10, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.gePnhgqnsmdEbj3Z", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.JMp5LjImHvoKsbGo" - }, - { - "_id": "K3QPHlqz66xolbzw", - "name": "Schleudern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", - "effects": [], - "folder": null, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.bKCGwIne0uoWZiY0" - } - }, - "system": { - "description": "

Dieser Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", - "equipped": true, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE / 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 16, - "wizard": 12, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.bKCGwIne0uoWZiY0", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.K3QPHlqz66xolbzw" - }, - { - "_id": "16dN0fMIjJwdhvGF", - "name": "Blenden", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg", - "effects": [], - "folder": null, - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.JldAx8a91vVO2wUf" - } - }, - "system": { - "description": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel (welches dagegen keine Abwehr würfeln darf).

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", - "equipped": true, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": 1, - "wizard": 5, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.JldAx8a91vVO2wUf", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.16dN0fMIjJwdhvGF" - }, - { - "_id": "u3CLqxahFyF7kVpa", - "name": "Einschläfern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", - "effects": [], - "folder": null, - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" - } - }, - "system": { - "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.u3CLqxahFyF7kVpa" - }, - { - "_id": "BkokuzUTP9U6LtBp", - "name": "Gehorche", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", - "effects": [], - "folder": null, - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" - } - }, - "system": { - "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+VE)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE / 2", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.BkokuzUTP9U6LtBp" - }, - { - "_id": "lIchGK1m7Y7fMcKG", - "name": "Schutzschild", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", - "effects": [], - "folder": null, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.dpz383XbGFXEsGot" - } - }, - "system": { - "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.dpz383XbGFXEsGot", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.lIchGK1m7Y7fMcKG" - }, - { - "_id": "f0MedvERq1s8hy4z", - "name": "Schutzfeld", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", - "effects": [], - "folder": null, - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.NWPoiZHCmZ7ZJud4" - } - }, - "system": { - "description": "

Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.NWPoiZHCmZ7ZJud4", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.f0MedvERq1s8hy4z" - }, - { - "_id": "cnl7AuqByHHjW1zd", - "name": "Telekinese", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", - "effects": [], - "folder": null, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.VGeMfTNSKWzNGm6r" - } - }, - "system": { - "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1 m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", - "equipped": true, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-1 pro (Stufe x 5) kg Gewicht" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.VGeMfTNSKWzNGm6r", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.cnl7AuqByHHjW1zd" - }, - { - "_id": "D3McezCJz6afqzmR", - "name": "Unsichtbarkeit", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", - "effects": [], - "folder": null, - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" - } - }, - "system": { - "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 20, - "wizard": 12, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.D3McezCJz6afqzmR" - }, - { - "_id": "bKyT6b0j4wLXbL7O", - "name": "Verwirren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", - "effects": [], - "folder": null, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" - } - }, - "system": { - "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 8, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.niQVUxJHzdMDlwXc", - "duplicateSource": null - }, - "_key": "!actors.items!8E7Mm0LsiqFm6syY.bKyT6b0j4wLXbL7O" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 66, - "value": 88 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW #5A:20, #5M:20", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Augenball", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346257, - "modifiedTime": 1740227862847, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!8E7Mm0LsiqFm6syY" -} diff --git a/packs/creatures/B_r_InLjj4RGxfkDrtXr.json b/packs/creatures/B_r_InLjj4RGxfkDrtXr.json deleted file mode 100644 index cccee1e8..00000000 --- a/packs/creatures/B_r_InLjj4RGxfkDrtXr.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "InLjj4RGxfkDrtXr", - "name": "Bär", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/bear-1.png", - "items": [ - { - "_id": "qZayWokGcZreHpfI", - "name": "Pranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!InLjj4RGxfkDrtXr.qZayWokGcZreHpfI" - }, - { - "_id": "ayDGYJevUkbQ3N0c", - "name": "Fell", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!InLjj4RGxfkDrtXr.ayDGYJevUkbQ3N0c" - }, - { - "_id": "PKewYpkEmAWTc1j5", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!InLjj4RGxfkDrtXr.PKewYpkEmAWTc1j5" - }, - { - "_id": "WbEsNLQpzoWJlJyj", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!InLjj4RGxfkDrtXr.WbEsNLQpzoWJlJyj" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 50, - "value": 75 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:16)", - "foeFactor": 9, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 139, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Bär", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/bear*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346499, - "modifiedTime": 1740227862866, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!InLjj4RGxfkDrtXr" -} diff --git a/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json b/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json deleted file mode 100644 index 45ed7c2c..00000000 --- a/packs/creatures/Basilisk_GVLSLNSoMybeWhBP.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "_id": "GVLSLNSoMybeWhBP", - "name": "Basilisk", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/basilisk-green.png", - "items": [ - { - "_id": "y5i2zrZBp74DKQrQ", - "name": "Großer Biss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GVLSLNSoMybeWhBP.y5i2zrZBp74DKQrQ" - }, - { - "_id": "3CFakJA3eQJYSFN7", - "name": "Schuppenpanzer", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GVLSLNSoMybeWhBP.3CFakJA3eQJYSFN7" - }, - { - "_id": "x7vdeybwnlRnlqTu", - "name": "Blickangriff", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", - "effects": [], - "folder": null, - "system": { - "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97", - "duplicateSource": null - }, - "_key": "!actors.items!GVLSLNSoMybeWhBP.x7vdeybwnlRnlqTu" - }, - { - "_id": "kQZnCtDlaCaKc38S", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!GVLSLNSoMybeWhBP.kQZnCtDlaCaKc38S" - }, - { - "_id": "cZa7Ms69DWYg8Pgz", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!GVLSLNSoMybeWhBP.cZa7Ms69DWYg8Pgz" - }, - { - "_id": "Hn8EIElYWelAKxiD", - "name": "Versteinern", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe", - "duplicateSource": null - }, - "_key": "!actors.items!GVLSLNSoMybeWhBP.Hn8EIElYWelAKxiD" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 140, - "value": 168 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:20)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 206, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Basilisk", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/basilisk*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346388, - "modifiedTime": 1740227862861, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!GVLSLNSoMybeWhBP" -} diff --git a/packs/creatures/Baumherr_WboyONCY2UZildi9.json b/packs/creatures/Baumherr_WboyONCY2UZildi9.json deleted file mode 100644 index 2d29a1bd..00000000 --- a/packs/creatures/Baumherr_WboyONCY2UZildi9.json +++ /dev/null @@ -1,421 +0,0 @@ -{ - "_id": "WboyONCY2UZildi9", - "name": "Baumherr", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "CM1yKVLm6mhG2eQE", - "name": "Asthiebe", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!WboyONCY2UZildi9.CM1yKVLm6mhG2eQE" - }, - { - "_id": "sZw8glq3cnPHu6yq", - "name": "Dicke Rinde", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!WboyONCY2UZildi9.sZw8glq3cnPHu6yq" - }, - { - "_id": "X9jyAzrnyxuikyg3", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", - "duplicateSource": null - }, - "_key": "!actors.items!WboyONCY2UZildi9.X9jyAzrnyxuikyg3" - }, - { - "_id": "B1Sw09kZopPZB8ys", - "name": "Mehrere Angriffe (+3)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann 3 zusätzliche Asthiebe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", - "duplicateSource": null - }, - "_key": "!actors.items!WboyONCY2UZildi9.B1Sw09kZopPZB8ys" - }, - { - "_id": "x0mAm5abWWHlKJLz", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!WboyONCY2UZildi9.x0mAm5abWWHlKJLz" - }, - { - "_id": "2bA1MnqkTTwKtMoS", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!WboyONCY2UZildi9.2bA1MnqkTTwKtMoS" - }, - { - "_id": "fKCcOlyaebvj1HuL", - "name": "Schleudern", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", - "duplicateSource": null - }, - "_key": "!actors.items!WboyONCY2UZildi9.fKCcOlyaebvj1HuL" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 20, - "mod": 0 - }, - "mobility": { - "base": 1, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 35, - "value": 70 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Lediglich Brennholz", - "foeFactor": 23, - "creatureType": "plantBeing", - "sizeCategory": "large", - "experiencePoints": 158, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Baumherr", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346710, - "modifiedTime": 1740227862885, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!WboyONCY2UZildi9" -} diff --git a/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json b/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json deleted file mode 100644 index 0cd78b36..00000000 --- a/packs/creatures/D_monenf_rst_PKPmkOMLDGwS9QZJ.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "PKPmkOMLDGwS9QZJ", - "name": "Dämonenfürst", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 20, - "mod": 0 - }, - "mobility": { - "base": 20, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 10, - "mod": 0 - }, - "constitution": { - "base": 10, - "mod": 0 - }, - "agility": { - "base": 10, - "mod": 0 - }, - "dexterity": { - "base": 10, - "mod": 0 - }, - "intellect": { - "base": 5, - "mod": 0 - }, - "aura": { - "base": 5, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 360, - "value": 400 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 42, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 579, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Dämonenfürst", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346629, - "modifiedTime": 1740227862874, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!PKPmkOMLDGwS9QZJ" -} diff --git a/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json b/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json deleted file mode 100644 index cdf26f93..00000000 --- a/packs/creatures/Drachenwelpe__Blau__US32MfI48tX5x8Kz.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "US32MfI48tX5x8Kz", - "name": "Drachenwelpe (Blau)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "items": [ - { - "_id": "2lkp7kvBk98s2WcR", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!US32MfI48tX5x8Kz.2lkp7kvBk98s2WcR" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346697, - "modifiedTime": 1740227862883, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!US32MfI48tX5x8Kz" -} diff --git a/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json b/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json deleted file mode 100644 index dccb05c5..00000000 --- a/packs/creatures/Drachenwelpe__Bronze__tchJggykZKx2ctBv.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "_id": "tchJggykZKx2ctBv", - "name": "Drachenwelpe (Bronze)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Schallwellen-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!tchJggykZKx2ctBv.yjkoipelFXEzcy1x" - }, - { - "_id": "yTFT0UXNa9s9pbM4", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", - "duplicateSource": null - }, - "_key": "!actors.items!tchJggykZKx2ctBv.yTFT0UXNa9s9pbM4" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347091, - "modifiedTime": 1740227862917, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!tchJggykZKx2ctBv" -} diff --git a/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json b/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json deleted file mode 100644 index 84f980e6..00000000 --- a/packs/creatures/Drachenwelpe__Gelb__uomniEHbTAek8ERH.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "_id": "uomniEHbTAek8ERH", - "name": "Drachenwelpe (Gelb)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Sandsturm-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!uomniEHbTAek8ERH.yjkoipelFXEzcy1x" - }, - { - "_id": "3wfMRBF49WH74mt2", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!uomniEHbTAek8ERH.3wfMRBF49WH74mt2" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347121, - "modifiedTime": 1740227862919, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!uomniEHbTAek8ERH" -} diff --git a/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json b/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json deleted file mode 100644 index ad3dfa1a..00000000 --- a/packs/creatures/Drachenwelpe__Gold__owGq4n7KX2P1o9em.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "owGq4n7KX2P1o9em", - "name": "Drachenwelpe (Gold)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Licht-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!owGq4n7KX2P1o9em.yjkoipelFXEzcy1x" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346962, - "modifiedTime": 1740227862910, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!owGq4n7KX2P1o9em" -} diff --git a/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json b/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json deleted file mode 100644 index 000b3503..00000000 --- a/packs/creatures/Drachenwelpe__Gr_n__kFieLVdVz8XittRw.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "kFieLVdVz8XittRw", - "name": "Drachenwelpe (Grün)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "items": [ - { - "_id": "qYO8vFpNBw2wQLIJ", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!kFieLVdVz8XittRw.qYO8vFpNBw2wQLIJ" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346875, - "modifiedTime": 1740227862900, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!kFieLVdVz8XittRw" -} diff --git a/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json b/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json deleted file mode 100644 index 366fc944..00000000 --- a/packs/creatures/Drachenwelpe__Rot__7CvWSMFqWHvwajP1.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "7CvWSMFqWHvwajP1", - "name": "Drachenwelpe (Rot)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "items": [ - { - "_id": "F5KCKyCC8nD8lrn2", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!7CvWSMFqWHvwajP1.F5KCKyCC8nD8lrn2" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346249, - "modifiedTime": 1740227862845, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!7CvWSMFqWHvwajP1" -} diff --git a/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json b/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json deleted file mode 100644 index 668c0565..00000000 --- a/packs/creatures/Drachenwelpe__Silber__GeUXlf57uWcGVGRH.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "GeUXlf57uWcGVGRH", - "name": "Drachenwelpe (Silber)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346414, - "modifiedTime": 1740227862862, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!GeUXlf57uWcGVGRH" -} diff --git a/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json b/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json deleted file mode 100644 index a29a4868..00000000 --- a/packs/creatures/Drachenwelpe__Wei___vsKKpweX6I1TQYBj.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "_id": "vsKKpweX6I1TQYBj", - "name": "Drachenwelpe (Weiß)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Frost-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!vsKKpweX6I1TQYBj.yjkoipelFXEzcy1x" - }, - { - "_id": "xUH4ga5oyxeT3mW2", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!vsKKpweX6I1TQYBj.xUH4ga5oyxeT3mW2" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347204, - "modifiedTime": 1740227862921, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!vsKKpweX6I1TQYBj" -} diff --git a/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json b/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json deleted file mode 100644 index 92702f04..00000000 --- a/packs/creatures/Drachenwelpe__schwarz__wqgUDJc7Qb28hBBo.json +++ /dev/null @@ -1,613 +0,0 @@ -{ - "_id": "wqgUDJc7Qb28hBBo", - "name": "Drachenwelpe (schwarz)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "items": [ - { - "_id": "fogg4p9NQnpcBTUp", - "name": "Mehrere Angriffe", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.fogg4p9NQnpcBTUp" - }, - { - "_id": "BwxnkXHThNRptudp", - "name": "Panzerschuppen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.BwxnkXHThNRptudp" - }, - { - "_id": "4JCW7iKb2e9I2ZSj", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.4JCW7iKb2e9I2ZSj" - }, - { - "_id": "VFP6bNPYcASg0JWE", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.VFP6bNPYcASg0JWE" - }, - { - "_id": "o4o3thrxtXrhRWYT", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.o4o3thrxtXrhRWYT" - }, - { - "_id": "nFNJLYh2O5rOFY89", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann 1 zusätzlichen Angriff (Biss, Klaue, Odem oder Schwanzhieb) in jeder Runde aktionsfrei ausführen. Bis auf die Klauen dürfen alle Angriffsarten nur einmal pro Runde angewendet werden.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.nFNJLYh2O5rOFY89" - }, - { - "_id": "h5HdNw0r06ffdOwr", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.h5HdNw0r06ffdOwr" - }, - { - "_id": "yjkoipelFXEzcy1x", - "name": "Säure-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.yjkoipelFXEzcy1x" - }, - { - "_id": "LHdWF7tVc3uHC0LW", - "name": "Schleudern", - "type": "specialCreatureAbility", - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.LHdWF7tVc3uHC0LW" - }, - { - "_id": "ltDNoswX7EaA2d2X", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.ltDNoswX7EaA2d2X" - }, - { - "_id": "lOr6f4vMoBBOEPB7", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "sort": 1100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält.

\n

Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.lOr6f4vMoBBOEPB7" - }, - { - "_id": "XsKjxXO7k3vIMyfQ", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "sort": 1300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.XsKjxXO7k3vIMyfQ" - }, - { - "_id": "hoqMl7N1bv8BKJA5", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!wqgUDJc7Qb28hBBo.hoqMl7N1bv8BKJA5" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:W20+10)", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 255, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Drachenwelpe", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347224, - "modifiedTime": 1740227862923, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!wqgUDJc7Qb28hBBo" -} diff --git a/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json b/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json deleted file mode 100644 index c203716b..00000000 --- a/packs/creatures/Echsenmensch_HgTRHAjq1YBk40sO.json +++ /dev/null @@ -1,329 +0,0 @@ -{ - "_id": "HgTRHAjq1YBk40sO", - "name": "Echsenmensch", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/lizard-man-green-dark.png", - "items": [ - { - "_id": "5X3YrQ6PeuexE5QD", - "name": "Speer", - "type": "weapon", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" - } - }, - "img": "icons/weapons/polearms/spear-hooked-simple.webp", - "effects": [], - "folder": null, - "system": { - "description": "

Zerbricht bei Schießen-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q", - "duplicateSource": null - }, - "_key": "!actors.items!HgTRHAjq1YBk40sO.5X3YrQ6PeuexE5QD" - }, - { - "_id": "CylYyspqzzOiD3QA", - "name": "Schuppenpanzer", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!HgTRHAjq1YBk40sO.CylYyspqzzOiD3QA" - }, - { - "_id": "tOY9c09eNSqmJHki", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!HgTRHAjq1YBk40sO.tOY9c09eNSqmJHki" - }, - { - "_id": "G0avaPXmxplRB8al", - "name": "Schleudern", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", - "duplicateSource": null - }, - "_key": "!actors.items!HgTRHAjq1YBk40sO.G0avaPXmxplRB8al" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 3, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 21 - }, - "defense": { - "mod": 2 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:12, #2B:17", - "foeFactor": 3, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 71, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Echsenmensch", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/lizard-man*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346458, - "modifiedTime": 1740227862864, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!HgTRHAjq1YBk40sO" -} diff --git a/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json b/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json deleted file mode 100644 index db0c055b..00000000 --- a/packs/creatures/Einhorn_SQv63FQBjA5jW5xv.json +++ /dev/null @@ -1,525 +0,0 @@ -{ - "_id": "SQv63FQBjA5jW5xv", - "name": "Einhorn", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "o8CRX0tj3mrixbeV", - "name": "Mehrere Angriffe", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.o8CRX0tj3mrixbeV" - }, - { - "_id": "k4syi7gvtjmG6yVt", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.k4syi7gvtjmG6yVt" - }, - { - "_id": "ywm8DSneqBXy2Pk9", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.ywm8DSneqBXy2Pk9" - }, - { - "_id": "RWRBDrcHL1YK6MvZ", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.RWRBDrcHL1YK6MvZ" - }, - { - "_id": "m78risNOMkOZtoix", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann 1 zusätzlichen Angriff (Horn oder Hufe) in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.m78risNOMkOZtoix" - }, - { - "_id": "WLc6j329EiSfsRj5", - "name": "Schleudern", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.WLc6j329EiSfsRj5" - }, - { - "_id": "ysPz3YM2HzR9rptL", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.ysPz3YM2HzR9rptL" - }, - { - "_id": "As31RtyHN8S4aN7O", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.As31RtyHN8S4aN7O" - }, - { - "_id": "mwMtV9vS293KeF3Q", - "name": "Spurt", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.KUbT1gBeThcLY7vU" - } - }, - "system": { - "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 7, - "wizard": 7, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.KUbT1gBeThcLY7vU", - "duplicateSource": null - }, - "_key": "!actors.items!SQv63FQBjA5jW5xv.mwMtV9vS293KeF3Q" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 13, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 6, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:12, #2B:17", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 189, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Einhorn", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346679, - "modifiedTime": 1740227862881, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!SQv63FQBjA5jW5xv" -} diff --git a/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json b/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json deleted file mode 100644 index ebc3a4ab..00000000 --- a/packs/creatures/Erdelementar_III_mOQ21HFNisTfu7ve.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "_id": "mOQ21HFNisTfu7ve", - "name": "Erdelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "VHt6K5ArvzyfTEje", - "name": "Steinpranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!mOQ21HFNisTfu7ve.VHt6K5ArvzyfTEje" - }, - { - "_id": "fIoBfLmNCxGfGzEX", - "name": "Steinwesen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!mOQ21HFNisTfu7ve.fIoBfLmNCxGfGzEX" - }, - { - "_id": "23wk4FP7dNTkLgB5", - "name": "Anfällig (Luft)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY", - "duplicateSource": null - }, - "_key": "!actors.items!mOQ21HFNisTfu7ve.23wk4FP7dNTkLgB5" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 22, - "mod": 0 - }, - "mobility": { - "base": 2, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 39, - "value": 78 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 124, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erdelementar III", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346894, - "modifiedTime": 1740227862904, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!mOQ21HFNisTfu7ve" -} diff --git a/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json b/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json deleted file mode 100644 index dfd9560f..00000000 --- a/packs/creatures/Erdelementar_II_S8DNL5XpmNRSNJhD.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "S8DNL5XpmNRSNJhD", - "name": "Erdelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 17, - "mod": 0 - }, - "mobility": { - "base": 2, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 32 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 15, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 70, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erdelementar II", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346676, - "modifiedTime": 1740227862880, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!S8DNL5XpmNRSNJhD" -} diff --git a/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json b/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json deleted file mode 100644 index aabdad52..00000000 --- a/packs/creatures/Erdelementar_I_1PYYg60DHC6RA3oO.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "1PYYg60DHC6RA3oO", - "name": "Erdelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 2, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -13, - "value": 13 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 44, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erdelementar I", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346142, - "modifiedTime": 1740227862839, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!1PYYg60DHC6RA3oO" -} diff --git a/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json b/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json deleted file mode 100644 index e1af749b..00000000 --- a/packs/creatures/Erwachsener_Drache__Blau__e1oy4levSO4VOQx8.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "_id": "e1oy4levSO4VOQx8", - "name": "Erwachsener Drache (Blau)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "items": [ - { - "_id": "pX6BSfPqftBLxuhf", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.blDuh7uVVhaNSUVU", - "duplicateSource": null - }, - "_key": "!actors.items!e1oy4levSO4VOQx8.pX6BSfPqftBLxuhf" - }, - { - "_id": "6oHGA6nCXRiuAY2O", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!e1oy4levSO4VOQx8.6oHGA6nCXRiuAY2O" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346843, - "modifiedTime": 1740227862898, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!e1oy4levSO4VOQx8" -} diff --git a/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json b/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json deleted file mode 100644 index 18100cc8..00000000 --- a/packs/creatures/Erwachsener_Drache__Bronze__Ko3jVM757Kr89IQr.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "Ko3jVM757Kr89IQr", - "name": "Erwachsener Drache (Bronze)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346542, - "modifiedTime": 1740227862868, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!Ko3jVM757Kr89IQr" -} diff --git a/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json b/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json deleted file mode 100644 index e0112fc6..00000000 --- a/packs/creatures/Erwachsener_Drache__Gelb__bEKen2GJBc6d0nix.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "bEKen2GJBc6d0nix", - "name": "Erwachsener Drache (Gelb)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "items": [ - { - "_id": "XdTwK8lRxVvGfKja", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!bEKen2GJBc6d0nix.XdTwK8lRxVvGfKja" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346793, - "modifiedTime": 1740227862891, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!bEKen2GJBc6d0nix" -} diff --git a/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json b/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json deleted file mode 100644 index 10dbf9cb..00000000 --- a/packs/creatures/Erwachsener_Drache__Gold__6Ezz8k1SB64HQ9o5.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "6Ezz8k1SB64HQ9o5", - "name": "Erwachsener Drache (Gold)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346215, - "modifiedTime": 1740227862843, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!6Ezz8k1SB64HQ9o5" -} diff --git a/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json b/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json deleted file mode 100644 index 777b71b2..00000000 --- a/packs/creatures/Erwachsener_Drache__Gr_n__FYpSMLagk6Qs6MWS.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "FYpSMLagk6Qs6MWS", - "name": "Erwachsener Drache (Grün)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "items": [ - { - "_id": "3bhEx0YT3KTgl19E", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!FYpSMLagk6Qs6MWS.3bhEx0YT3KTgl19E" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346356, - "modifiedTime": 1740227862857, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!FYpSMLagk6Qs6MWS" -} diff --git a/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json b/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json deleted file mode 100644 index 0d792062..00000000 --- a/packs/creatures/Erwachsener_Drache__Rot__7B1AJKsZ9OBmj46R.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "7B1AJKsZ9OBmj46R", - "name": "Erwachsener Drache (Rot)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "items": [ - { - "_id": "WG8AshF0brFilFXB", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!7B1AJKsZ9OBmj46R.WG8AshF0brFilFXB" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346243, - "modifiedTime": 1740227862845, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!7B1AJKsZ9OBmj46R" -} diff --git a/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json b/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json deleted file mode 100644 index fbeb37ba..00000000 --- a/packs/creatures/Erwachsener_Drache__Schwarz__DoaYEZc7DgLJQ8yg.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "DoaYEZc7DgLJQ8yg", - "name": "Erwachsener Drache (Schwarz)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "items": [ - { - "_id": "YH44ChGg43M1zfJV", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!DoaYEZc7DgLJQ8yg.YH44ChGg43M1zfJV" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346320, - "modifiedTime": 1740227862854, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!DoaYEZc7DgLJQ8yg" -} diff --git a/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json b/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json deleted file mode 100644 index a55b9d82..00000000 --- a/packs/creatures/Erwachsener_Drache__Silber__OsCyBwPcejWRSqLr.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "OsCyBwPcejWRSqLr", - "name": "Erwachsener Drache (Silber)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Quecksilber-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!OsCyBwPcejWRSqLr.yjkoipelFXEzcy1x" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346608, - "modifiedTime": 1740227862871, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!OsCyBwPcejWRSqLr" -} diff --git a/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json b/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json deleted file mode 100644 index 733bcc64..00000000 --- a/packs/creatures/Erwachsener_Drache__Weiss__KlpfMH3L3pL82SSd.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "KlpfMH3L3pL82SSd", - "name": "Erwachsener Drache (Weiss)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "items": [ - { - "_id": "27WSvh2zN2Th7iAs", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!KlpfMH3L3pL82SSd.27WSvh2zN2Th7iAs" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 24, - "mod": 0 - }, - "mobility": { - "base": 16, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 560, - "value": 600 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 11 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 8A:W20+10), BW #(A:W20+10)x10, #12M:20", - "foeFactor": 63, - "creatureType": "magicalEntity", - "sizeCategory": "colossal", - "experiencePoints": 907, - "description": "

Drachenarten

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
FarbeOdemWesen...
BlauBlitz-...der Dunkelheit
BronzeSchallwellen-...des Lichts
GelbSandsturm-...der Dunkelheit
GoldLicht-...des Lichts
GrünGiftgas-...der Dunkelheit
RotFeuer-...der Dunkelheit
SchwarzSäure-...der Dunkelheit
SilberQuecksilber-...des Lichts
WeissFrost-...der Dunkelheit
" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Erwachsener Drache", - "displayName": 20, - "width": 4, - "height": 4, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346527, - "modifiedTime": 1740227862868, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!KlpfMH3L3pL82SSd" -} diff --git a/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json b/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json deleted file mode 100644 index b7ecfaf6..00000000 --- a/packs/creatures/Eulerich_Z5eEkZjZ525N90ai.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "_id": "Z5eEkZjZ525N90ai", - "name": "Eulerich", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/owldritch-brown.png", - "items": [ - { - "_id": "3yCyEbqp9F3TgJkS", - "name": "Pranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!Z5eEkZjZ525N90ai.3yCyEbqp9F3TgJkS" - }, - { - "_id": "3L2HJX2p7uIpxTjJ", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!Z5eEkZjZ525N90ai.3L2HJX2p7uIpxTjJ" - }, - { - "_id": "gzsgGDcT6pGXHxIZ", - "name": "Federkleid", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!Z5eEkZjZ525N90ai.gzsgGDcT6pGXHxIZ" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 27, - "value": 54 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:14)", - "foeFactor": 11, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 115, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Eulerich", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/owldritch*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346738, - "modifiedTime": 1740227862887, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!Z5eEkZjZ525N90ai" -} diff --git a/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json b/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json deleted file mode 100644 index e9421bd4..00000000 --- a/packs/creatures/Feuerelementar_III_mPcmJ9nHpy1AbKVr.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "mPcmJ9nHpy1AbKVr", - "name": "Feuerelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 18, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 6, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 35, - "value": 70 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 24, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 145, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Feuerelementar III", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346897, - "modifiedTime": 1740227862905, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!mPcmJ9nHpy1AbKVr" -} diff --git a/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json b/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json deleted file mode 100644 index 3d273fce..00000000 --- a/packs/creatures/Feuerelementar_II_huPL6cx3RadJNhL0.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "huPL6cx3RadJNhL0", - "name": "Feuerelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 13, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 29 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": -2 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 15, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 95, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Feuerelementar II", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346851, - "modifiedTime": 1740227862899, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!huPL6cx3RadJNhL0" -} diff --git a/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json b/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json deleted file mode 100644 index 5de33753..00000000 --- a/packs/creatures/Feuerelementar_I_tYcKw69Feoy3B6hG.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "tYcKw69Feoy3B6hG", - "name": "Feuerelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "JI4hW2uyULt2cKs2", - "name": "Flammenhieb", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!tYcKw69Feoy3B6hG.JI4hW2uyULt2cKs2" - }, - { - "_id": "eofu8kICYeEpxUT1", - "name": "Keine feste Gestalt", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!tYcKw69Feoy3B6hG.eofu8kICYeEpxUT1" - }, - { - "_id": "c95cnrJtMG20InKV", - "name": "Anfällig (Wasser)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e", - "duplicateSource": null - }, - "_key": "!actors.items!tYcKw69Feoy3B6hG.c95cnrJtMG20InKV" - }, - { - "_id": "xtwmRcp2CEGdK5C6", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!tYcKw69Feoy3B6hG.xtwmRcp2CEGdK5C6" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -12, - "value": 12 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 70, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Feuerelementar I", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347078, - "modifiedTime": 1740227862916, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!tYcKw69Feoy3B6hG" -} diff --git a/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json b/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json deleted file mode 100644 index 957b0533..00000000 --- a/packs/creatures/Fliegendes_Schwert_ABiPZtu7q8KhWzXL.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "_id": "ABiPZtu7q8KhWzXL", - "name": "Fliegendes Schwert", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "iVH3BR6wH35UTmmW", - "name": "Langschwert", - "type": "weapon", - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" - } - }, - "img": "icons/weapons/swords/sword-guard-blue.webp", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", - "duplicateSource": null - }, - "_key": "!actors.items!ABiPZtu7q8KhWzXL.iVH3BR6wH35UTmmW" - }, - { - "_id": "r0mQXKDTdvRjlSze", - "name": "Metallwesen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!ABiPZtu7q8KhWzXL.r0mQXKDTdvRjlSze" - }, - { - "_id": "XfgWdbwMTVhcS3A9", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!ABiPZtu7q8KhWzXL.XfgWdbwMTVhcS3A9" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -12, - "value": 12 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "construct", - "sizeCategory": "small", - "experiencePoints": 57, - "description": "

Herstellung: 1513 GM + Waffenschmied

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Fliegendes Schwert", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346283, - "modifiedTime": 1740227862850, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!ABiPZtu7q8KhWzXL" -} diff --git a/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json b/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json deleted file mode 100644 index 4d066451..00000000 --- a/packs/creatures/Gargyl_GnW2ELzTtLoJmUQ1.json +++ /dev/null @@ -1,485 +0,0 @@ -{ - "_id": "GnW2ELzTtLoJmUQ1", - "name": "Gargyl", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/gargoyle-gray.png", - "items": [ - { - "_id": "XGrSqryhxGUlUJkC", - "name": "Steinklaue", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.XGrSqryhxGUlUJkC" - }, - { - "_id": "e28wsq9gdMv8u94N", - "name": "Steinwesen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.e28wsq9gdMv8u94N" - }, - { - "_id": "ur7rgX6JTOwscpm5", - "name": "Anfällig (Luft)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ImVvi7XqDvf6D2vY", - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.ur7rgX6JTOwscpm5" - }, - { - "_id": "XSowCGPLnuUUt0gb", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.XSowCGPLnuUUt0gb" - }, - { - "_id": "IEf4b9ukDhSecShW", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.IEf4b9ukDhSecShW" - }, - { - "_id": "7x3a6bQcUXDNNjfx", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.7x3a6bQcUXDNNjfx" - }, - { - "_id": "ILpCHZ6o5GV4NakU", - "name": "Kletterläufer", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.ILpCHZ6o5GV4NakU" - }, - { - "_id": "iZL3YxmtOHvZvYgW", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.iZL3YxmtOHvZvYgW" - }, - { - "_id": "FydhkYVuUuHNXzxS", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", - "duplicateSource": null - }, - "_key": "!actors.items!GnW2ELzTtLoJmUQ1.FydhkYVuUuHNXzxS" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 10 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:8)", - "foeFactor": 6, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 91, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Gargyl", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/gargoyle*.png", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346440, - "modifiedTime": 1740227862863, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!GnW2ELzTtLoJmUQ1" -} diff --git a/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json b/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json deleted file mode 100644 index 2e373291..00000000 --- a/packs/creatures/Geist_cE5kI3uqXWQrCaI5.json +++ /dev/null @@ -1,592 +0,0 @@ -{ - "_id": "cE5kI3uqXWQrCaI5", - "name": "Geist", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/ghost-1.png", - "items": [ - { - "_id": "EGknWGHQszJHJHnV", - "name": "Geisterklaue", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.EGknWGHQszJHJHnV" - }, - { - "_id": "FR4dQPwgDCH9Ruox", - "name": "Körperlos", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.FR4dQPwgDCH9Ruox" - }, - { - "_id": "U95WXWQaKfIPiJZK", - "name": "Alterung (1 Jahr pro Schadenspunkt)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.U95WXWQaKfIPiJZK" - }, - { - "_id": "QkZT7930qdhuLFxw", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.QkZT7930qdhuLFxw" - }, - { - "_id": "I31y8QW6HoMJn5Ar", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.I31y8QW6HoMJn5Ar" - }, - { - "_id": "2VOjRedLceEPleW7", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.2VOjRedLceEPleW7" - }, - { - "_id": "2NixNLo8G3DqU3pt", - "name": "Nur durch Magie verletzbar", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.2NixNLo8G3DqU3pt" - }, - { - "_id": "DNSCPQ1kOSiiyvOK", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.DNSCPQ1kOSiiyvOK" - }, - { - "_id": "jP3c9iA0GT4gwt3c", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "sort": 1000000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.KDDlwN9as9B4ljeA", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.jP3c9iA0GT4gwt3c" - }, - { - "_id": "02uWHUcM8MBPKqb6", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "effects": [], - "folder": null, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - }, - "system": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.02uWHUcM8MBPKqb6" - }, - { - "_id": "YZgaOumzBst1OTtb", - "name": "Terror", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.SgDFje4OTxqPEzoA" - } - }, - "system": { - "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+VE)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 5, - "wizard": 9, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.SgDFje4OTxqPEzoA", - "duplicateSource": null - }, - "_key": "!actors.items!cE5kI3uqXWQrCaI5.YZgaOumzBst1OTtb" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 1, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 3, - "mod": 0 - }, - "aura": { - "base": 6, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 27 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 8 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 17, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 245, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Geist", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/ghost*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346804, - "modifiedTime": 1740227862892, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!cE5kI3uqXWQrCaI5" -} diff --git a/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json b/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json deleted file mode 100644 index f96667c2..00000000 --- a/packs/creatures/Goblin_vXmTcBUKZkB2UBD7.json +++ /dev/null @@ -1,360 +0,0 @@ -{ - "_id": "vXmTcBUKZkB2UBD7", - "name": "Goblin", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/goblin-knife.png", - "items": [ - { - "_id": "joNh3JSsqfqXk4lU", - "name": "Ast", - "type": "weapon", - "sort": 100000, - "flags": {}, - "effects": [], - "img": "icons/svg/item-bag.svg", - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!vXmTcBUKZkB2UBD7.joNh3JSsqfqXk4lU" - }, - { - "_id": "ftCrAdxpJlnc85aU", - "name": "Messer", - "type": "weapon", - "sort": 200000, - "flags": {}, - "effects": [], - "img": "icons/svg/item-bag.svg", - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!vXmTcBUKZkB2UBD7.ftCrAdxpJlnc85aU" - }, - { - "_id": "G6OoqVDTk9jwOU7r", - "name": "Fellflicken", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!vXmTcBUKZkB2UBD7.G6OoqVDTk9jwOU7r" - }, - { - "_id": "uHVUAMh8QgcoNDno", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!vXmTcBUKZkB2UBD7.uHVUAMh8QgcoNDno" - }, - { - "_id": "yW9EtSEtM40owDQt", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!vXmTcBUKZkB2UBD7.yW9EtSEtM40owDQt" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 3, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -8, - "value": 8 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:10", - "foeFactor": 1, - "creatureType": "humanoid", - "sizeCategory": "small", - "experiencePoints": 42, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Goblin", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/goblin*.png", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347151, - "modifiedTime": 1740227862919, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!vXmTcBUKZkB2UBD7" -} diff --git a/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json b/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json deleted file mode 100644 index 2f088da4..00000000 --- a/packs/creatures/Golem__Eisen__dnX0uQXQCEnGs7dM.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "_id": "dnX0uQXQCEnGs7dM", - "name": "Golem, Eisen-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Eisenpranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!dnX0uQXQCEnGs7dM.KzEfCqb54s8Ju7x1" - }, - { - "_id": "HjZd5t1xvRNoHZdX", - "name": "Metallwesen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!dnX0uQXQCEnGs7dM.HjZd5t1xvRNoHZdX" - }, - { - "_id": "clWF2wt2WK7eWuxW", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", - "duplicateSource": null - }, - "_key": "!actors.items!dnX0uQXQCEnGs7dM.clWF2wt2WK7eWuxW" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 20, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 36, - "value": 72 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 27, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 173, - "description": "

Herstellung: 3750 GM + Rüstungsschmied

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Golem, Eisen-", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346836, - "modifiedTime": 1740227862897, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!dnX0uQXQCEnGs7dM" -} diff --git a/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json b/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json deleted file mode 100644 index 133141f1..00000000 --- a/packs/creatures/Golem__Knochen__HSgR2FXUmsT2zfIc.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "_id": "HSgR2FXUmsT2zfIc", - "name": "Golem, Knochen-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Knochenpranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!HSgR2FXUmsT2zfIc.KzEfCqb54s8Ju7x1" - }, - { - "_id": "43U10Znpq4coew6C", - "name": "Mehrere Angriffe (+3)", - "type": "specialCreatureAbility", - "sort": 550000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann mit seinen insgesamt vier Armen 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", - "duplicateSource": null - }, - "_key": "!actors.items!HSgR2FXUmsT2zfIc.43U10Znpq4coew6C" - }, - { - "_id": "Lu7kcH5ekEpY8YDU", - "name": "Mehrere Angriffglieder (+4)", - "type": "specialCreatureAbility", - "sort": 575000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "system": { - "description": "

Greift mit insgesamt 4 Armen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R6jT1GYF13ZijtM0", - "duplicateSource": null - }, - "_key": "!actors.items!HSgR2FXUmsT2zfIc.Lu7kcH5ekEpY8YDU" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 6, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 20, - "value": 40 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 11, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 148, - "description": "

Herstellung: 2613 GM + Schreinern

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Golem, Knochen-", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346447, - "modifiedTime": 1740227862864, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!HSgR2FXUmsT2zfIc" -} diff --git a/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json b/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json deleted file mode 100644 index 1848719d..00000000 --- a/packs/creatures/Golem__Kristall__sCBrVIDh2umWr63g.json +++ /dev/null @@ -1,336 +0,0 @@ -{ - "_id": "sCBrVIDh2umWr63g", - "name": "Golem, Kristall-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Kirstallpranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!sCBrVIDh2umWr63g.KzEfCqb54s8Ju7x1" - }, - { - "_id": "mJi3ylBo7yPG5vMw", - "name": "Kristallwesen", - "type": "armor", - "sort": 800000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!sCBrVIDh2umWr63g.mJi3ylBo7yPG5vMw" - }, - { - "_id": "aa8a89EaVy8fjgLn", - "name": "Blitz", - "type": "spell", - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.Senq5ub2Cx0agJgi" - } - }, - "img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg", - "effects": [], - "folder": null, - "system": { - "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": true, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": 10, - "wizard": 7, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.Senq5ub2Cx0agJgi", - "duplicateSource": null - }, - "_key": "!actors.items!sCBrVIDh2umWr63g.aa8a89EaVy8fjgLn" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 5, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 21, - "value": 42 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 6 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 10, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 134, - "description": "

Herstellung: 2513 GM + Steinmetz

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Golem, Kristall-", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347061, - "modifiedTime": 1740227862915, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!sCBrVIDh2umWr63g" -} diff --git a/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json b/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json deleted file mode 100644 index bf0b030e..00000000 --- a/packs/creatures/Golem__Lehm__yisaQaEFqduLmAJe.json +++ /dev/null @@ -1,354 +0,0 @@ -{ - "_id": "yisaQaEFqduLmAJe", - "name": "Golem, Lehm-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Lehmpranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!yisaQaEFqduLmAJe.KzEfCqb54s8Ju7x1" - }, - { - "_id": "lB0BTGi2Qp2IpbTp", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!yisaQaEFqduLmAJe.lB0BTGi2Qp2IpbTp" - }, - { - "_id": "QTbksMwiH60vH9lT", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!yisaQaEFqduLmAJe.QTbksMwiH60vH9lT" - }, - { - "_id": "7HsvjAKlmOXSvm6e", - "name": "Schleudern", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", - "duplicateSource": null - }, - "_key": "!actors.items!yisaQaEFqduLmAJe.7HsvjAKlmOXSvm6e" - }, - { - "_id": "y8yRArJSJhHTdPXU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!yisaQaEFqduLmAJe.y8yRArJSJhHTdPXU" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 23, - "value": 46 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 110, - "description": "

Herstellung: 2338 GM + Steinmetz

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Golem, Lehm-", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347232, - "modifiedTime": 1740227862924, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!yisaQaEFqduLmAJe" -} diff --git a/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json b/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json deleted file mode 100644 index 1699a95e..00000000 --- a/packs/creatures/Golem__Stein__cf8BOIAxMKvuxYYW.json +++ /dev/null @@ -1,261 +0,0 @@ -{ - "_id": "cf8BOIAxMKvuxYYW", - "name": "Golem, Stein-", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "KzEfCqb54s8Ju7x1", - "name": "Steinpranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!cf8BOIAxMKvuxYYW.KzEfCqb54s8Ju7x1" - }, - { - "_id": "HjZd5t1xvRNoHZdX", - "name": "Steinwesen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 4, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!cf8BOIAxMKvuxYYW.HjZd5t1xvRNoHZdX" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 18, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 33, - "value": 66 - }, - "defense": { - "mod": 1 - }, - "initiative": { - "mod": 2 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "construct", - "sizeCategory": "large", - "experiencePoints": 160, - "description": "

Herstellung: 3338 GM + Steinmetz

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Golem, Stein-", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346809, - "modifiedTime": 1740227862893, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!cf8BOIAxMKvuxYYW" -} diff --git a/packs/creatures/Hai_7kXHNCARsD0nZCqr.json b/packs/creatures/Hai_7kXHNCARsD0nZCqr.json deleted file mode 100644 index 0a055edc..00000000 --- a/packs/creatures/Hai_7kXHNCARsD0nZCqr.json +++ /dev/null @@ -1,322 +0,0 @@ -{ - "_id": "7kXHNCARsD0nZCqr", - "name": "Hai", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "LddIU7JRhnrzFzgr", - "name": "Großer Biss", - "type": "weapon", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!7kXHNCARsD0nZCqr.LddIU7JRhnrzFzgr" - }, - { - "_id": "4QWPtzkl6EncykP4", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!7kXHNCARsD0nZCqr.4QWPtzkl6EncykP4" - }, - { - "_id": "ncn9gc2yJOMhWGhb", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", - "duplicateSource": null - }, - "_key": "!actors.items!7kXHNCARsD0nZCqr.ncn9gc2yJOMhWGhb" - }, - { - "_id": "Q5TlvXVEyjer5YIG", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!7kXHNCARsD0nZCqr.Q5TlvXVEyjer5YIG" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 13, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 13, - "value": 39 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:12)", - "foeFactor": 9, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 106, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "name": "Hai", - "displayName": 20, - "actorLink": false, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "flags": {}, - "randomImg": false, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346252, - "modifiedTime": 1740227862846, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!7kXHNCARsD0nZCqr" -} diff --git a/packs/creatures/Harpyie_s56U2LeRInrje3xh.json b/packs/creatures/Harpyie_s56U2LeRInrje3xh.json deleted file mode 100644 index b8982435..00000000 --- a/packs/creatures/Harpyie_s56U2LeRInrje3xh.json +++ /dev/null @@ -1,492 +0,0 @@ -{ - "_id": "s56U2LeRInrje3xh", - "name": "Harpyie", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/harpy-brown.png", - "items": [ - { - "_id": "lwAvXPfZk0RxGnDi", - "name": "Krallenklaue", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.lwAvXPfZk0RxGnDi" - }, - { - "_id": "62o19BMYU8dc4Qwa", - "name": "Federkleid", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.62o19BMYU8dc4Qwa" - }, - { - "_id": "nEwzPUfWSwdHPNIe", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.nEwzPUfWSwdHPNIe" - }, - { - "_id": "mgxKRHjfYd8eRdl4", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.mgxKRHjfYd8eRdl4" - }, - { - "_id": "iJ5vdPZt9tIyY3g4", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.iJ5vdPZt9tIyY3g4" - }, - { - "_id": "6L8whKMrzwGWDTCg", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.6L8whKMrzwGWDTCg" - }, - { - "_id": "GZfpSw5mnT7CLpYH", - "name": "Lockruf", - "type": "spell", - "sort": 800000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE / 2", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.GZfpSw5mnT7CLpYH" - }, - { - "_id": "VXyznv68DT2Guc0A", - "name": "Bezaubern", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.HMCFkxVzU2b3KkSA" - } - }, - "system": { - "description": "

Kann Gegner mit einem „Lockruf“ bezaubern. Dieser Zauber funktioniert wie der Zauberspruch @Compendium[ds4.spells.wZYElRaDmhqgzUvQ]{Gehorche}. Abklingzeit des Lockrufs: 10 Kampfrunden

", - "experiencePoints": 25 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.HMCFkxVzU2b3KkSA", - "duplicateSource": null - }, - "_key": "!actors.items!s56U2LeRInrje3xh.VXyznv68DT2Guc0A" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 6, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 1, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 20 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:8)", - "foeFactor": 10, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 128, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Harpyie", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/harpy*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347013, - "modifiedTime": 1740227862913, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!s56U2LeRInrje3xh" -} diff --git a/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json b/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json deleted file mode 100644 index 8ee3f983..00000000 --- a/packs/creatures/Hobgoblin_C4xijAwQdhRHz0Cs.json +++ /dev/null @@ -1,580 +0,0 @@ -{ - "_id": "C4xijAwQdhRHz0Cs", - "name": "Hobgoblin", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/hobgoblin-sword-purple.png", - "items": [ - { - "_id": "wTcga48GOVD8cQV3", - "name": "Kettenpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "EkJB0kpYFHRMYSgl", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "-0.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -0,5", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.wTcga48GOVD8cQV3.EkJB0kpYFHRMYSgl" - } - ], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.09Hp2c2jgoXx7cV0" - } - }, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.09Hp2c2jgoXx7cV0", - "duplicateSource": null - }, - "_key": "!actors.items!C4xijAwQdhRHz0Cs.wTcga48GOVD8cQV3" - }, - { - "_id": "whLRBkMseej6C3IG", - "name": "Metallhelm", - "type": "armor", - "img": "icons/equipment/head/helm-barbute-reinforced.webp", - "effects": [ - { - "_id": "wlQWjU1kXovR5G1J", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "-1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.whLRBkMseej6C3IG.wlQWjU1kXovR5G1J" - } - ], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.fKhTsMO4YXDYY8GX" - } - }, - "system": { - "description": "

Initiative -1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.fKhTsMO4YXDYY8GX", - "duplicateSource": null - }, - "_key": "!actors.items!C4xijAwQdhRHz0Cs.whLRBkMseej6C3IG" - }, - { - "_id": "n3SYaxRnVV0nTKtq", - "name": "Holzschild", - "type": "shield", - "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.J7d2zx4kqKEdMR1j" - } - }, - "system": { - "description": "

Zerbricht bei einem Abwehr-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.J7d2zx4kqKEdMR1j", - "duplicateSource": null - }, - "_key": "!actors.items!C4xijAwQdhRHz0Cs.n3SYaxRnVV0nTKtq" - }, - { - "_id": "QXzGnyknBZaJqCIc", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!C4xijAwQdhRHz0Cs.QXzGnyknBZaJqCIc" - }, - { - "_id": "xAd7jo7Ni2KSl16I", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!C4xijAwQdhRHz0Cs.xAd7jo7Ni2KSl16I" - }, - { - "_id": "MSuVIzM2MRDSyujQ", - "name": "Langschwert", - "type": "weapon", - "img": "icons/weapons/swords/sword-guard-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" - } - }, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", - "duplicateSource": null - }, - "_key": "!actors.items!C4xijAwQdhRHz0Cs.MSuVIzM2MRDSyujQ" - }, - { - "_id": "lXtH1PL4nnpzMGkI", - "name": "Kurzbogen", - "type": "weapon", - "img": "icons/weapons/bows/shortbow-leather.webp", - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!actors.items.effects!C4xijAwQdhRHz0Cs.lXtH1PL4nnpzMGkI.zgiIGlRMVCgAzrn7" - } - ], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.QsnvAep80sSVJToD" - } - }, - "system": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.QsnvAep80sSVJToD", - "duplicateSource": null - }, - "_key": "!actors.items!C4xijAwQdhRHz0Cs.lXtH1PL4nnpzMGkI" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 3, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 24 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:18", - "foeFactor": 4, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 71, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "name": "Hobgoblin", - "displayName": 20, - "actorLink": false, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "flags": {}, - "randomImg": true, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/hobgoblin-*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346292, - "modifiedTime": 1740227862851, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!C4xijAwQdhRHz0Cs" -} diff --git a/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json b/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json deleted file mode 100644 index 5624094c..00000000 --- a/packs/creatures/Hoher_D_mon_LtsbT2DHYKs9Catm.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "LtsbT2DHYKs9Catm", - "name": "Hoher Dämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 6, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 3, - "mod": 0 - }, - "aura": { - "base": 3, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 20 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 104, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Hoher Dämon", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346576, - "modifiedTime": 1740227862870, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!LtsbT2DHYKs9Catm" -} diff --git a/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json b/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json deleted file mode 100644 index 8041f326..00000000 --- a/packs/creatures/Hund_Qm2toXbf6EVmvRS1.json +++ /dev/null @@ -1,293 +0,0 @@ -{ - "_id": "Qm2toXbf6EVmvRS1", - "name": "Hund", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dog-pitbull-2.png", - "items": [ - { - "_id": "j0NbwyhdJPipL7Rl", - "name": "Biss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!Qm2toXbf6EVmvRS1.j0NbwyhdJPipL7Rl" - }, - { - "_id": "PlB4iu4DBqxypeR0", - "name": "Fell", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!Qm2toXbf6EVmvRS1.PlB4iu4DBqxypeR0" - }, - { - "_id": "lmc1Llwdx3k697VS", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!Qm2toXbf6EVmvRS1.lmc1Llwdx3k697VS" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -4, - "value": 11 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 31, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Hund", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dog*.png", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346645, - "modifiedTime": 1740227862876, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!Qm2toXbf6EVmvRS1" -} diff --git a/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json b/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json deleted file mode 100644 index 66e2a18a..00000000 --- a/packs/creatures/Hydra_GMUTgcbmahiwgXSj.json +++ /dev/null @@ -1,453 +0,0 @@ -{ - "_id": "GMUTgcbmahiwgXSj", - "name": "Hydra", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/hydra-blue.png", - "items": [ - { - "_id": "TEjCLP10Mjf8XqCl", - "name": "Großer Biss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.TEjCLP10Mjf8XqCl" - }, - { - "_id": "jcgmsC6XoKcSpu6a", - "name": "Schuppenpanzer", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.jcgmsC6XoKcSpu6a" - }, - { - "_id": "jtnlL78QKAyrNEey", - "name": "Mehrere Angriffe (+5)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann mit seinen insgesamt sechs Köpfen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.jtnlL78QKAyrNEey" - }, - { - "_id": "dnGDZ0R98VlEskVv", - "name": "Mehrere Angriffglieder (+5)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "system": { - "description": "

Greift mit insgesamt 6 Köpfen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V", - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.dnGDZ0R98VlEskVv" - }, - { - "_id": "KwCXBwhluHD0uHIW", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.KwCXBwhluHD0uHIW" - }, - { - "_id": "CIzNpB4GXHkdFsAI", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.CIzNpB4GXHkdFsAI" - }, - { - "_id": "HOykiW9ZmatUSUKm", - "name": "Regeneration", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", - "effects": [], - "folder": null, - "system": { - "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq", - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.HOykiW9ZmatUSUKm" - }, - { - "_id": "YvT74RD5F3M4DMEx", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", - "duplicateSource": null - }, - "_key": "!actors.items!GMUTgcbmahiwgXSj.YvT74RD5F3M4DMEx" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 60, - "value": 90 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 4 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:20)", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 246, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Hydra", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/hydra*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346375, - "modifiedTime": 1740227862860, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!GMUTgcbmahiwgXSj" -} diff --git a/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json b/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json deleted file mode 100644 index 3cce7a06..00000000 --- a/packs/creatures/Jungdrache__Blau__nDRdljcZzkonbU0s.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "_id": "nDRdljcZzkonbU0s", - "name": "Jungdrache (Blau)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Blitz-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!nDRdljcZzkonbU0s.yjkoipelFXEzcy1x" - }, - { - "_id": "bH4dBG5AeJ442465", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!nDRdljcZzkonbU0s.bH4dBG5AeJ442465" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-blue.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346901, - "modifiedTime": 1740227862906, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!nDRdljcZzkonbU0s" -} diff --git a/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json b/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json deleted file mode 100644 index a4428cb2..00000000 --- a/packs/creatures/Jungdrache__Bronze__clsDFbLFEIbh6Mg4.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "clsDFbLFEIbh6Mg4", - "name": "Jungdrache (Bronze)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-bronze.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346812, - "modifiedTime": 1740227862894, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!clsDFbLFEIbh6Mg4" -} diff --git a/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json b/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json deleted file mode 100644 index 09237540..00000000 --- a/packs/creatures/Jungdrache__Gelb__apBf4qnMODBmEWHU.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "apBf4qnMODBmEWHU", - "name": "Jungdrache (Gelb)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "items": [ - { - "_id": "d4qTXCVuiStZW2tY", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!apBf4qnMODBmEWHU.d4qTXCVuiStZW2tY" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-yellow.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346771, - "modifiedTime": 1740227862889, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!apBf4qnMODBmEWHU" -} diff --git a/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json b/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json deleted file mode 100644 index f85b9bcc..00000000 --- a/packs/creatures/Jungdrache__Gold__RWNocIHuXIWwUwJu.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "RWNocIHuXIWwUwJu", - "name": "Jungdrache (Gold)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-gold.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346651, - "modifiedTime": 1740227862878, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!RWNocIHuXIWwUwJu" -} diff --git a/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json b/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json deleted file mode 100644 index a4fb1ecf..00000000 --- a/packs/creatures/Jungdrache__Gr_n__vsIywRHMnJM7u4ts.json +++ /dev/null @@ -1,287 +0,0 @@ -{ - "_id": "vsIywRHMnJM7u4ts", - "name": "Jungdrache (Grün)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Giftgas-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!vsIywRHMnJM7u4ts.yjkoipelFXEzcy1x" - }, - { - "_id": "tWwaC91MGIR4k3Uy", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", - "duplicateSource": null - }, - "_key": "!actors.items!vsIywRHMnJM7u4ts.tWwaC91MGIR4k3Uy" - }, - { - "_id": "CdZkMCsLB0EwUdqv", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!vsIywRHMnJM7u4ts.CdZkMCsLB0EwUdqv" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-green.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347174, - "modifiedTime": 1740227862920, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!vsIywRHMnJM7u4ts" -} diff --git a/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json b/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json deleted file mode 100644 index 6c4e31d7..00000000 --- a/packs/creatures/Jungdrache__Rot__htgryhd630WQgeD8.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "_id": "htgryhd630WQgeD8", - "name": "Jungdrache (Rot)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "items": [ - { - "_id": "yjkoipelFXEzcy1x", - "name": "Feuer-Odem", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!htgryhd630WQgeD8.yjkoipelFXEzcy1x" - }, - { - "_id": "HFksDdMTR1oh3gDo", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!htgryhd630WQgeD8.HFksDdMTR1oh3gDo" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-red.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346846, - "modifiedTime": 1740227862898, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!htgryhd630WQgeD8" -} diff --git a/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json b/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json deleted file mode 100644 index c02625f3..00000000 --- a/packs/creatures/Jungdrache__Schwarz__A4zxgFGkMQpm67TR.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "A4zxgFGkMQpm67TR", - "name": "Jungdrache (Schwarz)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "items": [ - { - "_id": "TVxn2FjSGirdC90w", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!A4zxgFGkMQpm67TR.TVxn2FjSGirdC90w" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-black.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346280, - "modifiedTime": 1740227862849, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!A4zxgFGkMQpm67TR" -} diff --git a/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json b/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json deleted file mode 100644 index b736f730..00000000 --- a/packs/creatures/Jungdrache__Silber__3iMmLEmB0NEpyFGd.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "3iMmLEmB0NEpyFGd", - "name": "Jungdrache (Silber)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-silver.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346186, - "modifiedTime": 1740227862841, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!3iMmLEmB0NEpyFGd" -} diff --git a/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json b/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json deleted file mode 100644 index bdace5b5..00000000 --- a/packs/creatures/Jungdrache__Weiss__raKKehH8QctnDtMM.json +++ /dev/null @@ -1,223 +0,0 @@ -{ - "_id": "raKKehH8QctnDtMM", - "name": "Jungdrache (Weiss)", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "items": [ - { - "_id": "frBW7LCCpTlwh7hr", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 1150000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!raKKehH8QctnDtMM.frBW7LCCpTlwh7hr" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 195, - "value": 225 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 5.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 4A:W20+10), BW #(A:W20+10)x10, #8M:19", - "foeFactor": 36, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 481, - "description": null - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Jungdrache", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/dragon-white.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346999, - "modifiedTime": 1740227862912, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!raKKehH8QctnDtMM" -} diff --git a/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json b/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json deleted file mode 100644 index 0702e017..00000000 --- a/packs/creatures/Kampfd_mon_LgtcLrKtCa496ih6.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "LgtcLrKtCa496ih6", - "name": "Kampfdämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 8, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 4, - "mod": 0 - }, - "aura": { - "base": 4, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 23, - "value": 46 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 1 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 152, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Kampfdämon", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346560, - "modifiedTime": 1740227862869, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!LgtcLrKtCa496ih6" -} diff --git a/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json b/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json deleted file mode 100644 index 5988aed7..00000000 --- a/packs/creatures/Keiler_FxGhbznQbwd0jRUT.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "FxGhbznQbwd0jRUT", - "name": "Keiler", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", - "items": [ - { - "_id": "wQm8AMxYF0NKZhQE", - "name": "Hauer", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!FxGhbznQbwd0jRUT.wQm8AMxYF0NKZhQE" - }, - { - "_id": "DDaq3xgZrGuEl4Dc", - "name": "Dicke Borstenhaut", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!FxGhbznQbwd0jRUT.DDaq3xgZrGuEl4Dc" - }, - { - "_id": "yru5VWx93wWmOXZA", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!FxGhbznQbwd0jRUT.yru5VWx93wWmOXZA" - }, - { - "_id": "DyCGJ2kxHV5QYgWK", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!FxGhbznQbwd0jRUT.DyCGJ2kxHV5QYgWK" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 13, - "value": 38 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:10)", - "foeFactor": 6, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 79, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Keiler", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/boar*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346363, - "modifiedTime": 1740227862859, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!FxGhbznQbwd0jRUT" -} diff --git a/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json b/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json deleted file mode 100644 index 0549b907..00000000 --- a/packs/creatures/Kobold_ojzkDbyYSlpHtGHq.json +++ /dev/null @@ -1,226 +0,0 @@ -{ - "_id": "ojzkDbyYSlpHtGHq", - "name": "Kobold", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/kobold-green.png", - "items": [ - { - "_id": "hnuIJBq2btoSK88F", - "name": "Kleiner Knüppel", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!ojzkDbyYSlpHtGHq.hnuIJBq2btoSK88F" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 3, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 1, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 1, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -7, - "value": 7 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1B:8)", - "foeFactor": 1, - "creatureType": "humanoid", - "sizeCategory": "small", - "experiencePoints": 25, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Kobold", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/kobold*.png", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346953, - "modifiedTime": 1740227862909, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!ojzkDbyYSlpHtGHq" -} diff --git a/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json b/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json deleted file mode 100644 index 1f30f523..00000000 --- a/packs/creatures/Kriegsd_mon_JGpIh3oCK1Vx3NnZ.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "JGpIh3oCK1Vx3NnZ", - "name": "Kriegsdämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 7, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 5, - "mod": 0 - }, - "intellect": { - "base": 5, - "mod": 0 - }, - "aura": { - "base": 5, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 128, - "value": 160 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "magicalEntity", - "sizeCategory": "huge", - "experiencePoints": 297, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Kriegsdämon", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346506, - "modifiedTime": 1740227862867, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!JGpIh3oCK1Vx3NnZ" -} diff --git a/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json b/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json deleted file mode 100644 index dae776a2..00000000 --- a/packs/creatures/Kriegselefant_BIyY1wlxWtJ5FRQJ.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "BIyY1wlxWtJ5FRQJ", - "name": "Kriegselefant", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "5qBHfTnJAXibKNWs", - "name": "Rammen", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.5qBHfTnJAXibKNWs" - }, - { - "_id": "OehvVDNjDg4xbsW7", - "name": "Dickhäuter", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.OehvVDNjDg4xbsW7" - }, - { - "_id": "QwtwJGcSVFimiHM0", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.QwtwJGcSVFimiHM0" - }, - { - "_id": "iVORjCynScc6kVsS", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!BIyY1wlxWtJ5FRQJ.iVORjCynScc6kVsS" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 62, - "value": 93 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": -1 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:20)", - "foeFactor": 16, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 142, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Kriegselefant", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346286, - "modifiedTime": 1740227862850, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!BIyY1wlxWtJ5FRQJ" -} diff --git a/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json b/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json deleted file mode 100644 index bf2a7641..00000000 --- a/packs/creatures/Lebende_R_stung_s7yuHMW75JDcFQYB.json +++ /dev/null @@ -1,329 +0,0 @@ -{ - "_id": "s7yuHMW75JDcFQYB", - "name": "Lebende Rüstung", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "c9cGRVHyd3IPSSbX", - "name": "Langschwert", - "type": "weapon", - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.htmQWmMCQN620KrE" - } - }, - "img": "icons/weapons/swords/sword-guard-blue.webp", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.htmQWmMCQN620KrE", - "duplicateSource": null - }, - "_key": "!actors.items!s7yuHMW75JDcFQYB.c9cGRVHyd3IPSSbX" - }, - { - "_id": "5t0R0cwzApnRQpSR", - "name": "Metallwesen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 5, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!s7yuHMW75JDcFQYB.5t0R0cwzApnRQpSR" - }, - { - "_id": "JxIUfRCSTQ3e5BFg", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!s7yuHMW75JDcFQYB.JxIUfRCSTQ3e5BFg" - }, - { - "_id": "SoGfBCWyVZsQGBLk", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!s7yuHMW75JDcFQYB.SoGfBCWyVZsQGBLk" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 24 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 8, - "creatureType": "construct", - "sizeCategory": "normal", - "experiencePoints": 72, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Lebende Rüstung", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347048, - "modifiedTime": 1740227862914, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!s7yuHMW75JDcFQYB" -} diff --git a/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json b/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json deleted file mode 100644 index 65534f57..00000000 --- a/packs/creatures/Leichnam_oVKL6zJ2kYMmBuYx.json +++ /dev/null @@ -1,2027 +0,0 @@ -{ - "_id": "oVKL6zJ2kYMmBuYx", - "name": "Leichnam", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/lich.png", - "items": [ - { - "_id": "J2eP8hBIWtgayfhH", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.J2eP8hBIWtgayfhH" - }, - { - "_id": "sNIMYcSm0y83hby7", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sNIMYcSm0y83hby7" - }, - { - "_id": "exyyjDtEIdHRcx4n", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.exyyjDtEIdHRcx4n" - }, - { - "_id": "L6i191M3m9QXN9aJ", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "effects": [ - { - "_id": "xw1OyyTdDwkNe2jC", - "changes": [ - { - "key": "system.traits.strength.total", - "mode": 2, - "value": "@system.attributes.mind.total + @system.traits.aura.total", - "priority": null - }, - { - "key": "system.traits.constitution.total", - "mode": 2, - "value": "@system.attributes.mind.total + @system.traits.aura.total", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "GEI + AU als Bonus auf Stärke und Härte", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!actors.items.effects!oVKL6zJ2kYMmBuYx.L6i191M3m9QXN9aJ.xw1OyyTdDwkNe2jC" - } - ], - "folder": null, - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - }, - "system": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.L6i191M3m9QXN9aJ" - }, - { - "_id": "Yv7u9FcT21lq7xW8", - "name": "Robe +3", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-purple.webp", - "effects": [ - { - "_id": "Qpy3XcHOokbU7ZaS", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.defense.total", - "value": "3", - "mode": 2, - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "origin": null, - "tint": "#ffffff", - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": null, - "type": "base", - "system": {}, - "sort": 0, - "_key": "!actors.items.effects!oVKL6zJ2kYMmBuYx.Yv7u9FcT21lq7xW8.Qpy3XcHOokbU7ZaS" - } - ], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.cFMcSg7PFIcQvf0B" - } - }, - "system": { - "description": "", - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.cFMcSg7PFIcQvf0B", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.Yv7u9FcT21lq7xW8" - }, - { - "_id": "quDuDAGeMVUvF3WD", - "name": "Arkanes Schwert", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.VjvrapwDmBvGYmfj" - } - }, - "system": { - "description": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

Innerhalb dieses Wirkungsbereiches kämpft es völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos seines Beschwöreres wie „Greif den großen Troll an“ oder „Schütze mich“.

\n

Bewegt sich der Zauberwirker, wandert der Wirkungsbereich des Schwertes mit ihm mit, so dass die magische Klinge niemals mehr als VE in Metern von ihm getrennt sein kann.

\n

Das Schwert löst sich in seine arkanen Bestandteile auf, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer verstrichen ist.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.

\n

Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.VjvrapwDmBvGYmfj", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.quDuDAGeMVUvF3WD" - }, - { - "_id": "NeFjvRQWZSKtxAMm", - "name": "Ebenentor", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.MKlGqhjQa3GZu4gq" - } - }, - "system": { - "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -8, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": null, - "wizard": 18, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.MKlGqhjQa3GZu4gq", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.NeFjvRQWZSKtxAMm" - }, - { - "_id": "1q93yorTXMMaRAcg", - "name": "Einschläfern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0" - } - }, - "system": { - "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.CrZ8L7oaWvPjLou0", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.1q93yorTXMMaRAcg" - }, - { - "_id": "29SYRu3tP8sSILyX", - "name": "Flammeninferno", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.7ybmodIkWDP1z1D6" - } - }, - "system": { - "description": "

Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 5, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 15 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.7ybmodIkWDP1z1D6", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.29SYRu3tP8sSILyX" - }, - { - "_id": "wRp2U7ZSNdZndBmq", - "name": "Frostschock", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.iH2NtsJtMfG0ZAU3" - } - }, - "system": { - "description": "

Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": true, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.iH2NtsJtMfG0ZAU3", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.wRp2U7ZSNdZndBmq" - }, - { - "_id": "3ybAKe4uHnD5q5zD", - "name": "Gasgestalt", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.tZJoj1PGrRGe9eMV" - } - }, - "system": { - "description": "

Das Ziel – samt seiner getragenen Ausrüstung – wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": true, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 5", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 18 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.tZJoj1PGrRGe9eMV", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.3ybAKe4uHnD5q5zD" - }, - { - "_id": "tYncs86pwaeg5XAl", - "name": "Gehorche", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ" - } - }, - "system": { - "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+VE)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE / 2", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.wZYElRaDmhqgzUvQ", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.tYncs86pwaeg5XAl" - }, - { - "_id": "MaTZSyGMQDIMXhLe", - "name": "Kontrollieren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.9gc1CF70165NXymH" - } - }, - "system": { - "description": "

Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis erlöst", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.9gc1CF70165NXymH", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.MaTZSyGMQDIMXhLe" - }, - { - "_id": "bu4UNbRP2WGwKFLg", - "name": "Magisches Schloss", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.dzYAc9ti7ghhkyiX" - } - }, - "system": { - "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.

\n

Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.

\n

Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis Schloss geöffnet", - "unit": "custom" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": 3, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.dzYAc9ti7ghhkyiX", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.bu4UNbRP2WGwKFLg" - }, - { - "_id": "WFfjqz7dfZrxNdOn", - "name": "Netz", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.73bT47FtQgPp9Snq" - } - }, - "system": { - "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.

\n

Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+ST)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 4, - "wizard": 9, - "sorcerer": 9 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.73bT47FtQgPp9Snq", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WFfjqz7dfZrxNdOn" - }, - { - "_id": "h4Xf5AZuuDR1HwdD", - "name": "Schatten", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.5mF59XCsZffF0cSp" - } - }, - "system": { - "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte. Augenlosen Untoten, wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten}, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "rounds" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.5mF59XCsZffF0cSp", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.h4Xf5AZuuDR1HwdD" - }, - { - "_id": "sZicJQ2tu0pHKLT3", - "name": "Schatten erwecken", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.dPGm1Ji2U0fJxnT3" - } - }, - "system": { - "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher @Compendium[ds4.creatures.T9YRYe0vnR4Qg4UM]{Schatten} (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.dPGm1Ji2U0fJxnT3", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sZicJQ2tu0pHKLT3" - }, - { - "_id": "80m8uuYxkvkMY8O6", - "name": "Schattenlanze", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.b5RFJWPaYbpXNpsv" - } - }, - "system": { - "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.tPFiElqQuvih76gd]{Schattenpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 5, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.b5RFJWPaYbpXNpsv", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.80m8uuYxkvkMY8O6" - }, - { - "_id": "eVZKdojeGbmnlO7r", - "name": "Springen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.L6NrH3AEmS2I3NWG" - } - }, - "system": { - "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 5, - "wizard": 2, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.L6NrH3AEmS2I3NWG", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.eVZKdojeGbmnlO7r" - }, - { - "_id": "TyemqVxXHyajaeQ0", - "name": "Stolpern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.KIyVOdiXZnXJIAh6" - } - }, - "system": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.KIyVOdiXZnXJIAh6", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.TyemqVxXHyajaeQ0" - }, - { - "_id": "8yzQEtT02oPB3gQT", - "name": "Trugbild", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.eMilydZd4gqDUsff" - } - }, - "system": { - "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) – abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe – durchschaubar.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE / 2", - "unit": "hours" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.eMilydZd4gqDUsff", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.8yzQEtT02oPB3gQT" - }, - { - "_id": "WcTIZrzNl287ClsD", - "name": "Unsichtbarkeit", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw" - } - }, - "system": { - "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 20, - "wizard": 12, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.EXqdD6yddQ4c0zAw", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WcTIZrzNl287ClsD" - }, - { - "_id": "WgItN1MKxhGmbISB", - "name": "Verwirren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.niQVUxJHzdMDlwXc" - } - }, - "system": { - "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 8, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.niQVUxJHzdMDlwXc", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.WgItN1MKxhGmbISB" - }, - { - "_id": "sNZcw4ywoelqwcFi", - "name": "Wandöffnung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.7foZzrxZuX0dCh3C" - } - }, - "system": { - "description": "

Der Zauberwirker öffnet ein kreisrundes Loch von 1 m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": true, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 14 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.7foZzrxZuX0dCh3C", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.sNZcw4ywoelqwcFi" - }, - { - "_id": "m0sMPFGCoDjzT9jz", - "name": "Wolke des Todes", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.xs7tx8K3ZdQ76u0b" - } - }, - "system": { - "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -4, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": true, - "transport": false, - "damage": true, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.xs7tx8K3ZdQ76u0b", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.m0sMPFGCoDjzT9jz" - }, - { - "_id": "ozbaYB7x9IHkkxz2", - "name": "Zeitstop", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.BGnY1p1qZXwpzXFA" - } - }, - "system": { - "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

Andere Objekte und Lebewesen können nicht bewegt werden – sie sind starr in der Zeit eingefroren.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -5, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 20 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.BGnY1p1qZXwpzXFA", - "duplicateSource": null - }, - "_key": "!actors.items!oVKL6zJ2kYMmBuYx.ozbaYB7x9IHkkxz2" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 9, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 8, - "mod": 0 - }, - "aura": { - "base": 8, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 1, - "value": 39 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW #(A:20)x10, #10M:20", - "foeFactor": 26, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 299, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Leichnam", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/lich.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346928, - "modifiedTime": 1740227862908, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!oVKL6zJ2kYMmBuYx" -} diff --git a/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json b/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json deleted file mode 100644 index 7c65295a..00000000 --- a/packs/creatures/Luftelementar_III_DNbOkqUg7jitTTbw.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "DNbOkqUg7jitTTbw", - "name": "Luftelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 32, - "value": 64 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 16, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 143, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Luftelementar III", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346310, - "modifiedTime": 1740227862853, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!DNbOkqUg7jitTTbw" -} diff --git a/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json b/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json deleted file mode 100644 index 578e3651..00000000 --- a/packs/creatures/Luftelementar_II_wYVw1a5UjPS09YxS.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "wYVw1a5UjPS09YxS", - "name": "Luftelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "PL4rUPVh5MRMW796", - "name": "Luftstoß", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "

-1 WB/2 m

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!wYVw1a5UjPS09YxS.PL4rUPVh5MRMW796" - }, - { - "_id": "ghW7FO5d2do95peV", - "name": "Keine feste Gestalt", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!wYVw1a5UjPS09YxS.ghW7FO5d2do95peV" - }, - { - "_id": "wqzMhcBGP8qbClRW", - "name": "Anfällig (Erde)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.mAWyVCfTFH6JiEIu", - "duplicateSource": null - }, - "_key": "!actors.items!wYVw1a5UjPS09YxS.wqzMhcBGP8qbClRW" - }, - { - "_id": "3yeOHhXD8iJrtRJL", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!wYVw1a5UjPS09YxS.3yeOHhXD8iJrtRJL" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 25 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 92, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Luftelementar II", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347220, - "modifiedTime": 1740227862922, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!wYVw1a5UjPS09YxS" -} diff --git a/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json b/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json deleted file mode 100644 index a5d1cf5c..00000000 --- a/packs/creatures/Luftelementar_I_CIzMY691MK016h4E.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "CIzMY691MK016h4E", - "name": "Luftelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 10 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 68, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Luftelementar I", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346301, - "modifiedTime": 1740227862852, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!CIzMY691MK016h4E" -} diff --git a/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json b/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json deleted file mode 100644 index 789b7255..00000000 --- a/packs/creatures/Medusa_F3zJ4xbHwN9syuK8.json +++ /dev/null @@ -1,424 +0,0 @@ -{ - "_id": "F3zJ4xbHwN9syuK8", - "name": "Medusa", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/medusa-pale.png", - "items": [ - { - "_id": "08rqhbd0eadzrJxS", - "name": "Klauen", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!F3zJ4xbHwN9syuK8.08rqhbd0eadzrJxS" - }, - { - "_id": "YL8uGdXD9QX45OvA", - "name": "Schlangen", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!F3zJ4xbHwN9syuK8.YL8uGdXD9QX45OvA" - }, - { - "_id": "3Gxud5Mn5gy97Qie", - "name": "Schuppen", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!F3zJ4xbHwN9syuK8.3Gxud5Mn5gy97Qie" - }, - { - "_id": "MuXvP2TjwvevxLpo", - "name": "Blickangriff", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", - "effects": [], - "folder": null, - "system": { - "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.l4ewILWP2zbiSM97", - "duplicateSource": null - }, - "_key": "!actors.items!F3zJ4xbHwN9syuK8.MuXvP2TjwvevxLpo" - }, - { - "_id": "RhdH7ESwq8ukGvTy", - "name": "Mehrere Angriffe (+5)", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Von den zahlreichen Geschwindigkeit an Wänden und Decken aktionsfrei Schlangen auf ihrem Kopf können jeweils 5 in jeder Runde klettern. Kann auf Gegner herabfallen, wobei Schlagen um Nahkampfgegner angreifen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", - "duplicateSource": null - }, - "_key": "!actors.items!F3zJ4xbHwN9syuK8.RhdH7ESwq8ukGvTy" - }, - { - "_id": "CTAZdf7uuEQ4sWA9", - "name": "Schleudern", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5PdSHi6PY4TNV9rP", - "duplicateSource": null - }, - "_key": "!actors.items!F3zJ4xbHwN9syuK8.CTAZdf7uuEQ4sWA9" - }, - { - "_id": "NEEOtiJGhOpZ7RuW", - "name": "Versteinern", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5eB5a0FnygbaqWPe", - "duplicateSource": null - }, - "_key": "!actors.items!F3zJ4xbHwN9syuK8.NEEOtiJGhOpZ7RuW" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 7, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 12, - "value": 36 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW A:18), BW #5A:20, #5M:20", - "foeFactor": 18, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 205, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Medusa", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/medusa*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346341, - "modifiedTime": 1740227862856, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!F3zJ4xbHwN9syuK8" -} diff --git a/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json b/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json deleted file mode 100644 index c4f4f929..00000000 --- a/packs/creatures/Minotaurus_95N3CQpgVqg4zz0k.json +++ /dev/null @@ -1,395 +0,0 @@ -{ - "_id": "95N3CQpgVqg4zz0k", - "name": "Minotaurus", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/minotaur-brown.png", - "items": [ - { - "_id": "WnNygCJUgl9nJVDV", - "name": "Massive Keule", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!95N3CQpgVqg4zz0k.WnNygCJUgl9nJVDV" - }, - { - "_id": "hZvwSk1wun8Qjlmk", - "name": "Horn", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!95N3CQpgVqg4zz0k.hZvwSk1wun8Qjlmk" - }, - { - "_id": "CES4HTOhBcNY0c6G", - "name": "Huf", - "type": "weapon", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!95N3CQpgVqg4zz0k.CES4HTOhBcNY0c6G" - }, - { - "_id": "jhC7DbwCOazDTTVU", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!95N3CQpgVqg4zz0k.jhC7DbwCOazDTTVU" - }, - { - "_id": "mOcmV58FSVafekAU", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", - "duplicateSource": null - }, - "_key": "!actors.items!95N3CQpgVqg4zz0k.mOcmV58FSVafekAU" - }, - { - "_id": "gPsGJGaDRosWvEEL", - "name": "Fell", - "type": "armor", - "sort": 600000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!95N3CQpgVqg4zz0k.gPsGJGaDRosWvEEL" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 14, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 1, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 1, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 27, - "value": 54 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 1 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:16), BW 2B:20", - "foeFactor": 12, - "creatureType": "humanoid", - "sizeCategory": "large", - "experiencePoints": 138, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Minotaurus", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/minotaur*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346270, - "modifiedTime": 1740227862848, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!95N3CQpgVqg4zz0k" -} diff --git a/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json b/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json deleted file mode 100644 index f30f9f65..00000000 --- a/packs/creatures/Monsterspinne_4276kgAddflo3bwN.json +++ /dev/null @@ -1,392 +0,0 @@ -{ - "_id": "4276kgAddflo3bwN", - "name": "Monsterspinne", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/monster-spider.png", - "items": [ - { - "_id": "5KumsWj49saU3R8P", - "name": "Spinnenbiss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!4276kgAddflo3bwN.5KumsWj49saU3R8P" - }, - { - "_id": "nU2FCLS66oVDnMkw", - "name": "Netzflüssigkeit", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!4276kgAddflo3bwN.nU2FCLS66oVDnMkw" - }, - { - "_id": "b80BR5n1f6WvGavG", - "name": "Dicke Spinnenhaut", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!4276kgAddflo3bwN.b80BR5n1f6WvGavG" - }, - { - "_id": "v7zlqw9oygaGg5RF", - "name": "Kletterläufer", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", - "duplicateSource": null - }, - "_key": "!actors.items!4276kgAddflo3bwN.v7zlqw9oygaGg5RF" - }, - { - "_id": "vNnnWKNHFzvSlquf", - "name": "Lähmungseffekt", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.5maJ8tHAVZCxHGW6" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", - "effects": [], - "folder": null, - "system": { - "description": "

Netzflüssigkeit (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", - "experiencePoints": 25 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.5maJ8tHAVZCxHGW6", - "duplicateSource": null - }, - "_key": "!actors.items!4276kgAddflo3bwN.vNnnWKNHFzvSlquf" - }, - { - "_id": "vYPD5Je4xRUgTqcp", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!4276kgAddflo3bwN.vYPD5Je4xRUgTqcp" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 48, - "value": 72 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:12)", - "foeFactor": 11, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 165, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Monsterspinne", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/monster-spider.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346201, - "modifiedTime": 1740227862842, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!4276kgAddflo3bwN" -} diff --git a/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json b/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json deleted file mode 100644 index a3b6c944..00000000 --- a/packs/creatures/Mumie_P3mlpN2JrbnDtLwJ.json +++ /dev/null @@ -1,485 +0,0 @@ -{ - "_id": "P3mlpN2JrbnDtLwJ", - "name": "Mumie", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "MxXeRwM7Mw1OqmAC", - "name": "Fäulnispranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.MxXeRwM7Mw1OqmAC" - }, - { - "_id": "Icq7W8YrjXTIlb7C", - "name": "Bandagen", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.Icq7W8YrjXTIlb7C" - }, - { - "_id": "Kf2kAdMidDaK1SVD", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.Kf2kAdMidDaK1SVD" - }, - { - "_id": "yUtiK9PSMcNcvXfr", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.rUA7XVCeDkREYfi8", - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.yUtiK9PSMcNcvXfr" - }, - { - "_id": "F3UjrYhsbCLoyFm3", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.F3UjrYhsbCLoyFm3" - }, - { - "_id": "hewKWM2G62KKAj7L", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.hewKWM2G62KKAj7L" - }, - { - "_id": "PFpQT1jYCeKy2yuk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.PFpQT1jYCeKy2yuk" - }, - { - "_id": "nX0rcnKD1xHYwysw", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "effects": [], - "folder": null, - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - }, - "system": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.nX0rcnKD1xHYwysw" - }, - { - "_id": "fdt4YJVWp3XylED1", - "name": "Werteverlust (KÖR)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [], - "folder": null, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.RwT0NBwkc1TuAR1e" - } - }, - "system": { - "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.RwT0NBwkc1TuAR1e", - "duplicateSource": null - }, - "_key": "!actors.items!P3mlpN2JrbnDtLwJ.fdt4YJVWp3XylED1" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 4, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 32 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 1 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW #2A:18, #1M:16", - "foeFactor": 18, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 124, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Mumie", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346620, - "modifiedTime": 1740227862873, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!P3mlpN2JrbnDtLwJ" -} diff --git a/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json b/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json deleted file mode 100644 index d86502ca..00000000 --- a/packs/creatures/Niederer_D_mon_RxSUSzQBSTFYHOlV.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "_id": "RxSUSzQBSTFYHOlV", - "name": "Niederer Dämon", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "bXEiQJc7aJmLW1K4", - "name": "Pranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!RxSUSzQBSTFYHOlV.bXEiQJc7aJmLW1K4" - }, - { - "_id": "N6MfjihlDL9hfse6", - "name": "Dämonenhaut", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!RxSUSzQBSTFYHOlV.N6MfjihlDL9hfse6" - }, - { - "_id": "BDsxMEuEKfjEgFk3", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!RxSUSzQBSTFYHOlV.BDsxMEuEKfjEgFk3" - }, - { - "_id": "AHJhJgRCvw2dKx78", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!RxSUSzQBSTFYHOlV.AHJhJgRCvw2dKx78" - }, - { - "_id": "DURD01IkVxPAwlxf", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!RxSUSzQBSTFYHOlV.DURD01IkVxPAwlxf" - }, - { - "_id": "hvOFruV5fmieLXnk", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!RxSUSzQBSTFYHOlV.hvOFruV5fmieLXnk" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 5, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 2, - "mod": 0 - }, - "aura": { - "base": 2, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -8, - "value": 9 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 71, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Niederer Dämon", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346666, - "modifiedTime": 1740227862879, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!RxSUSzQBSTFYHOlV" -} diff --git a/packs/creatures/Oger_QudriM5XZhEC7D6v.json b/packs/creatures/Oger_QudriM5XZhEC7D6v.json deleted file mode 100644 index 99a5ad46..00000000 --- a/packs/creatures/Oger_QudriM5XZhEC7D6v.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "_id": "QudriM5XZhEC7D6v", - "name": "Oger", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/ogre-blue.png", - "items": [ - { - "_id": "hYNvoybPpmNB7ldb", - "name": "Massive Keule", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!QudriM5XZhEC7D6v.hYNvoybPpmNB7ldb" - }, - { - "_id": "M90M3KCsByyNno2f", - "name": "Felle", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!QudriM5XZhEC7D6v.M90M3KCsByyNno2f" - }, - { - "_id": "yIAptcyyzAytAPRc", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!QudriM5XZhEC7D6v.yIAptcyyzAytAPRc" - }, - { - "_id": "u8EFs9MhGH4cjqzI", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", - "duplicateSource": null - }, - "_key": "!actors.items!QudriM5XZhEC7D6v.u8EFs9MhGH4cjqzI" - }, - { - "_id": "THrZ1zvzJTdJ0413", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!QudriM5XZhEC7D6v.THrZ1zvzJTdJ0413" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 25, - "value": 50 - }, - "defense": { - "mod": 1 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:8, #1B18", - "foeFactor": 10, - "creatureType": "humanoid", - "sizeCategory": "large", - "experiencePoints": 121, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Oger", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/ogre*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346647, - "modifiedTime": 1740227862877, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!QudriM5XZhEC7D6v" -} diff --git a/packs/creatures/Ork_m9uwTf6binQeuVAb.json b/packs/creatures/Ork_m9uwTf6binQeuVAb.json deleted file mode 100644 index 708c437e..00000000 --- a/packs/creatures/Ork_m9uwTf6binQeuVAb.json +++ /dev/null @@ -1,333 +0,0 @@ -{ - "_id": "m9uwTf6binQeuVAb", - "name": "Ork", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/orc-blue.png", - "items": [ - { - "_id": "YozSzwoqjCJcs2NR", - "name": "Speer", - "type": "weapon", - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q" - } - }, - "img": "icons/weapons/polearms/spear-hooked-simple.webp", - "effects": [], - "folder": null, - "system": { - "description": "

Zerbricht bei Schießen-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.oWvJfxEBr83QxO9Q", - "duplicateSource": null - }, - "_key": "!actors.items!m9uwTf6binQeuVAb.YozSzwoqjCJcs2NR" - }, - { - "_id": "KlJJytTJybNcvjU3", - "name": "Lederpanzer", - "type": "armor", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.equipment.60MhQmXh0c2cT5nx" - } - }, - "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.equipment.60MhQmXh0c2cT5nx", - "duplicateSource": null - }, - "_key": "!actors.items!m9uwTf6binQeuVAb.KlJJytTJybNcvjU3" - }, - { - "_id": "rL8UVTzpLdTVqd9W", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!m9uwTf6binQeuVAb.rL8UVTzpLdTVqd9W" - }, - { - "_id": "0x83GMWxMjm02G5r", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!m9uwTf6binQeuVAb.0x83GMWxMjm02G5r" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 23 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 1 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:14, #1B16", - "foeFactor": 2, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 63, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Ork", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/orc*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346888, - "modifiedTime": 1740227862903, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!m9uwTf6binQeuVAb" -} diff --git a/packs/creatures/Pferd_asPZBajREGsJYoht.json b/packs/creatures/Pferd_asPZBajREGsJYoht.json deleted file mode 100644 index 35503e95..00000000 --- a/packs/creatures/Pferd_asPZBajREGsJYoht.json +++ /dev/null @@ -1,258 +0,0 @@ -{ - "_id": "asPZBajREGsJYoht", - "name": "Pferd", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/horse-white.png", - "items": [ - { - "_id": "fEZBZH6sYKbblf6g", - "name": "Huf, in Notwehr", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!asPZBajREGsJYoht.fEZBZH6sYKbblf6g" - }, - { - "_id": "zsouNfDc7ZOepbeR", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!asPZBajREGsJYoht.zsouNfDc7ZOepbeR" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 7, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 44, - "value": 66 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 101, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Pferd", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/horse*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346777, - "modifiedTime": 1740227862891, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!asPZBajREGsJYoht" -} diff --git a/packs/creatures/Pony_HgfrjXKUApOXvkUX.json b/packs/creatures/Pony_HgfrjXKUApOXvkUX.json deleted file mode 100644 index 3f0ff322..00000000 --- a/packs/creatures/Pony_HgfrjXKUApOXvkUX.json +++ /dev/null @@ -1,258 +0,0 @@ -{ - "_id": "HgfrjXKUApOXvkUX", - "name": "Pony", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/horse-brown.png", - "items": [ - { - "_id": "jpyXagx6Gqji5I09", - "name": "Huf, in Notwehr", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!HgfrjXKUApOXvkUX.jpyXagx6Gqji5I09" - }, - { - "_id": "7I2yvv1ctfP1BND7", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!HgfrjXKUApOXvkUX.7I2yvv1ctfP1BND7" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 42, - "value": 63 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 3, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 92, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Pony", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/horse*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346482, - "modifiedTime": 1740227862865, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!HgfrjXKUApOXvkUX" -} diff --git a/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json b/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json deleted file mode 100644 index 2e65224d..00000000 --- a/packs/creatures/Ratte_lZgvjMSqh5FuA1JK.json +++ /dev/null @@ -1,322 +0,0 @@ -{ - "_id": "lZgvjMSqh5FuA1JK", - "name": "Ratte", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/rat-brown-2.png", - "items": [ - { - "_id": "CtIA409ycFJcoNdq", - "name": "Spitze Zähne", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!lZgvjMSqh5FuA1JK.CtIA409ycFJcoNdq" - }, - { - "_id": "LNrmUjNRidA3PoHN", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!lZgvjMSqh5FuA1JK.LNrmUjNRidA3PoHN" - }, - { - "_id": "XcMeQEVeni94uQWk", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!lZgvjMSqh5FuA1JK.XcMeQEVeni94uQWk" - }, - { - "_id": "bvbaa9gsGyGocDA0", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", - "duplicateSource": null - }, - "_key": "!actors.items!lZgvjMSqh5FuA1JK.bvbaa9gsGyGocDA0" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 2, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 1, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 3 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "tiny", - "experiencePoints": 26, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Ratte", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/rat*.png", - "scaleX": 0.5, - "scaleY": 0.5, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346882, - "modifiedTime": 1740227862901, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!lZgvjMSqh5FuA1JK" -} diff --git a/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json b/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json deleted file mode 100644 index 7faef311..00000000 --- a/packs/creatures/Raubkatze_PVuNoFILDAHpqGsa.json +++ /dev/null @@ -1,392 +0,0 @@ -{ - "_id": "PVuNoFILDAHpqGsa", - "name": "Raubkatze", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/feline-predator-panther.png", - "items": [ - { - "_id": "LZJzGcDrnXdAEPkP", - "name": "Pranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!PVuNoFILDAHpqGsa.LZJzGcDrnXdAEPkP" - }, - { - "_id": "8Um85s0Ayigqse3B", - "name": "Biss", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!PVuNoFILDAHpqGsa.8Um85s0Ayigqse3B" - }, - { - "_id": "J1JDirHXfexacI9G", - "name": "Fell", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!PVuNoFILDAHpqGsa.J1JDirHXfexacI9G" - }, - { - "_id": "h9DFDddV6zHABNNR", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.oDM4ImE7PrIgn22E", - "duplicateSource": null - }, - "_key": "!actors.items!PVuNoFILDAHpqGsa.h9DFDddV6zHABNNR" - }, - { - "_id": "X8PG6Z929me6Fewo", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!PVuNoFILDAHpqGsa.X8PG6Z929me6Fewo" - }, - { - "_id": "vyDe0soNx67ZePNM", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!PVuNoFILDAHpqGsa.vyDe0soNx67ZePNM" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 9, - "value": 27 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:18)", - "foeFactor": 2, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 84, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Raubkatze", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/feline-predator*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346633, - "modifiedTime": 1740227862875, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!PVuNoFILDAHpqGsa" -} diff --git a/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json b/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json deleted file mode 100644 index 94a7a653..00000000 --- a/packs/creatures/Reitkeiler_GWNFUkgxocfKchIQ.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "GWNFUkgxocfKchIQ", - "name": "Reitkeiler", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/boar-brown-1.png", - "items": [ - { - "_id": "nUiNfU3pFgeeoRNR", - "name": "Hauer", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GWNFUkgxocfKchIQ.nUiNfU3pFgeeoRNR" - }, - { - "_id": "pSQjVkwbjngPoEPZ", - "name": "Dicke Borstenhaut", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!GWNFUkgxocfKchIQ.pSQjVkwbjngPoEPZ" - }, - { - "_id": "VfFAFdeQ7jhTlAz1", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!GWNFUkgxocfKchIQ.VfFAFdeQ7jhTlAz1" - }, - { - "_id": "MMjbCu5tz7v52LOJ", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!GWNFUkgxocfKchIQ.MMjbCu5tz7v52LOJ" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 12, - "value": 35 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:10)", - "foeFactor": 5, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 76, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Reitkeiler", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/boar*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346399, - "modifiedTime": 1740227862862, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!GWNFUkgxocfKchIQ" -} diff --git a/packs/creatures/Riese_rULL0cHbyACJsHDC.json b/packs/creatures/Riese_rULL0cHbyACJsHDC.json deleted file mode 100644 index d450cff4..00000000 --- a/packs/creatures/Riese_rULL0cHbyACJsHDC.json +++ /dev/null @@ -1,360 +0,0 @@ -{ - "_id": "rULL0cHbyACJsHDC", - "name": "Riese", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "ndjWMSfPfmPY9AUY", - "name": "Baumstamm", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!rULL0cHbyACJsHDC.ndjWMSfPfmPY9AUY" - }, - { - "_id": "p8OAUiSFSEBq94mf", - "name": "Geworfener Fels", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!rULL0cHbyACJsHDC.p8OAUiSFSEBq94mf" - }, - { - "_id": "xbi9dJjtVxeUoLK4", - "name": "Felle", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!rULL0cHbyACJsHDC.xbi9dJjtVxeUoLK4" - }, - { - "_id": "eTfSg6U4xZdJN7ec", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", - "duplicateSource": null - }, - "_key": "!actors.items!rULL0cHbyACJsHDC.eTfSg6U4xZdJN7ec" - }, - { - "_id": "nFyr7vCp12na7Z3c", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.02QMKm8MHzz8yAxL", - "duplicateSource": null - }, - "_key": "!actors.items!rULL0cHbyACJsHDC.nFyr7vCp12na7Z3c" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 27, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 7, - "mod": 0 - }, - "constitution": { - "base": 7, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 176, - "value": 220 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": -3 - }, - "movement": { - "mod": 4 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 3 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:20)", - "foeFactor": 30, - "creatureType": "humanoid", - "sizeCategory": "huge", - "experiencePoints": 387, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Riese", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346989, - "modifiedTime": 1740227862911, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!rULL0cHbyACJsHDC" -} diff --git a/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json b/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json deleted file mode 100644 index 55dec271..00000000 --- a/packs/creatures/Riesenechse_QWC9LW1g4aMUHZNc.json +++ /dev/null @@ -1,421 +0,0 @@ -{ - "_id": "QWC9LW1g4aMUHZNc", - "name": "Riesenechse", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/giant-lizard-olive.png", - "items": [ - { - "_id": "0EPSA2vb34Nilg91", - "name": "Grausamer Biss", - "type": "weapon", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!QWC9LW1g4aMUHZNc.0EPSA2vb34Nilg91" - }, - { - "_id": "2C5NsY0F4qndyWGS", - "name": "Schuppenpanzer", - "type": "armor", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!QWC9LW1g4aMUHZNc.2C5NsY0F4qndyWGS" - }, - { - "_id": "I5qUZBkW7JLwuCze", - "name": "Kletterläufer", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N" - } - }, - "system": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.Kbb8qlLeVahzxy5N", - "duplicateSource": null - }, - "_key": "!actors.items!QWC9LW1g4aMUHZNc.I5qUZBkW7JLwuCze" - }, - { - "_id": "xtiIwy6EYYRPkXN9", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!QWC9LW1g4aMUHZNc.xtiIwy6EYYRPkXN9" - }, - { - "_id": "OBlOP38tzoxwhNuj", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!QWC9LW1g4aMUHZNc.OBlOP38tzoxwhNuj" - }, - { - "_id": "WiyqJV69YblM42Ot", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!QWC9LW1g4aMUHZNc.WiyqJV69YblM42Ot" - }, - { - "_id": "T8SibpTZqhohwVkB", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p" - } - }, - "system": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.fY7yRpxhQTIV5G2p", - "duplicateSource": null - }, - "_key": "!actors.items!QWC9LW1g4aMUHZNc.T8SibpTZqhohwVkB" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 14, - "mod": 0 - }, - "agility": { - "base": 5, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 179, - "value": 218 - }, - "defense": { - "mod": -10 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 4.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:16)", - "foeFactor": 25, - "creatureType": "humanoid", - "sizeCategory": "huge", - "experiencePoints": 316, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "name": "Riesenechse", - "displayName": 20, - "actorLink": false, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "flags": {}, - "randomImg": true, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/giant-lizard*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346636, - "modifiedTime": 1740227862875, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!QWC9LW1g4aMUHZNc" -} diff --git a/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json b/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json deleted file mode 100644 index f3c061a7..00000000 --- a/packs/creatures/Riesenkrake_Z7Dt5epXbuKn20US.json +++ /dev/null @@ -1,354 +0,0 @@ -{ - "_id": "Z7Dt5epXbuKn20US", - "name": "Riesenkrake", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "uhUCjZsudH4tikXb", - "name": "Fangarme", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!Z7Dt5epXbuKn20US.uhUCjZsudH4tikXb" - }, - { - "_id": "dm1gTdRLMsRP3dYJ", - "name": "Mehrere Angriffe (+5)", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann mit seinen insgesamt sechs Fangarmen 5 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YvkRgHyCkwhn3uzg", - "duplicateSource": null - }, - "_key": "!actors.items!Z7Dt5epXbuKn20US.dm1gTdRLMsRP3dYJ" - }, - { - "_id": "Pk39V01Z4NKJ07oI", - "name": "Mehrere Angriffglieder (+5)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "system": { - "description": "

Greift mit insgesamt 6 Fangarmen an, die Gegner bei einem erfolgreichen Schlagen-Immersieg btrennen/zertrümmern, wodurch die Angriffsanzahl sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.e6VuJIL8ocXQDQ2V", - "duplicateSource": null - }, - "_key": "!actors.items!Z7Dt5epXbuKn20US.Pk39V01Z4NKJ07oI" - }, - { - "_id": "JQuu3LzkV71R3eHr", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", - "duplicateSource": null - }, - "_key": "!actors.items!Z7Dt5epXbuKn20US.JQuu3LzkV71R3eHr" - }, - { - "_id": "E5gJyppsFCHmEQLT", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", - "duplicateSource": null - }, - "_key": "!actors.items!Z7Dt5epXbuKn20US.E5gJyppsFCHmEQLT" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 22, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 8, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 234, - "value": 270 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 4 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 2A:18)", - "foeFactor": 35, - "creatureType": "animal", - "sizeCategory": "huge", - "experiencePoints": 397, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Riesenkrake", - "displayName": 20, - "width": 3, - "height": 3, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346741, - "modifiedTime": 1740227862887, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!Z7Dt5epXbuKn20US" -} diff --git a/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json b/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json deleted file mode 100644 index 58324987..00000000 --- a/packs/creatures/Riesenratte_2MFCw32xgaic6YGx.json +++ /dev/null @@ -1,322 +0,0 @@ -{ - "_id": "2MFCw32xgaic6YGx", - "name": "Riesenratte", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/giant-rat-gray.png", - "items": [ - { - "_id": "dVCq0990d0o158yt", - "name": "Scharfe Zähne", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!2MFCw32xgaic6YGx.dVCq0990d0o158yt" - }, - { - "_id": "BQoKmcUMRg4cmoXq", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!2MFCw32xgaic6YGx.BQoKmcUMRg4cmoXq" - }, - { - "_id": "xMPWpgWRrjacTpYQ", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!2MFCw32xgaic6YGx.xMPWpgWRrjacTpYQ" - }, - { - "_id": "EcGjrMRAXOOGHGY1", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", - "duplicateSource": null - }, - "_key": "!actors.items!2MFCw32xgaic6YGx.EcGjrMRAXOOGHGY1" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 4, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -4, - "value": 11 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 41, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Riesenratte", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/giant-rat*.png", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346177, - "modifiedTime": 1740227862840, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!2MFCw32xgaic6YGx" -} diff --git a/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json b/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json deleted file mode 100644 index 5056a106..00000000 --- a/packs/creatures/Riesenschlange_wBgO5Hc4oHKfRN6f.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "wBgO5Hc4oHKfRN6f", - "name": "Riesenschlange", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/giant-snake-brown.png", - "items": [ - { - "_id": "ndAkzrcRKXbgY9rR", - "name": "Großer Biss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!wBgO5Hc4oHKfRN6f.ndAkzrcRKXbgY9rR" - }, - { - "_id": "vyuWg112c2jjiFgN", - "name": "Schuppenpanzer", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!wBgO5Hc4oHKfRN6f.vyuWg112c2jjiFgN" - }, - { - "_id": "RX89OLfp965CuRDs", - "name": "Gift (1)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.TY1ZV1YsyaFtfX7U" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.TY1ZV1YsyaFtfX7U", - "duplicateSource": null - }, - "_key": "!actors.items!wBgO5Hc4oHKfRN6f.RX89OLfp965CuRDs" - }, - { - "_id": "2QXz0iopabnNNlQA", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", - "duplicateSource": null - }, - "_key": "!actors.items!wBgO5Hc4oHKfRN6f.2QXz0iopabnNNlQA" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 3, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 44, - "value": 66 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:18)", - "foeFactor": 8, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 143, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Riesenschlange", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/giant-snake*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995347214, - "modifiedTime": 1740227862921, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!wBgO5Hc4oHKfRN6f" -} diff --git a/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json b/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json deleted file mode 100644 index 5d4e2aff..00000000 --- a/packs/creatures/Rostassel_WYvb8G0z5GuNi7kO.json +++ /dev/null @@ -1,421 +0,0 @@ -{ - "_id": "WYvb8G0z5GuNi7kO", - "name": "Rostassel", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/rust-bug.png", - "items": [ - { - "_id": "FQMPNxKTTpOynbsK", - "name": "Tentakelfühler", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!WYvb8G0z5GuNi7kO.FQMPNxKTTpOynbsK" - }, - { - "_id": "b1YoPObYAlp0qgLo", - "name": "Chitinpanzer", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 3, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!WYvb8G0z5GuNi7kO.b1YoPObYAlp0qgLo" - }, - { - "_id": "oT9c8PFOqW9NjOKA", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!WYvb8G0z5GuNi7kO.oT9c8PFOqW9NjOKA" - }, - { - "_id": "OgwADTLcESeGWMih", - "name": "Mehrere Angriffe (+3)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann mit seinen insgesamt vier Tentakelfühlern 3 zusätzliche Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.LM5xia0xVIlhQsLG", - "duplicateSource": null - }, - "_key": "!actors.items!WYvb8G0z5GuNi7kO.OgwADTLcESeGWMih" - }, - { - "_id": "vZZ50RNjZbkNI0Ha", - "name": "Mehrere Angriffglieder (+3)", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.8HmrA97ZqN7nEYgm" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "system": { - "description": "

Greift mit insgesamt vier Tentakelfühlern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen/zertrümmern, wodurch die Angriffsanzahl sinkt

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.8HmrA97ZqN7nEYgm", - "duplicateSource": null - }, - "_key": "!actors.items!WYvb8G0z5GuNi7kO.vZZ50RNjZbkNI0Ha" - }, - { - "_id": "iuxp4uQYS1XdH0gG", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!WYvb8G0z5GuNi7kO.iuxp4uQYS1XdH0gG" - }, - { - "_id": "pBC4SwfIsoVZ5Org", - "name": "Rost", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.oPTuLvZOEsXnRPed" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", - "effects": [], - "folder": null, - "system": { - "description": "

Jeder Treffer der Tentakelfühler reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Rostassel treffen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.oPTuLvZOEsXnRPed", - "duplicateSource": null - }, - "_key": "!actors.items!WYvb8G0z5GuNi7kO.pBC4SwfIsoVZ5Org" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 11, - "value": 33 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:6)", - "foeFactor": 8, - "creatureType": "animal", - "sizeCategory": "normal", - "experiencePoints": 111, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Rostassel", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/rust-bug.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346701, - "modifiedTime": 1740227862884, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!WYvb8G0z5GuNi7kO" -} diff --git a/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json b/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json deleted file mode 100644 index 1e21b984..00000000 --- a/packs/creatures/Schatten_T9YRYe0vnR4Qg4UM.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "_id": "T9YRYe0vnR4Qg4UM", - "name": "Schatten", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/shadow.png", - "items": [ - { - "_id": "yFI8eLZ0z1PSjGYH", - "name": "Geisterklaue", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!T9YRYe0vnR4Qg4UM.yFI8eLZ0z1PSjGYH" - }, - { - "_id": "PxhF7w8cBdqE2pBa", - "name": "Körperlos", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!T9YRYe0vnR4Qg4UM.PxhF7w8cBdqE2pBa" - }, - { - "_id": "gfZuHfJiCyZUskwn", - "name": "Alterung (1 Jahr pro Treffer)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.e9F812racwKeZPgR" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", - "experiencePoints": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.e9F812racwKeZPgR", - "duplicateSource": null - }, - "_key": "!actors.items!T9YRYe0vnR4Qg4UM.gfZuHfJiCyZUskwn" - }, - { - "_id": "po7mBrqpDWKlXbtu", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!T9YRYe0vnR4Qg4UM.po7mBrqpDWKlXbtu" - }, - { - "_id": "LAAz2aBZoHatDHqJ", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!T9YRYe0vnR4Qg4UM.LAAz2aBZoHatDHqJ" - }, - { - "_id": "6eLzanLV8RG4p2Da", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!T9YRYe0vnR4Qg4UM.6eLzanLV8RG4p2Da" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 11, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 25 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 14, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 126, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Schatten", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/shadow.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346694, - "modifiedTime": 1740227862883, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!T9YRYe0vnR4Qg4UM" -} diff --git a/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json b/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json deleted file mode 100644 index d0c21adb..00000000 --- a/packs/creatures/Schimmerross_iIvMTzBji28VVQ0v.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "_id": "iIvMTzBji28VVQ0v", - "name": "Schimmerross", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "NB8EGOwqOiFbSwRT", - "name": "Huf, in Notwehr", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!iIvMTzBji28VVQ0v.NB8EGOwqOiFbSwRT" - }, - { - "_id": "EpT6dAyNtbw1l4TN", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!iIvMTzBji28VVQ0v.EpT6dAyNtbw1l4TN" - }, - { - "_id": "Di77ms6LCDcCtam5", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!iIvMTzBji28VVQ0v.Di77ms6LCDcCtam5" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 9, - "mod": 0 - }, - "mobility": { - "base": 12, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 6, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 44, - "value": 66 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 106, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Schimmerross", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346860, - "modifiedTime": 1740227862899, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!iIvMTzBji28VVQ0v" -} diff --git a/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json b/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json deleted file mode 100644 index ac53a12f..00000000 --- a/packs/creatures/Schlachtross_6YqxYCWfWVm6c8qM.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "6YqxYCWfWVm6c8qM", - "name": "Schlachtross", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/war-horse.png", - "items": [ - { - "_id": "7rFkQfTzgSOYmhNP", - "name": "Huf", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!6YqxYCWfWVm6c8qM.7rFkQfTzgSOYmhNP" - }, - { - "_id": "DzisICBhJKo3U7PX", - "name": "Rammen", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!6YqxYCWfWVm6c8qM.DzisICBhJKo3U7PX" - }, - { - "_id": "Mx15GW5ApV4HImpy", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!6YqxYCWfWVm6c8qM.Mx15GW5ApV4HImpy" - }, - { - "_id": "VQpngugF60q18Gpp", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!6YqxYCWfWVm6c8qM.VQpngugF60q18Gpp" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 12, - "mod": 0 - }, - "mobility": { - "base": 10, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 50, - "value": 75 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 3 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "animal", - "sizeCategory": "large", - "experiencePoints": 121, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Schlachtross", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/war-horse.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346236, - "modifiedTime": 1740227862844, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!6YqxYCWfWVm6c8qM" -} diff --git a/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json b/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json deleted file mode 100644 index d2e7ffd7..00000000 --- a/packs/creatures/Schlingwurzelbusch_XxrCtx56f0njVodK.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "_id": "XxrCtx56f0njVodK", - "name": "Schlingwurzelbusch", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "eOBJ9tJLFizjQW0e", - "name": "Wurzelhiebe", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!XxrCtx56f0njVodK.eOBJ9tJLFizjQW0e" - }, - { - "_id": "23MVIoRbK0X5AudH", - "name": "Gehölz", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!XxrCtx56f0njVodK.23MVIoRbK0X5AudH" - }, - { - "_id": "3YSmdA5G9MS2g4Dn", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!XxrCtx56f0njVodK.3YSmdA5G9MS2g4Dn" - }, - { - "_id": "0QUScCjMSupBxEo4", - "name": "Mehrere Angriffe (+4)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann 4 zusätzliche Hiebe mit seinen unzähligen Wurzeln in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.1JDyMkVOlho7IuiN", - "duplicateSource": null - }, - "_key": "!actors.items!XxrCtx56f0njVodK.0QUScCjMSupBxEo4" - }, - { - "_id": "uoE0EQZy2aEQGJWp", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!XxrCtx56f0njVodK.uoE0EQZy2aEQGJWp" - }, - { - "_id": "SMDvuSaB2M06xcg5", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", - "duplicateSource": null - }, - "_key": "!actors.items!XxrCtx56f0njVodK.SMDvuSaB2M06xcg5" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 10, - "value": 30 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Lediglich Brennholz", - "foeFactor": 7, - "creatureType": "plantBeing", - "sizeCategory": "normal", - "experiencePoints": 122, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Schlingwurzelbusch", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346736, - "modifiedTime": 1740227862886, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!XxrCtx56f0njVodK" -} diff --git a/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json b/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json deleted file mode 100644 index 20c77fca..00000000 --- a/packs/creatures/Schwarm_ZZEBR9R04TlNXU5q.json +++ /dev/null @@ -1,255 +0,0 @@ -{ - "_id": "ZZEBR9R04TlNXU5q", - "name": "Schwarm", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "2Da0MbWQ8gy1WXBI", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!ZZEBR9R04TlNXU5q.2Da0MbWQ8gy1WXBI" - }, - { - "_id": "pII9BR3ndtlMaL4l", - "name": "Schwarm", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.rPbbTLUtSXZpdFjp" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl / 10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.rPbbTLUtSXZpdFjp", - "duplicateSource": null - }, - "_key": "!actors.items!ZZEBR9R04TlNXU5q.pII9BR3ndtlMaL4l" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 0, - "mod": 0 - }, - "mobility": { - "base": 0, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -10, - "value": 0 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 8 - }, - "movement": { - "mod": 6.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 5, - "creatureType": "animal", - "sizeCategory": "small", - "experiencePoints": 68, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Schwarm", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346763, - "modifiedTime": 1740227862889, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!ZZEBR9R04TlNXU5q" -} diff --git a/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json b/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json deleted file mode 100644 index 246e6c96..00000000 --- a/packs/creatures/Skelett_Rvu16XzEjizdqNsu.json +++ /dev/null @@ -1,290 +0,0 @@ -{ - "_id": "Rvu16XzEjizdqNsu", - "name": "Skelett", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/skeleton-green.png", - "items": [ - { - "_id": "PhvbJ2VSw3ivWS3F", - "name": "Knochenklaue", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!Rvu16XzEjizdqNsu.PhvbJ2VSw3ivWS3F" - }, - { - "_id": "jmoVrv9FCX28B4PJ", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!Rvu16XzEjizdqNsu.jmoVrv9FCX28B4PJ" - }, - { - "_id": "e5PbQLkYj3kldXil", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!Rvu16XzEjizdqNsu.e5PbQLkYj3kldXil" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 10, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 22 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 4, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 72, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Skelett", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/skeleton*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346657, - "modifiedTime": 1740227862879, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!Rvu16XzEjizdqNsu" -} diff --git a/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json b/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json deleted file mode 100644 index d41a8f34..00000000 --- a/packs/creatures/Tentakelhirn_dFL9UUXHq9heme4T.json +++ /dev/null @@ -1,358 +0,0 @@ -{ - "_id": "dFL9UUXHq9heme4T", - "name": "Tentakelhirn", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "DuBcMQTb1e7mIe79", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 100000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!dFL9UUXHq9heme4T.DuBcMQTb1e7mIe79" - }, - { - "_id": "z80WCPwmoMsdzYWD", - "name": "Schweben", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.05D4DdnbcQFoIllF", - "duplicateSource": null - }, - "_key": "!actors.items!dFL9UUXHq9heme4T.z80WCPwmoMsdzYWD" - }, - { - "_id": "8lyV8jx9ZVqPA4kF", - "name": "Werteverlust (GEI)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.m52MTRs1GMXScTki" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [], - "folder": null, - "system": { - "description": "

Pro schadensverursachenden Treffer mit dem Gedankenzehrerstrahl-Zauber wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.m52MTRs1GMXScTki", - "duplicateSource": null - }, - "_key": "!actors.items!dFL9UUXHq9heme4T.8lyV8jx9ZVqPA4kF" - }, - { - "_id": "3sJtgHHEkOmTNLEL", - "name": "Gedankenzehrerstrahl", - "type": "spell", - "sort": 400000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "

Nicht sichtbar; verursacht mental Schaden und führt zu Werteverlust

", - "equipped": true, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!dFL9UUXHq9heme4T.3sJtgHHEkOmTNLEL" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 4, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 2, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -4, - "value": 11 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 10 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 7, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 89, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Tentakelhirn", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346817, - "modifiedTime": 1740227862895, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!dFL9UUXHq9heme4T" -} diff --git a/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json b/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json deleted file mode 100644 index c4148e5d..00000000 --- a/packs/creatures/Teufelchen_III_22pkyKnZoRLG0nnY.json +++ /dev/null @@ -1,273 +0,0 @@ -{ - "_id": "22pkyKnZoRLG0nnY", - "name": "Teufelchen III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "W2e5m1533YiEPsdg", - "name": "Feuerstrahl", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray-small.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.spells.kudkdrpMU0C83vM7" - } - }, - "system": { - "description": "

Der Zauberwirker schießt einen Feuerstrahl auf einen Feind, dessen Schaden dem Probenergebnis entspricht.

", - "equipped": true, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 1, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.spells.kudkdrpMU0C83vM7", - "duplicateSource": null - }, - "_key": "!actors.items!22pkyKnZoRLG0nnY.W2e5m1533YiEPsdg" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 4, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 3, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 6, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -7, - "value": 7 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "", - "foeFactor": 4, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 44, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "name": "Teufelchen I", - "displayName": 0, - "actorLink": false, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "disposition": -1, - "displayBars": 0, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "flags": { - "darkness-dependent-vision": { - "dimVisionDarknessMin": null, - "dimVisionDarknessMax": null, - "brightVisionDarknessMin": null, - "brightVisionDarknessMax": null - } - }, - "randomImg": false, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346173, - "modifiedTime": 1740227862840, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!22pkyKnZoRLG0nnY" -} diff --git a/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json b/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json deleted file mode 100644 index 2273130f..00000000 --- a/packs/creatures/Teufelchen_II_SxbO1iTrXYGbdMoC.json +++ /dev/null @@ -1,197 +0,0 @@ -{ - "_id": "SxbO1iTrXYGbdMoC", - "name": "Teufelchen II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 5, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -11, - "value": 11 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "", - "foeFactor": 5, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 48, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "name": "Teufelchen I", - "displayName": 0, - "actorLink": false, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "disposition": -1, - "displayBars": 0, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "flags": { - "darkness-dependent-vision": { - "dimVisionDarknessMin": null, - "dimVisionDarknessMax": null, - "brightVisionDarknessMin": null, - "brightVisionDarknessMax": null - } - }, - "randomImg": false, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346686, - "modifiedTime": 1740227862882, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!SxbO1iTrXYGbdMoC" -} diff --git a/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json b/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json deleted file mode 100644 index 328580b8..00000000 --- a/packs/creatures/Teufelchen_I_aqbcBjeCJUHJ5uVj.json +++ /dev/null @@ -1,266 +0,0 @@ -{ - "_id": "aqbcBjeCJUHJ5uVj", - "name": "Teufelchen I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "L9utJ9BJSLkYbUjN", - "name": "Fliegen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!aqbcBjeCJUHJ5uVj.L9utJ9BJSLkYbUjN" - }, - { - "_id": "OaZjNMhyCyxRKA8C", - "name": "Krallen", - "type": "weapon", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0, - "action": "create" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!aqbcBjeCJUHJ5uVj.OaZjNMhyCyxRKA8C" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 7, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 9 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "", - "foeFactor": 4, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 35, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "name": "Teufelchen I", - "displayName": 0, - "actorLink": false, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "disposition": -1, - "displayBars": 0, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "flags": { - "darkness-dependent-vision": { - "dimVisionDarknessMin": null, - "dimVisionDarknessMax": null, - "brightVisionDarknessMin": null, - "brightVisionDarknessMax": null - } - }, - "randomImg": false, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346774, - "modifiedTime": 1740227862890, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!aqbcBjeCJUHJ5uVj" -} diff --git a/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json b/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json deleted file mode 100644 index 91ebc5cf..00000000 --- a/packs/creatures/Todesfee_6KmAeL9lVxWXIeU6.json +++ /dev/null @@ -1,556 +0,0 @@ -{ - "_id": "6KmAeL9lVxWXIeU6", - "name": "Todesfee", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "0tHp37tNXFa9akK0", - "name": "Geisterklaue", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.0tHp37tNXFa9akK0" - }, - { - "_id": "quc1WJJwo4UMlkg3", - "name": "Körperlos", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.quc1WJJwo4UMlkg3" - }, - { - "_id": "U6mQ5sQwMjdLgUww", - "name": "Alterung (1 Jahr pro Schadenspunkt)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.mVs6A48mWnfV9hcL", - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.U6mQ5sQwMjdLgUww" - }, - { - "_id": "IolX9qsFGSxYN38o", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.3LGUHTPC3tbVC13X", - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.IolX9qsFGSxYN38o" - }, - { - "_id": "w1h6K90G0l0RXQy5", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.w1h6K90G0l0RXQy5" - }, - { - "_id": "eSMM4Zq5UPWN31iB", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.eSMM4Zq5UPWN31iB" - }, - { - "_id": "VHUCIwHGz93rL2db", - "name": "Nur durch Magie verletzbar", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.FCxjdPJ1L8EJd0IF", - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.VHUCIwHGz93rL2db" - }, - { - "_id": "vcdY5BrydMFLsnRU", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 900000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.vcdY5BrydMFLsnRU" - }, - { - "_id": "We3eGY2UjINy3lRZ", - "name": "Wehklagen", - "type": "spell", - "sort": 1000000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "

Jeder im Umkreis von 9 m um die Todesfee erleidet nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": true, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "9", - "unit": "meter" - }, - "duration": { - "value": "", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.We3eGY2UjINy3lRZ" - }, - { - "_id": "aTr4fC2AuCJ5PLGF", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "effects": [], - "folder": null, - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8" - } - }, - "system": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ZkgZiFI5xy8aevG8", - "duplicateSource": null - }, - "_key": "!actors.items!6KmAeL9lVxWXIeU6.aTr4fC2AuCJ5PLGF" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 10, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 3, - "mod": 0 - }, - "aura": { - "base": 9, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 35 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 23, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 284, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Todesfee", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346224, - "modifiedTime": 1740227862843, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!6KmAeL9lVxWXIeU6" -} diff --git a/packs/creatures/Troll_EItxqEiDUOmJdy4n.json b/packs/creatures/Troll_EItxqEiDUOmJdy4n.json deleted file mode 100644 index e87e939f..00000000 --- a/packs/creatures/Troll_EItxqEiDUOmJdy4n.json +++ /dev/null @@ -1,456 +0,0 @@ -{ - "_id": "EItxqEiDUOmJdy4n", - "name": "Troll", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/troll-blue.png", - "items": [ - { - "_id": "k4z8YIPc1sSdgAuf", - "name": "Massive Keule", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.k4z8YIPc1sSdgAuf" - }, - { - "_id": "SUbNCeLDrM29kOjI", - "name": "Geworfener Fels", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.SUbNCeLDrM29kOjI" - }, - { - "_id": "2t0pWjoVV6V1XL7m", - "name": "Warzenhaut", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.2t0pWjoVV6V1XL7m" - }, - { - "_id": "XBYL6p6Lh2di3cL0", - "name": "Anfällig (Licht)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.aOsmsf7jIK7hU9U8" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Lichtangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.aOsmsf7jIK7hU9U8", - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.XBYL6p6Lh2di3cL0" - }, - { - "_id": "ut3GaXn0lU6CJO2f", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.75iKq2PTrfyTw0s4", - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.ut3GaXn0lU6CJO2f" - }, - { - "_id": "wxRyDYdcYDvfRLsw", - "name": "Regeneration", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", - "effects": [], - "folder": null, - "system": { - "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.Mh6bLPD3N29ybeLq", - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.wxRyDYdcYDvfRLsw" - }, - { - "_id": "hutBK3nVQ2TZBivP", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "system": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.AjPsjbxcuNslQEuE", - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.hutBK3nVQ2TZBivP" - }, - { - "_id": "275bgVmTqYULPH3V", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!EItxqEiDUOmJdy4n.275bgVmTqYULPH3V" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 16, - "mod": 0 - }, - "mobility": { - "base": 6, - "mod": 0 - }, - "mind": { - "base": 2, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 4, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 1, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 30, - "value": 60 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 3 - }, - "movement": { - "mod": 1 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "#BW 1B16", - "foeFactor": 14, - "creatureType": "humanoid", - "sizeCategory": "large", - "experiencePoints": 202, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Troll", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/troll*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346327, - "modifiedTime": 1740227862855, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!EItxqEiDUOmJdy4n" -} diff --git a/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json b/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json deleted file mode 100644 index 171b71e7..00000000 --- a/packs/creatures/Unwolf_O2maANGDJHPLX8aE.json +++ /dev/null @@ -1,456 +0,0 @@ -{ - "_id": "O2maANGDJHPLX8aE", - "name": "Unwolf", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", - "items": [ - { - "_id": "9olbXmWVzPkmPhvu", - "name": "Biss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.9olbXmWVzPkmPhvu" - }, - { - "_id": "p3zhDhgstlj2JMxe", - "name": "Feuerodem", - "type": "weapon", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.p3zhDhgstlj2JMxe" - }, - { - "_id": "hcB5LcidhVSW5rI7", - "name": "Brennendes Fell", - "type": "armor", - "sort": 300000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.hcB5LcidhVSW5rI7" - }, - { - "_id": "MPb5ZrTIutJ291XD", - "name": "Anfällig (Wasser)", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.E5WqX3Em2HOAkP2e", - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.MPb5ZrTIutJ291XD" - }, - { - "_id": "fMULyKcCpn2tVMPO", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.fMULyKcCpn2tVMPO" - }, - { - "_id": "qLG2ZZPYGAbLzpBf", - "name": "Odem", - "type": "specialCreatureAbility", - "sort": 600000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.sDffbUUXg88Vn2Pq", - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.qLG2ZZPYGAbLzpBf" - }, - { - "_id": "4851TNs45Q3hSrU1", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 700000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.4851TNs45Q3hSrU1" - }, - { - "_id": "NXxoBj91nyeyBm4M", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 800000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!O2maANGDJHPLX8aE.NXxoBj91nyeyBm4M" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 2, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 12, - "value": 35 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:16)", - "foeFactor": 7, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 115, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Unwolf", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/nether-wolf.png", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346597, - "modifiedTime": 1740227862870, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!O2maANGDJHPLX8aE" -} diff --git a/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json b/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json deleted file mode 100644 index 008522ab..00000000 --- a/packs/creatures/Vampirfledermaus_lys4bJc7GL5f5ORp.json +++ /dev/null @@ -1,354 +0,0 @@ -{ - "_id": "lys4bJc7GL5f5ORp", - "name": "Vampirfledermaus", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", - "items": [ - { - "_id": "G08O3BP9HQ0mLjAQ", - "name": "Krallen", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!lys4bJc7GL5f5ORp.G08O3BP9HQ0mLjAQ" - }, - { - "_id": "hdTEWmE6saO2W7FI", - "name": "Sonar", - "type": "specialCreatureAbility", - "sort": 200000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.BtjiEmhGyje6YghP" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", - "effects": [], - "folder": null, - "system": { - "description": "

„Sieht“ per Sonar.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.BtjiEmhGyje6YghP", - "duplicateSource": null - }, - "_key": "!actors.items!lys4bJc7GL5f5ORp.hdTEWmE6saO2W7FI" - }, - { - "_id": "OfL0gyUOJjAOW3xA", - "name": "Fliegen", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.uX7wuGyUjOPpYR5W", - "duplicateSource": null - }, - "_key": "!actors.items!lys4bJc7GL5f5ORp.OfL0gyUOJjAOW3xA" - }, - { - "_id": "eH5vkCneA5sLHkmp", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!lys4bJc7GL5f5ORp.eH5vkCneA5sLHkmp" - }, - { - "_id": "1zKUlljm7MEYc3l8", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.eWuQlQYF3VmyR0kt", - "duplicateSource": null - }, - "_key": "!actors.items!lys4bJc7GL5f5ORp.1zKUlljm7MEYc3l8" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 5, - "mod": 0 - }, - "mobility": { - "base": 4, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 2, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -13, - "value": 4 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 1, - "creatureType": "animal", - "sizeCategory": "tiny", - "experiencePoints": 55, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Vampirfledermaus", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/vampire-bat.png", - "scaleX": 0.5, - "scaleY": 0.5, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346885, - "modifiedTime": 1740227862902, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!lys4bJc7GL5f5ORp" -} diff --git a/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json b/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json deleted file mode 100644 index df31a746..00000000 --- a/packs/creatures/Wasserelementar_III_dlrDPQ3is4NkzZJB.json +++ /dev/null @@ -1,325 +0,0 @@ -{ - "_id": "dlrDPQ3is4NkzZJB", - "name": "Wasserelementar III", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [ - { - "_id": "HPT4hAgQnGf1gbJR", - "name": "Wasserstrahl", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "

-1 WB / 2 Meter

", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!dlrDPQ3is4NkzZJB.HPT4hAgQnGf1gbJR" - }, - { - "_id": "OIKYSareGFhHJxAB", - "name": "Keine feste Gestalt", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 8, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!dlrDPQ3is4NkzZJB.OIKYSareGFhHJxAB" - }, - { - "_id": "NKUKD1KfNTpKZygj", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "system": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.XhAfEVVoSADC880C", - "duplicateSource": null - }, - "_key": "!actors.items!dlrDPQ3is4NkzZJB.NKUKD1KfNTpKZygj" - }, - { - "_id": "VCmj5YFjcDb1Slay", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.18PDF4gqWrIRWudN", - "duplicateSource": null - }, - "_key": "!actors.items!dlrDPQ3is4NkzZJB.VCmj5YFjcDb1Slay" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 15, - "mod": 0 - }, - "mobility": { - "base": 9, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 5, - "mod": 0 - }, - "constitution": { - "base": 6, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 4, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 31, - "value": 62 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 16, - "creatureType": "magicalEntity", - "sizeCategory": "large", - "experiencePoints": 133, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Wasserelementar III", - "displayName": 20, - "width": 2, - "height": 2, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 1, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346824, - "modifiedTime": 1740227862896, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!dlrDPQ3is4NkzZJB" -} diff --git a/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json b/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json deleted file mode 100644 index b9bb0cbc..00000000 --- a/packs/creatures/Wasserelementar_II_Xn7g2PB1rXvllwRi.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "Xn7g2PB1rXvllwRi", - "name": "Wasserelementar II", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 11, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 4, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 3, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 24 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 9, - "creatureType": "magicalEntity", - "sizeCategory": "normal", - "experiencePoints": 83, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Wasserelementar II", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346733, - "modifiedTime": 1740227862885, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!Xn7g2PB1rXvllwRi" -} diff --git a/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json b/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json deleted file mode 100644 index 466d8197..00000000 --- a/packs/creatures/Wasserelementar_I_ZJF6ieo8O0GXfgwz.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "_id": "ZJF6ieo8O0GXfgwz", - "name": "Wasserelementar I", - "type": "creature", - "img": "icons/svg/mystery-man.svg", - "items": [], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 6, - "mod": 0 - }, - "mobility": { - "base": 8, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 3, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 2, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": -9, - "value": 10 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "-", - "foeFactor": 3, - "creatureType": "magicalEntity", - "sizeCategory": "small", - "experiencePoints": 60, - "description": "

Alle Arten von Elementaren sind sichtbar, selbst Luftelementare, die als stürmische Wirbel Gestalt annehmen.

\n

Soll ein Elementar gegen ein Element vorgehen (beispielsweise ein Lagerfeuer löschen), wird mit Hilfe der Tabelle auf Seite 54 dieses einer Stufe (I-III) zugeordnet, welche mit 5 multipliziert wird, bevor auf das Ergebnis der aufgelistete Größenmodifikator aus der Tabelle angerechnet wird. Das endgültige Ergebnis stellt den Probenwert dar, gegen den das Elementar eine vergleichende Probe mit KÖR+ST würfeln muss, um das Element zu bezwingen. Das Elementar erhält +8 auf die Probe, wenn es sich um das eigene Element handelt bzw. -8, wenn es gegen das Element anfällig ist. Bei einem Mißerfolg der vergleichenden Probe erhält es abwehrlosen Schaden in Höhe der Ergebnisdistanz, kann es aber in der nächsten Runde erneut versuchen.

" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Wasserelementar I", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": false, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "icons/svg/mystery-man.svg", - "scaleX": 0.7, - "scaleY": 0.7, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346750, - "modifiedTime": 1740227862888, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!ZJF6ieo8O0GXfgwz" -} diff --git a/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json b/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json deleted file mode 100644 index 4a52681b..00000000 --- a/packs/creatures/Wolf_nZ9u6G3D3Q9oUXM8.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "_id": "nZ9u6G3D3Q9oUXM8", - "name": "Wolf", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/wolf-2.png", - "items": [ - { - "_id": "CbeR35FgiGzc1xtl", - "name": "Kräftiger Biss", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.CbeR35FgiGzc1xtl" - }, - { - "_id": "PZ9G8IZoP5eiPQEx", - "name": "Wolfspelz", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 1, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.PZ9G8IZoP5eiPQEx" - }, - { - "_id": "ZDZ9qHG17DjQWhSE", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.pJjtHe2Rd0YCa35n", - "duplicateSource": null - }, - "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.ZDZ9qHG17DjQWhSE" - }, - { - "_id": "nvwGqdzQA4Mf37Ci", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.nvwGqdzQA4Mf37Ci" - }, - { - "_id": "PQZ9xUYQyQHv8gEy", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.L0dxlrCY14bLyUdQ", - "duplicateSource": null - }, - "_key": "!actors.items!nZ9u6G3D3Q9oUXM8.PQZ9xUYQyQHv8gEy" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 8, - "mod": 0 - }, - "mobility": { - "base": 7, - "mod": 0 - }, - "mind": { - "base": 1, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 1, - "mod": 0 - }, - "agility": { - "base": 4, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 10, - "value": 29 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 2.5 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "Trophäe (BW 1A:10)", - "foeFactor": 2, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 81, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Wolf", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/wolf*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346909, - "modifiedTime": 1740227862907, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!nZ9u6G3D3Q9oUXM8" -} diff --git a/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json b/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json deleted file mode 100644 index fb1cbd87..00000000 --- a/packs/creatures/Zombie_rLUCyWfSBebB8cSC.json +++ /dev/null @@ -1,357 +0,0 @@ -{ - "_id": "rLUCyWfSBebB8cSC", - "name": "Zombie", - "type": "creature", - "img": "systems/ds4/assets/tokens/devin-night/zombie-female-red.png", - "items": [ - { - "_id": "NdunVanOXm7hG0rX", - "name": "Fäulnispranke", - "type": "weapon", - "sort": 100000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!rLUCyWfSBebB8cSC.NdunVanOXm7hG0rX" - }, - { - "_id": "ZjRYyfjMWlmtGUJ0", - "name": "Merkt nichts", - "type": "armor", - "sort": 200000, - "flags": {}, - "img": "icons/svg/mystery-man.svg", - "effects": [], - "folder": null, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": true, - "armorValue": 2, - "armorMaterialType": "natural", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors.items!rLUCyWfSBebB8cSC.ZjRYyfjMWlmtGUJ0" - }, - { - "_id": "HT4yv3mKyIcwaLKr", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "sort": 300000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.ziB3j0RSbWMtq1LX", - "duplicateSource": null - }, - "_key": "!actors.items!rLUCyWfSBebB8cSC.HT4yv3mKyIcwaLKr" - }, - { - "_id": "rCzeYlfYzbGpNQOe", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "sort": 400000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.YrmJo8dg4CF3lJdH", - "duplicateSource": null - }, - "_key": "!actors.items!rLUCyWfSBebB8cSC.rCzeYlfYzbGpNQOe" - }, - { - "_id": "Y2r3v6U8Grn619HR", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "sort": 500000, - "flags": { - "core": { - "sourceId": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG" - } - }, - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": null, - "systemVersion": null, - "coreVersion": "12.331", - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": "Compendium.ds4.special-creature-abilities.R3j1CjXJckUH0CBG", - "duplicateSource": null - }, - "_key": "!actors.items!rLUCyWfSBebB8cSC.Y2r3v6U8Grn619HR" - } - ], - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "attributes": { - "body": { - "base": 13, - "mod": 0 - }, - "mobility": { - "base": 3, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 3, - "mod": 0 - }, - "constitution": { - "base": 5, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 28 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - }, - "baseInfo": { - "loot": "BW 1B:4", - "foeFactor": 10, - "creatureType": "undead", - "sizeCategory": "normal", - "experiencePoints": 78, - "description": "" - } - }, - "ownership": { - "default": 0 - }, - "prototypeToken": { - "flags": {}, - "name": "Zombie", - "displayName": 20, - "width": 1, - "height": 1, - "lockRotation": false, - "rotation": 0, - "actorLink": false, - "disposition": -1, - "displayBars": 40, - "bar1": { - "attribute": "combatValues.hitPoints" - }, - "bar2": { - "attribute": null - }, - "randomImg": true, - "alpha": 1, - "light": { - "alpha": 0.5, - "angle": 360, - "bright": 0, - "coloration": 1, - "dim": 0, - "luminosity": 0.5, - "saturation": 0, - "contrast": 0, - "shadows": 0, - "animation": { - "speed": 5, - "intensity": 5, - "reverse": false, - "type": null - }, - "darkness": { - "min": 0, - "max": 1 - }, - "attenuation": 0.5, - "color": null, - "negative": false, - "priority": 0 - }, - "texture": { - "src": "systems/ds4/assets/tokens/devin-night/zombie*.png", - "scaleX": 1, - "scaleY": 1, - "offsetX": 0, - "offsetY": 0, - "rotation": 0, - "tint": "#ffffff", - "anchorX": 0.5, - "anchorY": 0.5, - "fit": "contain", - "alphaThreshold": 0.75 - }, - "sight": { - "angle": 360, - "enabled": false, - "range": 0, - "brightness": 1, - "visionMode": "basic", - "color": null, - "attenuation": 0.1, - "saturation": 0, - "contrast": 0 - }, - "detectionModes": [], - "appendNumber": false, - "prependAdjective": false, - "hexagonalShape": 0, - "occludable": { - "radius": 0 - }, - "ring": { - "enabled": false, - "colors": { - "ring": null, - "background": null - }, - "effects": 1, - "subject": { - "scale": 1, - "texture": null - } - } - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995346978, - "modifiedTime": 1740227862910, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!actors!rLUCyWfSBebB8cSC" -} diff --git a/packs/items/Abklingring_2XfoxOYNOTar9OAt.json b/packs/items/Abklingring_2XfoxOYNOTar9OAt.json deleted file mode 100644 index 00fe90a0..00000000 --- a/packs/items/Abklingring_2XfoxOYNOTar9OAt.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "2XfoxOYNOTar9OAt", - "name": "Abklingring", - "type": "equipment", - "img": "icons/equipment/finger/ring-band-engraved-scrolls-silver.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser einfache Abklingring senkt die Abklingzeit sämtlicher Zauber seines Trägers um 1.

", - "quantity": 1, - "price": 5252, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342685, - "modifiedTime": 1740227862964, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2XfoxOYNOTar9OAt" -} diff --git a/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json b/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json deleted file mode 100644 index 03e63149..00000000 --- a/packs/items/Abklingtrank_NZPp8EGEg1JmXdNd.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "NZPp8EGEg1JmXdNd", - "name": "Abklingtrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese meist hellblauen Tränke halbieren (abrunden) die Abklingzeit aller Zauber für die Dauer eines Kampfes.

", - "quantity": 1, - "price": 50, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342916, - "modifiedTime": 1740227862987, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NZPp8EGEg1JmXdNd" -} diff --git a/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json b/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json deleted file mode 100644 index 8a05cb05..00000000 --- a/packs/items/Aderschlitz_IHKj37AVchphOWGZ.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "IHKj37AVchphOWGZ", - "name": "Aderschlitz", - "type": "weapon", - "img": "icons/weapons/daggers/dagger-bone-barbed.webp", - "effects": [ - { - "_id": "VdOm09p88rltMp73", - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!IHKj37AVchphOWGZ.VdOm09p88rltMp73" - }, - { - "_id": "0pBScyXbTQudldbm", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Aderschlitzer", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Aderschlitzer +III", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!IHKj37AVchphOWGZ.0pBScyXbTQudldbm" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein magischer Dolch +2 mit Aderschlitzer +III.

\n

Initiative +1

", - "quantity": 1, - "price": 7252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342868, - "modifiedTime": 1740227862982, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!IHKj37AVchphOWGZ" -} diff --git a/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json b/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json deleted file mode 100644 index 96b37ae5..00000000 --- a/packs/items/Allheilungstrank_eRQ9LUNWbnAuuVX6.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "eRQ9LUNWbnAuuVX6", - "name": "Allheilungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-white.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Von milchiger Färbung, wirkt dieser Trank den Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} auf den Trinkenden (keine Probe nötig).

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343166, - "modifiedTime": 1740227863013, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eRQ9LUNWbnAuuVX6" -} diff --git a/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json b/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json deleted file mode 100644 index 879d6c9a..00000000 --- a/packs/items/Allsichttrank_Zl8ZkPrwHibRYWPh.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "Zl8ZkPrwHibRYWPh", - "name": "Allsichttrank", - "type": "loot", - "img": "icons/consumables/potions/potion-vial-corked-labeled-purple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Für W20 Minuten kann der Trinker Magie, Unsichtbares und Verborgenes (Fallen, Geheimtüren usw.) automatisch erkennen.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343084, - "modifiedTime": 1740227863005, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Zl8ZkPrwHibRYWPh" -} diff --git a/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json b/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json deleted file mode 100644 index 2f123649..00000000 --- a/packs/items/Alterungstrank_oeyhSfAQQPUbm10p.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "oeyhSfAQQPUbm10p", - "name": "Alterungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-vial-corked-purple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Trinkende wird augenblicklich W20 Jahre älter, Haare und Nägel wachsen entsprechend.

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343402, - "modifiedTime": 1740227863021, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oeyhSfAQQPUbm10p" -} diff --git a/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json b/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json deleted file mode 100644 index dafcde9e..00000000 --- a/packs/items/Andauernder_Heiltrank_9NUM3H7oTfrHhFpD.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "9NUM3H7oTfrHhFpD", - "name": "Andauernder Heiltrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-pink.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses oft purpurne Getränk heilt 2W20 Runden lang 1 Lebenskraft/Runde.

", - "quantity": 1, - "price": 20, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342771, - "modifiedTime": 1740227862970, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9NUM3H7oTfrHhFpD" -} diff --git a/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json b/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json deleted file mode 100644 index f875b1b8..00000000 --- a/packs/items/Angelhaken_und_Schnur_8YpZMXq9RhMCJOst.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "8YpZMXq9RhMCJOst", - "name": "Angelhaken und Schnur", - "type": "loot", - "img": "icons/tools/fishing/hook-barbed-steel-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342762, - "modifiedTime": 1740227862969, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8YpZMXq9RhMCJOst" -} diff --git a/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json b/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json deleted file mode 100644 index 9753bdb1..00000000 --- a/packs/items/Anh_nger_mit_heiligem_Symbol_dDhfIuRomMfy2kkP.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "dDhfIuRomMfy2kkP", - "name": "Anhänger mit heiligem Symbol", - "type": "equipment", - "img": "icons/equipment/neck/amulet-carved-stone-spiral.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343132, - "modifiedTime": 1740227863010, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dDhfIuRomMfy2kkP" -} diff --git a/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json b/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json deleted file mode 100644 index aa08e692..00000000 --- a/packs/items/Armreif_des_Bogners_VJftG703v7db0Cqf.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "VJftG703v7db0Cqf", - "name": "Armreif des Bogners", - "type": "equipment", - "img": "icons/equipment/wrist/bracer-belted-leather-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Verleiht auf Schießen-Proben mit Bögen einen Bonus von +2.

", - "quantity": 1, - "price": 1260, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343048, - "modifiedTime": 1740227863002, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VJftG703v7db0Cqf" -} diff --git a/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json b/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json deleted file mode 100644 index 8f1e96ff..00000000 --- a/packs/items/Atemfreitrank_2jgIyVHZYJroSUFY.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "2jgIyVHZYJroSUFY", - "name": "Atemfreitrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-bubbling-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Trinker dieses sprudelnden Trankes braucht für KÖR in Stunden nicht zu atmen.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342690, - "modifiedTime": 1740227862964, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2jgIyVHZYJroSUFY" -} diff --git a/packs/items/Axt__1_jsANSjzxRPKO3AyG.json b/packs/items/Axt__1_jsANSjzxRPKO3AyG.json deleted file mode 100644 index 67271663..00000000 --- a/packs/items/Axt__1_jsANSjzxRPKO3AyG.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "jsANSjzxRPKO3AyG", - "name": "Axt +1", - "type": "weapon", - "img": "icons/weapons/axes/shortaxe-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343311, - "modifiedTime": 1740227863018, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!jsANSjzxRPKO3AyG" -} diff --git a/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json b/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json deleted file mode 100644 index aa0ad807..00000000 --- a/packs/items/Axt__2_PTiDNLKc0l9rD7Kb.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "PTiDNLKc0l9rD7Kb", - "name": "Axt +2", - "type": "weapon", - "img": "icons/weapons/axes/shortaxe-hammer-steel.webp", - "effects": [ - { - "_id": "8wzWUlPPd92HiwJs", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!PTiDNLKc0l9rD7Kb.8wzWUlPPd92HiwJs" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342934, - "modifiedTime": 1740227862990, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PTiDNLKc0l9rD7Kb" -} diff --git a/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json b/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json deleted file mode 100644 index b5d7c4b3..00000000 --- a/packs/items/Axt__3_KyhMB9Jn8Vaxs4eF.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "KyhMB9Jn8Vaxs4eF", - "name": "Axt +3", - "type": "weapon", - "img": "icons/weapons/axes/shortaxe-yellow.webp", - "effects": [ - { - "_id": "yaR4SKssj8gYJB91", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!KyhMB9Jn8Vaxs4eF.yaR4SKssj8gYJB91" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342897, - "modifiedTime": 1740227862985, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KyhMB9Jn8Vaxs4eF" -} diff --git a/packs/items/Axt_eAd86Ylh42nHoCsx.json b/packs/items/Axt_eAd86Ylh42nHoCsx.json deleted file mode 100644 index 42b4bf6c..00000000 --- a/packs/items/Axt_eAd86Ylh42nHoCsx.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "eAd86Ylh42nHoCsx", - "name": "Axt", - "type": "weapon", - "img": "icons/weapons/axes/shortaxe-worn-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343149, - "modifiedTime": 1740227863012, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eAd86Ylh42nHoCsx" -} diff --git a/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json b/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json deleted file mode 100644 index ae2cf990..00000000 --- a/packs/items/B_renfalle_ec2Aft0epeFhdg9B.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "ec2Aft0epeFhdg9B", - "name": "Bärenfalle", - "type": "loot", - "img": "icons/environment/traps/trap-jaw-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Schlagen 30

", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343171, - "modifiedTime": 1740227863013, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ec2Aft0epeFhdg9B" -} diff --git a/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json b/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json deleted file mode 100644 index 95b48e3f..00000000 --- a/packs/items/B_renpanzer_e6LetXJHUY4ndz7B.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "_id": "e6LetXJHUY4ndz7B", - "name": "Bärenpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-steel.webp", - "effects": [ - { - "_id": "uOEN4xXL3IcebbJO", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!e6LetXJHUY4ndz7B.uOEN4xXL3IcebbJO" - }, - { - "_id": "dxmfRAe4ljoKdi0M", - "flags": {}, - "changes": [ - { - "key": "system.traits.strength.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Stärke +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!e6LetXJHUY4ndz7B.dxmfRAe4ljoKdi0M" - }, - { - "_id": "DItC97OWlR1nL79a", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Raserei", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Raserei +I", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!e6LetXJHUY4ndz7B.DItC97OWlR1nL79a" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese mit Bärenfellen und -klauen verzierte Plattenrüstung +2 gewährt ihrem Träger Raserei +I sowie +1 auf Stärke.

", - "quantity": 1, - "price": 8800, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343146, - "modifiedTime": 1740227863012, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!e6LetXJHUY4ndz7B" -} diff --git a/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json b/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json deleted file mode 100644 index c92f50e4..00000000 --- a/packs/items/Berserkertrank_nH1Vfhhx2jlGoQ6i.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "nH1Vfhhx2jlGoQ6i", - "name": "Berserkertrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-flask-fumes-purple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses von verrückten Orkschamanen entwickelte, dampfende Getränk heilt drei Kampfrunden jeweils W20 Lebenskraft. In der vierten Runde explodiert der Trinker und verursacht in 2 m Radius Schaden in Höhe der erwürfelten Heilung (Abwehr gilt).

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343339, - "modifiedTime": 1740227863020, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nH1Vfhhx2jlGoQ6i" -} diff --git a/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json b/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json deleted file mode 100644 index 4012d079..00000000 --- a/packs/items/Bih_nder_KOdzXkLHuNkCciAa.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "KOdzXkLHuNkCciAa", - "name": "Bihänder", - "type": "weapon", - "img": "icons/weapons/swords/greatsword-guard.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 10, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342893, - "modifiedTime": 1740227862985, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KOdzXkLHuNkCciAa" -} diff --git a/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json b/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json deleted file mode 100644 index 7a351640..00000000 --- a/packs/items/Bih_nder__1_2ydkhz5gDjxAiaYy.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "2ydkhz5gDjxAiaYy", - "name": "Bihänder +1", - "type": "weapon", - "img": "icons/weapons/swords/greatsword-crossguard-engraved-green.webp", - "effects": [ - { - "_id": "qdSiJ4l0AuTd68CB", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!2ydkhz5gDjxAiaYy.qdSiJ4l0AuTd68CB" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342694, - "modifiedTime": 1740227862964, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2ydkhz5gDjxAiaYy" -} diff --git a/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json b/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json deleted file mode 100644 index bc96336a..00000000 --- a/packs/items/Bih_nder__2_QmyAtIDJfnBZvZFg.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "QmyAtIDJfnBZvZFg", - "name": "Bihänder +2", - "type": "weapon", - "img": "icons/weapons/swords/greatsword-guard-jewel-green.webp", - "effects": [ - { - "_id": "0GrRl4XU2UrvbDxs", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!QmyAtIDJfnBZvZFg.0GrRl4XU2UrvbDxs" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -6 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342948, - "modifiedTime": 1740227862992, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QmyAtIDJfnBZvZFg" -} diff --git a/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json b/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json deleted file mode 100644 index 2238b32b..00000000 --- a/packs/items/Bih_nder__3_dIA53f3kvU9JgGvg.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "dIA53f3kvU9JgGvg", - "name": "Bihänder +3", - "type": "weapon", - "img": "icons/weapons/swords/greatsword-guard-gem-blue.webp", - "effects": [ - { - "_id": "DaKTtdhRO45QZuDJ", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "-2", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative -2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!dIA53f3kvU9JgGvg.DaKTtdhRO45QZuDJ" - }, - { - "_id": "n4mZBHWKSQLQcHHD", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!dIA53f3kvU9JgGvg.n4mZBHWKSQLQcHHD" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343135, - "modifiedTime": 1740227863010, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dIA53f3kvU9JgGvg" -} diff --git a/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json b/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json deleted file mode 100644 index e1957d79..00000000 --- a/packs/items/Blendlaterne_d3ixiQ3FrQndjz46.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "d3ixiQ3FrQndjz46", - "name": "Blendlaterne", - "type": "loot", - "img": "icons/sundries/lights/lantern-bullseye-signal-copper.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343123, - "modifiedTime": 1740227863009, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!d3ixiQ3FrQndjz46" -} diff --git a/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json b/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json deleted file mode 100644 index 84ca65da..00000000 --- a/packs/items/Blutr_stung_CQZtlL8zUdOVUVrU.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "_id": "CQZtlL8zUdOVUVrU", - "name": "Blutrüstung", - "type": "armor", - "img": "icons/equipment/chest/breastplate-rivited-red.webp", - "effects": [ - { - "_id": "pAxAXam5JBN6Acz9", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "-0.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -0,5", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!CQZtlL8zUdOVUVrU.pAxAXam5JBN6Acz9" - }, - { - "_id": "CXouU4P0kZYU6oXR", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!CQZtlL8zUdOVUVrU.CXouU4P0kZYU6oXR" - }, - { - "_id": "32vJ305ynrZ0xYki", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Verletzen", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Verletzen +I", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!CQZtlL8zUdOVUVrU.32vJ305ynrZ0xYki" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

In diese rotgefärbte Plattenrüstung +1 ist das Talent Verletzen +I eingebettet.

\n

Laufen -0,5

", - "quantity": 1, - "price": 5300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342802, - "modifiedTime": 1740227862976, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!CQZtlL8zUdOVUVrU" -} diff --git a/packs/items/Brechstange_upLe2iticb6YKsIR.json b/packs/items/Brechstange_upLe2iticb6YKsIR.json deleted file mode 100644 index abbc747c..00000000 --- a/packs/items/Brechstange_upLe2iticb6YKsIR.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "upLe2iticb6YKsIR", - "name": "Brechstange", - "type": "weapon", - "img": "icons/tools/hand/wrench-iron-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1.5, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343545, - "modifiedTime": 1740227863027, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!upLe2iticb6YKsIR" -} diff --git a/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json b/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json deleted file mode 100644 index d0ce61d3..00000000 --- a/packs/items/Breitschwert_5KxdKllRXuau0Uhm.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "5KxdKllRXuau0Uhm", - "name": "Breitschwert", - "type": "weapon", - "img": "icons/weapons/swords/sword-broad-worn.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342715, - "modifiedTime": 1740227862966, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5KxdKllRXuau0Uhm" -} diff --git a/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json b/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json deleted file mode 100644 index 672d7495..00000000 --- a/packs/items/Breitschwert__1_Nz6gFGSHzHVO3QxA.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "Nz6gFGSHzHVO3QxA", - "name": "Breitschwert +1", - "type": "weapon", - "img": "icons/weapons/swords/sword-broad-red.webp", - "effects": [ - { - "_id": "M7zvcLqDr9HuzqTV", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Nz6gFGSHzHVO3QxA.M7zvcLqDr9HuzqTV" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342919, - "modifiedTime": 1740227862988, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Nz6gFGSHzHVO3QxA" -} diff --git a/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json b/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json deleted file mode 100644 index 4422ab2f..00000000 --- a/packs/items/Breitschwert__2_TQhwV1dNYfy50y6k.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "TQhwV1dNYfy50y6k", - "name": "Breitschwert +2", - "type": "weapon", - "img": "icons/weapons/swords/shortsword-broad-blue.webp", - "effects": [ - { - "_id": "g8ZgARGCbMxsnFJe", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!TQhwV1dNYfy50y6k.g8ZgARGCbMxsnFJe" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342996, - "modifiedTime": 1740227862999, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TQhwV1dNYfy50y6k" -} diff --git a/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json b/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json deleted file mode 100644 index f06446ee..00000000 --- a/packs/items/Breitschwert__3_e65AAjglKeU1txL6.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "e65AAjglKeU1txL6", - "name": "Breitschwert +3", - "type": "weapon", - "img": "icons/weapons/swords/shortsword-broad-engraved.webp", - "effects": [ - { - "_id": "BVnmaiguzsq6nSwF", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!e65AAjglKeU1txL6.BVnmaiguzsq6nSwF" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343144, - "modifiedTime": 1740227863011, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!e65AAjglKeU1txL6" -} diff --git a/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json b/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json deleted file mode 100644 index 2ecc9b55..00000000 --- a/packs/items/Brennholz__B_ndel__QrGtd0N6cChddyG2.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "QrGtd0N6cChddyG2", - "name": "Brennholz (Bündel)", - "type": "loot", - "img": "icons/commodities/wood/kindling-sticks-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.01, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342952, - "modifiedTime": 1740227862993, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QrGtd0N6cChddyG2" -} diff --git a/packs/items/Decke_eLTOIKuFGf3M9HYt.json b/packs/items/Decke_eLTOIKuFGf3M9HYt.json deleted file mode 100644 index d9a5213f..00000000 --- a/packs/items/Decke_eLTOIKuFGf3M9HYt.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "eLTOIKuFGf3M9HYt", - "name": "Decke", - "type": "loot", - "img": "icons/sundries/survival/bedroll-worn-beige.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343154, - "modifiedTime": 1740227863012, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eLTOIKuFGf3M9HYt" -} diff --git a/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json b/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json deleted file mode 100644 index 7deafb71..00000000 --- a/packs/items/Dicke_Reisedecke_FoK7Tc7IePUpnDkL.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "FoK7Tc7IePUpnDkL", - "name": "Dicke Reisedecke", - "type": "loot", - "img": "icons/sundries/survival/bedroll-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342845, - "modifiedTime": 1740227862980, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FoK7Tc7IePUpnDkL" -} diff --git a/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json b/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json deleted file mode 100644 index c1230ae2..00000000 --- a/packs/items/Dietrich_TjB6AWIwGY5Q8xln.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "TjB6AWIwGY5Q8xln", - "name": "Dietrich", - "type": "loot", - "img": "icons/tools/hand/lockpicks-steel-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343010, - "modifiedTime": 1740227863000, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TjB6AWIwGY5Q8xln" -} diff --git a/packs/items/Dolch_Fl2OHl2zMi281SbE.json b/packs/items/Dolch_Fl2OHl2zMi281SbE.json deleted file mode 100644 index e128ea81..00000000 --- a/packs/items/Dolch_Fl2OHl2zMi281SbE.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "Fl2OHl2zMi281SbE", - "name": "Dolch", - "type": "weapon", - "img": "icons/weapons/daggers/dagger-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342837, - "modifiedTime": 1740227862980, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Fl2OHl2zMi281SbE" -} diff --git a/packs/items/Dolch__1_trop6WmDZEhv3gRA.json b/packs/items/Dolch__1_trop6WmDZEhv3gRA.json deleted file mode 100644 index ea461289..00000000 --- a/packs/items/Dolch__1_trop6WmDZEhv3gRA.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "trop6WmDZEhv3gRA", - "name": "Dolch +1", - "type": "weapon", - "img": "icons/weapons/daggers/dagger-curved-blue.webp", - "effects": [ - { - "_id": "9jtH6ER0s0I8SPyi", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!trop6WmDZEhv3gRA.9jtH6ER0s0I8SPyi" - }, - { - "_id": "aDUESIHIetT9xLbD", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!trop6WmDZEhv3gRA.aDUESIHIetT9xLbD" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343515, - "modifiedTime": 1740227863026, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!trop6WmDZEhv3gRA" -} diff --git a/packs/items/Dolch__2_ajO71RuOPNlINZID.json b/packs/items/Dolch__2_ajO71RuOPNlINZID.json deleted file mode 100644 index f485c5e5..00000000 --- a/packs/items/Dolch__2_ajO71RuOPNlINZID.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "ajO71RuOPNlINZID", - "name": "Dolch +2", - "type": "weapon", - "img": "icons/weapons/daggers/dagger-straight-green.webp", - "effects": [ - { - "_id": "oxrYsZM08ENZAhge", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ajO71RuOPNlINZID.oxrYsZM08ENZAhge" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343093, - "modifiedTime": 1740227863006, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ajO71RuOPNlINZID" -} diff --git a/packs/items/Dolch__3_0wgXMtaVpVJabEun.json b/packs/items/Dolch__3_0wgXMtaVpVJabEun.json deleted file mode 100644 index a09af6c7..00000000 --- a/packs/items/Dolch__3_0wgXMtaVpVJabEun.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "0wgXMtaVpVJabEun", - "name": "Dolch +3", - "type": "weapon", - "img": "icons/weapons/daggers/dagger-double-engraved-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative +1

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342643, - "modifiedTime": 1740227862962, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0wgXMtaVpVJabEun" -} diff --git a/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json b/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json deleted file mode 100644 index 090d8fd4..00000000 --- a/packs/items/Elfenbogen__1_0cAWFZtQfLF7q1ZX.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "0cAWFZtQfLF7q1ZX", - "name": "Elfenbogen +1", - "type": "weapon", - "img": "icons/weapons/bows/longbow-recurve-leather-brown.webp", - "effects": [ - { - "_id": "UPsfGYjye47se1Gw", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!0cAWFZtQfLF7q1ZX.UPsfGYjye47se1Gw" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2325, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342635, - "modifiedTime": 1740227862961, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0cAWFZtQfLF7q1ZX" -} diff --git a/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json b/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json deleted file mode 100644 index ab49752d..00000000 --- a/packs/items/Elfenbogen__2_oqnI982dhCya94Tu.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "oqnI982dhCya94Tu", - "name": "Elfenbogen +2", - "type": "weapon", - "img": "icons/weapons/bows/longbow-recurve-leather-red.webp", - "effects": [ - { - "_id": "l9ZRRSrd6yBhQUJL", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!oqnI982dhCya94Tu.l9ZRRSrd6yBhQUJL" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2825, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343440, - "modifiedTime": 1740227863021, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oqnI982dhCya94Tu" -} diff --git a/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json b/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json deleted file mode 100644 index bd687d6a..00000000 --- a/packs/items/Elfenbogen__3_0vIgZkHBeEPut73w.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "0vIgZkHBeEPut73w", - "name": "Elfenbogen +3", - "type": "weapon", - "img": "icons/weapons/bows/longbow-recurve.webp", - "effects": [ - { - "_id": "azjxgNJkYNvxg622", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!0vIgZkHBeEPut73w.azjxgNJkYNvxg622" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3325, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342641, - "modifiedTime": 1740227862961, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0vIgZkHBeEPut73w" -} diff --git a/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json b/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json deleted file mode 100644 index e0b680d5..00000000 --- a/packs/items/Elfenbogen_uDdLTyyNqeXzCssp.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "uDdLTyyNqeXzCssp", - "name": "Elfenbogen", - "type": "weapon", - "img": "icons/weapons/bows/longbow-recurve-brown.webp", - "effects": [ - { - "_id": "QScLkDv6gysh119m", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!uDdLTyyNqeXzCssp.QScLkDv6gysh119m" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 75, - "availability": "elves", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343523, - "modifiedTime": 1740227863026, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uDdLTyyNqeXzCssp" -} diff --git a/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json b/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json deleted file mode 100644 index a18d2492..00000000 --- a/packs/items/Elfenstiefel_OaG6IhVfS6EmHRux.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_id": "OaG6IhVfS6EmHRux", - "name": "Elfenstiefel", - "type": "equipment", - "img": "icons/equipment/feet/boots-leather-green.webp", - "effects": [ - { - "_id": "mdjigDqsRTZyFNmC", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!OaG6IhVfS6EmHRux.mdjigDqsRTZyFNmC" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese bequemen Stiefel erhöhen den Laufen-Wert um 1.

", - "quantity": 1, - "price": 1251.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342925, - "modifiedTime": 1740227862988, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!OaG6IhVfS6EmHRux" -} diff --git a/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json b/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json deleted file mode 100644 index b261843b..00000000 --- a/packs/items/Elfischer_Sattel_V3D7u9LDumvBwJQI.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "V3D7u9LDumvBwJQI", - "name": "Elfischer Sattel", - "type": "equipment", - "img": "icons/commodities/leather/leather-studded-tan.webp", - "effects": [ - { - "_id": "yNjGOSspfOUKlg8y", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Reiten", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Reiten +I", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!V3D7u9LDumvBwJQI.yNjGOSspfOUKlg8y" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

In diesen äußerst fein gearbeiteten Sattel ist Reiten +I eingebettet.

", - "quantity": 1, - "price": 505, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343043, - "modifiedTime": 1740227863001, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!V3D7u9LDumvBwJQI" -} diff --git a/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json b/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json deleted file mode 100644 index c877de5a..00000000 --- a/packs/items/Elfischer_Tarnumhang_PE3eWmsGcd5dVVh4.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "_id": "PE3eWmsGcd5dVVh4", - "name": "Elfischer Tarnumhang", - "type": "equipment", - "img": "icons/equipment/back/cloak-collared-leaves-green.webp", - "effects": [ - { - "_id": "Nr6hXbJeVlmJYASc", - "changes": [ - { - "key": "system.checks.hide", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Verbergen +3", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!PE3eWmsGcd5dVVh4.Nr6hXbJeVlmJYASc" - }, - { - "_id": "9qj7TWM9shrTKppj", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Heimlichkeit", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Heimlichkeit +III", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!PE3eWmsGcd5dVVh4.9qj7TWM9shrTKppj" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Umhang, in den Feengarn eingewebt wurde, verleiht zusätzlich zu seiner eingebetteten Heimlichkeit +III auf Verbergen-Proben +3.

", - "quantity": 1, - "price": 875.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342929, - "modifiedTime": 1740227862989, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PE3eWmsGcd5dVVh4" -} diff --git a/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json b/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json deleted file mode 100644 index 3f820b99..00000000 --- a/packs/items/F_ustlinge_der_Verst_mmelung_dvVhgqCv9VDpFW0l.json +++ /dev/null @@ -1,135 +0,0 @@ -{ - "_id": "dvVhgqCv9VDpFW0l", - "name": "Fäustlinge der Verstümmelung", - "type": "equipment", - "img": "icons/equipment/hand/glove-tooled-leather-brown.webp", - "effects": [ - { - "_id": "CRvnbvzibegpIQAz", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Brutaler Hieb", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Brutaler Hieb +I", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!dvVhgqCv9VDpFW0l.CRvnbvzibegpIQAz" - }, - { - "_id": "ohRMO3BzPaxhKYh4", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Verletzen", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Verletzen +I", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!dvVhgqCv9VDpFW0l.ohRMO3BzPaxhKYh4" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese blutverschmutzten Wildlederhandschuhe gewähren ihrem Träger Brutaler Hieb +I und Verletzen +I.

", - "quantity": 1, - "price": 3050.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343143, - "modifiedTime": 1740227863011, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dvVhgqCv9VDpFW0l" -} diff --git a/packs/items/Fackel_Q61SvqiQUoVfU99X.json b/packs/items/Fackel_Q61SvqiQUoVfU99X.json deleted file mode 100644 index 4503b9f8..00000000 --- a/packs/items/Fackel_Q61SvqiQUoVfU99X.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "Q61SvqiQUoVfU99X", - "name": "Fackel", - "type": "weapon", - "img": "icons/sundries/lights/torch-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Brennt 2h

", - "quantity": 1, - "price": 0.01, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342941, - "modifiedTime": 1740227862991, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Q61SvqiQUoVfU99X" -} diff --git a/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json b/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json deleted file mode 100644 index e03302dc..00000000 --- a/packs/items/Federkiel_L2ZE2l98snBZw5DZ.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "L2ZE2l98snBZw5DZ", - "name": "Federkiel", - "type": "loot", - "img": "icons/tools/scribal/ink-quill-pink.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342898, - "modifiedTime": 1740227862985, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!L2ZE2l98snBZw5DZ" -} diff --git a/packs/items/Feindfeger_QhJllncFlQu7BGDw.json b/packs/items/Feindfeger_QhJllncFlQu7BGDw.json deleted file mode 100644 index 86dc487a..00000000 --- a/packs/items/Feindfeger_QhJllncFlQu7BGDw.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "QhJllncFlQu7BGDw", - "name": "Feindfeger", - "type": "weapon", - "img": "icons/weapons/swords/greatsword-crossguard-steel.webp", - "effects": [ - { - "_id": "Oz0U5fEJSQ7HPQDG", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Rundumschlag", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Rundumschlag +II", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!QhJllncFlQu7BGDw.Oz0U5fEJSQ7HPQDG" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Unscheinbar aussehender Bihänder +2 mit Rundumschlag +II.

\n

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 9760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -6 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342946, - "modifiedTime": 1740227862992, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QhJllncFlQu7BGDw" -} diff --git a/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json b/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json deleted file mode 100644 index 6dbe77a2..00000000 --- a/packs/items/Fellmantel_des_Heilers_rvDTHq5UoRK6acm6.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "rvDTHq5UoRK6acm6", - "name": "Fellmantel des Heilers", - "type": "armor", - "img": "icons/equipment/chest/vest-leather-tattered-white.webp", - "effects": [ - { - "_id": "5vJF9ck6rDsBPnKl", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!rvDTHq5UoRK6acm6.5vJF9ck6rDsBPnKl" - }, - { - "_id": "Uzo51C3LrgP3G8jb", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.healing" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Heilzauber +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!rvDTHq5UoRK6acm6.Uzo51C3LrgP3G8jb" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese aus weißem Fell geschneiderte Lederrüstung gewährt +2 auf alle Heilzauber.

", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343475, - "modifiedTime": 1740227863024, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rvDTHq5UoRK6acm6" -} diff --git a/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json b/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json deleted file mode 100644 index d40166a4..00000000 --- a/packs/items/Feuerballzepter_abxhFbHx3dzRUPt8.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "abxhFbHx3dzRUPt8", - "name": "Feuerballzepter", - "type": "equipment", - "img": "icons/weapons/wands/wand-carved-fire.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Zepter, in das der Zauber @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball} eingebettet wurde, dessen Aklingzeit man 2x/Tag ignorieren kann.

", - "quantity": 1, - "price": 7630, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343091, - "modifiedTime": 1740227863006, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!abxhFbHx3dzRUPt8" -} diff --git a/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json b/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json deleted file mode 100644 index fff4cda4..00000000 --- a/packs/items/Feuerstein___Zunder_JjM6nTZzV28ioIFq.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "JjM6nTZzV28ioIFq", - "name": "Feuerstein & Zunder", - "type": "loot", - "img": "icons/commodities/stone/geode-raw-white.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.05, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342882, - "modifiedTime": 1740227862984, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JjM6nTZzV28ioIFq" -} diff --git a/packs/items/Flegel_SLmQz2B4JvywROCv.json b/packs/items/Flegel_SLmQz2B4JvywROCv.json deleted file mode 100644 index 3b9a160a..00000000 --- a/packs/items/Flegel_SLmQz2B4JvywROCv.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "SLmQz2B4JvywROCv", - "name": "Flegel", - "type": "weapon", - "img": "icons/weapons/maces/flail-ball-grey.webp", - "effects": [ - { - "_id": "yXvt3CT4FbXYjIfc", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "-2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative -2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!SLmQz2B4JvywROCv.yXvt3CT4FbXYjIfc" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342987, - "modifiedTime": 1740227862999, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!SLmQz2B4JvywROCv" -} diff --git a/packs/items/Flegel__1_2le5COwoh45Pc4oD.json b/packs/items/Flegel__1_2le5COwoh45Pc4oD.json deleted file mode 100644 index 9969870f..00000000 --- a/packs/items/Flegel__1_2le5COwoh45Pc4oD.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "2le5COwoh45Pc4oD", - "name": "Flegel +1", - "type": "weapon", - "img": "icons/weapons/maces/flail-cube-grey.webp", - "effects": [ - { - "_id": "rUye8ORwMGGtWPrr", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!2le5COwoh45Pc4oD.rUye8ORwMGGtWPrr" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 1758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342692, - "modifiedTime": 1740227862964, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2le5COwoh45Pc4oD" -} diff --git a/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json b/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json deleted file mode 100644 index 12be4fc2..00000000 --- a/packs/items/Flegel__2_JZDsSUkQGVf0aOjH.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "JZDsSUkQGVf0aOjH", - "name": "Flegel +2", - "type": "weapon", - "img": "icons/weapons/maces/flail-spiked-grey.webp", - "effects": [ - { - "_id": "PD6vgViNBP4QaxMK", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!JZDsSUkQGVf0aOjH.PD6vgViNBP4QaxMK" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342878, - "modifiedTime": 1740227862983, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JZDsSUkQGVf0aOjH" -} diff --git a/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json b/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json deleted file mode 100644 index 3d3dc759..00000000 --- a/packs/items/Flegel__3_BrsnuGuOEfolt9VV.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "BrsnuGuOEfolt9VV", - "name": "Flegel +3", - "type": "weapon", - "img": "icons/weapons/maces/flail-studded-grey.webp", - "effects": [ - { - "_id": "98YoU1PGqcSm47Zw", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!BrsnuGuOEfolt9VV.98YoU1PGqcSm47Zw" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -2

", - "quantity": 1, - "price": 2758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342794, - "modifiedTime": 1740227862974, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!BrsnuGuOEfolt9VV" -} diff --git a/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json b/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json deleted file mode 100644 index 95372001..00000000 --- a/packs/items/Fliegender_Teppich_AlmkanwZXY9UxMUD.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "AlmkanwZXY9UxMUD", - "name": "Fliegender Teppich", - "type": "loot", - "img": "icons/commodities/cloth/cloth-patterned-orange.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein legendärer Gegenstand aus den heißen Wüstenlanden, in den die Zauber @Compendium[ds4.spells.NwLeietvcarS6zP5]{Fliegen} und @Compendium[ds4.spells.KUbT1gBeThcLY7vU]{Spurt} eingebettet sind. Die Zauber wirken permanent auf denjenigen, der in der Mitte des Teppichs sitzt. Proben auf Zaubern sind nicht erforderlich.

", - "quantity": 1, - "price": 4340, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342789, - "modifiedTime": 1740227862973, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!AlmkanwZXY9UxMUD" -} diff --git a/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json b/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json deleted file mode 100644 index f217e125..00000000 --- a/packs/items/Fliegentrank_V6ywiDBc1Son1XrQ.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "V6ywiDBc1Son1XrQ", - "name": "Fliegentrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-yellow.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser oft gelbe Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.NwLeietvcarS6zP5]{Fliegen} (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343047, - "modifiedTime": 1740227863002, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!V6ywiDBc1Son1XrQ" -} diff --git a/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json b/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json deleted file mode 100644 index c6c56343..00000000 --- a/packs/items/G_rtel_der_Trollst_rke_0Vd79Orsle4PUqs2.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_id": "0Vd79Orsle4PUqs2", - "name": "Gürtel der Trollstärke", - "type": "equipment", - "img": "icons/equipment/waist/belt-armored-studded-steel.webp", - "effects": [ - { - "_id": "43bRMhcEqMvQvRQU", - "flags": {}, - "changes": [ - { - "key": "system.traits.strength.total", - "value": "3", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Stärke +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!0Vd79Orsle4PUqs2.43bRMhcEqMvQvRQU" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser mit kleinen Eisenplatten beschlagene Gürtel erhöht die Stärke seines Trägers um 3.

", - "quantity": 1, - "price": 3250.05, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342634, - "modifiedTime": 1740227862961, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0Vd79Orsle4PUqs2" -} diff --git a/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json b/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json deleted file mode 100644 index d7b0e4af..00000000 --- a/packs/items/Geisterbote_v7WiMqH1XylGqNOy.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "v7WiMqH1XylGqNOy", - "name": "Geisterbote", - "type": "loot", - "img": "icons/commodities/materials/glass-orb-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Jeder dieser mit Rauch gefüllten Behälter enthält eine Ladung des Zaubers @Compendium[ds4.spells.wnYRgIjVtIhL26eg]{Botschaft}.

", - "quantity": 1, - "price": 454, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343550, - "modifiedTime": 1740227863028, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!v7WiMqH1XylGqNOy" -} diff --git a/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json b/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json deleted file mode 100644 index 6f85bd74..00000000 --- a/packs/items/Gew_nder_des_Adlers_6UBvjMJd6n5P5YWv.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "6UBvjMJd6n5P5YWv", - "name": "Gewänder des Adlers", - "type": "armor", - "img": "icons/equipment/chest/breastplate-banded-simple-leather-brown.webp", - "effects": [ - { - "_id": "cl2PqWeAtDsBjz8k", - "flags": {}, - "changes": [ - { - "key": "system.attributes.mind.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Geist +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!6UBvjMJd6n5P5YWv.cl2PqWeAtDsBjz8k" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese hellbeige, mit Adlerfedern verzierte Lederrüstung +1 gewährt +1 auf Geist.

", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342730, - "modifiedTime": 1740227862967, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!6UBvjMJd6n5P5YWv" -} diff --git a/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json b/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json deleted file mode 100644 index 0df89807..00000000 --- a/packs/items/Giftbanntrank_oPUlB9rz5rvRKrq8.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "oPUlB9rz5rvRKrq8", - "name": "Giftbanntrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-bulb-corked-glowing-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wirkt den Zauber @Compendium[ds4.spells.ONhSaLNmvvacgCjA]{Giftbann} auf den Trinkenden (keine Probe nötig).

", - "quantity": 1, - "price": 150, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343385, - "modifiedTime": 1740227863021, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oPUlB9rz5rvRKrq8" -} diff --git a/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json b/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json deleted file mode 100644 index b77adb68..00000000 --- a/packs/items/Gl_ckstrank_hrAyguSjO6JhTE5m.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "hrAyguSjO6JhTE5m", - "name": "Glückstrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Trinkende kann für W20 Stunden alle Patzer ignorieren.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343239, - "modifiedTime": 1740227863016, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hrAyguSjO6JhTE5m" -} diff --git a/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json b/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json deleted file mode 100644 index 9063d31c..00000000 --- a/packs/items/Grausame_Axt_lHlwYWlgC2iKjDFM.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "lHlwYWlgC2iKjDFM", - "name": "Grausame Axt", - "type": "weapon", - "img": "icons/weapons/axes/shortaxe-simple-black.webp", - "effects": [ - { - "_id": "wh12XwprBMtY3BTB", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!lHlwYWlgC2iKjDFM.wh12XwprBMtY3BTB" - }, - { - "_id": "5EWlvp1ZJkHmodfC", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Verletzen", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Verletzen +III", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!lHlwYWlgC2iKjDFM.5EWlvp1ZJkHmodfC" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Antike Axt +1 mit Verletzen +III

", - "quantity": 1, - "price": 4256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343320, - "modifiedTime": 1740227863019, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lHlwYWlgC2iKjDFM" -} diff --git a/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json b/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json deleted file mode 100644 index 27c4393d..00000000 --- a/packs/items/Gro_er_Heiltrank_tW53rAmCXx6rqKMP.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "tW53rAmCXx6rqKMP", - "name": "Großer Heiltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-stopped-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese meist weinroten Tränke heilen 2W20 Lebenskraft.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343514, - "modifiedTime": 1740227863026, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tW53rAmCXx6rqKMP" -} diff --git a/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json b/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json deleted file mode 100644 index cc20bdb6..00000000 --- a/packs/items/Gro_er_Schutztrank_Ryv745YriIZNKXG5.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "Ryv745YriIZNKXG5", - "name": "Großer Schutztrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-tied-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhöht für W20 Runden die Abwehr um +3.

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342972, - "modifiedTime": 1740227862997, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Ryv745YriIZNKXG5" -} diff --git a/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json b/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json deleted file mode 100644 index dc8c5a67..00000000 --- a/packs/items/Hammer__1_FfVzLWtmCVRwFI4n.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "FfVzLWtmCVRwFI4n", - "name": "Hammer +1", - "type": "weapon", - "img": "icons/weapons/hammers/shorthammer-double-steel.webp", - "effects": [ - { - "_id": "rqEqNTsSgoto2la8", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!FfVzLWtmCVRwFI4n.rqEqNTsSgoto2la8" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1.257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342829, - "modifiedTime": 1740227862980, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FfVzLWtmCVRwFI4n" -} diff --git a/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json b/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json deleted file mode 100644 index 98ad70d2..00000000 --- a/packs/items/Hammer__2_6QehiJpVqqA9bW3P.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "6QehiJpVqqA9bW3P", - "name": "Hammer +2", - "type": "weapon", - "img": "icons/weapons/hammers/shorthammer-double-steel-embossed.webp", - "effects": [ - { - "_id": "xQlGUPOpB6Me9OgF", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!6QehiJpVqqA9bW3P.xQlGUPOpB6Me9OgF" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342728, - "modifiedTime": 1740227862967, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!6QehiJpVqqA9bW3P" -} diff --git a/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json b/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json deleted file mode 100644 index 1a18bf5c..00000000 --- a/packs/items/Hammer__3_tAdNTxSRq9hARm1p.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "tAdNTxSRq9hARm1p", - "name": "Hammer +3", - "type": "weapon", - "img": "icons/weapons/hammers/shorthammer-embossed-white.webp", - "effects": [ - { - "_id": "aLeVPvqVvSHnDTsp", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!tAdNTxSRq9hARm1p.aLeVPvqVvSHnDTsp" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343509, - "modifiedTime": 1740227863025, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tAdNTxSRq9hARm1p" -} diff --git a/packs/items/Hammer_sMJw9EQtd2pYsgYE.json b/packs/items/Hammer_sMJw9EQtd2pYsgYE.json deleted file mode 100644 index ac5baef5..00000000 --- a/packs/items/Hammer_sMJw9EQtd2pYsgYE.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "sMJw9EQtd2pYsgYE", - "name": "Hammer", - "type": "weapon", - "img": "icons/weapons/hammers/shorthammer-simple-iron-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343482, - "modifiedTime": 1740227863025, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sMJw9EQtd2pYsgYE" -} diff --git a/packs/items/Handschellen_zjefX9KYvMphtVwX.json b/packs/items/Handschellen_zjefX9KYvMphtVwX.json deleted file mode 100644 index 4570d32d..00000000 --- a/packs/items/Handschellen_zjefX9KYvMphtVwX.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "zjefX9KYvMphtVwX", - "name": "Handschellen", - "type": "loot", - "img": "icons/sundries/survival/cuffs-shackles-steel.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Preis für beide Schlösser extra ermitteln

", - "quantity": 1, - "price": 8, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343613, - "modifiedTime": 1740227863031, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zjefX9KYvMphtVwX" -} diff --git a/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json b/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json deleted file mode 100644 index 8a6cc061..00000000 --- a/packs/items/Heilkraut_zquQpOOVr5lIbnmL.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "zquQpOOVr5lIbnmL", - "name": "Heilkraut", - "type": "loot", - "img": "icons/tools/laboratory/bowl-herbs-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Probenwert 10: 1-10 heilt LK in Ergebnishöhe, 11+ kein Heileffekt

", - "quantity": 1, - "price": 2.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343619, - "modifiedTime": 1740227863031, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zquQpOOVr5lIbnmL" -} diff --git a/packs/items/Heiltrank_19bmt5UJrT3T36wE.json b/packs/items/Heiltrank_19bmt5UJrT3T36wE.json deleted file mode 100644 index 0398a563..00000000 --- a/packs/items/Heiltrank_19bmt5UJrT3T36wE.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "19bmt5UJrT3T36wE", - "name": "Heiltrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses oftmals rote Getränk heilt W20 Lebenskraft.

", - "quantity": 1, - "price": 10, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342647, - "modifiedTime": 1740227862962, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!19bmt5UJrT3T36wE" -} diff --git a/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json b/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json deleted file mode 100644 index a637ea7b..00000000 --- a/packs/items/Hellebarde_2JQowFF6ZjF90OFI.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "2JQowFF6ZjF90OFI", - "name": "Hellebarde", - "type": "weapon", - "img": "icons/weapons/polearms/halberd-engraved-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2, Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 1754, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342678, - "modifiedTime": 1740227862964, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2JQowFF6ZjF90OFI" -} diff --git a/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json b/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json deleted file mode 100644 index fb4d84c3..00000000 --- a/packs/items/Hellebarde__1_zoPPqqDyRTvmV2do.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "zoPPqqDyRTvmV2do", - "name": "Hellebarde +1", - "type": "weapon", - "img": "icons/weapons/polearms/halberd-crescent-engraved-steel.webp", - "effects": [ - { - "_id": "APXje5Ppu0d75HNw", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "-2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative -2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!zoPPqqDyRTvmV2do.APXje5Ppu0d75HNw" - }, - { - "_id": "FuPTO8plsKR3lq8Z", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!zoPPqqDyRTvmV2do.FuPTO8plsKR3lq8Z" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 4, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343617, - "modifiedTime": 1740227863031, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zoPPqqDyRTvmV2do" -} diff --git a/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json b/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json deleted file mode 100644 index a2365763..00000000 --- a/packs/items/Hellebarde__2_qwXiwcxaDDCzmLLM.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "qwXiwcxaDDCzmLLM", - "name": "Hellebarde +2", - "type": "weapon", - "img": "icons/weapons/polearms/halberd-crescent-steel.webp", - "effects": [ - { - "_id": "cEFYfp6VrhRcwEKz", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!qwXiwcxaDDCzmLLM.cEFYfp6VrhRcwEKz" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343472, - "modifiedTime": 1740227863023, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!qwXiwcxaDDCzmLLM" -} diff --git a/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json b/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json deleted file mode 100644 index 1994671a..00000000 --- a/packs/items/Hellebarde__3_wy8GXE1zjaRpXL8H.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "wy8GXE1zjaRpXL8H", - "name": "Hellebarde +3", - "type": "weapon", - "img": "icons/weapons/polearms/halberd-crescent-glowing.webp", - "effects": [ - { - "_id": "JIWNiHZdqmMiPMBz", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!wy8GXE1zjaRpXL8H.JIWNiHZdqmMiPMBz" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2754, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343558, - "modifiedTime": 1740227863028, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!wy8GXE1zjaRpXL8H" -} diff --git a/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json b/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json deleted file mode 100644 index 36d5cb6b..00000000 --- a/packs/items/Holzbecher_pzjZv0HhCA15wy1i.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "pzjZv0HhCA15wy1i", - "name": "Holzbecher", - "type": "loot", - "img": "icons/containers/kitchenware/mug-simple-wooden-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343470, - "modifiedTime": 1740227863023, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pzjZv0HhCA15wy1i" -} diff --git a/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json b/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json deleted file mode 100644 index c6756285..00000000 --- a/packs/items/Holzbesteck_hGiaAJyEUHbPl5pf.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "hGiaAJyEUHbPl5pf", - "name": "Holzbesteck", - "type": "loot", - "img": "icons/tools/cooking/fork-steel-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343232, - "modifiedTime": 1740227863016, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hGiaAJyEUHbPl5pf" -} diff --git a/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json b/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json deleted file mode 100644 index 2a8ef265..00000000 --- a/packs/items/Holzschild_J7d2zx4kqKEdMR1j.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "_id": "J7d2zx4kqKEdMR1j", - "name": "Holzschild", - "type": "shield", - "img": "icons/equipment/shield/round-wooden-boss-steel-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zerbricht bei einem Abwehr-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342872, - "modifiedTime": 1740227862983, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!J7d2zx4kqKEdMR1j" -} diff --git a/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json b/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json deleted file mode 100644 index 56ef6406..00000000 --- a/packs/items/Holzschild__1_89ZunLlXp1Lm6Wzd.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "89ZunLlXp1Lm6Wzd", - "name": "Holzschild +1", - "type": "shield", - "img": "icons/equipment/shield/round-wooden-boss-steel-red.webp", - "effects": [ - { - "_id": "1M6yYhufFsvYsske", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!89ZunLlXp1Lm6Wzd.1M6yYhufFsvYsske" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342758, - "modifiedTime": 1740227862969, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!89ZunLlXp1Lm6Wzd" -} diff --git a/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json b/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json deleted file mode 100644 index 9da689d5..00000000 --- a/packs/items/Holzschild__2_0SrSqLjQ5CMNbwXV.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "0SrSqLjQ5CMNbwXV", - "name": "Holzschild +2", - "type": "shield", - "img": "icons/equipment/shield/round-wooden-reinforced-boss-steel.webp", - "effects": [ - { - "_id": "eu80ImNhR1gsT7jg", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!0SrSqLjQ5CMNbwXV.eu80ImNhR1gsT7jg" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342631, - "modifiedTime": 1740227862960, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0SrSqLjQ5CMNbwXV" -} diff --git a/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json b/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json deleted file mode 100644 index 0c9f9f95..00000000 --- a/packs/items/Holzschild__3_KefO4lxHxwddpFFu.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "KefO4lxHxwddpFFu", - "name": "Holzschild +3", - "type": "shield", - "img": "icons/equipment/shield/round-wooden-boss-gold-brown.webp", - "effects": [ - { - "_id": "AkDi2TNzgpT2ZfrH", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!KefO4lxHxwddpFFu.AkDi2TNzgpT2ZfrH" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 4251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342895, - "modifiedTime": 1740227862985, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KefO4lxHxwddpFFu" -} diff --git a/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json b/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json deleted file mode 100644 index 6981dbf7..00000000 --- a/packs/items/Holzw_rfel__sechsseitig__iWOrlMcGVAXTvFEg.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "iWOrlMcGVAXTvFEg", - "name": "Holzwürfel (sechsseitig)", - "type": "loot", - "img": "icons/sundries/gaming/dice-runed-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.02, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343290, - "modifiedTime": 1740227863017, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iWOrlMcGVAXTvFEg" -} diff --git a/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json b/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json deleted file mode 100644 index 7be52c54..00000000 --- a/packs/items/Immertreff_5cqP2SvMe5j0BD3t.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "5cqP2SvMe5j0BD3t", - "name": "Immertreff", - "type": "weapon", - "img": "icons/weapons/bows/longbow-gold-pink.webp", - "effects": [ - { - "_id": "QN5NueLJpTY2Vwat", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Fieser Schuss", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Fieser Schuss +II", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!5cqP2SvMe5j0BD3t.QN5NueLJpTY2Vwat" - }, - { - "_id": "rDzmy3Xb0qQfErWi", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Scharfschütze", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Scharfschütze +II", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!5cqP2SvMe5j0BD3t.rDzmy3Xb0qQfErWi" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein tödlicher Langbogen +2 mit Fieser Schuss +II und Scharfschütze +II.

\n

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 10660, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342725, - "modifiedTime": 1740227862966, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5cqP2SvMe5j0BD3t" -} diff --git a/packs/items/K_nigsblut_cqVt9s7u46u0925o.json b/packs/items/K_nigsblut_cqVt9s7u46u0925o.json deleted file mode 100644 index 642150eb..00000000 --- a/packs/items/K_nigsblut_cqVt9s7u46u0925o.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "cqVt9s7u46u0925o", - "name": "Königsblut", - "type": "weapon", - "img": "icons/weapons/daggers/dagger-bone-engraved-black.webp", - "effects": [ - { - "_id": "JLc9UYdHy4aAeqA2", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!cqVt9s7u46u0925o.JLc9UYdHy4aAeqA2" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Durch diesen magischen Dolch +3 mit @Compendium[ds4.spells.RUfE7hqqHCKMEMbh]{Schattenklinge}, @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} (Abklingzeit 1x täglich ignorierbar) sollen angeblich schon Könige gestorben sein

\n

Initiative +1

", - "quantity": 1, - "price": 17352, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343116, - "modifiedTime": 1740227863008, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!cqVt9s7u46u0925o" -} diff --git a/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json b/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json deleted file mode 100644 index f961470d..00000000 --- a/packs/items/Kampfstab__1_dq4wK5bmMvOfwoWH.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "dq4wK5bmMvOfwoWH", - "name": "Kampfstab +1", - "type": "weapon", - "img": "icons/weapons/staves/staff-simple-gold.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 1250.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343142, - "modifiedTime": 1740227863011, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dq4wK5bmMvOfwoWH" -} diff --git a/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json b/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json deleted file mode 100644 index 0190ed8f..00000000 --- a/packs/items/Kampfstab__2_HcN322i9KLPzp1d4.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "HcN322i9KLPzp1d4", - "name": "Kampfstab +2", - "type": "weapon", - "img": "icons/weapons/staves/staff-simple-carved.webp", - "effects": [ - { - "_id": "7AIeGsBF1gYX7cSX", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!HcN322i9KLPzp1d4.7AIeGsBF1gYX7cSX" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 1750.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342865, - "modifiedTime": 1740227862982, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!HcN322i9KLPzp1d4" -} diff --git a/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json b/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json deleted file mode 100644 index e88f4e14..00000000 --- a/packs/items/Kampfstab__3_JG18wEtysl2m6sWq.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "JG18wEtysl2m6sWq", - "name": "Kampfstab +3", - "type": "weapon", - "img": "icons/weapons/staves/staff-ornate.webp", - "effects": [ - { - "_id": "jMu0Mqf6qy2Df8vI", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!JG18wEtysl2m6sWq.jMu0Mqf6qy2Df8vI" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 2250.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342875, - "modifiedTime": 1740227862983, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JG18wEtysl2m6sWq" -} diff --git a/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json b/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json deleted file mode 100644 index 19f71201..00000000 --- a/packs/items/Kampfstab_ylWwhiSGGWLee2PA.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "ylWwhiSGGWLee2PA", - "name": "Kampfstab", - "type": "weapon", - "img": "icons/weapons/staves/staff-simple.webp", - "effects": [ - { - "_id": "1aNTAQBai6qAcWGM", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.targetedSpellcasting.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Zielzaubern +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ylWwhiSGGWLee2PA.1aNTAQBai6qAcWGM" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Zielzaubern +1, Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343583, - "modifiedTime": 1740227863030, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ylWwhiSGGWLee2PA" -} diff --git a/packs/items/Kampftrank_kIiDbrtAPno14O85.json b/packs/items/Kampftrank_kIiDbrtAPno14O85.json deleted file mode 100644 index 3983b2cc..00000000 --- a/packs/items/Kampftrank_kIiDbrtAPno14O85.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "kIiDbrtAPno14O85", - "name": "Kampftrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-round-corked-orange.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Meist von oranger Farbe erhöht solch ein Trank Schlagen und Abwehr für die Dauer eines Kampfes um +1.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343317, - "modifiedTime": 1740227863019, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kIiDbrtAPno14O85" -} diff --git a/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json b/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json deleted file mode 100644 index 6fdb60ca..00000000 --- a/packs/items/Karren__2_R_der__FPriMnCQK7DQHzJa.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "FPriMnCQK7DQHzJa", - "name": "Karren (2 Räder)", - "type": "loot", - "img": "icons/commodities/wood/wood-wheel-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 15, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342819, - "modifiedTime": 1740227862979, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FPriMnCQK7DQHzJa" -} diff --git a/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json b/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json deleted file mode 100644 index 5ee0e3a1..00000000 --- a/packs/items/Karten_des_Schummlers_nff3XieL5dvOZga9.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "nff3XieL5dvOZga9", - "name": "Karten des Schummlers", - "type": "loot", - "img": "icons/sundries/gaming/playing-cards-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

In dieses wunderschöne Spielkarten-Set ist der Zauber @Compendium[ds4.spells.BGnY1p1qZXwpzXFA]{Zeitstop} eingebettet.

", - "quantity": 1, - "price": 13031, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343351, - "modifiedTime": 1740227863020, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nff3XieL5dvOZga9" -} diff --git a/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json b/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json deleted file mode 100644 index a5738541..00000000 --- a/packs/items/Kartenspiel_CsUnbnytOapKsjuW.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "CsUnbnytOapKsjuW", - "name": "Kartenspiel", - "type": "loot", - "img": "icons/sundries/gaming/playing-cards-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342803, - "modifiedTime": 1740227862977, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!CsUnbnytOapKsjuW" -} diff --git a/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json b/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json deleted file mode 100644 index 6809e3e5..00000000 --- a/packs/items/Kette_der_Regeneration_VfjAtfQv5Ga8hoHu.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "VfjAtfQv5Ga8hoHu", - "name": "Kette der Regeneration", - "type": "equipment", - "img": "icons/equipment/neck/choker-chain-thick-silver.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese schlichte Silberkette heilt in jeder Kamfprunde 1 LK.

", - "quantity": 1, - "price": null, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343052, - "modifiedTime": 1740227863002, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VfjAtfQv5Ga8hoHu" -} diff --git a/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json b/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json deleted file mode 100644 index a38665a7..00000000 --- a/packs/items/Kettenpanzer_09Hp2c2jgoXx7cV0.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "09Hp2c2jgoXx7cV0", - "name": "Kettenpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342626, - "modifiedTime": 1740227862959, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!09Hp2c2jgoXx7cV0" -} diff --git a/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json b/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json deleted file mode 100644 index 0880a33b..00000000 --- a/packs/items/Kettenpanzer__1_TcyE0faEebPLoLOD.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "TcyE0faEebPLoLOD", - "name": "Kettenpanzer +1", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 3260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343004, - "modifiedTime": 1740227863000, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TcyE0faEebPLoLOD" -} diff --git a/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json b/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json deleted file mode 100644 index 613dc9ce..00000000 --- a/packs/items/Kettenpanzer__2_12WbnUt5h84JQxMp.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "12WbnUt5h84JQxMp", - "name": "Kettenpanzer +2", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "gPN9UcowmdjdyGyn", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!12WbnUt5h84JQxMp.gPN9UcowmdjdyGyn" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 4260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342645, - "modifiedTime": 1740227862962, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!12WbnUt5h84JQxMp" -} diff --git a/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json b/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json deleted file mode 100644 index ade86053..00000000 --- a/packs/items/Kettenpanzer__3_DRClmtZNGGYtritZ.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "DRClmtZNGGYtritZ", - "name": "Kettenpanzer +3", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "BKpvNVwaSovtKyRB", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!DRClmtZNGGYtritZ.BKpvNVwaSovtKyRB" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 5260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342808, - "modifiedTime": 1740227862977, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!DRClmtZNGGYtritZ" -} diff --git a/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json b/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json deleted file mode 100644 index 36cf5bc1..00000000 --- a/packs/items/Keule__1_pzD6fcJa1Hk4Duwu.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "pzD6fcJa1Hk4Duwu", - "name": "Keule +1", - "type": "weapon", - "img": "icons/weapons/clubs/club-simple-barbed.webp", - "effects": [ - { - "_id": "9ZyXiW0n9WJ5WQOv", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!pzD6fcJa1Hk4Duwu.9ZyXiW0n9WJ5WQOv" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 1250.2, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343466, - "modifiedTime": 1740227863022, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pzD6fcJa1Hk4Duwu" -} diff --git a/packs/items/Keule__2_GG7o5XbvBmmauzIw.json b/packs/items/Keule__2_GG7o5XbvBmmauzIw.json deleted file mode 100644 index 9f1be6d3..00000000 --- a/packs/items/Keule__2_GG7o5XbvBmmauzIw.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "GG7o5XbvBmmauzIw", - "name": "Keule +2", - "type": "weapon", - "img": "icons/weapons/clubs/club-barbed-engraved-brown.webp", - "effects": [ - { - "_id": "a8zW4tAcGbak3nno", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!GG7o5XbvBmmauzIw.a8zW4tAcGbak3nno" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 1750.2, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342855, - "modifiedTime": 1740227862981, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GG7o5XbvBmmauzIw" -} diff --git a/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json b/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json deleted file mode 100644 index bfd7e9a1..00000000 --- a/packs/items/Keule__3_7g4vNrJOoX0v4Byu.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "7g4vNrJOoX0v4Byu", - "name": "Keule +3", - "type": "weapon", - "img": "icons/weapons/clubs/club-banded-brown.webp", - "effects": [ - { - "_id": "8y8e8BsFQZZkwUXk", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!7g4vNrJOoX0v4Byu.8y8e8BsFQZZkwUXk" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2250.2, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342744, - "modifiedTime": 1740227862968, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7g4vNrJOoX0v4Byu" -} diff --git a/packs/items/Keule_siJAzGmpHVegUKBF.json b/packs/items/Keule_siJAzGmpHVegUKBF.json deleted file mode 100644 index 7913abde..00000000 --- a/packs/items/Keule_siJAzGmpHVegUKBF.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "siJAzGmpHVegUKBF", - "name": "Keule", - "type": "weapon", - "img": "icons/weapons/clubs/club-simple-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 0.2, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343492, - "modifiedTime": 1740227863025, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!siJAzGmpHVegUKBF" -} diff --git a/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json b/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json deleted file mode 100644 index 718b1a94..00000000 --- a/packs/items/Kletterausr_stung_3zqSBuiQWIsIov4h.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "3zqSBuiQWIsIov4h", - "name": "Kletterausrüstung", - "type": "loot", - "img": "icons/sundries/survival/rope-wrapped-loops-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342702, - "modifiedTime": 1740227862965, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!3zqSBuiQWIsIov4h" -} diff --git a/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json b/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json deleted file mode 100644 index 58fb97d2..00000000 --- a/packs/items/Klettertrank_udsNOh5h0TQmOYBl.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "udsNOh5h0TQmOYBl", - "name": "Klettertrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-cyan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann für W20 Runden mit seinem normalen Laufen-Wert wie eine Spinne klettern, selbst kopfüber an der Decke.

", - "quantity": 1, - "price": 50, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343544, - "modifiedTime": 1740227863027, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!udsNOh5h0TQmOYBl" -} diff --git a/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json b/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json deleted file mode 100644 index 71f17eba..00000000 --- a/packs/items/Kluft_des_J_gers_zWMPzHIY3vkrCIEJ.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "zWMPzHIY3vkrCIEJ", - "name": "Kluft des Jägers", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-leather-green.webp", - "effects": [ - { - "_id": "RXgVHCUhqvSvdubt", - "flags": {}, - "changes": [ - { - "key": "system.traits.agility.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Bewegung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!zWMPzHIY3vkrCIEJ.RXgVHCUhqvSvdubt" - }, - { - "_id": "XsKZUk7lLh6egc89", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Jäger", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Jäger +I", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!zWMPzHIY3vkrCIEJ.XsKZUk7lLh6egc89" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese braun-grüne Lederrüstung gewährt neben Jäger +I ihrem Träger +1 auf Bewegung.

", - "quantity": 1, - "price": 1504, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343602, - "modifiedTime": 1740227863031, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zWMPzHIY3vkrCIEJ" -} diff --git a/packs/items/Kompass_xwjafjsWdZJBVN0A.json b/packs/items/Kompass_xwjafjsWdZJBVN0A.json deleted file mode 100644 index fd8bd6f9..00000000 --- a/packs/items/Kompass_xwjafjsWdZJBVN0A.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "xwjafjsWdZJBVN0A", - "name": "Kompass", - "type": "loot", - "img": "icons/tools/navigation/compass-brass-blue-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 35, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343573, - "modifiedTime": 1740227863029, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!xwjafjsWdZJBVN0A" -} diff --git a/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json b/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json deleted file mode 100644 index 17d3e41f..00000000 --- a/packs/items/Konzentrationstrank_W2dHT0OENc5kNwnZ.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "W2dHT0OENc5kNwnZ", - "name": "Konzentrationstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-white.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser oft graue Trank verdoppelt GEI für GEI in Runden.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343054, - "modifiedTime": 1740227863003, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!W2dHT0OENc5kNwnZ" -} diff --git a/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json b/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json deleted file mode 100644 index e9728dd4..00000000 --- a/packs/items/Kriegshorn_c3YlvFbZJD6LbhVi.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "c3YlvFbZJD6LbhVi", - "name": "Kriegshorn", - "type": "equipment", - "img": "icons/commodities/treasure/horn-carved-banded.webp", - "effects": [ - { - "_id": "DZXHZOg7edkW2RS2", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Schlachtruf", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Schlachtruf +I", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!c3YlvFbZJD6LbhVi.DZXHZOg7edkW2RS2" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Klang des Horns feuert die Kampfgefährten mit seinem eingebetteten Schlachtruf +I an.

", - "quantity": 1, - "price": 2750.05, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343102, - "modifiedTime": 1740227863007, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!c3YlvFbZJD6LbhVi" -} diff --git a/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json b/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json deleted file mode 100644 index 428b2803..00000000 --- a/packs/items/Kristallkugel_PQfSHYKxPqia6nG3.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "PQfSHYKxPqia6nG3", - "name": "Kristallkugel", - "type": "loot", - "img": "icons/tools/laboratory/alembic-glass-ball-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauber @Compendium[ds4.spells.xR5aBGFz3916e82x]{Spionage} ist in diese äußerst zerbrechliche Kugel eingebettet.

", - "quantity": 1, - "price": 1485, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342932, - "modifiedTime": 1740227862990, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PQfSHYKxPqia6nG3" -} diff --git a/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json b/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json deleted file mode 100644 index 9ef91f96..00000000 --- a/packs/items/Krumms_bel_FbfsU0H1E7wCxm0q.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "FbfsU0H1E7wCxm0q", - "name": "Krummsäbel", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-worn-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342827, - "modifiedTime": 1740227862980, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FbfsU0H1E7wCxm0q" -} diff --git a/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json b/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json deleted file mode 100644 index 5bf30ec3..00000000 --- a/packs/items/Krumms_bel__1_R1cxU1hzcLopZwhA.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "R1cxU1hzcLopZwhA", - "name": "Krummsäbel +1", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-guard.webp", - "effects": [ - { - "_id": "uYIt59oaCKobgftJ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!R1cxU1hzcLopZwhA.uYIt59oaCKobgftJ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342955, - "modifiedTime": 1740227862994, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!R1cxU1hzcLopZwhA" -} diff --git a/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json b/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json deleted file mode 100644 index b5c50390..00000000 --- a/packs/items/Krumms_bel__2_2C0GH1sYXj8QtRTK.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "2C0GH1sYXj8QtRTK", - "name": "Krummsäbel +2", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-guard-brown.webp", - "effects": [ - { - "_id": "xjUL1B0P5jhze3vQ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!2C0GH1sYXj8QtRTK.xjUL1B0P5jhze3vQ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342675, - "modifiedTime": 1740227862964, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2C0GH1sYXj8QtRTK" -} diff --git a/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json b/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json deleted file mode 100644 index 11a7fb97..00000000 --- a/packs/items/Krumms_bel__3_8B4biRyQ6SN0fYtl.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "8B4biRyQ6SN0fYtl", - "name": "Krummsäbel +3", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-guard-red.webp", - "effects": [ - { - "_id": "muxy8RtkuaOsrY2H", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!8B4biRyQ6SN0fYtl.muxy8RtkuaOsrY2H" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342759, - "modifiedTime": 1740227862969, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8B4biRyQ6SN0fYtl" -} diff --git a/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json b/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json deleted file mode 100644 index 8b075029..00000000 --- a/packs/items/Krummschwert_0EwYRuQCBmE3LIm2.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "0EwYRuQCBmE3LIm2", - "name": "Krummschwert", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-broad.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342629, - "modifiedTime": 1740227862960, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0EwYRuQCBmE3LIm2" -} diff --git a/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json b/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json deleted file mode 100644 index c7ed30e0..00000000 --- a/packs/items/Krummschwert__1_7CCoTap4GzN1uSNw.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "7CCoTap4GzN1uSNw", - "name": "Krummschwert +1", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-guard-wood.webp", - "effects": [ - { - "_id": "Vg3Q9A7QIXHrABFk", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!7CCoTap4GzN1uSNw.Vg3Q9A7QIXHrABFk" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342737, - "modifiedTime": 1740227862967, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7CCoTap4GzN1uSNw" -} diff --git a/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json b/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json deleted file mode 100644 index 1837e687..00000000 --- a/packs/items/Krummschwert__2_3ZCLI6UN4i0zTeuv.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "3ZCLI6UN4i0zTeuv", - "name": "Krummschwert +2", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-bone.webp", - "effects": [ - { - "_id": "MUERgL0DjjZR3sv0", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!3ZCLI6UN4i0zTeuv.MUERgL0DjjZR3sv0" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342698, - "modifiedTime": 1740227862965, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!3ZCLI6UN4i0zTeuv" -} diff --git a/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json b/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json deleted file mode 100644 index 5645f32b..00000000 --- a/packs/items/Krummschwert__3_opq2AakrpM9gLSa0.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "opq2AakrpM9gLSa0", - "name": "Krummschwert +3", - "type": "weapon", - "img": "icons/weapons/swords/scimitar-blue.webp", - "effects": [ - { - "_id": "RGYzuIow1nDLd681", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!opq2AakrpM9gLSa0.RGYzuIow1nDLd681" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343410, - "modifiedTime": 1740227863021, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!opq2AakrpM9gLSa0" -} diff --git a/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json b/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json deleted file mode 100644 index d86ce715..00000000 --- a/packs/items/Kundschafterpanzer_ZLDJNdtwxbdiJOP2.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "_id": "ZLDJNdtwxbdiJOP2", - "name": "Kundschafterpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-leather.webp", - "effects": [ - { - "_id": "EkJB0kpYFHRMYSgl", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "-0.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -0,5", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ZLDJNdtwxbdiJOP2.EkJB0kpYFHRMYSgl" - }, - { - "_id": "mq2ViimrfXr7sGC7", - "flags": {}, - "changes": [ - { - "key": "system.traits.agility.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Bewegung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ZLDJNdtwxbdiJOP2.mq2ViimrfXr7sGC7" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese mit braunen Fellschulterpolstern verzierte Kettenrüstung gewährt ihrem Träger +1 auf Bewegung.

\n

Laufen -0,5

", - "quantity": 1, - "price": 1260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343083, - "modifiedTime": 1740227863004, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZLDJNdtwxbdiJOP2" -} diff --git a/packs/items/Kurzbogen_QsnvAep80sSVJToD.json b/packs/items/Kurzbogen_QsnvAep80sSVJToD.json deleted file mode 100644 index 81e2eeae..00000000 --- a/packs/items/Kurzbogen_QsnvAep80sSVJToD.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "QsnvAep80sSVJToD", - "name": "Kurzbogen", - "type": "weapon", - "img": "icons/weapons/bows/shortbow-leather.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342954, - "modifiedTime": 1740227862993, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QsnvAep80sSVJToD" -} diff --git a/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json b/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json deleted file mode 100644 index 4de46dad..00000000 --- a/packs/items/Kurzbogen__1_6WqPqjMQMMPjV99U.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "6WqPqjMQMMPjV99U", - "name": "Kurzbogen +1", - "type": "weapon", - "img": "icons/weapons/bows/shortbow-recurve-leather.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342732, - "modifiedTime": 1740227862967, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!6WqPqjMQMMPjV99U" -} diff --git a/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json b/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json deleted file mode 100644 index 53951884..00000000 --- a/packs/items/Kurzbogen__2_1hmprC7XVhIPemy5.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "1hmprC7XVhIPemy5", - "name": "Kurzbogen +2", - "type": "weapon", - "img": "icons/weapons/bows/shortbow-recurve.webp", - "effects": [ - { - "_id": "VkuGm7hES83WX4HD", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!1hmprC7XVhIPemy5.VkuGm7hES83WX4HD" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342654, - "modifiedTime": 1740227862963, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1hmprC7XVhIPemy5" -} diff --git a/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json b/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json deleted file mode 100644 index bcd9476f..00000000 --- a/packs/items/Kurzbogen__3_RKKhoedvylYWFBN3.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "RKKhoedvylYWFBN3", - "name": "Kurzbogen +3", - "type": "weapon", - "img": "icons/weapons/bows/shortbow-recurve-blue.webp", - "effects": [ - { - "_id": "zgiIGlRMVCgAzrn7", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!RKKhoedvylYWFBN3.zgiIGlRMVCgAzrn7" - }, - { - "_id": "OQr5POyJ0Azklftu", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!RKKhoedvylYWFBN3.OQr5POyJ0Azklftu" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342963, - "modifiedTime": 1740227862995, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RKKhoedvylYWFBN3" -} diff --git a/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json b/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json deleted file mode 100644 index c3d3402d..00000000 --- a/packs/items/Kurzschwert_Sj1iVgklsdFtLq8M.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "Sj1iVgklsdFtLq8M", - "name": "Kurzschwert", - "type": "weapon", - "img": "icons/weapons/swords/shortsword-guard-brass.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342989, - "modifiedTime": 1740227862999, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Sj1iVgklsdFtLq8M" -} diff --git a/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json b/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json deleted file mode 100644 index 2e72bcd1..00000000 --- a/packs/items/Kurzschwert__1_8la7FJ8kpGNUWrCg.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "8la7FJ8kpGNUWrCg", - "name": "Kurzschwert +1", - "type": "weapon", - "img": "icons/weapons/swords/shortsword-green.webp", - "effects": [ - { - "_id": "CElngj6OWPpIw37j", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!8la7FJ8kpGNUWrCg.CElngj6OWPpIw37j" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 1256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342764, - "modifiedTime": 1740227862969, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8la7FJ8kpGNUWrCg" -} diff --git a/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json b/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json deleted file mode 100644 index b0d3087a..00000000 --- a/packs/items/Kurzschwert__2_MO1ga2aLjjkBZRzt.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "MO1ga2aLjjkBZRzt", - "name": "Kurzschwert +2", - "type": "weapon", - "img": "icons/weapons/swords/shortsword-guard-silver.webp", - "effects": [ - { - "_id": "qkDy1MWD6Fkk97e6", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!MO1ga2aLjjkBZRzt.qkDy1MWD6Fkk97e6" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 1756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342906, - "modifiedTime": 1740227862986, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!MO1ga2aLjjkBZRzt" -} diff --git a/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json b/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json deleted file mode 100644 index 7b4fd894..00000000 --- a/packs/items/Kurzschwert__3_F1XnlA28XCnT7Y0V.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "F1XnlA28XCnT7Y0V", - "name": "Kurzschwert +3", - "type": "weapon", - "img": "icons/weapons/swords/shortsword-guard-gold-red.webp", - "effects": [ - { - "_id": "FZMhm4De8EXj7dBZ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!F1XnlA28XCnT7Y0V.FZMhm4De8EXj7dBZ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342815, - "modifiedTime": 1740227862978, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!F1XnlA28XCnT7Y0V" -} diff --git a/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json b/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json deleted file mode 100644 index ed7f447e..00000000 --- a/packs/items/Langbogen__1_EwjFWRaLhR33wP92.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "EwjFWRaLhR33wP92", - "name": "Langbogen +1", - "type": "weapon", - "img": "icons/weapons/bows/bow-ornamental-silver-black.webp", - "effects": [ - { - "_id": "zQsujP8ZT0cwdtqk", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!EwjFWRaLhR33wP92.zQsujP8ZT0cwdtqk" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 1760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342814, - "modifiedTime": 1740227862978, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!EwjFWRaLhR33wP92" -} diff --git a/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json b/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json deleted file mode 100644 index 1e03f2d0..00000000 --- a/packs/items/Langbogen__2_gVwoOpuHkmwvcUow.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "gVwoOpuHkmwvcUow", - "name": "Langbogen +2", - "type": "weapon", - "img": "icons/weapons/bows/bow-ornamental-gold-blue.webp", - "effects": [ - { - "_id": "XsqzwEX1AvYJyczG", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!gVwoOpuHkmwvcUow.XsqzwEX1AvYJyczG" - }, - { - "_id": "iUXn0CQKZw6Rr1yH", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!gVwoOpuHkmwvcUow.iUXn0CQKZw6Rr1yH" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343210, - "modifiedTime": 1740227863015, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gVwoOpuHkmwvcUow" -} diff --git a/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json b/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json deleted file mode 100644 index b6888efb..00000000 --- a/packs/items/Langbogen__3_WiW9Sad1D2HjkNMz.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "WiW9Sad1D2HjkNMz", - "name": "Langbogen +3", - "type": "weapon", - "img": "icons/weapons/bows/bow-recurve-black.webp", - "effects": [ - { - "_id": "B6tNz4B208qZf3JU", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!WiW9Sad1D2HjkNMz.B6tNz4B208qZf3JU" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343058, - "modifiedTime": 1740227863003, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!WiW9Sad1D2HjkNMz" -} diff --git a/packs/items/Langbogen_fmunGPk80ObkIzUl.json b/packs/items/Langbogen_fmunGPk80ObkIzUl.json deleted file mode 100644 index 16f095bb..00000000 --- a/packs/items/Langbogen_fmunGPk80ObkIzUl.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "fmunGPk80ObkIzUl", - "name": "Langbogen", - "type": "weapon", - "img": "icons/weapons/bows/longbow-leather-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 10, - "availability": "city", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343202, - "modifiedTime": 1740227863014, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fmunGPk80ObkIzUl" -} diff --git a/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json b/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json deleted file mode 100644 index 7433c756..00000000 --- a/packs/items/Langschwert__1_dMbjx675yI2F4rUg.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "dMbjx675yI2F4rUg", - "name": "Langschwert +1", - "type": "weapon", - "img": "icons/weapons/swords/sword-guard-embossed-green.webp", - "effects": [ - { - "_id": "l7qeGLLyuz7VXAAd", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!dMbjx675yI2F4rUg.l7qeGLLyuz7VXAAd" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343138, - "modifiedTime": 1740227863010, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dMbjx675yI2F4rUg" -} diff --git a/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json b/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json deleted file mode 100644 index 1fda322b..00000000 --- a/packs/items/Langschwert__2_i1ZcbKzviqz0nxjV.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "i1ZcbKzviqz0nxjV", - "name": "Langschwert +2", - "type": "weapon", - "img": "icons/weapons/swords/sword-guard-purple.webp", - "effects": [ - { - "_id": "5JZ001rLJuZMJSrD", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!i1ZcbKzviqz0nxjV.5JZ001rLJuZMJSrD" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343243, - "modifiedTime": 1740227863017, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!i1ZcbKzviqz0nxjV" -} diff --git a/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json b/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json deleted file mode 100644 index 0a9d50c9..00000000 --- a/packs/items/Langschwert__3_Dg8qq9n5FFxZG68k.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "Dg8qq9n5FFxZG68k", - "name": "Langschwert +3", - "type": "weapon", - "img": "icons/weapons/swords/sword-guard-engraved.webp", - "effects": [ - { - "_id": "DSf5BV955w2hKZuf", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Dg8qq9n5FFxZG68k.DSf5BV955w2hKZuf" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342810, - "modifiedTime": 1740227862978, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Dg8qq9n5FFxZG68k" -} diff --git a/packs/items/Langschwert_htmQWmMCQN620KrE.json b/packs/items/Langschwert_htmQWmMCQN620KrE.json deleted file mode 100644 index 7f0582d1..00000000 --- a/packs/items/Langschwert_htmQWmMCQN620KrE.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "htmQWmMCQN620KrE", - "name": "Langschwert", - "type": "weapon", - "img": "icons/weapons/swords/sword-guard-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343241, - "modifiedTime": 1740227863016, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!htmQWmMCQN620KrE" -} diff --git a/packs/items/Lanze_DS11ssHOcZTdZiLK.json b/packs/items/Lanze_DS11ssHOcZTdZiLK.json deleted file mode 100644 index 494e7951..00000000 --- a/packs/items/Lanze_DS11ssHOcZTdZiLK.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "DS11ssHOcZTdZiLK", - "name": "Lanze", - "type": "weapon", - "img": "icons/weapons/polearms/spear-simple-engraved.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4), Zerbricht bei Schlagen-Patzer

", - "quantity": 1, - "price": 2, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": null, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342809, - "modifiedTime": 1740227862978, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!DS11ssHOcZTdZiLK" -} diff --git a/packs/items/Lanze__1_upkDR02zMILTPib6.json b/packs/items/Lanze__1_upkDR02zMILTPib6.json deleted file mode 100644 index 7142a514..00000000 --- a/packs/items/Lanze__1_upkDR02zMILTPib6.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "upkDR02zMILTPib6", - "name": "Lanze +1", - "type": "weapon", - "img": "icons/weapons/polearms/spear-flared-green.webp", - "effects": [ - { - "_id": "d8N240qBKaRGqkcf", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!upkDR02zMILTPib6.d8N240qBKaRGqkcf" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343547, - "modifiedTime": 1740227863027, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!upkDR02zMILTPib6" -} diff --git a/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json b/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json deleted file mode 100644 index da269f8e..00000000 --- a/packs/items/Lanze__2_5MrsKOS4sAxpMv2U.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "5MrsKOS4sAxpMv2U", - "name": "Lanze +2", - "type": "weapon", - "img": "icons/weapons/polearms/spear-flared-blue.webp", - "effects": [ - { - "_id": "iLA1AQrTlmA0BFnC", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!5MrsKOS4sAxpMv2U.iLA1AQrTlmA0BFnC" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342718, - "modifiedTime": 1740227862966, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5MrsKOS4sAxpMv2U" -} diff --git a/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json b/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json deleted file mode 100644 index d024768b..00000000 --- a/packs/items/Lanze__3_bVeWMNBKPWRqrFGj.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "bVeWMNBKPWRqrFGj", - "name": "Lanze +3", - "type": "weapon", - "img": "icons/weapons/polearms/spear-flared-purple.webp", - "effects": [ - { - "_id": "5CFUcYAipdyZHdde", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!bVeWMNBKPWRqrFGj.5CFUcYAipdyZHdde" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Nur im Trab (WB +1) oder Galopp (WB +4)

", - "quantity": 1, - "price": 2252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343098, - "modifiedTime": 1740227863007, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!bVeWMNBKPWRqrFGj" -} diff --git a/packs/items/Laterne_ZyML0QPctIXK8A4c.json b/packs/items/Laterne_ZyML0QPctIXK8A4c.json deleted file mode 100644 index f8f6aa37..00000000 --- a/packs/items/Laterne_ZyML0QPctIXK8A4c.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "ZyML0QPctIXK8A4c", - "name": "Laterne", - "type": "loot", - "img": "icons/sundries/lights/lantern-iron-yellow.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343085, - "modifiedTime": 1740227863005, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZyML0QPctIXK8A4c" -} diff --git a/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json b/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json deleted file mode 100644 index 90821547..00000000 --- a/packs/items/Laternen_l__brennt_4h__C2ggZE3ifOXlonkj.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "C2ggZE3ifOXlonkj", - "name": "Laternenöl (brennt 4h)", - "type": "loot", - "img": "icons/containers/kitchenware/vase-clay-cracked-white.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.05, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342799, - "modifiedTime": 1740227862974, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!C2ggZE3ifOXlonkj" -} diff --git a/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json b/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json deleted file mode 100644 index b2abfdc7..00000000 --- a/packs/items/Lederbecher_d4OegxLYAGpzMFsc.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "d4OegxLYAGpzMFsc", - "name": "Lederbecher", - "type": "loot", - "img": "icons/containers/kitchenware/mug-stein-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343127, - "modifiedTime": 1740227863010, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!d4OegxLYAGpzMFsc" -} diff --git a/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json b/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json deleted file mode 100644 index add0b62a..00000000 --- a/packs/items/Lederpanzer_60MhQmXh0c2cT5nx.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "60MhQmXh0c2cT5nx", - "name": "Lederpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-banded-leather-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342726, - "modifiedTime": 1740227862966, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!60MhQmXh0c2cT5nx" -} diff --git a/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json b/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json deleted file mode 100644 index 59b9e735..00000000 --- a/packs/items/Lederpanzer__1_GgYd2UCD2Juq7EUF.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "GgYd2UCD2Juq7EUF", - "name": "Lederpanzer +1", - "type": "armor", - "img": "icons/equipment/chest/breastplate-collared-leather-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342860, - "modifiedTime": 1740227862981, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GgYd2UCD2Juq7EUF" -} diff --git a/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json b/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json deleted file mode 100644 index aaea18dd..00000000 --- a/packs/items/Lederpanzer__2_JUTPfEGHEEwpeLvv.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "JUTPfEGHEEwpeLvv", - "name": "Lederpanzer +2", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-leather-studded-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 3254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342876, - "modifiedTime": 1740227862983, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JUTPfEGHEEwpeLvv" -} diff --git a/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json b/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json deleted file mode 100644 index b83da0e4..00000000 --- a/packs/items/Lederpanzer__3_A6hSQX9cPpoWHiOh.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "A6hSQX9cPpoWHiOh", - "name": "Lederpanzer +3", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-leather-studded.webp", - "effects": [ - { - "_id": "pYb7mMRhc5KBnUJT", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!A6hSQX9cPpoWHiOh.pYb7mMRhc5KBnUJT" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342779, - "modifiedTime": 1740227862972, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!A6hSQX9cPpoWHiOh" -} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json b/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json deleted file mode 100644 index eaa3423c..00000000 --- a/packs/items/Lederpanzer__F_r_Reittiere___1_yuSDAJwN3NFfcTSE.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "yuSDAJwN3NFfcTSE", - "name": "Lederpanzer (Für Reittiere) +1", - "type": "armor", - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [ - { - "_id": "ISagK3JV33VmnmoX", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!yuSDAJwN3NFfcTSE.ISagK3JV33VmnmoX" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2262, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343590, - "modifiedTime": 1740227863030, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yuSDAJwN3NFfcTSE" -} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json b/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json deleted file mode 100644 index d4ade773..00000000 --- a/packs/items/Lederpanzer__F_r_Reittiere___2_QNJVRtALi17otgDU.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "QNJVRtALi17otgDU", - "name": "Lederpanzer (Für Reittiere) +2", - "type": "armor", - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [ - { - "_id": "9qPThLRf5cwflety", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!QNJVRtALi17otgDU.9qPThLRf5cwflety" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 3262, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342944, - "modifiedTime": 1740227862991, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QNJVRtALi17otgDU" -} diff --git a/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json b/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json deleted file mode 100644 index 4323a26d..00000000 --- a/packs/items/Lederpanzer__F_r_Reittiere___3_34fD45Yzi3s2cSgy.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "34fD45Yzi3s2cSgy", - "name": "Lederpanzer (Für Reittiere) +3", - "type": "armor", - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [ - { - "_id": "DY0fXwaK8RHbyo75", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!34fD45Yzi3s2cSgy.DY0fXwaK8RHbyo75" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 4262, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342696, - "modifiedTime": 1740227862965, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!34fD45Yzi3s2cSgy" -} diff --git a/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json b/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json deleted file mode 100644 index da52fe50..00000000 --- a/packs/items/Lederpanzer__F_r_Reittiere__aNGn2tplXGSikyV7.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "aNGn2tplXGSikyV7", - "name": "Lederpanzer (Für Reittiere)", - "type": "armor", - "img": "icons/commodities/leather/leather-leaf-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 12, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343088, - "modifiedTime": 1740227863005, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!aNGn2tplXGSikyV7" -} diff --git a/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json b/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json deleted file mode 100644 index d834f744..00000000 --- a/packs/items/Lederschienen_GgWdEi4yyPb1wqYn.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "GgWdEi4yyPb1wqYn", - "name": "Lederschienen", - "type": "armor", - "img": "icons/equipment/wrist/bracer-simple-leather.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342859, - "modifiedTime": 1740227862981, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GgWdEi4yyPb1wqYn" -} diff --git a/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json b/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json deleted file mode 100644 index 51164e25..00000000 --- a/packs/items/Lederschienen__1_Hna91ve4yx84u7zJ.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "Hna91ve4yx84u7zJ", - "name": "Lederschienen +1", - "type": "armor", - "img": "icons/equipment/wrist/bracer-simple-leather-steel.webp", - "effects": [ - { - "_id": "KL8cnKi5NITkDENS", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Hna91ve4yx84u7zJ.KL8cnKi5NITkDENS" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 2254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342866, - "modifiedTime": 1740227862982, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Hna91ve4yx84u7zJ" -} diff --git a/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json b/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json deleted file mode 100644 index edd4098e..00000000 --- a/packs/items/Lederschienen__2_yleQcy5mTJ5jn3RZ.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "yleQcy5mTJ5jn3RZ", - "name": "Lederschienen +2", - "type": "armor", - "img": "icons/equipment/wrist/bracer-straight-leather-red.webp", - "effects": [ - { - "_id": "YzSUbB0a2EknrxQQ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!yleQcy5mTJ5jn3RZ.YzSUbB0a2EknrxQQ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 3254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343585, - "modifiedTime": 1740227863030, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yleQcy5mTJ5jn3RZ" -} diff --git a/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json b/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json deleted file mode 100644 index 4b7e5f46..00000000 --- a/packs/items/Lederschienen__3_Aw9aoumlI69gYv75.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "Aw9aoumlI69gYv75", - "name": "Lederschienen +3", - "type": "armor", - "img": "icons/equipment/wrist/bracer-banded-leather-black.webp", - "effects": [ - { - "_id": "LE8TRjZF13O6kDB8", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Aw9aoumlI69gYv75.LE8TRjZF13O6kDB8" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

An Arm & Bein

", - "quantity": 1, - "price": 4254, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "vambraceGreaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342791, - "modifiedTime": 1740227862974, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Aw9aoumlI69gYv75" -} diff --git a/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json b/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json deleted file mode 100644 index dd2662c7..00000000 --- a/packs/items/Leichte_Armbrust__1_9MsBlnMhvAMe4zTk.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "9MsBlnMhvAMe4zTk", - "name": "Leichte Armbrust +1", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-simple-brown.webp", - "effects": [ - { - "_id": "sACwF2e5qLRs6c1a", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!9MsBlnMhvAMe4zTk.sACwF2e5qLRs6c1a" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 1758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342769, - "modifiedTime": 1740227862970, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9MsBlnMhvAMe4zTk" -} diff --git a/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json b/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json deleted file mode 100644 index acc839db..00000000 --- a/packs/items/Leichte_Armbrust__2_PihP9eVyE4UEi1jj.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "PihP9eVyE4UEi1jj", - "name": "Leichte Armbrust +2", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-simple-black.webp", - "effects": [ - { - "_id": "63yxBIQ4ZvuvtVsV", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!PihP9eVyE4UEi1jj.63yxBIQ4ZvuvtVsV" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342939, - "modifiedTime": 1740227862990, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PihP9eVyE4UEi1jj" -} diff --git a/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json b/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json deleted file mode 100644 index bca89614..00000000 --- a/packs/items/Leichte_Armbrust__3_XSXEDiMN27cuEoOx.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "XSXEDiMN27cuEoOx", - "name": "Leichte Armbrust +3", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-purple.webp", - "effects": [ - { - "_id": "z2uPOzDQ47VbWmt5", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!XSXEDiMN27cuEoOx.z2uPOzDQ47VbWmt5" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2758, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343066, - "modifiedTime": 1740227863004, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XSXEDiMN27cuEoOx" -} diff --git a/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json b/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json deleted file mode 100644 index 8e3b4917..00000000 --- a/packs/items/Leichte_Armbrust_fnq4WOljIoYdbsUT.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "_id": "fnq4WOljIoYdbsUT", - "name": "Leichte Armbrust", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-simple-purple.webp", - "effects": [ - { - "_id": "gMm2PnBADqXBrCi1", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "-2", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative -2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!fnq4WOljIoYdbsUT.gMm2PnBADqXBrCi1" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": 0, - "name": " +1" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343203, - "modifiedTime": 1740227863014, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fnq4WOljIoYdbsUT" -} diff --git a/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json b/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json deleted file mode 100644 index 7385e3c1..00000000 --- a/packs/items/Mantel_der_Augen_9xjica2DVZso8NIU.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "9xjica2DVZso8NIU", - "name": "Mantel der Augen", - "type": "equipment", - "img": "icons/equipment/back/cloak-collared-red.webp", - "effects": [ - { - "_id": "7I80O404E6ty4pHv", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Wahrnehmung", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Wahrnehmung +III", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!9xjica2DVZso8NIU.7I80O404E6ty4pHv" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser mit Augenmustern bestickte Mantel gewährt seinem Träger Wahrnehmung +III.

", - "quantity": 1, - "price": 376, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342776, - "modifiedTime": 1740227862971, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9xjica2DVZso8NIU" -} diff --git a/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json b/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json deleted file mode 100644 index ef223141..00000000 --- a/packs/items/Metallbesteck_7JCc96rbTbTSASbT.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "7JCc96rbTbTSASbT", - "name": "Metallbesteck", - "type": "loot", - "img": "icons/tools/cooking/fork-steel-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342741, - "modifiedTime": 1740227862968, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7JCc96rbTbTSASbT" -} diff --git a/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json b/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json deleted file mode 100644 index ebc1bfb9..00000000 --- a/packs/items/Metallhelm__1_esfwvMs1ffgSXjbS.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "esfwvMs1ffgSXjbS", - "name": "Metallhelm +1", - "type": "armor", - "img": "icons/equipment/head/helm-barbute-rounded-steel.webp", - "effects": [ - { - "_id": "uo5922qyPvi35mhm", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!esfwvMs1ffgSXjbS.uo5922qyPvi35mhm" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343188, - "modifiedTime": 1740227863013, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!esfwvMs1ffgSXjbS" -} diff --git a/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json b/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json deleted file mode 100644 index 9b243441..00000000 --- a/packs/items/Metallhelm__2_9PdQv9CRy4ckaF0j.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "9PdQv9CRy4ckaF0j", - "name": "Metallhelm +2", - "type": "armor", - "img": "icons/equipment/head/helm-barbute-engraved.webp", - "effects": [ - { - "_id": "9IOcWr1CbRpF3lya", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!9PdQv9CRy4ckaF0j.9IOcWr1CbRpF3lya" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 3256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342772, - "modifiedTime": 1740227862971, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9PdQv9CRy4ckaF0j" -} diff --git a/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json b/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json deleted file mode 100644 index 281d9ca6..00000000 --- a/packs/items/Metallhelm__3_A109X3ZiGGGiWCze.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "A109X3ZiGGGiWCze", - "name": "Metallhelm +3", - "type": "armor", - "img": "icons/equipment/head/helm-barbute-engraved-steel.webp", - "effects": [ - { - "_id": "vhwepr5mHZHWDkCf", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!A109X3ZiGGGiWCze.vhwepr5mHZHWDkCf" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 4256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342777, - "modifiedTime": 1740227862971, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!A109X3ZiGGGiWCze" -} diff --git a/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json b/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json deleted file mode 100644 index 798a246f..00000000 --- a/packs/items/Metallhelm_fKhTsMO4YXDYY8GX.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "fKhTsMO4YXDYY8GX", - "name": "Metallhelm", - "type": "armor", - "img": "icons/equipment/head/helm-barbute-reinforced.webp", - "effects": [ - { - "_id": "wlQWjU1kXovR5G1J", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "-1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!fKhTsMO4YXDYY8GX.wlQWjU1kXovR5G1J" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -1

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "helmet" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343198, - "modifiedTime": 1740227863014, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fKhTsMO4YXDYY8GX" -} diff --git a/packs/items/Metallkrug_egleYygLWn8IfeuF.json b/packs/items/Metallkrug_egleYygLWn8IfeuF.json deleted file mode 100644 index 1959b950..00000000 --- a/packs/items/Metallkrug_egleYygLWn8IfeuF.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "egleYygLWn8IfeuF", - "name": "Metallkrug", - "type": "loot", - "img": "icons/containers/kitchenware/mug-steel-wood-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343177, - "modifiedTime": 1740227863013, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!egleYygLWn8IfeuF" -} diff --git a/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json b/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json deleted file mode 100644 index 65d357ff..00000000 --- a/packs/items/Metallschild__1_iGiZU77IGQQqlYFr.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "iGiZU77IGQQqlYFr", - "name": "Metallschild +1", - "type": "shield", - "img": "icons/equipment/shield/heater-steel-grey.webp", - "effects": [ - { - "_id": "9xMdH6XQxlulL7wv", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!iGiZU77IGQQqlYFr.9xMdH6XQxlulL7wv" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343247, - "modifiedTime": 1740227863017, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iGiZU77IGQQqlYFr" -} diff --git a/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json b/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json deleted file mode 100644 index 510dfcec..00000000 --- a/packs/items/Metallschild__2_XyDt7MThnLkDCldV.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "XyDt7MThnLkDCldV", - "name": "Metallschild +2", - "type": "shield", - "img": "icons/equipment/shield/heater-steel-sword-yellow-black.webp", - "effects": [ - { - "_id": "MidC9f4kBbIz7Z7S", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!XyDt7MThnLkDCldV.MidC9f4kBbIz7Z7S" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 3258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343075, - "modifiedTime": 1740227863004, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XyDt7MThnLkDCldV" -} diff --git a/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json b/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json deleted file mode 100644 index 8615b23e..00000000 --- a/packs/items/Metallschild__3_FKg3YI1EtiNfDcYO.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "FKg3YI1EtiNfDcYO", - "name": "Metallschild +3", - "type": "shield", - "img": "icons/equipment/shield/heater-steel-spiral.webp", - "effects": [ - { - "_id": "KZBNNdOmSqFkXC0X", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!FKg3YI1EtiNfDcYO.KZBNNdOmSqFkXC0X" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 4258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342817, - "modifiedTime": 1740227862979, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FKg3YI1EtiNfDcYO" -} diff --git a/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json b/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json deleted file mode 100644 index fa534f42..00000000 --- a/packs/items/Metallschild_gyfU78OLQj8qH3Zh.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_id": "gyfU78OLQj8qH3Zh", - "name": "Metallschild", - "type": "shield", - "img": "icons/equipment/shield/heater-steel-worn.webp", - "effects": [ - { - "_id": "kDcyXkLx75K2YRCl", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "-0.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -0,5", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!gyfU78OLQj8qH3Zh.kDcyXkLx75K2YRCl" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 8, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343221, - "modifiedTime": 1740227863015, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gyfU78OLQj8qH3Zh" -} diff --git a/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json b/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json deleted file mode 100644 index 7f7812c0..00000000 --- a/packs/items/Morgenstern_QNDLfvjiv9szUTYT.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "QNDLfvjiv9szUTYT", - "name": "Morgenstern", - "type": "weapon", - "img": "icons/weapons/maces/mace-flanged-steel.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342942, - "modifiedTime": 1740227862991, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QNDLfvjiv9szUTYT" -} diff --git a/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json b/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json deleted file mode 100644 index a8beebf6..00000000 --- a/packs/items/Morgenstern__1_u1ycDWee8nHPfZHA.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "u1ycDWee8nHPfZHA", - "name": "Morgenstern +1", - "type": "weapon", - "img": "icons/weapons/maces/mace-round-studded.webp", - "effects": [ - { - "_id": "nTOl8E9qA6stLcEJ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!u1ycDWee8nHPfZHA.nTOl8E9qA6stLcEJ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343519, - "modifiedTime": 1740227863026, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!u1ycDWee8nHPfZHA" -} diff --git a/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json b/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json deleted file mode 100644 index 2ece9fa8..00000000 --- a/packs/items/Morgenstern__2_TSoSy8ck9XCUa1SM.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "TSoSy8ck9XCUa1SM", - "name": "Morgenstern +2", - "type": "weapon", - "img": "icons/weapons/maces/mace-round-spiked-grey.webp", - "effects": [ - { - "_id": "fZ3VByauGosUUN3D", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!TSoSy8ck9XCUa1SM.fZ3VByauGosUUN3D" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343000, - "modifiedTime": 1740227863000, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TSoSy8ck9XCUa1SM" -} diff --git a/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json b/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json deleted file mode 100644 index df8ccd37..00000000 --- a/packs/items/Morgenstern__3_czxph9BZaC6Cj7kM.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "czxph9BZaC6Cj7kM", - "name": "Morgenstern +3", - "type": "weapon", - "img": "icons/weapons/maces/mace-round-spiked-black.webp", - "effects": [ - { - "_id": "JzKt4gdYSSlA6hSo", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!czxph9BZaC6Cj7kM.JzKt4gdYSSlA6hSo" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343120, - "modifiedTime": 1740227863008, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!czxph9BZaC6Cj7kM" -} diff --git a/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json b/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json deleted file mode 100644 index 07e67fab..00000000 --- a/packs/items/Orkspalter_RGyfv3y0LxHORAzA.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "RGyfv3y0LxHORAzA", - "name": "Orkspalter", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-engraved-runes.webp", - "effects": [ - { - "_id": "armx56Psy1qosJib", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!RGyfv3y0LxHORAzA.armx56Psy1qosJib" - }, - { - "_id": "qr1bY5zTm5ViDmnd", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Brutaler Hieb", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Brutaler Hieb +II", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!RGyfv3y0LxHORAzA.qr1bY5zTm5ViDmnd" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine alte, legendäre Zwergenaxt +1 mit Brutaler Hieb +II.

\n

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 4310, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342960, - "modifiedTime": 1740227862995, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RGyfv3y0LxHORAzA" -} diff --git a/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json b/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json deleted file mode 100644 index 9ad35db6..00000000 --- a/packs/items/Parf_m__50_x_benutzbar__uVYJY3A8kLne2ZkQ.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "uVYJY3A8kLne2ZkQ", - "name": "Parfüm (50 x benutzbar)", - "type": "loot", - "img": "icons/tools/laboratory/vial-orange.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Gibt 4 Stunden lang +1 auf Proben sozialer Interaktion mit anderem Geschlecht

", - "quantity": 1, - "price": 5, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343526, - "modifiedTime": 1740227863027, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uVYJY3A8kLne2ZkQ" -} diff --git a/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json b/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json deleted file mode 100644 index c858d43e..00000000 --- a/packs/items/Pergamentblatt_zx3FKwvrLw147ARX.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "zx3FKwvrLw147ARX", - "name": "Pergamentblatt", - "type": "loot", - "img": "icons/sundries/documents/paper-plain-white.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343620, - "modifiedTime": 1740227863032, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zx3FKwvrLw147ARX" -} diff --git a/packs/items/Pfanne_pYP26CskxKade3GF.json b/packs/items/Pfanne_pYP26CskxKade3GF.json deleted file mode 100644 index 64fda214..00000000 --- a/packs/items/Pfanne_pYP26CskxKade3GF.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "pYP26CskxKade3GF", - "name": "Pfanne", - "type": "loot", - "img": "icons/tools/cooking/pot-camping-iron-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343456, - "modifiedTime": 1740227863022, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pYP26CskxKade3GF" -} diff --git a/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json b/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json deleted file mode 100644 index 750075ec..00000000 --- a/packs/items/Pfeife_iOAmrK7t7ZyrtGy1.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "iOAmrK7t7ZyrtGy1", - "name": "Pfeife", - "type": "loot", - "img": "icons/sundries/misc/pipe-wooden-straight-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343253, - "modifiedTime": 1740227863017, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iOAmrK7t7ZyrtGy1" -} diff --git a/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json b/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json deleted file mode 100644 index eca2701a..00000000 --- a/packs/items/Plattenarmschienen_RsKimH7snoPFlg4L.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "RsKimH7snoPFlg4L", - "name": "Plattenarmschienen", - "type": "armor", - "img": "icons/equipment/wrist/bracer-armored-steel.webp", - "effects": [ - { - "_id": "DxcTuYT1mUpj9RdQ", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "-0.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -0,5", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!RsKimH7snoPFlg4L.DxcTuYT1mUpj9RdQ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 7, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342970, - "modifiedTime": 1740227862997, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RsKimH7snoPFlg4L" -} diff --git a/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json b/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json deleted file mode 100644 index 6e9b43cf..00000000 --- a/packs/items/Plattenarmschienen__1_XBCdDIpdR1weOhiy.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "XBCdDIpdR1weOhiy", - "name": "Plattenarmschienen +1", - "type": "armor", - "img": "icons/equipment/wrist/bracer-armored-steel-white.webp", - "effects": [ - { - "_id": "IwrLITAgM3vLzkwA", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!XBCdDIpdR1weOhiy.IwrLITAgM3vLzkwA" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343061, - "modifiedTime": 1740227863003, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XBCdDIpdR1weOhiy" -} diff --git a/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json b/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json deleted file mode 100644 index 44cd6d90..00000000 --- a/packs/items/Plattenarmschienen__2_VQtcpPYhzifN9Lqr.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "VQtcpPYhzifN9Lqr", - "name": "Plattenarmschienen +2", - "type": "armor", - "img": "icons/equipment/wrist/bracer-armored-steel-worn.webp", - "effects": [ - { - "_id": "pPtRJMUFA3gbNZXx", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!VQtcpPYhzifN9Lqr.pPtRJMUFA3gbNZXx" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 3257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343049, - "modifiedTime": 1740227863002, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VQtcpPYhzifN9Lqr" -} diff --git a/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json b/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json deleted file mode 100644 index 8fb15426..00000000 --- a/packs/items/Plattenarmschienen__3_2BNzuiU6wc3r9ByF.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "2BNzuiU6wc3r9ByF", - "name": "Plattenarmschienen +3", - "type": "armor", - "img": "icons/equipment/wrist/bracer-armored-steel-blue.webp", - "effects": [ - { - "_id": "PIRBFfHOrmdREhnH", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!2BNzuiU6wc3r9ByF.PIRBFfHOrmdREhnH" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 4257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "vambrace" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342668, - "modifiedTime": 1740227862963, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2BNzuiU6wc3r9ByF" -} diff --git a/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json b/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json deleted file mode 100644 index ca809a2f..00000000 --- a/packs/items/Plattenbeinschienen_9H3CBGOLUJ5JCHGJ.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "9H3CBGOLUJ5JCHGJ", - "name": "Plattenbeinschienen", - "type": "armor", - "img": "icons/equipment/leg/pants-armored-tasset-steel.webp", - "effects": [ - { - "_id": "sIbiQW6tSjZyfCzk", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "-0.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -0,5", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!9H3CBGOLUJ5JCHGJ.sIbiQW6tSjZyfCzk" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 8, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342768, - "modifiedTime": 1740227862970, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9H3CBGOLUJ5JCHGJ" -} diff --git a/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json b/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json deleted file mode 100644 index 192817de..00000000 --- a/packs/items/Plattenbeinschienen__1_KJsCiqvtPqjyu65Y.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "KJsCiqvtPqjyu65Y", - "name": "Plattenbeinschienen +1", - "type": "armor", - "img": "icons/equipment/leg/cuisses-reticulated-steel.webp", - "effects": [ - { - "_id": "I32OnPe7rgPEHtEk", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!KJsCiqvtPqjyu65Y.I32OnPe7rgPEHtEk" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342891, - "modifiedTime": 1740227862984, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KJsCiqvtPqjyu65Y" -} diff --git a/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json b/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json deleted file mode 100644 index 9cc1eba2..00000000 --- a/packs/items/Plattenbeinschienen__2_FVnS20q8S7LrAdFj.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "FVnS20q8S7LrAdFj", - "name": "Plattenbeinschienen +2", - "type": "armor", - "img": "icons/equipment/leg/cuisses-reticulated-black.webp", - "effects": [ - { - "_id": "Zw9tFdr75QWyt8lO", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!FVnS20q8S7LrAdFj.Zw9tFdr75QWyt8lO" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 3258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342821, - "modifiedTime": 1740227862979, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FVnS20q8S7LrAdFj" -} diff --git a/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json b/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json deleted file mode 100644 index b92a21d3..00000000 --- a/packs/items/Plattenbeinschienen__3_yDq5abf47mYIw3OG.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "yDq5abf47mYIw3OG", - "name": "Plattenbeinschienen +3", - "type": "armor", - "img": "icons/equipment/leg/cuisses-plate-reticulated-steel-blue.webp", - "effects": [ - { - "_id": "dJcAdxKxsUIXzHCa", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!yDq5abf47mYIw3OG.dJcAdxKxsUIXzHCa" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 4258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "plate", - "armorType": "greaves" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343577, - "modifiedTime": 1740227863029, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yDq5abf47mYIw3OG" -} diff --git a/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json b/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json deleted file mode 100644 index 382eb08b..00000000 --- a/packs/items/Plattenpanzer__1_ABxdFjBvQWavQsEk.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "ABxdFjBvQWavQsEk", - "name": "Plattenpanzer +1", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-steel-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 4300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342783, - "modifiedTime": 1740227862972, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ABxdFjBvQWavQsEk" -} diff --git a/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json b/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json deleted file mode 100644 index 58dd4a28..00000000 --- a/packs/items/Plattenpanzer__2_03wnfxowhzvSJPSj.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "03wnfxowhzvSJPSj", - "name": "Plattenpanzer +2", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-steel.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 5300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342624, - "modifiedTime": 1740227862959, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!03wnfxowhzvSJPSj" -} diff --git a/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json b/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json deleted file mode 100644 index 2498dd24..00000000 --- a/packs/items/Plattenpanzer__3_5DY52CR03xXJHG6m.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "5DY52CR03xXJHG6m", - "name": "Plattenpanzer +3", - "type": "armor", - "img": "icons/equipment/chest/breastplate-gorget-steel.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 6300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342711, - "modifiedTime": 1740227862966, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5DY52CR03xXJHG6m" -} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json b/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json deleted file mode 100644 index 4f7e2d59..00000000 --- a/packs/items/Plattenpanzer__F_r_Reittiere__D4aCfCqniMSQ43hL.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "D4aCfCqniMSQ43hL", - "name": "Plattenpanzer (Für Reittiere)", - "type": "armor", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -1

", - "quantity": 1, - "price": 150, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342805, - "modifiedTime": 1740227862977, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!D4aCfCqniMSQ43hL" -} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json b/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json deleted file mode 100644 index 98ec0ead..00000000 --- a/packs/items/Plattenpanzer__F_r_Reittiere___1_99xGE9jkmXEXyf4U.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "99xGE9jkmXEXyf4U", - "name": "Plattenpanzer (Für Reittiere) +1", - "type": "armor", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [ - { - "_id": "Jkhqmke6gzWU8vPZ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!99xGE9jkmXEXyf4U.Jkhqmke6gzWU8vPZ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 4400, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342766, - "modifiedTime": 1740227862970, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!99xGE9jkmXEXyf4U" -} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json b/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json deleted file mode 100644 index 4a2861ae..00000000 --- a/packs/items/Plattenpanzer__F_r_Reittiere___2_c6N4vskeYthnydo3.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "c6N4vskeYthnydo3", - "name": "Plattenpanzer (Für Reittiere) +2", - "type": "armor", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [ - { - "_id": "n0pBAhNqTJbvqDWx", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!c6N4vskeYthnydo3.n0pBAhNqTJbvqDWx" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 5400, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343105, - "modifiedTime": 1740227863007, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!c6N4vskeYthnydo3" -} diff --git a/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json b/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json deleted file mode 100644 index cb35f673..00000000 --- a/packs/items/Plattenpanzer__F_r_Reittiere___3_TBrsx86DgKfq9Qat.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "TBrsx86DgKfq9Qat", - "name": "Plattenpanzer (Für Reittiere) +3", - "type": "armor", - "img": "icons/commodities/metal/mail-plate-steel.webp", - "effects": [ - { - "_id": "ioazIqWWKawYuPBQ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!TBrsx86DgKfq9Qat.ioazIqWWKawYuPBQ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 6400, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342994, - "modifiedTime": 1740227862999, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TBrsx86DgKfq9Qat" -} diff --git a/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json b/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json deleted file mode 100644 index c8b8d1b2..00000000 --- a/packs/items/Plattenpanzer_t13RJoXrsS0HAyIQ.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "t13RJoXrsS0HAyIQ", - "name": "Plattenpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-steel-grey.webp", - "effects": [ - { - "_id": "pAxAXam5JBN6Acz9", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.movement.total", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!t13RJoXrsS0HAyIQ.pAxAXam5JBN6Acz9" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -1 m

", - "quantity": 1, - "price": 50, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343507, - "modifiedTime": 1740227863025, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!t13RJoXrsS0HAyIQ" -} diff --git a/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json b/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json deleted file mode 100644 index fb89c396..00000000 --- a/packs/items/R_stung_des_Kriegers_55AkLjiaIn0SWO9k.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "55AkLjiaIn0SWO9k", - "name": "Rüstung des Kriegers", - "type": "armor", - "img": "icons/equipment/chest/breastplate-collared-steel.webp", - "effects": [ - { - "_id": "TZoEpatdi8z1nreX", - "flags": {}, - "changes": [ - { - "key": "system.attributes.body.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Körper +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!55AkLjiaIn0SWO9k.TZoEpatdi8z1nreX" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese aufwendig verzierte Plattenrüstung +2 gewährt ihrem Träger +1 auf Körper.

", - "quantity": 1, - "price": 7300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342708, - "modifiedTime": 1740227862965, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!55AkLjiaIn0SWO9k" -} diff --git a/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json b/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json deleted file mode 100644 index ead087af..00000000 --- a/packs/items/R_stung_des_L_wen_1uYooTtDWgzB9FI9.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "1uYooTtDWgzB9FI9", - "name": "Rüstung des Löwen", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-gold.webp", - "effects": [ - { - "_id": "iIT1kOsyMJn0mIte", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "1.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen +1,5 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!1uYooTtDWgzB9FI9.iIT1kOsyMJn0mIte" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine Plattenrüstung +2 mit verzierten Löwenköpfen, die Laufen +1,5 m gewährt.

", - "quantity": 1, - "price": 6800, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342658, - "modifiedTime": 1740227862963, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1uYooTtDWgzB9FI9" -} diff --git a/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json b/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json deleted file mode 100644 index 2b7a5ec4..00000000 --- a/packs/items/R_stung_des_Sch_tzen_tQ1LUX7in4xuuR12.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "tQ1LUX7in4xuuR12", - "name": "Rüstung des Schützen", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "C7jqj8julpambLpm", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!tQ1LUX7in4xuuR12.C7jqj8julpambLpm" - }, - { - "_id": "fwNP4w1u7JP3OFEb", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.rangedAttack.total", - "value": "3", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Schießen +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!tQ1LUX7in4xuuR12.fwNP4w1u7JP3OFEb" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese mit dunkelgrünen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +3 auf Schießen.

", - "quantity": 1, - "price": 4760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343512, - "modifiedTime": 1740227863026, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tQ1LUX7in4xuuR12" -} diff --git a/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json b/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json deleted file mode 100644 index d6d48e37..00000000 --- a/packs/items/R_stung_des_Sp_hers_Akhijp2Wayupy1qw.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "Akhijp2Wayupy1qw", - "name": "Rüstung des Spähers", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "1swDTN9Kj7othjdB", - "flags": {}, - "changes": [ - { - "key": "system.attributes.mobility.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Agilität +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Akhijp2Wayupy1qw.1swDTN9Kj7othjdB" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese mit braunen Lederpolstern verstärkte Kettenrüstung +1 gewährt ihrem Träger +1 auf Agilität.

", - "quantity": 1, - "price": 5260, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342785, - "modifiedTime": 1740227862973, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Akhijp2Wayupy1qw" -} diff --git a/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json b/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json deleted file mode 100644 index 23f60f5e..00000000 --- a/packs/items/Rauchkraut__5_Pfeifenk_pfe__8CYWepouh43ffkZ0.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "8CYWepouh43ffkZ0", - "name": "Rauchkraut (5 Pfeifenköpfe)", - "type": "loot", - "img": "icons/commodities/flowers/flower-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342761, - "modifiedTime": 1740227862969, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8CYWepouh43ffkZ0" -} diff --git a/packs/items/Robe_WP62N2sjGz3eIN18.json b/packs/items/Robe_WP62N2sjGz3eIN18.json deleted file mode 100644 index d4a8d77e..00000000 --- a/packs/items/Robe_WP62N2sjGz3eIN18.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "WP62N2sjGz3eIN18", - "name": "Robe", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-teal.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343055, - "modifiedTime": 1740227863003, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!WP62N2sjGz3eIN18" -} diff --git a/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json b/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json deleted file mode 100644 index edd73f16..00000000 --- a/packs/items/Robe__1_FFCSMuHlDKiT0MxR.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "FFCSMuHlDKiT0MxR", - "name": "Robe +1", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-white.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342816, - "modifiedTime": 1740227862979, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FFCSMuHlDKiT0MxR" -} diff --git a/packs/items/Robe__2_NSg4SdEHDuCfwXji.json b/packs/items/Robe__2_NSg4SdEHDuCfwXji.json deleted file mode 100644 index bc7e1d3e..00000000 --- a/packs/items/Robe__2_NSg4SdEHDuCfwXji.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "NSg4SdEHDuCfwXji", - "name": "Robe +2", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-red.webp", - "effects": [ - { - "_id": "0GJ943ZfeGKcsb2l", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!NSg4SdEHDuCfwXji.0GJ943ZfeGKcsb2l" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342915, - "modifiedTime": 1740227862987, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NSg4SdEHDuCfwXji" -} diff --git a/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json b/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json deleted file mode 100644 index c1308b31..00000000 --- a/packs/items/Robe__3_cFMcSg7PFIcQvf0B.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "cFMcSg7PFIcQvf0B", - "name": "Robe +3", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-purple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343111, - "modifiedTime": 1740227863008, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!cFMcSg7PFIcQvf0B" -} diff --git a/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json b/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json deleted file mode 100644 index 0e8ecec4..00000000 --- a/packs/items/Robe_der_Macht_KGk7UFwLwrsdPuQe.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "KGk7UFwLwrsdPuQe", - "name": "Robe der Macht", - "type": "armor", - "img": "icons/equipment/chest/robe-collared-pink.webp", - "effects": [ - { - "_id": "tGAxxMZu2cj0Pzs2", - "flags": {}, - "changes": [ - { - "key": "system.attributes.mind.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Geist +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!KGk7UFwLwrsdPuQe.tGAxxMZu2cj0Pzs2" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese violette Robe +3 verleiht ihrem Träger +1 auf Geist.

", - "quantity": 1, - "price": 5251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342888, - "modifiedTime": 1740227862984, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KGk7UFwLwrsdPuQe" -} diff --git a/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json b/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json deleted file mode 100644 index a3316320..00000000 --- a/packs/items/Robe_des_Denkers_A9QnXaonGzuUBktX.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "A9QnXaonGzuUBktX", - "name": "Robe des Denkers", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-white.webp", - "effects": [ - { - "_id": "Fyl7VFU1QhIbh2ul", - "flags": {}, - "changes": [ - { - "key": "system.traits.intellect.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "+1 Verstand (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!A9QnXaonGzuUBktX.Fyl7VFU1QhIbh2ul" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese graue Robe +2 verleiht +1 auf Verstand.

", - "quantity": 1, - "price": 3251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342781, - "modifiedTime": 1740227862972, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!A9QnXaonGzuUBktX" -} diff --git a/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json b/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json deleted file mode 100644 index b59be378..00000000 --- a/packs/items/Robe_des_Heilers_kVRybb0knZkoJLlj.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "kVRybb0knZkoJLlj", - "name": "Robe des Heilers", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-white.webp", - "effects": [ - { - "_id": "GgAFMmXGb1B5KIda", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.healing" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Heilzauber +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!kVRybb0knZkoJLlj.GgAFMmXGb1B5KIda" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine weiße Robe, die ihrem Träger +1 auf Heilzauber gewährt.

", - "quantity": 1, - "price": 751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343318, - "modifiedTime": 1740227863019, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kVRybb0knZkoJLlj" -} diff --git a/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json b/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json deleted file mode 100644 index 17e2d152..00000000 --- a/packs/items/Rucksack_HzqK6sd3ovgEZdWz.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "HzqK6sd3ovgEZdWz", - "name": "Rucksack", - "type": "loot", - "img": "icons/containers/bags/pack-leather-white-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342867, - "modifiedTime": 1740227862982, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!HzqK6sd3ovgEZdWz" -} diff --git a/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json b/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json deleted file mode 100644 index 4aab6bd5..00000000 --- a/packs/items/Ruderboot__2_Mann__an96cOOwr3YujKpe.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "an96cOOwr3YujKpe", - "name": "Ruderboot (2 Mann)", - "type": "loot", - "img": "icons/tools/nautical/steering-wheel.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 25, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343095, - "modifiedTime": 1740227863006, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!an96cOOwr3YujKpe" -} diff --git a/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json b/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json deleted file mode 100644 index fd230b8a..00000000 --- a/packs/items/Runenbestickte_Feurrobe_gK76RPRhQF7T4AQC.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "gK76RPRhQF7T4AQC", - "name": "Runenbestickte Feurrobe", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-red.webp", - "effects": [ - { - "_id": "Qpy3XcHOokbU7ZaS", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!gK76RPRhQF7T4AQC.Qpy3XcHOokbU7ZaS" - }, - { - "_id": "IbOD7GxGN30V1AYL", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "5", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Feuermagier", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Feuermagier +V", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!gK76RPRhQF7T4AQC.IbOD7GxGN30V1AYL" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine feuerrote Robe +3 mit aufgestickten Flammenrunen und Feuermagier +V.

", - "quantity": 1, - "price": 4501, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343207, - "modifiedTime": 1740227863015, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gK76RPRhQF7T4AQC" -} diff --git a/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json b/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json deleted file mode 100644 index a655111d..00000000 --- a/packs/items/Runenbestickte_Robe__1_sUHJSIG8aTs0do67.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "sUHJSIG8aTs0do67", - "name": "Runenbestickte Robe +1", - "type": "armor", - "img": "icons/equipment/chest/robe-collared-blue.webp", - "effects": [ - { - "_id": "6NLQSkPxsA3H8Gc8", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!sUHJSIG8aTs0do67.6NLQSkPxsA3H8Gc8" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Aura +1

", - "quantity": 1, - "price": 1258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343486, - "modifiedTime": 1740227863025, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sUHJSIG8aTs0do67" -} diff --git a/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json b/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json deleted file mode 100644 index 1dc025c8..00000000 --- a/packs/items/Runenbestickte_Robe__2_j3wcDmBNiDx7sK0n.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "j3wcDmBNiDx7sK0n", - "name": "Runenbestickte Robe +2", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-blue.webp", - "effects": [ - { - "_id": "a2GXKNKHJWdyKb7h", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!j3wcDmBNiDx7sK0n.a2GXKNKHJWdyKb7h" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Aura +1

", - "quantity": 1, - "price": 2258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343301, - "modifiedTime": 1740227863018, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!j3wcDmBNiDx7sK0n" -} diff --git a/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json b/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json deleted file mode 100644 index 8664cf79..00000000 --- a/packs/items/Runenbestickte_Robe__3_U8iwfv7oJNl8CsKK.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "U8iwfv7oJNl8CsKK", - "name": "Runenbestickte Robe +3", - "type": "armor", - "img": "icons/equipment/chest/robe-collared-pink.webp", - "effects": [ - { - "_id": "CFyX5reV96JVL2Cg", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!U8iwfv7oJNl8CsKK.CFyX5reV96JVL2Cg" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Aura +1

", - "quantity": 1, - "price": 3258, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343029, - "modifiedTime": 1740227863001, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!U8iwfv7oJNl8CsKK" -} diff --git a/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json b/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json deleted file mode 100644 index 37704a4f..00000000 --- a/packs/items/Runenbestickte_Robe_w1bZ2431gdOQumWK.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "w1bZ2431gdOQumWK", - "name": "Runenbestickte Robe", - "type": "armor", - "img": "icons/equipment/chest/coat-leather-blue.webp", - "effects": [ - { - "_id": "vgJWV95OeyzrjyFw", - "flags": {}, - "changes": [ - { - "key": "system.traits.aura.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Aura +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!w1bZ2431gdOQumWK.vgJWV95OeyzrjyFw" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Aura +1

", - "quantity": 1, - "price": 8, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343553, - "modifiedTime": 1740227863028, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!w1bZ2431gdOQumWK" -} diff --git a/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json b/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json deleted file mode 100644 index 54223706..00000000 --- a/packs/items/S_ldnertreu_FVrbrxqVURPP3Yee.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "FVrbrxqVURPP3Yee", - "name": "Söldnertreu", - "type": "armor", - "img": "icons/equipment/chest/breastplate-scale-grey.webp", - "effects": [ - { - "_id": "qTM84JzHmlfYXGCb", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.meleeAttack.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Schlagen +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!FVrbrxqVURPP3Yee.qTM84JzHmlfYXGCb" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese mit blauen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +1 auf Schlagen.

", - "quantity": 1, - "price": 3760, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2, - "armorMaterialType": "chain", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342825, - "modifiedTime": 1740227862979, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FVrbrxqVURPP3Yee" -} diff --git a/packs/items/Sack_RD0HKxmbhfluw73R.json b/packs/items/Sack_RD0HKxmbhfluw73R.json deleted file mode 100644 index f5854278..00000000 --- a/packs/items/Sack_RD0HKxmbhfluw73R.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "RD0HKxmbhfluw73R", - "name": "Sack", - "type": "loot", - "img": "icons/containers/bags/sack-simple-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.8, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342958, - "modifiedTime": 1740227862994, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RD0HKxmbhfluw73R" -} diff --git a/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json b/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json deleted file mode 100644 index acd46e4b..00000000 --- a/packs/items/Sanduhr_R2LeIutCjDzwGwUx.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "R2LeIutCjDzwGwUx", - "name": "Sanduhr", - "type": "loot", - "img": "icons/tools/navigation/hourglass-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342957, - "modifiedTime": 1740227862994, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!R2LeIutCjDzwGwUx" -} diff --git a/packs/items/Sattel_nslQfc441x1GG0SL.json b/packs/items/Sattel_nslQfc441x1GG0SL.json deleted file mode 100644 index 0479dfa0..00000000 --- a/packs/items/Sattel_nslQfc441x1GG0SL.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "nslQfc441x1GG0SL", - "name": "Sattel", - "type": "equipment", - "img": "icons/commodities/leather/leather-scrap-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343364, - "modifiedTime": 1740227863020, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nslQfc441x1GG0SL" -} diff --git a/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json b/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json deleted file mode 100644 index e2c558d5..00000000 --- a/packs/items/Satteltasche_UpkQTtuxNS1eOIRu.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "UpkQTtuxNS1eOIRu", - "name": "Satteltasche", - "type": "loot", - "img": "icons/containers/bags/pouch-simple-leather-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343040, - "modifiedTime": 1740227863001, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!UpkQTtuxNS1eOIRu" -} diff --git a/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json b/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json deleted file mode 100644 index 8e53ee0e..00000000 --- a/packs/items/Schlachtbeil_0UDiL2xAlGCEeckL.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "0UDiL2xAlGCEeckL", - "name": "Schlachtbeil", - "type": "weapon", - "img": "icons/weapons/axes/axe-battle-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 20, - "availability": "city", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342632, - "modifiedTime": 1740227862960, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0UDiL2xAlGCEeckL" -} diff --git a/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json b/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json deleted file mode 100644 index 1aeb02f2..00000000 --- a/packs/items/Schlachtbeil__1_N3RcggWJuKGtKZyP.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "N3RcggWJuKGtKZyP", - "name": "Schlachtbeil +1", - "type": "weapon", - "img": "icons/weapons/axes/axe-battle-blackened.webp", - "effects": [ - { - "_id": "aHr33jsfG78BJ7m2", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!N3RcggWJuKGtKZyP.aHr33jsfG78BJ7m2" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 2770, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342908, - "modifiedTime": 1740227862987, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!N3RcggWJuKGtKZyP" -} diff --git a/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json b/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json deleted file mode 100644 index bcb9c419..00000000 --- a/packs/items/Schlachtbeil__2_Qncx0jbmnD2KJAfG.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "Qncx0jbmnD2KJAfG", - "name": "Schlachtbeil +2", - "type": "weapon", - "img": "icons/weapons/axes/axe-battle-engraved-purple.webp", - "effects": [ - { - "_id": "atmWPMxgNoeole7n", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "-6", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative -6", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Qncx0jbmnD2KJAfG.atmWPMxgNoeole7n" - }, - { - "_id": "Qdjy0578meoXi49p", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Qncx0jbmnD2KJAfG.Qdjy0578meoXi49p" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3270, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -6 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342949, - "modifiedTime": 1740227862993, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Qncx0jbmnD2KJAfG" -} diff --git a/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json b/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json deleted file mode 100644 index 9afeadfa..00000000 --- a/packs/items/Schlachtbeil__3_Nb65CmtFiiWPpnNZ.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "Nb65CmtFiiWPpnNZ", - "name": "Schlachtbeil +3", - "type": "weapon", - "img": "icons/weapons/axes/axe-battle-heavy-black.webp", - "effects": [ - { - "_id": "DJQ1hHJRJuraxIym", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Nb65CmtFiiWPpnNZ.DJQ1hHJRJuraxIym" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

", - "quantity": 1, - "price": 3770, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 7, - "opponentDefense": -7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342917, - "modifiedTime": 1740227862988, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Nb65CmtFiiWPpnNZ" -} diff --git a/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json b/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json deleted file mode 100644 index 873cdb33..00000000 --- a/packs/items/Schlachtgei_el__1_hBemmfRcQLFU7PSt.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "hBemmfRcQLFU7PSt", - "name": "Schlachtgeißel +1", - "type": "weapon", - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "oOQJt7Ub0PGGjdzW", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!hBemmfRcQLFU7PSt.oOQJt7Ub0PGGjdzW" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 2266, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343226, - "modifiedTime": 1740227863016, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hBemmfRcQLFU7PSt" -} diff --git a/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json b/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json deleted file mode 100644 index 9e004d86..00000000 --- a/packs/items/Schlachtgei_el__2_YSl6qdVC6fDYVkFQ.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "YSl6qdVC6fDYVkFQ", - "name": "Schlachtgeißel +2", - "type": "weapon", - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "OF7IAa9tUBoz23TD", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!YSl6qdVC6fDYVkFQ.OF7IAa9tUBoz23TD" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 2766, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -6 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343079, - "modifiedTime": 1740227863004, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!YSl6qdVC6fDYVkFQ" -} diff --git a/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json b/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json deleted file mode 100644 index 67d8f2d0..00000000 --- a/packs/items/Schlachtgei_el__3_eqGo6VKETI1UTxP1.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "eqGo6VKETI1UTxP1", - "name": "Schlachtgeißel +3", - "type": "weapon", - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "uhpIAR3T0P3bJw1C", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!eqGo6VKETI1UTxP1.uhpIAR3T0P3bJw1C" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 3266, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343181, - "modifiedTime": 1740227863013, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eqGo6VKETI1UTxP1" -} diff --git a/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json b/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json deleted file mode 100644 index 635caddc..00000000 --- a/packs/items/Schlachtgei_el_yfqzgTskyIgWZq8A.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "yfqzgTskyIgWZq8A", - "name": "Schlachtgeißel", - "type": "weapon", - "img": "icons/weapons/maces/flail-triple-grey.webp", - "effects": [ - { - "_id": "BdejYg7Bq6tM2ROu", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "-4", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative -4", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!yfqzgTskyIgWZq8A.BdejYg7Bq6tM2ROu" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

", - "quantity": 1, - "price": 16, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343580, - "modifiedTime": 1740227863029, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yfqzgTskyIgWZq8A" -} diff --git a/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json b/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json deleted file mode 100644 index 295a0ce6..00000000 --- a/packs/items/Schlafstaub_UBH03jh91dP6KMtL.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "UBH03jh91dP6KMtL", - "name": "Schlafstaub", - "type": "loot", - "img": "icons/tools/laboratory/bowl-powder-purple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wirkt auf ein beworfenes Ziel den Zauber @Compendium[ds4.spells.CrZ8L7oaWvPjLou0]{Einschläfern}.

", - "quantity": 1, - "price": 151, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343033, - "modifiedTime": 1740227863001, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!UBH03jh91dP6KMtL" -} diff --git a/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json b/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json deleted file mode 100644 index 4146cc0b..00000000 --- a/packs/items/Schlagring__1_fziU7tEIQPowqBJj.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "fziU7tEIQPowqBJj", - "name": "Schlagring +1", - "type": "weapon", - "img": "icons/weapons/fist/fist-knuckles-spiked-blue.webp", - "effects": [ - { - "_id": "ph5sqT08zd8lSi7s", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!fziU7tEIQPowqBJj.ph5sqT08zd8lSi7s" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343205, - "modifiedTime": 1740227863014, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fziU7tEIQPowqBJj" -} diff --git a/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json b/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json deleted file mode 100644 index 26be63c2..00000000 --- a/packs/items/Schlagring__2_830D1zHS3v0Gx4nB.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "830D1zHS3v0Gx4nB", - "name": "Schlagring +2", - "type": "weapon", - "img": "icons/weapons/fist/fist-knuckles-spiked-stone.webp", - "effects": [ - { - "_id": "iQZLQlcUQgnYg0Hs", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!830D1zHS3v0Gx4nB.iQZLQlcUQgnYg0Hs" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 1251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342750, - "modifiedTime": 1740227862968, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!830D1zHS3v0Gx4nB" -} diff --git a/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json b/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json deleted file mode 100644 index 0fc74214..00000000 --- a/packs/items/Schlagring__3_CHRqMQxkgz3jad9J.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "CHRqMQxkgz3jad9J", - "name": "Schlagring +3", - "type": "weapon", - "img": "icons/weapons/fist/fist-knuckles-brass.webp", - "effects": [ - { - "_id": "K3m0tLhoW9vT6e19", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!CHRqMQxkgz3jad9J.K3m0tLhoW9vT6e19" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 1751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342800, - "modifiedTime": 1740227862975, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!CHRqMQxkgz3jad9J" -} diff --git a/packs/items/Schlagring_aJ9xkECmqeBUhING.json b/packs/items/Schlagring_aJ9xkECmqeBUhING.json deleted file mode 100644 index 3662f2fd..00000000 --- a/packs/items/Schlagring_aJ9xkECmqeBUhING.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "aJ9xkECmqeBUhING", - "name": "Schlagring", - "type": "weapon", - "img": "icons/weapons/fist/fist-knuckles-spiked-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wie waffenlos, Gegner aber kein Abwehr-Bonus

", - "quantity": 1, - "price": 1, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343087, - "modifiedTime": 1740227863005, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!aJ9xkECmqeBUhING" -} diff --git a/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json b/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json deleted file mode 100644 index ac74c0ee..00000000 --- a/packs/items/Schleuder_ETpbN0Q39eKPmWK0.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "ETpbN0Q39eKPmWK0", - "name": "Schleuder", - "type": "weapon", - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342812, - "modifiedTime": 1740227862978, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ETpbN0Q39eKPmWK0" -} diff --git a/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json b/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json deleted file mode 100644 index b0e84519..00000000 --- a/packs/items/Schleuder__1_GEBWsHBuyh9KbIbb.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "GEBWsHBuyh9KbIbb", - "name": "Schleuder +1", - "type": "weapon", - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [ - { - "_id": "YCgrTPMCggWZOFdJ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!GEBWsHBuyh9KbIbb.YCgrTPMCggWZOFdJ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 750.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342850, - "modifiedTime": 1740227862980, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GEBWsHBuyh9KbIbb" -} diff --git a/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json b/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json deleted file mode 100644 index c5a5237b..00000000 --- a/packs/items/Schleuder__2_1IWsAaMSnz1Q9ZWd.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "1IWsAaMSnz1Q9ZWd", - "name": "Schleuder +2", - "type": "weapon", - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [ - { - "_id": "aKfE4S2oocgJMro8", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!1IWsAaMSnz1Q9ZWd.aKfE4S2oocgJMro8" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 1250.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342651, - "modifiedTime": 1740227862962, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1IWsAaMSnz1Q9ZWd" -} diff --git a/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json b/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json deleted file mode 100644 index 9b32711a..00000000 --- a/packs/items/Schleuder__3_S4pc70BxmRU0DCsW.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "S4pc70BxmRU0DCsW", - "name": "Schleuder +3", - "type": "weapon", - "img": "icons/weapons/slings/slingshot-wood.webp", - "effects": [ - { - "_id": "kM7ZknhuQS8uIJbu", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!S4pc70BxmRU0DCsW.kM7ZknhuQS8uIJbu" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 1750.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342981, - "modifiedTime": 1740227862998, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!S4pc70BxmRU0DCsW" -} diff --git a/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json b/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json deleted file mode 100644 index 69ec3d15..00000000 --- a/packs/items/Schloss__Einfach__SW__0__3pdw4CN8Wc9oCKX5.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "3pdw4CN8Wc9oCKX5", - "name": "Schloss: Einfach (SW: 0)", - "type": "loot", - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342700, - "modifiedTime": 1740227862965, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!3pdw4CN8Wc9oCKX5" -} diff --git a/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json b/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json deleted file mode 100644 index 753f9a85..00000000 --- a/packs/items/Schloss__Gut__SW__2__zAMFB4HHHUQp4RFa.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "zAMFB4HHHUQp4RFa", - "name": "Schloss: Gut (SW: 2)", - "type": "loot", - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343593, - "modifiedTime": 1740227863030, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zAMFB4HHHUQp4RFa" -} diff --git a/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json b/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json deleted file mode 100644 index 65f80e36..00000000 --- a/packs/items/Schloss__Meisterartbeit__SW__8__Sks4O3NpwOWQIrIa.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "Sks4O3NpwOWQIrIa", - "name": "Schloss: Meisterartbeit (SW: 8)", - "type": "loot", - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 50, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342990, - "modifiedTime": 1740227862999, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Sks4O3NpwOWQIrIa" -} diff --git a/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json b/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json deleted file mode 100644 index ddee2f90..00000000 --- a/packs/items/Schloss__Solide__SW__4__dW8OETKY21O3GNHf.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "dW8OETKY21O3GNHf", - "name": "Schloss: Solide (SW: 4)", - "type": "loot", - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 10, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343141, - "modifiedTime": 1740227863011, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dW8OETKY21O3GNHf" -} diff --git a/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json b/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json deleted file mode 100644 index 0f04a3cf..00000000 --- a/packs/items/Schloss__Zwergenarbeit__SW__12__tPlXSWQ4mP0dqnOa.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "tPlXSWQ4mP0dqnOa", - "name": "Schloss: Zwergenarbeit (SW: 12)", - "type": "loot", - "img": "icons/containers/chest/chest-reinforced-steel-oak-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 250, - "availability": "city", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343511, - "modifiedTime": 1740227863025, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tPlXSWQ4mP0dqnOa" -} diff --git a/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json b/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json deleted file mode 100644 index dcd84014..00000000 --- a/packs/items/Schnelligkeitstrank_Tlfjrxlm9NpmVR0L.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "Tlfjrxlm9NpmVR0L", - "name": "Schnelligkeitstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-fancy-orange.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Für W20 Runden erhöht sich der Laufen- Wert des Trinkenden um 100%.

", - "quantity": 1, - "price": 200, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343014, - "modifiedTime": 1740227863000, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Tlfjrxlm9NpmVR0L" -} diff --git a/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json b/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json deleted file mode 100644 index e231c045..00000000 --- a/packs/items/Schutzring__1_kGTB9f2zPrmedHq4.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_id": "kGTB9f2zPrmedHq4", - "name": "Schutzring +1", - "type": "equipment", - "img": "icons/equipment/finger/ring-band-engraved-lines-bronze.webp", - "effects": [ - { - "_id": "yH3Ujo3jKNCYI4n9", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.defense.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Abwehr +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!kGTB9f2zPrmedHq4.yH3Ujo3jKNCYI4n9" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhöht die Abwehr um 1, ohne dabei Panzerungsmalus zu verursachen.

", - "quantity": 1, - "price": 752, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343316, - "modifiedTime": 1740227863018, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kGTB9f2zPrmedHq4" -} diff --git a/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json b/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json deleted file mode 100644 index 0fae28f7..00000000 --- a/packs/items/Schutzring__2_cg1y2GTJRGhE9Fpy.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_id": "cg1y2GTJRGhE9Fpy", - "name": "Schutzring +2", - "type": "equipment", - "img": "icons/equipment/finger/ring-band-engraved-scrolls-bronze.webp", - "effects": [ - { - "_id": "yH3Ujo3jKNCYI4n9", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.defense.total", - "value": "2", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Abwehr +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!cg1y2GTJRGhE9Fpy.yH3Ujo3jKNCYI4n9" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhöht die Abwehr um 2, ohne dabei Panzerungsmalus zu verursachen.

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343113, - "modifiedTime": 1740227863008, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!cg1y2GTJRGhE9Fpy" -} diff --git a/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json b/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json deleted file mode 100644 index 4e9591a1..00000000 --- a/packs/items/Schutzring__3_qlBIUI00RTYZzclX.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "_id": "qlBIUI00RTYZzclX", - "name": "Schutzring +3", - "type": "equipment", - "img": "icons/equipment/finger/ring-band-engraved-scrolls-gold.webp", - "effects": [ - { - "_id": "yH3Ujo3jKNCYI4n9", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.defense.total", - "value": "3", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Abwehr +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!qlBIUI00RTYZzclX.yH3Ujo3jKNCYI4n9" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhöht die Abwehr um 3, ohne dabei Panzerungsmalus zu verursachen.

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343471, - "modifiedTime": 1740227863023, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!qlBIUI00RTYZzclX" -} diff --git a/packs/items/Schutztrank_XiW3k793840i0rdo.json b/packs/items/Schutztrank_XiW3k793840i0rdo.json deleted file mode 100644 index 3c5da18d..00000000 --- a/packs/items/Schutztrank_XiW3k793840i0rdo.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "XiW3k793840i0rdo", - "name": "Schutztrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-pear-corked-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhöht für W20 Runden die Abwehr um +2.

", - "quantity": 1, - "price": 50, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343069, - "modifiedTime": 1740227863004, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XiW3k793840i0rdo" -} diff --git a/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json b/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json deleted file mode 100644 index 9d5183a4..00000000 --- a/packs/items/Schwebenamulett_ElUWNqUWZB4dH3QS.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "ElUWNqUWZB4dH3QS", - "name": "Schwebenamulett", - "type": "equipment", - "img": "icons/equipment/neck/amulet-moth-gold-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauber @Compendium[ds4.spells.SPnYNGggFb8XRICE]{Schweben} wurde in dieses Amulett gebettet.

", - "quantity": 1, - "price": 1515, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342813, - "modifiedTime": 1740227862978, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ElUWNqUWZB4dH3QS" -} diff --git a/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json b/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json deleted file mode 100644 index 911fe32d..00000000 --- a/packs/items/Schwebentrank_OZU7ietSpnivKPVt.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "OZU7ietSpnivKPVt", - "name": "Schwebentrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-bulb-corked-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses meist grünliche Getränk wirkt den Zauber Schweben (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342923, - "modifiedTime": 1740227862988, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!OZU7ietSpnivKPVt" -} diff --git a/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json b/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json deleted file mode 100644 index 7fcaebf1..00000000 --- a/packs/items/Schwere_Armbrust_GJdez2VgLxwzlZAQ.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "GJdez2VgLxwzlZAQ", - "name": "Schwere Armbrust", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-heavy-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 15, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342858, - "modifiedTime": 1740227862981, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GJdez2VgLxwzlZAQ" -} diff --git a/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json b/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json deleted file mode 100644 index b1107049..00000000 --- a/packs/items/Schwere_Armbrust__1_S0EV25lf5TbN6COJ.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "S0EV25lf5TbN6COJ", - "name": "Schwere Armbrust +1", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-loaded-black.webp", - "effects": [ - { - "_id": "N4vxVFNLW9Q9QsIp", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "value": "-4", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Initiative -4", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!S0EV25lf5TbN6COJ.N4vxVFNLW9Q9QsIp" - }, - { - "_id": "ZBJldrSO6rRHmgnI", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!S0EV25lf5TbN6COJ.ZBJldrSO6rRHmgnI" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342977, - "modifiedTime": 1740227862997, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!S0EV25lf5TbN6COJ" -} diff --git a/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json b/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json deleted file mode 100644 index 1c7ad6bb..00000000 --- a/packs/items/Schwere_Armbrust__2_NMmZ3Uu9uwAHc5IP.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "NMmZ3Uu9uwAHc5IP", - "name": "Schwere Armbrust +2", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-blue.webp", - "effects": [ - { - "_id": "sOBnfFviucXKykt1", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!NMmZ3Uu9uwAHc5IP.sOBnfFviucXKykt1" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2765, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 5, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342912, - "modifiedTime": 1740227862987, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NMmZ3Uu9uwAHc5IP" -} diff --git a/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json b/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json deleted file mode 100644 index bbfdb98f..00000000 --- a/packs/items/Schwere_Armbrust__3_RWSRxi9np1UrEi7N.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "RWSRxi9np1UrEi7N", - "name": "Schwere Armbrust +3", - "type": "weapon", - "img": "icons/weapons/crossbows/crossbow-ornamental-black.webp", - "effects": [ - { - "_id": "SlJV88ZHTV0VORzk", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!RWSRxi9np1UrEi7N.SlJV88ZHTV0VORzk" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 3265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 6, - "opponentDefense": -5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342966, - "modifiedTime": 1740227862996, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RWSRxi9np1UrEi7N" -} diff --git a/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json b/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json deleted file mode 100644 index 31b417a8..00000000 --- a/packs/items/Seife__1_St_ck__ozPRhUPx9Y9u3GNE.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "ozPRhUPx9Y9u3GNE", - "name": "Seife (1 Stück)", - "type": "loot", - "img": "icons/sundries/survival/soap.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343446, - "modifiedTime": 1740227863021, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ozPRhUPx9Y9u3GNE" -} diff --git a/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json b/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json deleted file mode 100644 index 6a167041..00000000 --- a/packs/items/Seil__10m__aUKnYWOr7Fjy9sVX.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "aUKnYWOr7Fjy9sVX", - "name": "Seil (10m)", - "type": "loot", - "img": "icons/sundries/survival/rope-wrapped-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343090, - "modifiedTime": 1740227863005, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!aUKnYWOr7Fjy9sVX" -} diff --git a/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json b/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json deleted file mode 100644 index 3f936ae0..00000000 --- a/packs/items/Skrupelloser_Bogen_K4fd3AlpMoK1EZeg.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "K4fd3AlpMoK1EZeg", - "name": "Skrupelloser Bogen", - "type": "weapon", - "img": "icons/weapons/bows/shortbow-recurve-red.webp", - "effects": [ - { - "_id": "8iny3Tt6i6g5EcYh", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!K4fd3AlpMoK1EZeg.8iny3Tt6i6g5EcYh" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Kurzbogen +1 mit @Compendium[ds4.spells.dt2E4g7iwVqTSlMl]{Kleiner Terror}, der Feinde angeblich immer in den Rücken trifft.

\n

Zweihändig, Initiative +1

", - "quantity": 1, - "price": 2006, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "ranged", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342885, - "modifiedTime": 1740227862984, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!K4fd3AlpMoK1EZeg" -} diff --git a/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json b/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json deleted file mode 100644 index 396962b5..00000000 --- a/packs/items/Smaragd_Schl_ssel_9xQRXWUYj3giHVRC.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "9xQRXWUYj3giHVRC", - "name": "Smaragd-Schlüssel", - "type": "loot", - "img": "icons/sundries/misc/key-jeweled-gold-purple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Einmal alle 24h kann man damit den Zauber @Compendium[ds4.spells.ip0DVeb1YeNrEeUu]{Öffnen} auf ein Schloss wirken.

", - "quantity": 1, - "price": null, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342775, - "modifiedTime": 1740227862971, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9xQRXWUYj3giHVRC" -} diff --git a/packs/items/Speer__1_jRzgvvygxk5IjXYB.json b/packs/items/Speer__1_jRzgvvygxk5IjXYB.json deleted file mode 100644 index 9c84bf02..00000000 --- a/packs/items/Speer__1_jRzgvvygxk5IjXYB.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "jRzgvvygxk5IjXYB", - "name": "Speer +1", - "type": "weapon", - "img": "icons/weapons/polearms/spear-hooked-red.webp", - "effects": [ - { - "_id": "r0XGSAypTjvBmHHC", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!jRzgvvygxk5IjXYB.r0XGSAypTjvBmHHC" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 1251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343306, - "modifiedTime": 1740227863018, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!jRzgvvygxk5IjXYB" -} diff --git a/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json b/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json deleted file mode 100644 index 31786b75..00000000 --- a/packs/items/Speer__2_IfvOtBwOEYLPPvJK.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "IfvOtBwOEYLPPvJK", - "name": "Speer +2", - "type": "weapon", - "img": "icons/weapons/polearms/spear-hooked-double-engraved.webp", - "effects": [ - { - "_id": "Kk9b3biK0mISYf75", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!IfvOtBwOEYLPPvJK.Kk9b3biK0mISYf75" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 1751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342870, - "modifiedTime": 1740227862983, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!IfvOtBwOEYLPPvJK" -} diff --git a/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json b/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json deleted file mode 100644 index 50df92f9..00000000 --- a/packs/items/Speer__3_HNHMmE4wNi0iXIjO.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "HNHMmE4wNi0iXIjO", - "name": "Speer +3", - "type": "weapon", - "img": "icons/weapons/polearms/spear-hooked-double-jeweled.webp", - "effects": [ - { - "_id": "YUzHa2B8n4yYyWyY", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!HNHMmE4wNi0iXIjO.YUzHa2B8n4yYyWyY" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 2251, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342863, - "modifiedTime": 1740227862981, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!HNHMmE4wNi0iXIjO" -} diff --git a/packs/items/Speer_oWvJfxEBr83QxO9Q.json b/packs/items/Speer_oWvJfxEBr83QxO9Q.json deleted file mode 100644 index 23866e54..00000000 --- a/packs/items/Speer_oWvJfxEBr83QxO9Q.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "oWvJfxEBr83QxO9Q", - "name": "Speer", - "type": "weapon", - "img": "icons/weapons/polearms/spear-hooked-simple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zerbricht bei Schießen-Patzer

", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343397, - "modifiedTime": 1740227863021, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oWvJfxEBr83QxO9Q" -} diff --git a/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json b/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json deleted file mode 100644 index 1d3a68ef..00000000 --- a/packs/items/Spruchspeicherring_oJbpYZlvfJ6kpudj.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "oJbpYZlvfJ6kpudj", - "name": "Spruchspeicherring", - "type": "equipment", - "img": "icons/equipment/finger/ring-cabochon-engraved-gold-pink.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Einmal pro Tag kann der Träger des Ringes zu einem vorher festgelegten Zauber aktionsfrei wechseln, ohne dafür würfeln zu müssen, da in den Ring @Compendium[ds4.spells.DNplbUwfxszg5UbZ]{Wechselzauber} eingebettet wurde.

", - "quantity": 1, - "price": 4992, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343371, - "modifiedTime": 1740227863020, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oJbpYZlvfJ6kpudj" -} diff --git a/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json b/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json deleted file mode 100644 index d4e3554f..00000000 --- a/packs/items/St_rketrank_JlcYB53S1wQRfmUG.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "JlcYB53S1wQRfmUG", - "name": "Stärketrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-stopper-yellow.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser nach Schweiß riechende Trank verdoppelt ST für ST in Runden.

", - "quantity": 1, - "price": 150, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342884, - "modifiedTime": 1740227862984, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JlcYB53S1wQRfmUG" -} diff --git a/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json b/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json deleted file mode 100644 index f2393032..00000000 --- a/packs/items/Stab_des_Magus_uafOWinH9nnRO3lr.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "uafOWinH9nnRO3lr", - "name": "Stab des Magus", - "type": "weapon", - "img": "icons/weapons/staves/staff-ornate-purple.webp", - "effects": [ - { - "_id": "ve7iQmkxC6l5WmTE", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!uafOWinH9nnRO3lr.ve7iQmkxC6l5WmTE" - }, - { - "_id": "XD3tGbvi1S03diuz", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.targetedSpellcasting.total", - "value": "3", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Zielzaubern +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!uafOWinH9nnRO3lr.XD3tGbvi1S03diuz" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Kampfstab +1 mit Zielzaubern +3 (insgesamt also mit dem normalen Bonus Zielzaubern +4).

\n

Zweihändig, Zielzaubern +1

", - "quantity": 1, - "price": 2750.5, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343535, - "modifiedTime": 1740227863027, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uafOWinH9nnRO3lr" -} diff --git a/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json b/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json deleted file mode 100644 index f1f66ef0..00000000 --- a/packs/items/Stahlflamme_PPNAghq5SEhO1zNM.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "PPNAghq5SEhO1zNM", - "name": "Stahlflamme", - "type": "weapon", - "img": "icons/weapons/swords/sword-guard-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Langschwert +1 mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge} kam schon in vielen Kriegen zum Einsatz.

", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342931, - "modifiedTime": 1740227862989, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PPNAghq5SEhO1zNM" -} diff --git a/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json b/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json deleted file mode 100644 index 1407482f..00000000 --- a/packs/items/Streitaxt__1_s1xaEPPKJGMImZ9m.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "s1xaEPPKJGMImZ9m", - "name": "Streitaxt +1", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-chopping-black.webp", - "effects": [ - { - "_id": "fQgMSANHWdQrzmlJ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!s1xaEPPKJGMImZ9m.fQgMSANHWdQrzmlJ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343477, - "modifiedTime": 1740227863024, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!s1xaEPPKJGMImZ9m" -} diff --git a/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json b/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json deleted file mode 100644 index 7370a20d..00000000 --- a/packs/items/Streitaxt__2_Idj6BxduoI3v4u9A.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "Idj6BxduoI3v4u9A", - "name": "Streitaxt +2", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-black.webp", - "effects": [ - { - "_id": "iImvUwfo7IRqnmVv", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Idj6BxduoI3v4u9A.iImvUwfo7IRqnmVv" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 2757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342869, - "modifiedTime": 1740227862982, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Idj6BxduoI3v4u9A" -} diff --git a/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json b/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json deleted file mode 100644 index 8262e0a8..00000000 --- a/packs/items/Streitaxt__3_0P2wJM5qG1VupfXq.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "0P2wJM5qG1VupfXq", - "name": "Streitaxt +3", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-blue.webp", - "effects": [ - { - "_id": "aNtjz1DteptmA3ce", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!0P2wJM5qG1VupfXq.aNtjz1DteptmA3ce" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 3257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342630, - "modifiedTime": 1740227862960, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0P2wJM5qG1VupfXq" -} diff --git a/packs/items/Streitaxt_vqKLn65gjoced8jV.json b/packs/items/Streitaxt_vqKLn65gjoced8jV.json deleted file mode 100644 index 216734cd..00000000 --- a/packs/items/Streitaxt_vqKLn65gjoced8jV.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "vqKLn65gjoced8jV", - "name": "Streitaxt", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-brown.webp", - "effects": [ - { - "_id": "DPS3CaNXapsBzzsj", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "-2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative -2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!vqKLn65gjoced8jV.DPS3CaNXapsBzzsj" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -2

", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343551, - "modifiedTime": 1740227863028, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!vqKLn65gjoced8jV" -} diff --git a/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json b/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json deleted file mode 100644 index 31cc8afa..00000000 --- a/packs/items/Streithammer__1_eMyZ5EJ9SsiXaeKK.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "eMyZ5EJ9SsiXaeKK", - "name": "Streithammer +1", - "type": "weapon", - "img": "icons/weapons/hammers/hammer-war-spiked-simple.webp", - "effects": [ - { - "_id": "bPdVsWIS1AC54ZA8", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!eMyZ5EJ9SsiXaeKK.bPdVsWIS1AC54ZA8" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343161, - "modifiedTime": 1740227863013, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eMyZ5EJ9SsiXaeKK" -} diff --git a/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json b/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json deleted file mode 100644 index bbc7f41b..00000000 --- a/packs/items/Streithammer__2_eMeS2JSyiRJ5xO48.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "eMeS2JSyiRJ5xO48", - "name": "Streithammer +2", - "type": "weapon", - "img": "icons/weapons/hammers/hammer-war-rounding.webp", - "effects": [ - { - "_id": "1I5R9xQlug0aSVTZ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!eMeS2JSyiRJ5xO48.1I5R9xQlug0aSVTZ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 2756, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343156, - "modifiedTime": 1740227863012, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eMeS2JSyiRJ5xO48" -} diff --git a/packs/items/Streithammer__3_iORLpplub64kuxb4.json b/packs/items/Streithammer__3_iORLpplub64kuxb4.json deleted file mode 100644 index 8e3b32da..00000000 --- a/packs/items/Streithammer__3_iORLpplub64kuxb4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "iORLpplub64kuxb4", - "name": "Streithammer +3", - "type": "weapon", - "img": "icons/weapons/hammers/hammer-war-spiked.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 3256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343258, - "modifiedTime": 1740227863017, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iORLpplub64kuxb4" -} diff --git a/packs/items/Streithammer_fmFM71TpvBxYqmu2.json b/packs/items/Streithammer_fmFM71TpvBxYqmu2.json deleted file mode 100644 index 920010c7..00000000 --- a/packs/items/Streithammer_fmFM71TpvBxYqmu2.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "fmFM71TpvBxYqmu2", - "name": "Streithammer", - "type": "weapon", - "img": "icons/weapons/hammers/hammer-simple-iron.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 6, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343198, - "modifiedTime": 1740227863014, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fmFM71TpvBxYqmu2" -} diff --git a/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json b/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json deleted file mode 100644 index 0a2fb5af..00000000 --- a/packs/items/Streitkolben__1_SIE4g3gjSkqVIT6W.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "SIE4g3gjSkqVIT6W", - "name": "Streitkolben +1", - "type": "weapon", - "img": "icons/weapons/maces/mace-spiked-wood-grey.webp", - "effects": [ - { - "_id": "Qg9niqX5oimvg2Fv", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!SIE4g3gjSkqVIT6W.Qg9niqX5oimvg2Fv" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342985, - "modifiedTime": 1740227862998, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!SIE4g3gjSkqVIT6W" -} diff --git a/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json b/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json deleted file mode 100644 index d1bd65b2..00000000 --- a/packs/items/Streitkolben__2_Trl2ljtHi1kRYHTX.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "Trl2ljtHi1kRYHTX", - "name": "Streitkolben +2", - "type": "weapon", - "img": "icons/weapons/maces/mace-studded-steel.webp", - "effects": [ - { - "_id": "PeyncDD5OoPJkkTO", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Trl2ljtHi1kRYHTX.PeyncDD5OoPJkkTO" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1757, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343017, - "modifiedTime": 1740227863000, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Trl2ljtHi1kRYHTX" -} diff --git a/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json b/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json deleted file mode 100644 index b6771136..00000000 --- a/packs/items/Streitkolben__3_rdOU1FmBq1nqQKW5.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "rdOU1FmBq1nqQKW5", - "name": "Streitkolben +3", - "type": "weapon", - "img": "icons/weapons/maces/mace-spiked-steel-grey.webp", - "effects": [ - { - "_id": "dgH1Fyz2pVFcmhFL", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!rdOU1FmBq1nqQKW5.dgH1Fyz2pVFcmhFL" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2257, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343474, - "modifiedTime": 1740227863024, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rdOU1FmBq1nqQKW5" -} diff --git a/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json b/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json deleted file mode 100644 index ed2fa842..00000000 --- a/packs/items/Streitkolben_mjBwhnK5gf9MIdlm.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "mjBwhnK5gf9MIdlm", - "name": "Streitkolben", - "type": "weapon", - "img": "icons/weapons/maces/mace-spiked-steel-wood.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 7, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343332, - "modifiedTime": 1740227863020, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!mjBwhnK5gf9MIdlm" -} diff --git a/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json b/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json deleted file mode 100644 index 61db75ba..00000000 --- a/packs/items/Sturmrobe_xeSyfEpn3gABmKDR.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "xeSyfEpn3gABmKDR", - "name": "Sturmrobe", - "type": "armor", - "img": "icons/equipment/chest/robe-layered-teal.webp", - "effects": [ - { - "_id": "JjEEDD1H1NvKF1Vr", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!xeSyfEpn3gABmKDR.JjEEDD1H1NvKF1Vr" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese blaugraue Robe +1 mit aufgestickten Sturm- & Gewitterwolken gewährt +1 auf jeden Blitzzauber. Selbst bei Windstille wogt sie in einer leichten Brise.

", - "quantity": 1, - "price": 1751, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 0, - "armorMaterialType": "cloth", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343566, - "modifiedTime": 1740227863029, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!xeSyfEpn3gABmKDR" -} diff --git a/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json b/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json deleted file mode 100644 index 8f91c3b3..00000000 --- a/packs/items/Tagesration__3_Mahlzeiten__U89qHZqIfVM8xvaJ.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "U89qHZqIfVM8xvaJ", - "name": "Tagesration (3 Mahlzeiten)", - "type": "loot", - "img": "icons/tools/cooking/can.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343024, - "modifiedTime": 1740227863001, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!U89qHZqIfVM8xvaJ" -} diff --git a/packs/items/Talenttrank_pljOii88ltzuQNsu.json b/packs/items/Talenttrank_pljOii88ltzuQNsu.json deleted file mode 100644 index 2ef8265a..00000000 --- a/packs/items/Talenttrank_pljOii88ltzuQNsu.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "pljOii88ltzuQNsu", - "name": "Talenttrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-labeled-pink.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Metallisch riechend, erhöht dieser Trank für W20 Runden ein vom Trinkenden bereits beherrschtes Talent um +I.

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343461, - "modifiedTime": 1740227863022, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pljOii88ltzuQNsu" -} diff --git a/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json b/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json deleted file mode 100644 index 4bfe151c..00000000 --- a/packs/items/Talgkerze__brennt_6h__iMX7YuWPHnCnbeh8.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "iMX7YuWPHnCnbeh8", - "name": "Talgkerze (brennt 6h)", - "type": "loot", - "img": "icons/sundries/lights/candle-unlit-grey.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.01, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343250, - "modifiedTime": 1740227863017, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iMX7YuWPHnCnbeh8" -} diff --git a/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json b/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json deleted file mode 100644 index ad6156ec..00000000 --- a/packs/items/Tee__10_Tassen__9aY1zWfD5RwZlAUH.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "9aY1zWfD5RwZlAUH", - "name": "Tee (10 Tassen)", - "type": "loot", - "img": "icons/commodities/flowers/buds-red-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.05, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342774, - "modifiedTime": 1740227862971, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9aY1zWfD5RwZlAUH" -} diff --git a/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json b/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json deleted file mode 100644 index ede65106..00000000 --- a/packs/items/Teleporttrank_1uHuQJcCjjxzvP4C.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "1uHuQJcCjjxzvP4C", - "name": "Teleporttrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-fumes-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser rauchige, wirbelnde Trank wirkt den Zauber @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport} auf den Trinker (keine Probe notwendig), nicht jedoch auf weitere Charaktere.

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342655, - "modifiedTime": 1740227862963, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1uHuQJcCjjxzvP4C" -} diff --git a/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json b/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json deleted file mode 100644 index 9dbfa30a..00000000 --- a/packs/items/Tinte__reicht_f_r_50_Seiten__fB8GyT0S38fomHsg.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "fB8GyT0S38fomHsg", - "name": "Tinte (reicht für 50 Seiten)", - "type": "loot", - "img": "icons/tools/scribal/ink-quill-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343196, - "modifiedTime": 1740227863014, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fB8GyT0S38fomHsg" -} diff --git a/packs/items/Topf_cDIVsXpVltyRnhqM.json b/packs/items/Topf_cDIVsXpVltyRnhqM.json deleted file mode 100644 index 2ba3248e..00000000 --- a/packs/items/Topf_cDIVsXpVltyRnhqM.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "cDIVsXpVltyRnhqM", - "name": "Topf", - "type": "loot", - "img": "icons/tools/cooking/cauldron-empty.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343108, - "modifiedTime": 1740227863008, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!cDIVsXpVltyRnhqM" -} diff --git a/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json b/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json deleted file mode 100644 index 4572a27e..00000000 --- a/packs/items/Trank_der_Gasgestalt_dUQPe5X6ka3HJLuF.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "dUQPe5X6ka3HJLuF", - "name": "Trank der Gasgestalt", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-fancy-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser meist rauchige Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.tZJoj1PGrRGe9eMV]{Gasgestalt} (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343139, - "modifiedTime": 1740227863011, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dUQPe5X6ka3HJLuF" -} diff --git a/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json b/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json deleted file mode 100644 index d36a8bd7..00000000 --- a/packs/items/Trank_der_Lebenskraft_74iFRkzvOwLxOxOq.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "74iFRkzvOwLxOxOq", - "name": "Trank der Lebenskraft", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-labeled-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese meist blutroten Tränke erhöhen die Lebenskraft um W20 für W20 Stunden.

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342735, - "modifiedTime": 1740227862967, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!74iFRkzvOwLxOxOq" -} diff --git a/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json b/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json deleted file mode 100644 index 45088efe..00000000 --- a/packs/items/Trank_der_Zwergensicht_nixhgFSQ7jaZrvxD.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "nixhgFSQ7jaZrvxD", - "name": "Trank der Zwergensicht", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-labeled-medicine-capped-red-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses meist schwarze Getränk gewährt für W20 Stunden dem Trinker die zwergische Volksfähigkeit Dunkelsicht (DS4 S. 83).

", - "quantity": 1, - "price": 15, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343360, - "modifiedTime": 1740227863020, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nixhgFSQ7jaZrvxD" -} diff --git a/packs/items/Turmschild_0e8GeSHxVf72FXvT.json b/packs/items/Turmschild_0e8GeSHxVf72FXvT.json deleted file mode 100644 index 421356e8..00000000 --- a/packs/items/Turmschild_0e8GeSHxVf72FXvT.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "0e8GeSHxVf72FXvT", - "name": "Turmschild", - "type": "shield", - "img": "icons/equipment/shield/heater-steel-boss-red.webp", - "effects": [ - { - "_id": "ScAKi1eiWow9Y1ZZ", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.movement.total", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!0e8GeSHxVf72FXvT.ScAKi1eiWow9Y1ZZ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -1

", - "quantity": 1, - "price": 15, - "availability": "village", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342637, - "modifiedTime": 1740227862961, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0e8GeSHxVf72FXvT" -} diff --git a/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json b/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json deleted file mode 100644 index 787778a8..00000000 --- a/packs/items/Turmschild__1_ibiHqm4rH8meeu9m.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "_id": "ibiHqm4rH8meeu9m", - "name": "Turmschild +1", - "type": "shield", - "img": "icons/equipment/shield/heater-steel-engraved-lance-rest.webp", - "effects": [ - { - "_id": "ScAKi1eiWow9Y1ZZ", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.movement.total", - "value": "-0.5", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Laufen -0,5", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ibiHqm4rH8meeu9m.ScAKi1eiWow9Y1ZZ" - }, - { - "_id": "TeyRcwja5lQWHICW", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ibiHqm4rH8meeu9m.TeyRcwja5lQWHICW" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Laufen -0,5

", - "quantity": 1, - "price": 3265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343297, - "modifiedTime": 1740227863018, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ibiHqm4rH8meeu9m" -} diff --git a/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json b/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json deleted file mode 100644 index 229a1c6d..00000000 --- a/packs/items/Turmschild__2_Li5rC0lvytKRAc31.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "Li5rC0lvytKRAc31", - "name": "Turmschild +2", - "type": "shield", - "img": "icons/equipment/shield/heater-steel-gold.webp", - "effects": [ - { - "_id": "yfHGGfxxGvmHG6b9", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Li5rC0lvytKRAc31.yfHGGfxxGvmHG6b9" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 4265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342901, - "modifiedTime": 1740227862986, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Li5rC0lvytKRAc31" -} diff --git a/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json b/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json deleted file mode 100644 index b458632c..00000000 --- a/packs/items/Turmschild__3_UNd96UN0NQo8I0SI.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "_id": "UNd96UN0NQo8I0SI", - "name": "Turmschild +3", - "type": "shield", - "img": "icons/equipment/shield/heater-embossed-gold.webp", - "effects": [ - { - "_id": "ZXSBIh1UotdZuHbj", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!UNd96UN0NQo8I0SI.ZXSBIh1UotdZuHbj" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": null, - "quantity": 1, - "price": 5265, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343035, - "modifiedTime": 1740227863001, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!UNd96UN0NQo8I0SI" -} diff --git a/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json b/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json deleted file mode 100644 index 0917855c..00000000 --- a/packs/items/Umh_ngetasche_BeXHrv1TQzgfV6Mc.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "BeXHrv1TQzgfV6Mc", - "name": "Umhängetasche", - "type": "loot", - "img": "icons/containers/bags/pack-leather-embossed-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342792, - "modifiedTime": 1740227862974, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!BeXHrv1TQzgfV6Mc" -} diff --git a/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json b/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json deleted file mode 100644 index 96164657..00000000 --- a/packs/items/Unsichtbarkeitsring_kurEYTP9rqk8YnND.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "kurEYTP9rqk8YnND", - "name": "Unsichtbarkeitsring", - "type": "equipment", - "img": "icons/equipment/finger/ring-band-rounded-gold.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Böse Zungen behaupten, dass dieser Ring, in den @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} eingebettet ist, seinen Träger zu seinem abhängigen Sklaven macht.

", - "quantity": 1, - "price": 6972, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343319, - "modifiedTime": 1740227863019, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kurEYTP9rqk8YnND" -} diff --git a/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json b/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json deleted file mode 100644 index 6983fea4..00000000 --- a/packs/items/Unsichtbarkeitstrank_uYcNgFz5PkaOmK6b.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "uYcNgFz5PkaOmK6b", - "name": "Unsichtbarkeitstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-tied-necklace-teal.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser oft klare, farblose Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 500, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343529, - "modifiedTime": 1740227863027, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uYcNgFz5PkaOmK6b" -} diff --git a/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json b/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json deleted file mode 100644 index 7cdc2028..00000000 --- a/packs/items/Unverwundbartrank_1HjmUAR5mf59yXlw.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "1HjmUAR5mf59yXlw", - "name": "Unverwundbartrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-shiny-red.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter erhält für W20 Runden +20 auf seine Abwehr durch diesen meist roten, flockigen Trank. Dieser Bonus gilt auch bei Schaden, gegen den normalerweise keine Abwehr zulässig ist.

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342649, - "modifiedTime": 1740227862962, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1HjmUAR5mf59yXlw" -} diff --git a/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json b/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json deleted file mode 100644 index fd51f614..00000000 --- a/packs/items/Verbandszeug_HIfMiFd0ZbqE3VKt.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "HIfMiFd0ZbqE3VKt", - "name": "Verbandszeug", - "type": "loot", - "img": "icons/commodities/cloth/cloth-roll-worn-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Verschnaufen +1 oder natürliches Heilergebnis +1

", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342862, - "modifiedTime": 1740227862981, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!HIfMiFd0ZbqE3VKt" -} diff --git a/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json b/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json deleted file mode 100644 index 1dd03b80..00000000 --- a/packs/items/Vergr__erungstrank_Wjcv3WZW3j4jg9XY.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "Wjcv3WZW3j4jg9XY", - "name": "Vergrößerungstrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-bulb-corked-purple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Vergrößert den Trinkenden auf das Doppelte seiner normalen Größe für W20/2 Minuten. KÖR, ST und HÄ werden verdoppelt und die Kampfwerte entsprechend angepasst.

", - "quantity": 1, - "price": 1000, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343060, - "modifiedTime": 1740227863003, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Wjcv3WZW3j4jg9XY" -} diff --git a/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json b/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json deleted file mode 100644 index 42668ec0..00000000 --- a/packs/items/Verj_ngungstrank_RlA4PIa9hnsqoqFi.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "RlA4PIa9hnsqoqFi", - "name": "Verjüngungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-tube-corked-orange.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Trinkende wird augenblicklich W20 Jahre jünger.

", - "quantity": 1, - "price": 5000, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342967, - "modifiedTime": 1740227862996, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RlA4PIa9hnsqoqFi" -} diff --git a/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json b/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json deleted file mode 100644 index 2b4db098..00000000 --- a/packs/items/Verkleinerungstrank_LAI81qZlbkr7MlGY.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "LAI81qZlbkr7MlGY", - "name": "Verkleinerungstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-corked-yellow.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Verkleinert den Trinkenden auf ein Zehntel seiner normalen Größe für W20 Minuten. KÖR, ST und HÄ werden solange halbiert und die Kampfwerte entsprechend angepasst.

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342900, - "modifiedTime": 1740227862986, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!LAI81qZlbkr7MlGY" -} diff --git a/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json b/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json deleted file mode 100644 index 637f8a16..00000000 --- a/packs/items/Wachsamkeitstrank_gXr3lLQmlHeDMuv5.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "gXr3lLQmlHeDMuv5", - "name": "Wachsamkeitstrank", - "type": "loot", - "img": "icons/consumables/potions/potion-tube-corked-labeled-cyan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses meist klare Getränk gewährt für W20 Stunden auf alle Bemerken-Proben einen Bonus von +5.

", - "quantity": 1, - "price": 15, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343214, - "modifiedTime": 1740227863015, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gXr3lLQmlHeDMuv5" -} diff --git a/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json b/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json deleted file mode 100644 index 717900bd..00000000 --- a/packs/items/Wachskerze__brennt_10h__S204KfhmoRdMDVpZ.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "S204KfhmoRdMDVpZ", - "name": "Wachskerze (brennt 10h)", - "type": "loot", - "img": "icons/sundries/lights/candle-unlit-tan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.02, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342979, - "modifiedTime": 1740227862998, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!S204KfhmoRdMDVpZ" -} diff --git a/packs/items/Waffenlos_OvxWaEJrElas3EUL.json b/packs/items/Waffenlos_OvxWaEJrElas3EUL.json deleted file mode 100644 index 4cd60dcf..00000000 --- a/packs/items/Waffenlos_OvxWaEJrElas3EUL.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "OvxWaEJrElas3EUL", - "name": "Waffenlos", - "type": "weapon", - "img": "icons/equipment/hand/gauntlet-tooled-leather-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342927, - "modifiedTime": 1740227862989, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!OvxWaEJrElas3EUL" -} diff --git a/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json b/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json deleted file mode 100644 index effd711c..00000000 --- a/packs/items/Waffenpaste_zXgxu2gCkaTSSSMU.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "zXgxu2gCkaTSSSMU", - "name": "Waffenpaste", - "type": "loot", - "img": "icons/tools/laboratory/bowl-liquid-black.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Macht WB+1; hält W20 Nahkampfangriffe bzw. reicht für W20 Fernkampfgeschosse

", - "quantity": 1, - "price": 0.5, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343609, - "modifiedTime": 1740227863031, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zXgxu2gCkaTSSSMU" -} diff --git a/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json b/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json deleted file mode 100644 index 984b1e6d..00000000 --- a/packs/items/Waffenweih_luYRwVP5oR6cdDMQ.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "luYRwVP5oR6cdDMQ", - "name": "Waffenweih", - "type": "loot", - "img": "icons/consumables/potions/potion-jar-capped-teal.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Über eine Waffe geschüttet, verleiht dieser meist silberne Trank dieser für die Dauer eines Kampfes den Effekt des Zaubers @Compendium[ds4.spells.ASvdS1fyjmRS1Xb6]{Magische Waffe}.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343322, - "modifiedTime": 1740227863020, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!luYRwVP5oR6cdDMQ" -} diff --git a/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json b/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json deleted file mode 100644 index 7817fa21..00000000 --- a/packs/items/Wagen__4_R_der__4E9WdEs1JaWrCYim.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "4E9WdEs1JaWrCYim", - "name": "Wagen (4 Räder)", - "type": "loot", - "img": "icons/commodities/wood/wood-wheel-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 35, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342704, - "modifiedTime": 1740227862965, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!4E9WdEs1JaWrCYim" -} diff --git a/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json b/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json deleted file mode 100644 index 7abac5a8..00000000 --- a/packs/items/Wasserschlauch__5_Liter__ygiod7LPfxwz0Jbb.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "ygiod7LPfxwz0Jbb", - "name": "Wasserschlauch (5 Liter)", - "type": "loot", - "img": "icons/sundries/survival/waterskin-leather-brown.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 0.5, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343581, - "modifiedTime": 1740227863029, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ygiod7LPfxwz0Jbb" -} diff --git a/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json b/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json deleted file mode 100644 index e7b58c2d..00000000 --- a/packs/items/Wasserwandeltrank_s47J9CEdTELiRlPT.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "s47J9CEdTELiRlPT", - "name": "Wasserwandeltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-jar-corked-orange.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser oft braune Trank wirkt auf den Trinker den Zauber @Compendium[ds4.spells.mYZ3gFtRJASLL9pv]{Wasserwandeln} (Probenwert 20; Patzer ausgeschlossen).

", - "quantity": 1, - "price": 100, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343479, - "modifiedTime": 1740227863024, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!s47J9CEdTELiRlPT" -} diff --git a/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json b/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json deleted file mode 100644 index eb0896ba..00000000 --- a/packs/items/Wechselring_1vrVO2sqFqC4AA1k.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "1vrVO2sqFqC4AA1k", - "name": "Wechselring", - "type": "equipment", - "img": "icons/equipment/finger/ring-cabochon-white-blue.webp", - "effects": [ - { - "_id": "uaLYD6951CS9od5d", - "changes": [ - { - "key": "system.rank.total", - "mode": 2, - "value": "5", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "Wechsler", - "condition": "'@item.type' === 'talent'" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Wechsler +V", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!1vrVO2sqFqC4AA1k.uaLYD6951CS9od5d" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mittels Wechsler +V verleiht dieser Ring +10 auf Proben, um die eigenen Zauber zu wechseln.

", - "quantity": 1, - "price": 1502, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342664, - "modifiedTime": 1740227862963, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1vrVO2sqFqC4AA1k" -} diff --git a/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json b/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json deleted file mode 100644 index 023cb1bf..00000000 --- a/packs/items/Wehrpanzer_83CJm0YUiYxIpcQx.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "_id": "83CJm0YUiYxIpcQx", - "name": "Wehrpanzer", - "type": "armor", - "img": "icons/equipment/chest/breastplate-cuirass-steel-grey.webp", - "effects": [ - { - "_id": "wz2krJzwVba18XvV", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Panzerung +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!83CJm0YUiYxIpcQx.wz2krJzwVba18XvV" - }, - { - "_id": "TuRxuZf6QZL2OvRk", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.defense.total", - "value": "2", - "mode": 2, - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "tint": "#ffffff", - "transfer": true, - "origin": null, - "name": "Abwehr +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!83CJm0YUiYxIpcQx.TuRxuZf6QZL2OvRk" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese massive, mit Metallverzierungen verstärkte Plattenrüstung +3 verfügt sogar über einen Halspanzer und gewährt ihrem Träger zusätzlich +2 auf Abwehr.

", - "quantity": 1, - "price": 7300, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 3, - "armorMaterialType": "plate", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342756, - "modifiedTime": 1740227862968, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!83CJm0YUiYxIpcQx" -} diff --git a/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json b/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json deleted file mode 100644 index a2b180ff..00000000 --- a/packs/items/Weihwasser__1_2_Liter__RoXGTPdisjn6AdYK.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "RoXGTPdisjn6AdYK", - "name": "Weihwasser (1/2 Liter)", - "type": "loot", - "img": "icons/consumables/potions/bottle-conical-corked-labeled-shell-cyan.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Weihwasser verursacht gegen Dämonen und Untote nicht abwehrbaren Schaden. Jede Einheit Weihwasser hat einen anderen Angriffswert, der mit W20 ermittelt wird. Dieser Wert wird erst ausgewürfelt, wenn das Weihwasser den Dämonen bzw. Untoten trifft, es sei denn, es wird vorher in Bezug auf seinen Schadenswert von einem Zauberwirker mit GEI+AU, gefolgt von GEI+VE, erfolgreich analysiert.

\n

Eine Weihwassereinheit kann man auf eine Waffe/ein Geschoss auftragen (benötigt 1 Aktion) und dann einen normalen Angriff mit Schlagen bzw. Schießen würfeln. Ist dieser erfolgreich, wird bei Dämonen und Untoten neben dem normalen Schaden auch noch ein Angriff für das Weihwasser gewürfelt, der nicht abwehrbaren Schaden verursacht. Nach dem ersten Treffer ist die Einheit Weihwasser aufgebraucht.

\n

Alternativ kann man Weihwassereinheiten in zerbrechliche Phiolen (WB +0; 2 GM) füllen und diese im Nah- oder Fernkampf gegen Dämonen und Untote einsetzen, wobei die zerbrechlichen Gefäße zerspringen. In solchen Fällen verursacht nur das Weihwasser Schaden, nicht die Schießen-Probe.

\n

Weihwasser kann außerdem dazu benutzt werden, in schützenden Linien oder Kreisen (1 m pro Einheit) auf den Boden geschüttet zu werden, um für eine gewisse Zeit Dämonen bzw. Untote aufzuhalten, die das Weihwasser nicht passieren können.

", - "quantity": 1, - "price": 0.1, - "availability": "hamlet", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342969, - "modifiedTime": 1740227862996, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RoXGTPdisjn6AdYK" -} diff --git a/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json b/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json deleted file mode 100644 index cbf1e54a..00000000 --- a/packs/items/Werkzeugset_zQLTx3zmJfnrdmlN.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "zQLTx3zmJfnrdmlN", - "name": "Werkzeugset", - "type": "loot", - "img": "icons/tools/hand/hammer-and-nail.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 5, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343597, - "modifiedTime": 1740227863031, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zQLTx3zmJfnrdmlN" -} diff --git a/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json b/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json deleted file mode 100644 index a1142957..00000000 --- a/packs/items/Wildh_terharnisch_yocl6DZ7hfOupqqz.json +++ /dev/null @@ -1,79 +0,0 @@ -{ - "_id": "yocl6DZ7hfOupqqz", - "name": "Wildhüterharnisch", - "type": "armor", - "img": "icons/equipment/chest/breastplate-layered-leather-brown.webp", - "effects": [ - { - "_id": "CUa4rA1A1cwWac46", - "flags": {}, - "changes": [ - { - "key": "system.combatValues.defense.total", - "value": "1", - "mode": 2, - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "origin": null, - "tint": "#ffffff", - "name": "Panzerung +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": null, - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!yocl6DZ7hfOupqqz.CUa4rA1A1cwWac46" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

In diese aus Fellen zusammengenähte Lederrüstung +1 wurde der Zauber @Compendium[ds4.spells.TVsayZ3WkUxyzKbL]{Tierbeherschung} eingebettet.

", - "quantity": 1, - "price": 4714, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343587, - "modifiedTime": 1740227863030, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yocl6DZ7hfOupqqz" -} diff --git a/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json b/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json deleted file mode 100644 index 7334fdd6..00000000 --- a/packs/items/Wolfsmantel_D7MaTfapKAeO5TRs.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "D7MaTfapKAeO5TRs", - "name": "Wolfsmantel", - "type": "armor", - "img": "icons/equipment/chest/shirt-simple-grey.webp", - "effects": [ - { - "_id": "2IDnDKbImHFAHAu6", - "changes": [ - { - "key": "system.checks.perception", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Bemerken +3", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!D7MaTfapKAeO5TRs.2IDnDKbImHFAHAu6" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese Lederrüstung aus Wolfspelz verleiht ihrem Träger +3 auf sämtliche Bemerken-Proben. Ein ausgenommener Wolfskopf bildet die Kapuze.

", - "quantity": 1, - "price": 1004, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "armorValue": 1, - "armorMaterialType": "leather", - "armorType": "body" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342807, - "modifiedTime": 1740227862977, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!D7MaTfapKAeO5TRs" -} diff --git a/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json b/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json deleted file mode 100644 index 9ffba544..00000000 --- a/packs/items/Wurfmesser__1_hfxblADLXdGaRMAA.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "hfxblADLXdGaRMAA", - "name": "Wurfmesser +1", - "type": "weapon", - "img": "icons/weapons/thrown/dagger-ringed-steel.webp", - "effects": [ - { - "_id": "c2P4Qt8b6GonPFv7", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +1 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!hfxblADLXdGaRMAA.c2P4Qt8b6GonPFv7" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 1, - "opponentDefense": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343237, - "modifiedTime": 1740227863016, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hfxblADLXdGaRMAA" -} diff --git a/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json b/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json deleted file mode 100644 index 3add72e1..00000000 --- a/packs/items/Wurfmesser__2_eIXRfSsAL5ECi1uq.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "eIXRfSsAL5ECi1uq", - "name": "Wurfmesser +2", - "type": "weapon", - "img": "icons/weapons/thrown/dagger-ringed-engraved-green.webp", - "effects": [ - { - "_id": "XPV4jbYeNcFVFvZr", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!eIXRfSsAL5ECi1uq.XPV4jbYeNcFVFvZr" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 1252, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 2, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343151, - "modifiedTime": 1740227863012, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eIXRfSsAL5ECi1uq" -} diff --git a/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json b/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json deleted file mode 100644 index 23cff801..00000000 --- a/packs/items/Wurfmesser__3_VxyrCBfVdbRD5nj8.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "VxyrCBfVdbRD5nj8", - "name": "Wurfmesser +3", - "type": "weapon", - "img": "icons/weapons/thrown/dagger-ringed-blue.webp", - "effects": [ - { - "_id": "hQfQjfXJhE4yDXQU", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!VxyrCBfVdbRD5nj8.hQfQjfXJhE4yDXQU" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 1752, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 3, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343052, - "modifiedTime": 1740227863003, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VxyrCBfVdbRD5nj8" -} diff --git a/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json b/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json deleted file mode 100644 index 78a05bb4..00000000 --- a/packs/items/Wurfmesser_grAnIWqeXTAIGXmN.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "grAnIWqeXTAIGXmN", - "name": "Wurfmesser", - "type": "weapon", - "img": "icons/weapons/thrown/dagger-simple.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Distanzmalus -1 pro 2 m

", - "quantity": 1, - "price": 2, - "availability": "hamlet", - "storageLocation": "-", - "equipped": false, - "attackType": "meleeRanged", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343217, - "modifiedTime": 1740227863015, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!grAnIWqeXTAIGXmN" -} diff --git a/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json b/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json deleted file mode 100644 index d3800db9..00000000 --- a/packs/items/Zauberk_cher_0C9YNorSbYM5eyBj.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "0C9YNorSbYM5eyBj", - "name": "Zauberköcher", - "type": "equipment", - "img": "icons/containers/ammunition/arrows-quiver-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Jeder Pfeil, der aus diesem Köcher gezogen wird, hat für die Dauer einer Kampfrunde einen magischen Waffenbonus von +1.

", - "quantity": 1, - "price": 750.1, - "availability": "unset", - "storageLocation": "-", - "equipped": false - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342627, - "modifiedTime": 1740227862959, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0C9YNorSbYM5eyBj" -} diff --git a/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json b/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json deleted file mode 100644 index bc2c013e..00000000 --- a/packs/items/Zaubertrank_LoY2CnEEWfxbvjEt.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "LoY2CnEEWfxbvjEt", - "name": "Zaubertrank", - "type": "loot", - "img": "icons/consumables/potions/bottle-pear-corked-pink.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhöht die Werte von Zaubern und Zielzauber für die Dauer eines Kampfes um +1.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342903, - "modifiedTime": 1740227862986, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!LoY2CnEEWfxbvjEt" -} diff --git a/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json b/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json deleted file mode 100644 index c2b6e1a8..00000000 --- a/packs/items/Zauberwechseltrank_uqIQjhDGgbEuHYmd.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "uqIQjhDGgbEuHYmd", - "name": "Zauberwechseltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-bottle-corked-blue.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Diese meist blauen Tränke gewähren für die Dauer eines Kampfes +10 auf Zauber wechseln.

", - "quantity": 1, - "price": 10, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343549, - "modifiedTime": 1740227863028, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uqIQjhDGgbEuHYmd" -} diff --git a/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json b/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json deleted file mode 100644 index 25dc2e86..00000000 --- a/packs/items/Zelt__2_Mann__Van6Sze8TZl8Y88o.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "Van6Sze8TZl8Y88o", - "name": "Zelt (2 Mann)", - "type": "loot", - "img": "icons/environment/settlement/tent.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "", - "quantity": 1, - "price": 4, - "availability": "village", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343051, - "modifiedTime": 1740227863002, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Van6Sze8TZl8Y88o" -} diff --git a/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json b/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json deleted file mode 100644 index 8bf8e8a1..00000000 --- a/packs/items/Zieltrank_zqlc3bq1ZfneLeYx.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "_id": "zqlc3bq1ZfneLeYx", - "name": "Zieltrank", - "type": "loot", - "img": "icons/consumables/potions/potion-flask-capped-yellow-green.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhöht die Werte von Schießen und Zielzauber für die Dauer eines Kampfes um +1.

", - "quantity": 1, - "price": 25, - "availability": "unset", - "storageLocation": "-" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343618, - "modifiedTime": 1740227863031, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zqlc3bq1ZfneLeYx" -} diff --git a/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json b/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json deleted file mode 100644 index 41e9affe..00000000 --- a/packs/items/Zornhammer_pQqbXD5ELmjcu4Dd.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "pQqbXD5ELmjcu4Dd", - "name": "Zornhammer", - "type": "weapon", - "img": "icons/weapons/hammers/hammer-double-steel-embossed.webp", - "effects": [ - { - "_id": "dcGiLPK2AIDA7NHH", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "-4", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative -4", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!pQqbXD5ELmjcu4Dd.dcGiLPK2AIDA7NHH" - }, - { - "_id": "RWRk7pwQf2vs1Aqv", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!pQqbXD5ELmjcu4Dd.RWRk7pwQf2vs1Aqv" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein schwerer, schlichter Streithammer +3, der einst einem Zwergenhelden gehörte.

\n

Zweihändig, Initiative -4

", - "quantity": 1, - "price": 3256, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343452, - "modifiedTime": 1740227863022, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pQqbXD5ELmjcu4Dd" -} diff --git a/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json b/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json deleted file mode 100644 index 41005045..00000000 --- a/packs/items/Zwergenaxt_0f8ivq3Mveb3s3Fs.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "0f8ivq3Mveb3s3Fs", - "name": "Zwergenaxt", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-engraved.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 60, - "availability": "dwarves", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 3, - "opponentDefense": -2 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342638, - "modifiedTime": 1740227862961, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0f8ivq3Mveb3s3Fs" -} diff --git a/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json b/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json deleted file mode 100644 index 4fa73634..00000000 --- a/packs/items/Zwergenaxt__1_JZkzRagRS8TKZplw.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "_id": "JZkzRagRS8TKZplw", - "name": "Zwergenaxt +1", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-engraved-runes.webp", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 2310, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 4, - "opponentDefense": -3 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342881, - "modifiedTime": 1740227862984, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JZkzRagRS8TKZplw" -} diff --git a/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json b/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json deleted file mode 100644 index a2a19f0a..00000000 --- a/packs/items/Zwergenaxt__2_NHV9ho8tGutv0mrS.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "_id": "NHV9ho8tGutv0mrS", - "name": "Zwergenaxt +2", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-engraved-black.webp", - "effects": [ - { - "_id": "WsibIQWwcjabH8QS", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!NHV9ho8tGutv0mrS.WsibIQWwcjabH8QS" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 2810, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 5, - "opponentDefense": -4 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342910, - "modifiedTime": 1740227862987, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NHV9ho8tGutv0mrS" -} diff --git a/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json b/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json deleted file mode 100644 index 022024a6..00000000 --- a/packs/items/Zwergenaxt__3_Tu0Mf3Qib68wxpRs.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "_id": "Tu0Mf3Qib68wxpRs", - "name": "Zwergenaxt +3", - "type": "weapon", - "img": "icons/weapons/axes/axe-double-engraved-blue.webp", - "effects": [ - { - "_id": "Ytio5tOcCUO91MQ0", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Tu0Mf3Qib68wxpRs.Ytio5tOcCUO91MQ0" - }, - { - "_id": "ulhp9EsUM5Tf0iCd", - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "disabled": false, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +3 (magisch)", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Tu0Mf3Qib68wxpRs.ulhp9EsUM5Tf0iCd" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Zweihändig, Initiative -1

", - "quantity": 1, - "price": 3310, - "availability": "unset", - "storageLocation": "-", - "equipped": false, - "attackType": "melee", - "weaponBonus": 6, - "opponentDefense": -5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995343020, - "modifiedTime": 1740227863000, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Tu0Mf3Qib68wxpRs" -} diff --git a/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json b/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json deleted file mode 100644 index 9a54125e..00000000 --- a/packs/languages-and-scripts/Ahnenrunen_ylqXcZHRbIBeV20Z.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "ylqXcZHRbIBeV20Z", - "name": "Ahnenrunen", - "type": "alphabet", - "img": "icons/svg/book.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342375, - "modifiedTime": 1740227862520, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ylqXcZHRbIBeV20Z" -} diff --git a/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json b/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json deleted file mode 100644 index 15ed6282..00000000 --- a/packs/languages-and-scripts/Elfisch_xpvHuSywc8lJa2UN.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "xpvHuSywc8lJa2UN", - "name": "Elfisch", - "type": "language", - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342367, - "modifiedTime": 1740227862519, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!xpvHuSywc8lJa2UN" -} diff --git a/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json b/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json deleted file mode 100644 index fac4866d..00000000 --- a/packs/languages-and-scripts/Freiwort_GQNpFENXcjJGeYr2.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "GQNpFENXcjJGeYr2", - "name": "Freiwort", - "type": "language", - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Freiwort ist die Gemeinsprache der Freien Lande.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342358, - "modifiedTime": 1740227862518, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GQNpFENXcjJGeYr2" -} diff --git a/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json b/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json deleted file mode 100644 index 73a9e9dd..00000000 --- a/packs/languages-and-scripts/Gormanische_Schrift_4KbbQeTvvJC7iNrI.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "4KbbQeTvvJC7iNrI", - "name": "Gormanische Schrift", - "type": "alphabet", - "img": "icons/svg/book.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342357, - "modifiedTime": 1740227862517, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!4KbbQeTvvJC7iNrI" -} diff --git a/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json b/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json deleted file mode 100644 index 62f21cf1..00000000 --- a/packs/languages-and-scripts/Kaitanisch_n6KU1XIzbPWups0D.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "n6KU1XIzbPWups0D", - "name": "Kaitanisch", - "type": "language", - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342365, - "modifiedTime": 1740227862519, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!n6KU1XIzbPWups0D" -} diff --git a/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json b/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json deleted file mode 100644 index 70f01531..00000000 --- a/packs/languages-and-scripts/Kaitanische_Schrift_k8FSxBda9CoLOJqZ.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "k8FSxBda9CoLOJqZ", - "name": "Kaitanische Schrift", - "type": "alphabet", - "img": "icons/svg/book.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342362, - "modifiedTime": 1740227862519, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!k8FSxBda9CoLOJqZ" -} diff --git a/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json b/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json deleted file mode 100644 index 7c740370..00000000 --- a/packs/languages-and-scripts/Keilschrift_n2Nbg0ttFzcMxp7T.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "n2Nbg0ttFzcMxp7T", - "name": "Keilschrift", - "type": "alphabet", - "img": "icons/svg/book.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342364, - "modifiedTime": 1740227862519, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!n2Nbg0ttFzcMxp7T" -} diff --git a/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json b/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json deleted file mode 100644 index 0d71fd5d..00000000 --- a/packs/languages-and-scripts/Ornamentschrift_josgKzD9UmDOvTup.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "josgKzD9UmDOvTup", - "name": "Ornamentschrift", - "type": "alphabet", - "img": "icons/svg/book.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342361, - "modifiedTime": 1740227862518, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!josgKzD9UmDOvTup" -} diff --git a/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json b/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json deleted file mode 100644 index 7b143fa7..00000000 --- a/packs/languages-and-scripts/Zasarisch_usEWD48iYnMHO3Ty.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "usEWD48iYnMHO3Ty", - "name": "Zasarisch", - "type": "language", - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342366, - "modifiedTime": 1740227862519, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!usEWD48iYnMHO3Ty" -} diff --git a/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json b/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json deleted file mode 100644 index 85208c54..00000000 --- a/packs/languages-and-scripts/Zasarische_Schrift_O1U9jd0yJoydHwT8.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "O1U9jd0yJoydHwT8", - "name": "Zasarische Schrift", - "type": "alphabet", - "img": "icons/svg/book.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342359, - "modifiedTime": 1740227862518, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!O1U9jd0yJoydHwT8" -} diff --git a/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json b/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json deleted file mode 100644 index 6bc41058..00000000 --- a/packs/languages-and-scripts/Zwergisch_PzkVTViII6ungWyp.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "PzkVTViII6ungWyp", - "name": "Zwergisch", - "type": "language", - "img": "systems/ds4/assets/icons/game-icons/lorc/conversation.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342360, - "modifiedTime": 1740227862518, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PzkVTViII6ungWyp" -} diff --git a/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json b/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json deleted file mode 100644 index 07f43f43..00000000 --- a/packs/racial-abilities/Allergie_gegen_Metall_sXqjA4m3AsWmMo3a.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "sXqjA4m3AsWmMo3a", - "name": "Allergie gegen Metall", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes können kein Metall nutzen (auch keine Waffen und Rüstungen aus Metall) und erhalten auf Abwehr -1 bei Schaden durch Metallwaffen.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349157, - "modifiedTime": 1740227862619, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sXqjA4m3AsWmMo3a" -} diff --git a/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json b/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json deleted file mode 100644 index 4971f29c..00000000 --- a/packs/racial-abilities/Arrogant_Fo1LiBcGi9BoHJ9v.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "Fo1LiBcGi9BoHJ9v", - "name": "Arrogant", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes wirken arrogant und nehmen nur ungern Hilfe von anderen an, so auch Heilmagie nur im aller größten Notfall.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349083, - "modifiedTime": 1740227862614, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Fo1LiBcGi9BoHJ9v" -} diff --git a/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json b/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json deleted file mode 100644 index 73c07b8a..00000000 --- a/packs/racial-abilities/Dunkelsicht_VTBlOswerHKLvjqI.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "VTBlOswerHKLvjqI", - "name": "Dunkelsicht", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Dunkelsicht (DS4 S. 83).

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349127, - "modifiedTime": 1740227862615, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VTBlOswerHKLvjqI" -} diff --git a/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json b/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json deleted file mode 100644 index 8c1e47d2..00000000 --- a/packs/racial-abilities/Ein_ugig_nwABE3AeAUHbKd7U.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_id": "nwABE3AeAUHbKd7U", - "name": "Einäugig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "JOqcrV2Ns68t0SaO", - "changes": [ - { - "key": "system.combatValues.rangedAttack.total", - "mode": 2, - "value": "-1", - "priority": null - }, - { - "key": "system.combatValues.targetedSpellcasting.total", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Schießen, Zielzaubern -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!nwABE3AeAUHbKd7U.JOqcrV2Ns68t0SaO" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Volk erhält -1 auf Schießen und Zielzauber.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349152, - "modifiedTime": 1740227862617, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nwABE3AeAUHbKd7U" -} diff --git a/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json b/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json deleted file mode 100644 index 1c4083a3..00000000 --- a/packs/racial-abilities/Fragil_b4vuLR8nbyFtCUT6.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "b4vuLR8nbyFtCUT6", - "name": "Fragil", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "Y9VbkphCkoVaRMjL", - "changes": [ - { - "key": "", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Abwehr -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!b4vuLR8nbyFtCUT6.Y9VbkphCkoVaRMjL" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses zartbesaitete Volk erhält -1 auf Abwehr.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349138, - "modifiedTime": 1740227862616, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!b4vuLR8nbyFtCUT6" -} diff --git a/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json b/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json deleted file mode 100644 index e3431932..00000000 --- a/packs/racial-abilities/Geschwind_cgWu5Mfd37oJ1Jw3.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "cgWu5Mfd37oJ1Jw3", - "name": "Geschwind", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "KFyXovHEQ71WxiR6", - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!cgWu5Mfd37oJ1Jw3.KFyXovHEQ71WxiR6" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Volk erhält +2 auf Initiative.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349140, - "modifiedTime": 1740227862616, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!cgWu5Mfd37oJ1Jw3" -} diff --git a/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json b/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json deleted file mode 100644 index 0142e17c..00000000 --- a/packs/racial-abilities/Goldgier_KmcfnDcxyFRRelRh.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "KmcfnDcxyFRRelRh", - "name": "Goldgier", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Immer wenn ein Mitglied dieses Volkes etwas Wertvolles bemerkt, muss es GEI+VE+4 schaffen, oder es will es unbedingt besitzen.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349091, - "modifiedTime": 1740227862614, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KmcfnDcxyFRRelRh" -} diff --git a/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json b/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json deleted file mode 100644 index f6b3038b..00000000 --- a/packs/racial-abilities/Gro__ewWlk1Ud6dFVZD2u.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ewWlk1Ud6dFVZD2u", - "name": "Groß", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "D8cY12yVEAaNX52B", - "changes": [ - { - "key": "system.combatValues.hitPoints.total", - "mode": 1, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Lebenskraft x 2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ewWlk1Ud6dFVZD2u.D8cY12yVEAaNX52B" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Lebenskraft x 2, aber auch leichter zu treffen (DS4 S. 44).

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349143, - "modifiedTime": 1740227862616, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ewWlk1Ud6dFVZD2u" -} diff --git a/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json b/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json deleted file mode 100644 index bde79f6f..00000000 --- a/packs/racial-abilities/Klein_3RX84f54FUuk20jo.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "3RX84f54FUuk20jo", - "name": "Klein", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "krC2HXyXBfo2AZsy", - "changes": [ - { - "key": "system.combatValues.hitPoints.total", - "mode": 1, - "value": "0.5", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Lebenskraft / 2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!3RX84f54FUuk20jo.krC2HXyXBfo2AZsy" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Lebenskraft halbiert, aber auch schwerer zu treffen (DS4 S. 44). Waffen sind zu groß, ein Kurzschwert wird zur Zweihandwaffe.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349016, - "modifiedTime": 1740227862612, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!3RX84f54FUuk20jo" -} diff --git a/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json b/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json deleted file mode 100644 index 8eb9c737..00000000 --- a/packs/racial-abilities/Langlebig_Uui9ofMtBTX4v0Yj.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "Uui9ofMtBTX4v0Yj", - "name": "Langlebig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes altern nur noch langsam, sobald sie erwachsen sind.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349105, - "modifiedTime": 1740227862615, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Uui9ofMtBTX4v0Yj" -} diff --git a/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json b/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json deleted file mode 100644 index 07fa61b3..00000000 --- a/packs/racial-abilities/Langsam_xWClnNIkOvDLasgl.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "xWClnNIkOvDLasgl", - "name": "Langsam", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "sSCcqM8OaPaP6kW2", - "changes": [ - { - "key": "system.combatValues.movement.total", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Laufen -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!xWClnNIkOvDLasgl.sSCcqM8OaPaP6kW2" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Vertreter dieses Volkes sind langsam und erhalten -1 auf Laufen.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349159, - "modifiedTime": 1740227862619, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!xWClnNIkOvDLasgl" -} diff --git a/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json b/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json deleted file mode 100644 index 6eab3568..00000000 --- a/packs/racial-abilities/Leichtf__ig_x35PNIYq3FCKIYCA.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "x35PNIYq3FCKIYCA", - "name": "Leichtfüßig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "S4I2jS5RdAoAHLAL", - "changes": [ - { - "key": "system.checks.sneak", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Schleichen +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!x35PNIYq3FCKIYCA.S4I2jS5RdAoAHLAL" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Volk erhält bei Schleichen und ähnlichen Proben einen Bonus von +1.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349158, - "modifiedTime": 1740227862619, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!x35PNIYq3FCKIYCA" -} diff --git a/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json b/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json deleted file mode 100644 index 7f627886..00000000 --- a/packs/racial-abilities/Magieresistent_hPT9Q5DG9YFK1NTB.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "hPT9Q5DG9YFK1NTB", - "name": "Magieresistent", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes sind weniger betroffen durch Zauber und Magie. Sämtliche magischen Auswirkungen (Schaden, aber auch Heilung, Trankeffekte oder die Zauberdauer u.ä.) werden bei ihnen halbiert, außer erlittener Elementarschaden.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349149, - "modifiedTime": 1740227862617, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hPT9Q5DG9YFK1NTB" -} diff --git a/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json b/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json deleted file mode 100644 index ea681252..00000000 --- a/packs/racial-abilities/Magisch_begabt_sFgC2eZxZIvii9OP.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "sFgC2eZxZIvii9OP", - "name": "Magisch begabt", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "QxBn4JAl9dmgj5xH", - "changes": [ - { - "key": "system.combatValues.spellcasting.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Zaubern +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!sFgC2eZxZIvii9OP.QxBn4JAl9dmgj5xH" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes sind von der Magie berührt – es fällt ihnen unheimlich leicht, Zauber zu verstehen und zu wirken. Sie erhalten +1 auf Zaubern.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349156, - "modifiedTime": 1740227862618, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sFgC2eZxZIvii9OP" -} diff --git a/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json b/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json deleted file mode 100644 index 4abb5be0..00000000 --- a/packs/racial-abilities/Magisch_unbegabt_FnyDr2OhywiARDPl.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "FnyDr2OhywiARDPl", - "name": "Magisch unbegabt", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes können überhaupt nicht zaubern.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349053, - "modifiedTime": 1740227862614, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FnyDr2OhywiARDPl" -} diff --git a/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json b/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json deleted file mode 100644 index 2a2cb855..00000000 --- a/packs/racial-abilities/Nachtsicht_jv1fgwHuCG6I8vMa.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "jv1fgwHuCG6I8vMa", - "name": "Nachtsicht", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes erhalten die Volksfähigkeit Nachtsicht (DS4 S. 83).

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349151, - "modifiedTime": 1740227862617, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!jv1fgwHuCG6I8vMa" -} diff --git a/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json b/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json deleted file mode 100644 index 74bcbfd7..00000000 --- a/packs/racial-abilities/Schnell_qC9HBqm6nPRFg62e.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "qC9HBqm6nPRFg62e", - "name": "Schnell", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "jXtkQik1kgzTNeDC", - "changes": [ - { - "key": "system.combatValues.movement.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Laufen +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!qC9HBqm6nPRFg62e.jXtkQik1kgzTNeDC" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses flinke Volk erhält +1 auf Laufen.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349154, - "modifiedTime": 1740227862618, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!qC9HBqm6nPRFg62e" -} diff --git a/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json b/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json deleted file mode 100644 index 5ce85514..00000000 --- a/packs/racial-abilities/Talentiert_gIacfUxo5FToVbux.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "gIacfUxo5FToVbux", - "name": "Talentiert", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes erhalten einen zusätzlichen Talentpunkt bei der Charaktererschaffung.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349146, - "modifiedTime": 1740227862617, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gIacfUxo5FToVbux" -} diff --git a/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json b/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json deleted file mode 100644 index 91703606..00000000 --- a/packs/racial-abilities/Tollpatschig_43nqAxNU6hpBtMiY.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "_id": "43nqAxNU6hpBtMiY", - "name": "Tollpatschig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "RSs2hV25q3KJkFmg", - "changes": [ - { - "key": "system.combatValues.rangedAttack.total", - "mode": 2, - "value": "-4", - "priority": null - }, - { - "key": "system.checks.climb", - "mode": 2, - "value": "-4", - "priority": null - }, - { - "key": "system.checks.hide", - "mode": 2, - "value": "-4", - "priority": null - }, - { - "key": "system.checks.jump", - "mode": 2, - "value": "-4", - "priority": null - }, - { - "key": "system.checks.pickPocket", - "mode": 2, - "value": "-4", - "priority": null - }, - { - "key": "system.checks.ride", - "mode": 2, - "value": "-4", - "priority": null - }, - { - "key": "system.checks.sneak", - "mode": 2, - "value": "-4", - "priority": null - }, - { - "key": "system.checks.swim", - "mode": 2, - "value": "-4", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Proben mit Agilität -4", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!43nqAxNU6hpBtMiY.RSs2hV25q3KJkFmg" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Tollpatschige Völker sind sehr ungeschickt und grobmotorisch – sie erhalten auf alle Proben mit Agilität einen Malus von -4.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349022, - "modifiedTime": 1740227862612, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!43nqAxNU6hpBtMiY" -} diff --git a/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json b/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json deleted file mode 100644 index 3ff51881..00000000 --- a/packs/racial-abilities/Ungepflegt_yUyyyPRE3LvUUIGI.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "yUyyyPRE3LvUUIGI", - "name": "Ungepflegt", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes erhalten auf alle Proben sozialer Interaktion mit Vertretern anderer Völker einen Malus von -2.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349161, - "modifiedTime": 1740227862620, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yUyyyPRE3LvUUIGI" -} diff --git a/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json b/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json deleted file mode 100644 index 77056151..00000000 --- a/packs/racial-abilities/Unsterblich_QIjVVVMR4PcO2NZc.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "QIjVVVMR4PcO2NZc", - "name": "Unsterblich", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes altern, nachdem sie erwachsen sind, nicht wie Normalsterbliche. Das Alter rafft sie nicht dahin, sie sterben nur durch Gewalt oder aus Lebensüberdruß.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349099, - "modifiedTime": 1740227862614, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QIjVVVMR4PcO2NZc" -} diff --git a/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json b/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json deleted file mode 100644 index 8271528b..00000000 --- a/packs/racial-abilities/Untalentiert_5hd2Tk6MzudSxM2M.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "5hd2Tk6MzudSxM2M", - "name": "Untalentiert", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der erste Rang eines Talentes kostet dieses Volk jeweils einen Talentpunkt mehr.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349037, - "modifiedTime": 1740227862613, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5hd2Tk6MzudSxM2M" -} diff --git a/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json b/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json deleted file mode 100644 index 433b5e3a..00000000 --- a/packs/racial-abilities/Verabscheuungsw_rdig_YV9KiRebanh28Jk2.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "_id": "YV9KiRebanh28Jk2", - "name": "Verabscheuungswürdig", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes werden von anderen Völkern verabscheut und gemieden. Sie verkaufen Waren nur zögerlich oder gegen extremen Aufpreis an dieses Volk. Ausrüstung und andere Dienstleistungen kosten das Doppelte.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349134, - "modifiedTime": 1740227862615, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!YV9KiRebanh28Jk2" -} diff --git a/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json b/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json deleted file mode 100644 index ef60c834..00000000 --- a/packs/racial-abilities/Z_h_8RPj5bUguaxQ6RLK.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "8RPj5bUguaxQ6RLK", - "name": "Zäh", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "tP2fgQrHbvuZT4eM", - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Abwehr +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!8RPj5bUguaxQ6RLK.tP2fgQrHbvuZT4eM" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Abwehr.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349043, - "modifiedTime": 1740227862613, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8RPj5bUguaxQ6RLK" -} diff --git a/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json b/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json deleted file mode 100644 index 0551f4eb..00000000 --- a/packs/racial-abilities/Z_her_als_sie_aussehen_Du32O8lxUjCTchh4.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "Du32O8lxUjCTchh4", - "name": "Zäher als sie aussehen", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "rTPqUWomhHvmzLbv", - "changes": [ - { - "key": "system.combatValues.hitPoints.total", - "mode": 1, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Lebenskraft x 2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Du32O8lxUjCTchh4.rTPqUWomhHvmzLbv" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder eines kleinen Volkes können den LK-Malus auf Grund ihrer Größe mit dieser Volksfähigkeit ignorieren.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349048, - "modifiedTime": 1740227862613, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Du32O8lxUjCTchh4" -} diff --git a/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json b/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json deleted file mode 100644 index bdb38a6b..00000000 --- a/packs/racial-abilities/Zielsicher_V5S2BMm7vWJiD2hD.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "_id": "V5S2BMm7vWJiD2hD", - "name": "Zielsicher", - "type": "racialAbility", - "img": "icons/svg/aura.svg", - "effects": [ - { - "_id": "YxpZ3gaKzgnl1T7S", - "changes": [ - { - "key": "system.combatValues.rangedAttack.total", - "mode": 2, - "value": "1", - "priority": null - }, - { - "key": "system.combatValues.targetedSpellcasting.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "Schießen, Zielzaubern +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!V5S2BMm7vWJiD2hD.YxpZ3gaKzgnl1T7S" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mitglieder dieses Volkes erhalten einen Bonus von +1 auf Fernkampf und Zielzauber.

" - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349115, - "modifiedTime": 1740227862615, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!V5S2BMm7vWJiD2hD" -} diff --git a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json deleted file mode 100644 index 17cd9d67..00000000 --- a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Schadenspunkt__mVs6A48mWnfV9hcL.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "mVs6A48mWnfV9hcL", - "name": "Alterung (1 Jahr pro Schadenspunkt)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342120, - "modifiedTime": 1740227862512, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!mVs6A48mWnfV9hcL" -} diff --git a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json b/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json deleted file mode 100644 index 9be8e53e..00000000 --- a/packs/special-creature-abilities/Alterung__1_Jahr_pro_Treffer__e9F812racwKeZPgR.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "e9F812racwKeZPgR", - "name": "Alterung (1 Jahr pro Treffer)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/aging.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei einem Treffer altert das Ziel um 1 Jahr.

", - "experiencePoints": 1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342096, - "modifiedTime": 1740227862511, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!e9F812racwKeZPgR" -} diff --git a/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json b/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json deleted file mode 100644 index c8bb97a5..00000000 --- a/packs/special-creature-abilities/Anf_llig__Erde__mAWyVCfTFH6JiEIu.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "mAWyVCfTFH6JiEIu", - "name": "Anfällig (Erde)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342118, - "modifiedTime": 1740227862512, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!mAWyVCfTFH6JiEIu" -} diff --git a/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json b/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json deleted file mode 100644 index c2d5c8ee..00000000 --- a/packs/special-creature-abilities/Anf_llig__Feuer__XhAfEVVoSADC880C.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "XhAfEVVoSADC880C", - "name": "Anfällig (Feuer)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhält doppelten Schaden durch Feuerangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342080, - "modifiedTime": 1740227862510, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XhAfEVVoSADC880C" -} diff --git a/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json b/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json deleted file mode 100644 index 0d87f4ba..00000000 --- a/packs/special-creature-abilities/Anf_llig__Licht__aOsmsf7jIK7hU9U8.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "aOsmsf7jIK7hU9U8", - "name": "Anfällig (Licht)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhält doppelten Schaden durch Lichtangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342088, - "modifiedTime": 1740227862510, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!aOsmsf7jIK7hU9U8" -} diff --git a/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json b/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json deleted file mode 100644 index a967a1b0..00000000 --- a/packs/special-creature-abilities/Anf_llig__Luft__ImVvi7XqDvf6D2vY.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "ImVvi7XqDvf6D2vY", - "name": "Anfällig (Luft)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342055, - "modifiedTime": 1740227862507, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ImVvi7XqDvf6D2vY" -} diff --git a/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json b/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json deleted file mode 100644 index 009127d8..00000000 --- a/packs/special-creature-abilities/Anf_llig__Wasser__E5WqX3Em2HOAkP2e.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "E5WqX3Em2HOAkP2e", - "name": "Anfällig (Wasser)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342040, - "modifiedTime": 1740227862506, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!E5WqX3Em2HOAkP2e" -} diff --git a/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json b/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json deleted file mode 100644 index b7c060b6..00000000 --- a/packs/special-creature-abilities/Angst__1__rUA7XVCeDkREYfi8.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "rUA7XVCeDkREYfi8", - "name": "Angst (1)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342142, - "modifiedTime": 1740227862514, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rUA7XVCeDkREYfi8" -} diff --git a/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json b/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json deleted file mode 100644 index 28ae9ba7..00000000 --- a/packs/special-creature-abilities/Angst__2__3LGUHTPC3tbVC13X.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "3LGUHTPC3tbVC13X", - "name": "Angst (2)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 20 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342010, - "modifiedTime": 1740227862504, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!3LGUHTPC3tbVC13X" -} diff --git a/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json b/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json deleted file mode 100644 index 3997a6e0..00000000 --- a/packs/special-creature-abilities/Angst__3__blDuh7uVVhaNSUVU.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "blDuh7uVVhaNSUVU", - "name": "Angst (3)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 30 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342090, - "modifiedTime": 1740227862510, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!blDuh7uVVhaNSUVU" -} diff --git a/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json b/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json deleted file mode 100644 index 3c889c94..00000000 --- a/packs/special-creature-abilities/Angst__4__Dt7AvP3fUbOQB4Yn.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "Dt7AvP3fUbOQB4Yn", - "name": "Angst (4)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -4 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 40 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342037, - "modifiedTime": 1740227862506, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Dt7AvP3fUbOQB4Yn" -} diff --git a/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json b/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json deleted file mode 100644 index 49a3b726..00000000 --- a/packs/special-creature-abilities/Angst__5__X3UfX2rmUKDUXmrC.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "X3UfX2rmUKDUXmrC", - "name": "Angst (5)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/fear.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI + VE + Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -5 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342074, - "modifiedTime": 1740227862509, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!X3UfX2rmUKDUXmrC" -} diff --git a/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json b/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json deleted file mode 100644 index 4ed208f8..00000000 --- a/packs/special-creature-abilities/Antimagie__10_Meter__oUR6JglLxmJZduZz.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "oUR6JglLxmJZduZz", - "name": "Antimagie (10 Meter)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342127, - "modifiedTime": 1740227862513, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oUR6JglLxmJZduZz" -} diff --git a/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json b/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json deleted file mode 100644 index 416c9b91..00000000 --- a/packs/special-creature-abilities/Bezaubern_HMCFkxVzU2b3KkSA.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "HMCFkxVzU2b3KkSA", - "name": "Bezaubern", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charm.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann Gegner mit einem „Lockruf“ bezaubern. Dieser Zauber funktioniert wie der Zauberspruch @Compendium[ds4.spells.wZYElRaDmhqgzUvQ]{Gehorche}. Abklingzeit des Lockrufs: 10 Kampfrunden

", - "experiencePoints": 25 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342052, - "modifiedTime": 1740227862507, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!HMCFkxVzU2b3KkSA" -} diff --git a/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json b/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json deleted file mode 100644 index 36fd5126..00000000 --- a/packs/special-creature-abilities/Blickangriff_l4ewILWP2zbiSM97.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "l4ewILWP2zbiSM97", - "name": "Blickangriff", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342114, - "modifiedTime": 1740227862512, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!l4ewILWP2zbiSM97" -} diff --git a/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json b/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json deleted file mode 100644 index ee8fe73b..00000000 --- a/packs/special-creature-abilities/Dunkelsicht_75iKq2PTrfyTw0s4.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "75iKq2PTrfyTw0s4", - "name": "Dunkelsicht", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann selbst in völliger Dunkelheit noch sehen.

", - "experiencePoints": 7 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342024, - "modifiedTime": 1740227862505, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!75iKq2PTrfyTw0s4" -} diff --git a/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json b/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json deleted file mode 100644 index 72b255fe..00000000 --- a/packs/special-creature-abilities/Fliegen_uX7wuGyUjOPpYR5W.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "uX7wuGyUjOPpYR5W", - "name": "Fliegen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flight.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion „Rennen“ im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342144, - "modifiedTime": 1740227862514, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uX7wuGyUjOPpYR5W" -} diff --git a/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json b/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json deleted file mode 100644 index 0265937f..00000000 --- a/packs/special-creature-abilities/Geistesimmun_ziB3j0RSbWMtq1LX.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "ziB3j0RSbWMtq1LX", - "name": "Geistesimmun", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342149, - "modifiedTime": 1740227862515, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ziB3j0RSbWMtq1LX" -} diff --git a/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json b/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json deleted file mode 100644 index addc64eb..00000000 --- a/packs/special-creature-abilities/Gift__1__TY1ZV1YsyaFtfX7U.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "TY1ZV1YsyaFtfX7U", - "name": "Gift (1)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342071, - "modifiedTime": 1740227862509, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TY1ZV1YsyaFtfX7U" -} diff --git a/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json b/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json deleted file mode 100644 index ae147a25..00000000 --- a/packs/special-creature-abilities/Gift__2__jywCKRNCWLQFCFmu.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "jywCKRNCWLQFCFmu", - "name": "Gift (2)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 2 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 20 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342111, - "modifiedTime": 1740227862511, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!jywCKRNCWLQFCFmu" -} diff --git a/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json b/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json deleted file mode 100644 index 9b0bd1eb..00000000 --- a/packs/special-creature-abilities/Gift__3__xBZDRJORSen8qcRb.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "xBZDRJORSen8qcRb", - "name": "Gift (3)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 3 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 30 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342147, - "modifiedTime": 1740227862514, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!xBZDRJORSen8qcRb" -} diff --git a/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json b/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json deleted file mode 100644 index 690edf87..00000000 --- a/packs/special-creature-abilities/Gift__4__fYLkdhA3Xlw2cctC.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "fYLkdhA3Xlw2cctC", - "name": "Gift (4)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 4 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 40 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342109, - "modifiedTime": 1740227862511, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fYLkdhA3Xlw2cctC" -} diff --git a/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json b/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json deleted file mode 100644 index 6e81d1ef..00000000 --- a/packs/special-creature-abilities/Gift__5__oTLaMcZOW0eiUZCL.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "oTLaMcZOW0eiUZCL", - "name": "Gift (5)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/poison.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird Schaden verursacht, würfelt das Ziel eine „Gift trotzen“-Probe, ansonsten erhält es W20 Kampfrunden lang 5 nicht abwehrbaren Schadenspunkt pro Runde.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342126, - "modifiedTime": 1740227862513, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oTLaMcZOW0eiUZCL" -} diff --git a/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json b/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json deleted file mode 100644 index a651d578..00000000 --- a/packs/special-creature-abilities/Kletterl_ufer_Kbb8qlLeVahzxy5N.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "Kbb8qlLeVahzxy5N", - "name": "Kletterläufer", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/climber.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342058, - "modifiedTime": 1740227862507, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Kbb8qlLeVahzxy5N" -} diff --git a/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json b/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json deleted file mode 100644 index 3ee68e9d..00000000 --- a/packs/special-creature-abilities/L_hmungseffekt_5maJ8tHAVZCxHGW6.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "5maJ8tHAVZCxHGW6", - "name": "Lähmungseffekt", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der lähmende Angriff (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

", - "experiencePoints": 25 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342020, - "modifiedTime": 1740227862505, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5maJ8tHAVZCxHGW6" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json b/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json deleted file mode 100644 index 1abdd377..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffe___1__oDM4ImE7PrIgn22E.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "oDM4ImE7PrIgn22E", - "name": "Mehrere Angriffe (+1)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342122, - "modifiedTime": 1740227862513, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oDM4ImE7PrIgn22E" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json b/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json deleted file mode 100644 index b68c7d8a..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffe___2__1zPOH37f7Q5Rwodx.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "1zPOH37f7Q5Rwodx", - "name": "Mehrere Angriffe (+2)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann 2 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342007, - "modifiedTime": 1740227862504, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1zPOH37f7Q5Rwodx" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json b/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json deleted file mode 100644 index f9a0fe19..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffe___3__LM5xia0xVIlhQsLG.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "LM5xia0xVIlhQsLG", - "name": "Mehrere Angriffe (+3)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann 3 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342060, - "modifiedTime": 1740227862507, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!LM5xia0xVIlhQsLG" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json b/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json deleted file mode 100644 index afe8d126..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffe___4__1JDyMkVOlho7IuiN.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "1JDyMkVOlho7IuiN", - "name": "Mehrere Angriffe (+4)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann 4 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342005, - "modifiedTime": 1740227862504, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1JDyMkVOlho7IuiN" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json b/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json deleted file mode 100644 index eefb2bd0..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffe___5__YvkRgHyCkwhn3uzg.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "YvkRgHyCkwhn3uzg", - "name": "Mehrere Angriffe (+5)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann 5 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342084, - "modifiedTime": 1740227862510, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!YvkRgHyCkwhn3uzg" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json deleted file mode 100644 index 5566cbd8..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffglieder___1__Sig4tVDj8zLWZCEP.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "Sig4tVDj8zLWZCEP", - "name": "Mehrere Angriffglieder (+1)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Greift mit 1 zusätzlichem Angriffsglied an, das Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342070, - "modifiedTime": 1740227862509, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Sig4tVDj8zLWZCEP" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json deleted file mode 100644 index 236b71bd..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffglieder___2__VvzGK9lxAD7kuowL.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "VvzGK9lxAD7kuowL", - "name": "Mehrere Angriffglieder (+2)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Greift mit 2 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342073, - "modifiedTime": 1740227862509, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VvzGK9lxAD7kuowL" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json deleted file mode 100644 index 3ec6159e..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffglieder___3__8HmrA97ZqN7nEYgm.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "8HmrA97ZqN7nEYgm", - "name": "Mehrere Angriffglieder (+3)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Greift mit 3 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342026, - "modifiedTime": 1740227862505, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8HmrA97ZqN7nEYgm" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json deleted file mode 100644 index 6513d336..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffglieder___4__R6jT1GYF13ZijtM0.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "R6jT1GYF13ZijtM0", - "name": "Mehrere Angriffglieder (+4)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Greift mit 4 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342066, - "modifiedTime": 1740227862508, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!R6jT1GYF13ZijtM0" -} diff --git a/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json b/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json deleted file mode 100644 index 6d71117c..00000000 --- a/packs/special-creature-abilities/Mehrere_Angriffglieder___5__e6VuJIL8ocXQDQ2V.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "e6VuJIL8ocXQDQ2V", - "name": "Mehrere Angriffglieder (+5)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Greift mit 5 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342092, - "modifiedTime": 1740227862511, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!e6VuJIL8ocXQDQ2V" -} diff --git a/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json b/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json deleted file mode 100644 index 2c503dc0..00000000 --- a/packs/special-creature-abilities/Nachtsicht_pJjtHe2Rd0YCa35n.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "pJjtHe2Rd0YCa35n", - "name": "Nachtsicht", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342130, - "modifiedTime": 1740227862514, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pJjtHe2Rd0YCa35n" -} diff --git a/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json b/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json deleted file mode 100644 index 81acb893..00000000 --- a/packs/special-creature-abilities/Nat_rliche_Waffen_YrmJo8dg4CF3lJdH.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "YrmJo8dg4CF3lJdH", - "name": "Natürliche Waffen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342082, - "modifiedTime": 1740227862510, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!YrmJo8dg4CF3lJdH" -} diff --git a/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json b/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json deleted file mode 100644 index d92dfa36..00000000 --- a/packs/special-creature-abilities/Nur_durch_Magie_verletzbar_FCxjdPJ1L8EJd0IF.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "FCxjdPJ1L8EJd0IF", - "name": "Nur durch Magie verletzbar", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342047, - "modifiedTime": 1740227862506, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FCxjdPJ1L8EJd0IF" -} diff --git a/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json b/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json deleted file mode 100644 index 57d250e4..00000000 --- a/packs/special-creature-abilities/Odem_sDffbUUXg88Vn2Pq.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "sDffbUUXg88Vn2Pq", - "name": "Odem", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) – nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5 m langer Kegel (am Ende GE x 3 m breit).

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342143, - "modifiedTime": 1740227862514, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sDffbUUXg88Vn2Pq" -} diff --git a/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json b/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json deleted file mode 100644 index 84e4f3a5..00000000 --- a/packs/special-creature-abilities/Regeneration_Mh6bLPD3N29ybeLq.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "Mh6bLPD3N29ybeLq", - "name": "Regeneration", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations-Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

", - "experiencePoints": -1 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342062, - "modifiedTime": 1740227862508, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Mh6bLPD3N29ybeLq" -} diff --git a/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json b/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json deleted file mode 100644 index 24f8b996..00000000 --- a/packs/special-creature-abilities/Rost_oPTuLvZOEsXnRPed.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "oPTuLvZOEsXnRPed", - "name": "Rost", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/rust.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Jeder Treffer reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Kreatur treffen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342124, - "modifiedTime": 1740227862513, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oPTuLvZOEsXnRPed" -} diff --git a/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json b/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json deleted file mode 100644 index 2d07c74f..00000000 --- a/packs/special-creature-abilities/Schleudern_5PdSHi6PY4TNV9rP.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "5PdSHi6PY4TNV9rP", - "name": "Schleudern", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/flinging.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden / 3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342014, - "modifiedTime": 1740227862504, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5PdSHi6PY4TNV9rP" -} diff --git a/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json b/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json deleted file mode 100644 index b50db1e7..00000000 --- a/packs/special-creature-abilities/Schwarm_rPbbTLUtSXZpdFjp.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "rPbbTLUtSXZpdFjp", - "name": "Schwarm", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swarm.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl / 10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

", - "experiencePoints": 0 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342134, - "modifiedTime": 1740227862514, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rPbbTLUtSXZpdFjp" -} diff --git a/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json b/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json deleted file mode 100644 index 65655aaf..00000000 --- a/packs/special-creature-abilities/Schweben_05D4DdnbcQFoIllF.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "05D4DdnbcQFoIllF", - "name": "Schweben", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/hover.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann, statt zu laufen, auch schweben. Wird die Aktion „Rennen“ ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995341997, - "modifiedTime": 1740227862503, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!05D4DdnbcQFoIllF" -} diff --git a/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json b/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json deleted file mode 100644 index e898d27a..00000000 --- a/packs/special-creature-abilities/Schwimmen_18PDF4gqWrIRWudN.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "18PDF4gqWrIRWudN", - "name": "Schwimmen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/swim.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann, statt zu laufen, schwimmen. Wird die Aktion „Rennen“ schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342002, - "modifiedTime": 1740227862503, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!18PDF4gqWrIRWudN" -} diff --git a/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json b/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json deleted file mode 100644 index e870e874..00000000 --- a/packs/special-creature-abilities/Sonar_BtjiEmhGyje6YghP.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "BtjiEmhGyje6YghP", - "name": "Sonar", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/sonar.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

„Sieht“ per Sonar.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342035, - "modifiedTime": 1740227862506, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!BtjiEmhGyje6YghP" -} diff --git a/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json b/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json deleted file mode 100644 index f7adf23c..00000000 --- a/packs/special-creature-abilities/Sturmangriff_L0dxlrCY14bLyUdQ.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "L0dxlrCY14bLyUdQ", - "name": "Sturmangriff", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/charge.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342059, - "modifiedTime": 1740227862507, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!L0dxlrCY14bLyUdQ" -} diff --git a/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json b/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json deleted file mode 100644 index 03308c9d..00000000 --- a/packs/special-creature-abilities/Sturzangriff_eWuQlQYF3VmyR0kt.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "eWuQlQYF3VmyR0kt", - "name": "Sturzangriff", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 „rennend“ geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342099, - "modifiedTime": 1740227862511, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eWuQlQYF3VmyR0kt" -} diff --git a/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json b/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json deleted file mode 100644 index 40380dc5..00000000 --- a/packs/special-creature-abilities/Totenkraft_ZkgZiFI5xy8aevG8.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_id": "ZkgZiFI5xy8aevG8", - "name": "Totenkraft", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png", - "effects": [ - { - "_id": "xw1OyyTdDwkNe2jC", - "changes": [ - { - "key": "system.traits.strength.total", - "mode": 2, - "value": "@system.attributes.mind.total + @system.traits.aura.total", - "priority": null - }, - { - "key": "system.traits.constitution.total", - "mode": 2, - "value": "@system.attributes.mind.total + @system.traits.aura.total", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": {}, - "tint": "#ffffff", - "origin": null, - "name": "GEI + AU als Bonus auf Stärke und Härte", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ZkgZiFI5xy8aevG8.xw1OyyTdDwkNe2jC" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Erhält GEI+AU als Bonus auf Stärke und Härte.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342086, - "modifiedTime": 1740227862510, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZkgZiFI5xy8aevG8" -} diff --git a/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json b/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json deleted file mode 100644 index 899a10c3..00000000 --- a/packs/special-creature-abilities/Umschlingen_AjPsjbxcuNslQEuE.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "AjPsjbxcuNslQEuE", - "name": "Umschlingen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/entangle.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

", - "experiencePoints": 10 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342029, - "modifiedTime": 1740227862505, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!AjPsjbxcuNslQEuE" -} diff --git a/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json b/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json deleted file mode 100644 index 75b4fbc0..00000000 --- a/packs/special-creature-abilities/Verschlingen_fY7yRpxhQTIV5G2p.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "fY7yRpxhQTIV5G2p", - "name": "Verschlingen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/devourer.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

", - "experiencePoints": 25 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342107, - "modifiedTime": 1740227862511, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fY7yRpxhQTIV5G2p" -} diff --git a/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json b/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json deleted file mode 100644 index fbeb17f1..00000000 --- a/packs/special-creature-abilities/Versteinern_5eB5a0FnygbaqWPe.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "5eB5a0FnygbaqWPe", - "name": "Versteinern", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/petrification.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} aufgehoben werden.

", - "experiencePoints": 50 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342017, - "modifiedTime": 1740227862504, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5eB5a0FnygbaqWPe" -} diff --git a/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json b/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json deleted file mode 100644 index 20bb6c72..00000000 --- a/packs/special-creature-abilities/Werteverlust__AGI__602AkdkLqx6NWprb.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "602AkdkLqx6NWprb", - "name": "Werteverlust (AGI)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro schadensverursachendem Treffer wird AGI um 1 gesenkt (bei AGI Null ist das Opfer bewegungsunfähig). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342022, - "modifiedTime": 1740227862505, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!602AkdkLqx6NWprb" -} diff --git a/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json b/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json deleted file mode 100644 index 35760d98..00000000 --- a/packs/special-creature-abilities/Werteverlust__GEI__m52MTRs1GMXScTki.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "m52MTRs1GMXScTki", - "name": "Werteverlust (GEI)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro schadensverursachendem Treffer wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342116, - "modifiedTime": 1740227862512, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!m52MTRs1GMXScTki" -} diff --git a/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json b/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json deleted file mode 100644 index e898b99f..00000000 --- a/packs/special-creature-abilities/Werteverlust__K_R__RwT0NBwkc1TuAR1e.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "RwT0NBwkc1TuAR1e", - "name": "Werteverlust (KÖR)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} wird 1 verlorener Attributspunkt regeneriert.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342068, - "modifiedTime": 1740227862509, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RwT0NBwkc1TuAR1e" -} diff --git a/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json b/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json deleted file mode 100644 index e5ac40b7..00000000 --- a/packs/special-creature-abilities/Wesen_der_Dunkelheit__Settingoption__R3j1CjXJckUH0CBG.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "R3j1CjXJckUH0CBG", - "name": "Wesen der Dunkelheit (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342064, - "modifiedTime": 1740227862508, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!R3j1CjXJckUH0CBG" -} diff --git a/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json b/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json deleted file mode 100644 index 328e04eb..00000000 --- a/packs/special-creature-abilities/Wesen_des_Lichts__Settingoption__KDDlwN9as9B4ljeA.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "KDDlwN9as9B4ljeA", - "name": "Wesen des Lichts (Settingoption)", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

", - "experiencePoints": 5 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995342057, - "modifiedTime": 1740227862507, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KDDlwN9as9B4ljeA" -} diff --git a/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json b/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json deleted file mode 100644 index 3b2d11b0..00000000 --- a/packs/special-creature-abilities/Zerstampfen_02QMKm8MHzz8yAxL.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "_id": "02QMKm8MHzz8yAxL", - "name": "Zerstampfen", - "type": "specialCreatureAbility", - "img": "systems/ds4/assets/icons/official/special-creature-abilities/crush.png", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

", - "experiencePoints": 15 - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995341991, - "modifiedTime": 1740227862503, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!02QMKm8MHzz8yAxL" -} diff --git a/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json b/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json deleted file mode 100644 index c0bb02d7..00000000 --- a/packs/spells/Allheilung_pmYcjLXv1EB9bM59.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "pmYcjLXv1EB9bM59", - "name": "Allheilung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/healing.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber heilt sämtliche Verletzungen und schließt jede noch so große Wunde, ohne Narben zu hinterlassen. Selbst abgetrennte Gliedmaßen (sofern nicht mehr als W20 Stunden abgetrennt) lassen sich mit diesem Spruch wieder anfügen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 10, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344883, - "modifiedTime": 1740227862587, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pmYcjLXv1EB9bM59" -} diff --git a/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json b/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json deleted file mode 100644 index f6b819ee..00000000 --- a/packs/spells/Arkanes_Schwert_VjvrapwDmBvGYmfj.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "VjvrapwDmBvGYmfj", - "name": "Arkanes Schwert", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sword-wound.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Schwert aus hellem (oder je nach Belieben auch dunklem) Licht erscheint innerhalb eines Radius von VE in Metern um den Zauberwirker herum.

\n

Innerhalb dieses Wirkungsbereiches kämpft es völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos seines Beschwöreres wie „Greif den großen Troll an“ oder „Schütze mich“.

\n

Bewegt sich der Zauberwirker, wandert der Wirkungsbereich des Schwertes mit ihm mit, so dass die magische Klinge niemals mehr als VE in Metern von ihm getrennt sein kann.

\n

Das Schwert löst sich in seine arkanen Bestandteile auf, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer verstrichen ist.

\n

Sämtliche Kampfwerte des Schwertes entsprechen der Stufe des Zauberwirkers +10.

\n

Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Zauberwirkers entspricht.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344678, - "modifiedTime": 1740227862575, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VjvrapwDmBvGYmfj" -} diff --git a/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json b/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json deleted file mode 100644 index 2898b0db..00000000 --- a/packs/spells/Balancieren_QZW2p3k9uGuYKCbN.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "QZW2p3k9uGuYKCbN", - "name": "Balancieren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/tightrope.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel kann absolut sicher mit seinem reinen Laufen-Wert über dünne Seile u. ä. balancieren.

\n

Sobald der Zauber gewirkt wurde, gilt der Balancieren-Effekt und endet, nachdem der Charakter eine Strecke in Höhe des eigenen, doppelten Laufen-Wertes in Metern zurückgelegt hat.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis Strecke zurückgelegt", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 2, - "wizard": 3, - "sorcerer": 6 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344604, - "modifiedTime": 1740227862571, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QZW2p3k9uGuYKCbN" -} diff --git a/packs/spells/Bannen_VIRaUl51s1vnDHUt.json b/packs/spells/Bannen_VIRaUl51s1vnDHUt.json deleted file mode 100644 index 77e97004..00000000 --- a/packs/spells/Bannen_VIRaUl51s1vnDHUt.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "VIRaUl51s1vnDHUt", - "name": "Bannen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-palm.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber vernichtet feindliche Dämonen, Elementare und Untote im Wirkungsradius. Maximal wird eine Anzahl von Wesenheiten vernichtet, die der halbierten Stufe des Zauberwirkers entspricht. Bei zu vielen Wesenheiten entscheidet der Zufall, welche betroffen sind. Alternativ können auch bestimmte, einzelne Wesenheiten als Ziel des Bannes bestimmt werden. Pro misslungenen Bannversuch steigt die Schwierigkeit um 2.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 der Wesenheit" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "", - "unit": "custom" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 8, - "wizard": 18, - "sorcerer": 14 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344676, - "modifiedTime": 1740227862575, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VIRaUl51s1vnDHUt" -} diff --git a/packs/spells/Blenden_JldAx8a91vVO2wUf.json b/packs/spells/Blenden_JldAx8a91vVO2wUf.json deleted file mode 100644 index 1f0d78c1..00000000 --- a/packs/spells/Blenden_JldAx8a91vVO2wUf.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "JldAx8a91vVO2wUf", - "name": "Blenden", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/laser-sparks.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein gleißender Lichtstrahl schießt aus der Hand des Zauberwirkers und blendet bei Erfolg das Ziel (welches dagegen keine Abwehr würfeln darf).

Ein geblendetes Ziel hat -8 auf alle Handlungen, bei denen es sehen können sollte.

Selbst augenlose Untote, wie beispielsweise Skelette, werden durch das magische Licht geblendet. Blinde Lebewesen sind dagegen nicht betroffen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": 1, - "wizard": 5, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344548, - "modifiedTime": 1740227862566, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JldAx8a91vVO2wUf" -} diff --git a/packs/spells/Blitz_Senq5ub2Cx0agJgi.json b/packs/spells/Blitz_Senq5ub2Cx0agJgi.json deleted file mode 100644 index 51b63b77..00000000 --- a/packs/spells/Blitz_Senq5ub2Cx0agJgi.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "Senq5ub2Cx0agJgi", - "name": "Blitz", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/bolt-spell-cast.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind. Gegner in Metallrüstung dürfen keine Abwehr gegen Blitze würfeln.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": true, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": 10, - "wizard": 7, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344630, - "modifiedTime": 1740227862573, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Senq5ub2Cx0agJgi" -} diff --git a/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json b/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json deleted file mode 100644 index 41996396..00000000 --- a/packs/spells/Blut_kochen_GPaDrKIFw2kjzryU.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "GPaDrKIFw2kjzryU", - "name": "Blut kochen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/skoll/blood.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Blut des Ziels beginnt auf magische Art und Weise zu kochen, ohne dass es gerinnt.

Der innerlich wirkende Schaden entspricht dem doppelten Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni seiner Gegenstände.

Der Zauber ist gegen Wesen ohne Blut – wie beispielsweise viele Untote – nicht einsetzbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 17, - "sorcerer": 13 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344518, - "modifiedTime": 1740227862564, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GPaDrKIFw2kjzryU" -} diff --git a/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json b/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json deleted file mode 100644 index f70733ce..00000000 --- a/packs/spells/Botschaft_wnYRgIjVtIhL26eg.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "wnYRgIjVtIhL26eg", - "name": "Botschaft", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/envelope.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Beauftragt ein geisterhaftes Abbild des Zaubernden bei einem ihm bekannten Wesen in Reichweite zu erscheinen und bis zu VE x 2 Wortsilben zu zitieren.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "kilometer" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis ausformuliert", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 8, - "wizard": 6, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344902, - "modifiedTime": 1740227862590, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!wnYRgIjVtIhL26eg" -} diff --git a/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json b/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json deleted file mode 100644 index e84cd039..00000000 --- a/packs/spells/D_monen_beschw_ren_yy43TiBbip28QRhs.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "yy43TiBbip28QRhs", - "name": "Dämonen beschwören", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/skoll/pentacle.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mit diesem Zauber beschwört der Zauberwirker einen Dämon aus einer anderen Existenzebene. Der Charakter kann dabei frei wählen, was für eine Dämonenart (@Compendium[ds4.creatures.RxSUSzQBSTFYHOlV]{Niederer Dämon}, @Compendium[ds4.creatures.LtsbT2DHYKs9Catm]{Hoher Dämon}, @Compendium[ds4.creatures.LgtcLrKtCa496ih6]{Kampfdämon}, @Compendium[ds4.creatures.JGpIh3oCK1Vx3NnZ]{Kriegsdämon},@Compendium[ds4.creatures.PKPmkOMLDGwS9QZJ]{Dämonenfürst}, DS4 S. 107-108) er beschwören will und ob die Kreatur fliegen können soll (was ihre Beschwörung aber auch erschwert). Alle Dämonen hassen die niederen Wesen, die es wagen, sie zu beschwören, können ihnen bei einer erfolgreichen Beschwörung aber nichts anhaben. Beschworene Dämonen können nur jemanden angreifen, wenn ihr Beschwörer es ihnen befiehlt oder sie selbst angegriffen werden.

\n

Aufträge: Ein Dämon kann erst auf seine Existenzebene zurückkehren, wenn er für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen VE ausgeführt hat (Dämonen verstehen immer die Sprache ihres Beschwörers).

\n

Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Folge der Straße bis zur nächsten Ortschaft (Auftrag 1) und vernichte jeden, dem Du unterwegs begegnest (Auftrag 2).“

\n

Wird der Dämon von seinem Beschwörer vor Ablauf der Zauberdauer (VE x 2 Stunden) entlassen oder hat er alle seine Aufträge erfüllt, kehrt er augenblicklich zurück auf seine Existenzebene.

\n

Beschwörungskreise: Um einen Dämon zu beschwören, wird immer ein Beschwörungskreis benötigt. Dieser kann hastig auf den Boden gekritzelt oder in langen Stunden aufwendig gezeichnet werden.

\n

Je mehr Arbeit in einem Beschwörungskreis steckt, desto eher gelingt die Beschwörung: Jeder Beschwörungskreis verfügt über einen Beschwörenbonus (BB), der die Zaubern-Probe beim Beschwören erleichtert.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Beschwörungskreis zeichnenBB
Innerhalb 1 Kampfrunde gekritzelt-2
Innerhalb weniger Minuten gefertigt+0
Pro Zeichenstunde (max. VE Stunden)+1
Mit Blut gezeichnet+2
Nachts gezeichnet+2
13 brennende Kerzen auf Kreis stellen+1
\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Weitere Modifikatoren (Kreis nötig)BB
Bestimmter Dämon (Name bekannt)+2
Dämon soll fliegen können-KÖR / 2*
Singsang zum Ende (max. VE / 2 Rd.)+1 / Rd.
Todesopfer (intelligentes Wesen)+KÖR**
\n

*: KÖR des Dämonen
**: KÖR des Opfers

\n

Beispiel:
Ein hoher Dämon (KÖR 7 AU 3 = ZB -10), der zudem auch noch fliegen können soll (KÖR 7 / 2 = 3,5, aufgerundet zu 4), würde die Zaubern-Probe um -14 erschweren.

\n

Ein Beschwörer mit VE 8 könnte, um diesen Malus zu reduzieren, maximal 8 Stunden (+8) in der Nacht (+2) den Beschwörungskreis zeichnen und 13 Kerzen ringsum entzünden (+2).

\n

Würde er die ihm möglichen 4 Kampfrunden (VE / 2) vor der eigentlichen Beschwörung noch einen Singsang anstimmen, wäre der endgültige ZB sogar +2 (= -14 + 8 + 2 + 2 + 4).

\n

Misslungenes Beschwören: Ein Dämon wird auch beschworen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Beschwörers und kann frei handeln. Ein fehlerhaft beschworener Dämon hat nur ein Ziel vor Augen: Augenblicklich seinen Beschwörer zu vernichten, wodurch er wieder auf seine Existenzebene zurückkehren kann (ansonsten müsste er die Zauberdauer abwarten, ein inakzeptabler Zustand).

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU) des Dämonen und +BB" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": true, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 17, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344906, - "modifiedTime": 1740227862591, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yy43TiBbip28QRhs" -} diff --git a/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json b/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json deleted file mode 100644 index f07f65ee..00000000 --- a/packs/spells/Duftnote_A9c19uUSIH4kvvHS.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "A9c19uUSIH4kvvHS", - "name": "Duftnote", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fragrance.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel wird vom Zauberwirker mit einem Duft versehen.

Dieser Geruch kann angenehm oder unangenehm sein und erleichtert bzw. erschwert sämtliche sozialen Proben des Ziels für die Wirkungsdauer um 2.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 2 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344482, - "modifiedTime": 1740227862561, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!A9c19uUSIH4kvvHS" -} diff --git a/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json b/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json deleted file mode 100644 index 342efbc1..00000000 --- a/packs/spells/Durchl_ssig_yHUqMy4NoAtu9Tnh.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "yHUqMy4NoAtu9Tnh", - "name": "Durchlässig", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/icicles-aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker wird mit samt seiner getragenen Ausrüstung durchlässig und kann für VE/2 Kampfrunden durch nichtmagische, unbelebte Objekte schreiten.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -4, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344905, - "modifiedTime": 1740227862591, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yHUqMy4NoAtu9Tnh" -} diff --git a/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json b/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json deleted file mode 100644 index 95170f40..00000000 --- a/packs/spells/Durchsicht_eNefaoD15JrT4ixR.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "eNefaoD15JrT4ixR", - "name": "Durchsicht", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/sunglasses.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann durch nichtmagische, unbelebte Objekte VE/2 Meter weit sehen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 7, - "wizard": 3, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344798, - "modifiedTime": 1740227862582, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eNefaoD15JrT4ixR" -} diff --git a/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json b/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json deleted file mode 100644 index 9bd3b0be..00000000 --- a/packs/spells/Ebenentor_MKlGqhjQa3GZu4gq.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "MKlGqhjQa3GZu4gq", - "name": "Ebenentor", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-portal.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Öffnet ein Tor zu einer anderen Existenzebene, die der Zauberwirker namentlich nennen muss. Das Tor schließt sich, sobald VE/2 Wesen es durchschritten haben, oder die Spruchdauer abgelaufen ist.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -8, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": null, - "wizard": 18, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344563, - "modifiedTime": 1740227862568, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!MKlGqhjQa3GZu4gq" -} diff --git a/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json b/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json deleted file mode 100644 index 211d95d8..00000000 --- a/packs/spells/Einschl_fern_CrZ8L7oaWvPjLou0.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "CrZ8L7oaWvPjLou0", - "name": "Einschläfern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sleepy.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber schläfert eine maximale Anzahl von Zielen gleich der Stufe des Zauberwirkers ein. Es handelt sich dabei um einen natürlichen Schlaf, aus dem man durch Kampflärm u. ä. erwachen kann.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+VE)/2 des jeweiligen Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344499, - "modifiedTime": 1740227862563, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!CrZ8L7oaWvPjLou0" -} diff --git a/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json b/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json deleted file mode 100644 index f0ad18e2..00000000 --- a/packs/spells/Elementar_herbeirufen__Erde__9GBDoyVXPXjWoLix.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "9GBDoyVXPXjWoLix", - "name": "Elementar herbeirufen (Erde)", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber ruft ein Erdelementar von seiner Ebene herbei. Erdelementare (@Compendium[ds4.creatures.1PYYg60DHC6RA3oO]{Erdelementar I}, @Compendium[ds4.creatures.S8DNL5XpmNRSNJhD]{Erdelementar II}, @Compendium[ds4.creatures.mOQ21HFNisTfu7ve]{Erdelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Erdboden/Kiesel/SandI
Felsen/FindlingII
Steinhügel oder größerIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m³ Erde/Gestein+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-Elementarstufe x 5" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": true, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344476, - "modifiedTime": 1740227862561, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9GBDoyVXPXjWoLix" -} diff --git a/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json b/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json deleted file mode 100644 index f38896ea..00000000 --- a/packs/spells/Elementar_herbeirufen__Feuer__8BT2TqPHC0v2OzNe.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "8BT2TqPHC0v2OzNe", - "name": "Elementar herbeirufen (Feuer)", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber ruft ein Feuerelementar von seiner Ebene herbei. Feuerelementare (@Compendium[ds4.creatures.tYcKw69Feoy3B6hG]{Feuerelementar I}, @Compendium[ds4.creatures.huPL6cx3RadJNhL0]{Feuerelementar II}, @Compendium[ds4.creatures.mPcmJ9nHpy1AbKVr]{Feuerelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Kerzenflamme bis FackelI
LagerfeuerII
Brand/LavaIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m² Feuer-/Lavafläche+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-Elementarstufe x 5" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344471, - "modifiedTime": 1740227862559, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8BT2TqPHC0v2OzNe" -} diff --git a/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json b/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json deleted file mode 100644 index 622eafb2..00000000 --- a/packs/spells/Elementar_herbeirufen__Luft__PXIVHRBpLwlzrk3L.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "PXIVHRBpLwlzrk3L", - "name": "Elementar herbeirufen (Luft)", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber ruft ein Luftelementar von seiner Ebene herbei. Luftlementare (@Compendium[ds4.creatures.CIzMY691MK016h4E]{Luftelementar I}, @Compendium[ds4.creatures.wYVw1a5UjPS09YxS]{Luftelementar II}, @Compendium[ds4.creatures.DNbOkqUg7jitTTbw]{Luftelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Leichte Brise/Windiges WetterI
StürmischII
GewittersturmIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m³ Luft+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-Elementarstufe x 5" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": true, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344601, - "modifiedTime": 1740227862570, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PXIVHRBpLwlzrk3L" -} diff --git a/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json b/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json deleted file mode 100644 index 0953430a..00000000 --- a/packs/spells/Elementar_herbeirufen__Wasser__ftDPIhLCVRLRpOix.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ftDPIhLCVRLRpOix", - "name": "Elementar herbeirufen (Wasser)", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/ifrit.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber ruft ein Wasserelementar von seiner Ebene herbei. Wasserelementare (@Compendium[ds4.creatures.ZJF6ieo8O0GXfgwz]{Wasserelementar I}, @Compendium[ds4.creatures.Xn7g2PB1rXvllwRi]{Wasserelementar II}, @Compendium[ds4.creatures.dlrDPQ3is4NkzZJB]{Wasserelementar III}, DS4 S. 110-112) existieren in drei verschiedenen Elementarstufen (I-III), zwischen denen man frei wählen kann. Elementare verachten die niederen Wesen, die es wagen, sie herbeizurufen, können ihnen bei einer erfolgreichen Herbeirufung aber nichts anhaben und kämpfen nur, wenn man sie angreift oder ihr Herbeirufer es befiehlt.

\n

Aufträge: Ein Elementar kann erst auf seine Existenzebene zurückkehren, wenn es für seinen Beschwörer eine Anzahl von Aufträgen gleich dessen hablierter VE ausgeführt hat (Elementare verstehen immer die Sprache ihres Herbeirufers). Dabei kann es sich um das simple Beantworten von Fragen handeln, aber auch komplexere Anweisungen enthalten wie: „Begebe Dich zu dem Dorf dort vorne (Auftrag 1) und entzünde die Strohdächer (Auftrag 2).“ Wird das Elementar vor Ablauf der Zauberdauer entlassen oder hat es alle Aufträge erfüllt, kehrt es augenblicklich zurück auf seine Ebene. Nach jeder Stunde besteht zudem eine Chance von 1–5 auf W20, dass es sich befreit und sofort verschwindet.

\n

Elementarportale: Um ein Elementar zu beschwören, wird immer sein Element in irgendeiner Form benötigt, das als Portal dient, um das Elementar von seiner Ebene zu rufen. So kann man unter Wasser keine Feuer- oder Luftelementare beschwören, wohl aber Wasserlementare. Die Größe des Portals regelt, wieviel Elementarstufen insgesamt herbeigerufen werden können. Dabei ist die Stufe senk- und aufsplittbar: Beispielsweise kann man mit einem Lagerfeuer ein Elementar der Stufe II herbeirufen. Alternativ kann man auch zwei Elementare der Stufe I herbeirufen oder gar nur eins. Die Stufensumme, die am Ende insgesamt herbeigerufen wird (I-III), wird mit 5 multipliziert und ergibt den Malus auf den ZB. Die Größe des Elementarportals gibt wiederum einen Herbeirufungsbonus (HB) auf die Zaubern-Probe.

\n

Misslungenes Herbeirufen: Ein Elementar wird auch herbeigerufen, wenn die Zaubern-Probe misslingt, steht dann jedoch nicht unter der Kontrolle seines Herbeirufers. Ein fehlerhaft herbeigerufenes Elementar hat nur ein Ziel im Sinn: Seinen Herbeirufer zu vernichten, damit es bereits vor Ablauf der Zauberdauer wieder auf seine eigene Heimatebene zurückkehren kann.

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
ElementarportalStufe
Wasser: Pfütze/Regen/WassertonneI
Wasser: Brunnen/Teich/Weiher o.ä.II
Wasser: Fluss/Meer/SeeIII
\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Größe des ElementarportalsHB
Pro m² Wasserfläche+1*
\n

*: Maximal erreichbarer Bonus entspricht VE

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-Elementarstufe x 5" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": true, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344817, - "modifiedTime": 1740227862582, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ftDPIhLCVRLRpOix" -} diff --git a/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json b/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json deleted file mode 100644 index a26dc5d1..00000000 --- a/packs/spells/Erdspalt_4R2OiLe4Ojht69Ea.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "4R2OiLe4Ojht69Ea", - "name": "Erdspalt", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/earth-spit.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Auf festem Boden öffnet der Zauber einen Erdspalt. Der Erdspalt ist bis zu VE in Meter breit und VE/2 in Metern lang und tief. Stehen Wesen an der Stelle, unter der der Erdspalt erscheint, können sie mit AGI+BE augenblicklich versuchen, noch in Sicherheit zu springen (zählt als freie Aktion). Wesen, die sich in der Erdspalte befinden, wenn diese sich wieder schließt, erhalten augenblicklich 2W20 nicht abwehrbaren Schaden und sind – ohne noch richtig atmen zu können – eingeschlossen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -4, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": true, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 10, - "wizard": 10, - "sorcerer": 14 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344451, - "modifiedTime": 1740227862556, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!4R2OiLe4Ojht69Ea" -} diff --git a/packs/spells/Federgleich_eYy2tF4LpHth18t6.json b/packs/spells/Federgleich_eYy2tF4LpHth18t6.json deleted file mode 100644 index d4759ed3..00000000 --- a/packs/spells/Federgleich_eYy2tF4LpHth18t6.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "eYy2tF4LpHth18t6", - "name": "Federgleich", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/two-feathers.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel – samt seiner getragenen Ausrüstung – kann aus einer Höhe gleich dem doppelten Probenergebniss in Metern sanft wie ein Feder ungelenkt zu Boden gleiten (1 m pro Kampfrunde).

\n

Der federgleiche Fall muss spätestens 1 Minute, nachdem der Zauber gewirkt wurde, begonnen werden, sonst verfällt sein Effekt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "1 Min & bis Distanz gefallen", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": 5, - "wizard": 3, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344808, - "modifiedTime": 1740227862582, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eYy2tF4LpHth18t6" -} diff --git a/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json b/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json deleted file mode 100644 index 639326aa..00000000 --- a/packs/spells/Feueratem_AyTRXMB9PBeVsmus.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "AyTRXMB9PBeVsmus", - "name": "Feueratem", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-breath.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Aus dem Mund des Zauberwirkers schießt eine lodernde Säule, die alle hintereinander stehenden Gegner in einer 1 m breiten, geraden Schneise in Flammen hüllt. Der feurige Atem verursacht nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344487, - "modifiedTime": 1740227862562, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!AyTRXMB9PBeVsmus" -} diff --git a/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json b/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json deleted file mode 100644 index 68cf1fa3..00000000 --- a/packs/spells/Feuerball_ifRUXwqnjd1SCcRG.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ifRUXwqnjd1SCcRG", - "name": "Feuerball", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-tail.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker schießt einen flammenden Ball auf seine Gegner, der in einer feurigen Explosion – ihr Radius entspricht der VE des Zauberwirkers in Metern – endet, welche nicht abwehrbaren Schaden in Höhe des Probenergebnisses verursacht.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344864, - "modifiedTime": 1740227862583, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ifRUXwqnjd1SCcRG" -} diff --git a/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json b/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json deleted file mode 100644 index adf103ce..00000000 --- a/packs/spells/Feuerlanze_QuuHhHmliyC5N55q.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "QuuHhHmliyC5N55q", - "name": "Feuerlanze", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.kudkdrpMU0C83vM7]{Feuerstrahl}.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 2, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344608, - "modifiedTime": 1740227862571, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QuuHhHmliyC5N55q" -} diff --git a/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json b/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json deleted file mode 100644 index 47391424..00000000 --- a/packs/spells/Feuerstrahl_kudkdrpMU0C83vM7.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "kudkdrpMU0C83vM7", - "name": "Feuerstrahl", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-ray-small.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker schießt einen Feuerstrahl auf einen Feind, dessen Schaden dem Probenergebnis entspricht.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 1, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344868, - "modifiedTime": 1740227862584, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kudkdrpMU0C83vM7" -} diff --git a/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json b/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json deleted file mode 100644 index 6511f384..00000000 --- a/packs/spells/Feuerwand_7yYxjxuGjTo29r10.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "7yYxjxuGjTo29r10", - "name": "Feuerwand", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/firewall.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker lässt eine Feuerwand erscheinen, die Ausmaße von maximal 1 m x VE m x VE m annehmen kann. Wesen, die an der Stelle stehen, wo die Feuerwand erscheint, oder durch sie hindurch springen, erhalten 2W20 abwehrbaren Schaden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344467, - "modifiedTime": 1740227862559, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7yYxjxuGjTo29r10" -} diff --git a/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json b/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json deleted file mode 100644 index 62b58617..00000000 --- a/packs/spells/Flackern_5RUGIWTftCyeJkDQ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "5RUGIWTftCyeJkDQ", - "name": "Flackern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/duality.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker beginnt zu flackern und ist dadurch schwieriger zu treffen. Seine Abwehr wird für die Dauer des Zaubers um seinen halbierten Wert in GEI erhöht (nur nicht gegen alles einhüllenden Flächenschaden).

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 2, - "wizard": 4, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344456, - "modifiedTime": 1740227862557, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5RUGIWTftCyeJkDQ" -} diff --git a/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json b/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json deleted file mode 100644 index 70ce25b3..00000000 --- a/packs/spells/Flammeninferno_7ybmodIkWDP1z1D6.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "7ybmodIkWDP1z1D6", - "name": "Flammeninferno", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/fire-wave.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine kreisrunde Fläche mit einem Radius von VE in Metern geht in Flammen auf. Jeder in dem Inferno erhält pro Kampfrunde nicht abwehrbaren Schaden in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 5, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 15 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344469, - "modifiedTime": 1740227862559, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7ybmodIkWDP1z1D6" -} diff --git a/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json b/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json deleted file mode 100644 index f97ee591..00000000 --- a/packs/spells/Flammenklinge_gJ3Z8y7i6LWjSMKJ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "gJ3Z8y7i6LWjSMKJ", - "name": "Flammenklinge", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/shard-sword.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann eine Metallklinge in lodernde Flammen hüllen. Dabei handelt es sich um ein magisches Feuer, das keinen Sauerstoff benötigt und dessen Flammenfarbe der Zauberwirker frei bestimmen kann.

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.

\n

Ein Immersieg bei einem Angriff erzeugt eine kleine Explosion, wodurch der erwürfelte Schaden in dieser Kampfrunde um zusätzliche W20 erhöht wird.

\n

Flammenklinge ist nicht mit @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe} kombinierbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": true, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344829, - "modifiedTime": 1740227862582, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gJ3Z8y7i6LWjSMKJ" -} diff --git a/packs/spells/Fliegen_NwLeietvcarS6zP5.json b/packs/spells/Fliegen_NwLeietvcarS6zP5.json deleted file mode 100644 index 1c60547a..00000000 --- a/packs/spells/Fliegen_NwLeietvcarS6zP5.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "NwLeietvcarS6zP5", - "name": "Fliegen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/hand-wing.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel kann fliegen. Die Fortbewegungsgeschwindigkeit ist im Flug doppelt so hoch wie am Boden (zusätzlich kann man sie wie beim „Rennen“ verdoppeln). Ein Charakter mit Laufen 4,5 m fliegt also 9 m in einer Kampfrunde, „rennend“ 18 m.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 5", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 20, - "wizard": 10, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344588, - "modifiedTime": 1740227862569, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NwLeietvcarS6zP5" -} diff --git a/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json b/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json deleted file mode 100644 index 27f821ec..00000000 --- a/packs/spells/Fluch_DjvQzdWEmm8h7G4X.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "DjvQzdWEmm8h7G4X", - "name": "Fluch", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/voodoo-doll.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker benötigt etwas vom Ziel in seinem Besitz, wie beispielsweise ein Haar, ein Kleidungsstück o. ä., das beim Zaubern – ob erfolgreich oder nicht – zerstört wird. Das Ziel wird verflucht und erhält auf alle Proben -2, bis die Zauberdauer verstrichen ist oder der Fluch mittels @Compendium[ds4.spells.tBWEyulMfJFzPuWM]{Magie bannen} schon vorher entfernt wird.

\n

Ein Ziel kann mehrmals verflucht werden. Alle Flüche müssen einzeln gebannt werden, stammen sie nicht vom selben Zauberwirker.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2 des Ziel" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "days" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344510, - "modifiedTime": 1740227862564, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!DjvQzdWEmm8h7G4X" -} diff --git a/packs/spells/Freund_NcK7zXn0IeCfqjkl.json b/packs/spells/Freund_NcK7zXn0IeCfqjkl.json deleted file mode 100644 index 28a05b94..00000000 --- a/packs/spells/Freund_NcK7zXn0IeCfqjkl.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "NcK7zXn0IeCfqjkl", - "name": "Freund", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/lovers.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg hält das Ziel den Zauberwirker (und nur ihn!) für einen sehr guten Freund.

\n

Das Ziel wird ihm alles anvertrauen, was er auch einem sehr guten Freund verraten würde und alles für ihn machen, was er auch für einen guten Freund tun würde.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+VE)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 6, - "wizard": 7, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344584, - "modifiedTime": 1740227862569, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NcK7zXn0IeCfqjkl" -} diff --git a/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json b/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json deleted file mode 100644 index 5a20bb5f..00000000 --- a/packs/spells/Frostschock_iH2NtsJtMfG0ZAU3.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "iH2NtsJtMfG0ZAU3", - "name": "Frostschock", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/frozen-body.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Eisstrahl schießt aus den Händen des Zauberwirkers. Gegen den Schaden dieses frostigen Zauber ist keine Abwehr zulässig.

\n

Zudem wird das Ziel magisch eingefroren, bis VE Kampfrunden verstrichen sind oder es Schaden erhält.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": true, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 16 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344862, - "modifiedTime": 1740227862583, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iH2NtsJtMfG0ZAU3" -} diff --git a/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json b/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json deleted file mode 100644 index 68de2765..00000000 --- a/packs/spells/Frostwaffe_Gc5G9kixOqNbuwp1.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "Gc5G9kixOqNbuwp1", - "name": "Frostwaffe", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sparkling-sabre.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann eine Waffe in eisige Kälte hüllen. Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Ein Immersieg bei einem Angriff friert den Gegner für eine Kampfrunde lang ein, als wirke auf ihn der Zauber @Compendium[ds4.spells.1hhpEYpQQ0oLNptl]{Halt}. Frostwaffe ist nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge} kombinierbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": true, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344526, - "modifiedTime": 1740227862565, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Gc5G9kixOqNbuwp1" -} diff --git a/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json b/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json deleted file mode 100644 index a13f5270..00000000 --- a/packs/spells/Gasgestalt_tZJoj1PGrRGe9eMV.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "tZJoj1PGrRGe9eMV", - "name": "Gasgestalt", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/steam.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel – samt seiner getragenen Ausrüstung – wird gasförmig und kann durch jede noch so kleine Öffnung gleiten. Das Ziel kann jederzeit die Wirkung des Zaubers als freie Aktion beenden. In Gasform wird der Laufen-Wert vervierfacht, der Charakter kann seine Umgebung weiterhin wahrnehmen. In Gastgestalt ist es allerdings nicht möglich, zu zaubern, zu sprechen, anzugreifen oder in andere Wesen einzudringen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": true, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 5", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 18 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344896, - "modifiedTime": 1740227862589, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tZJoj1PGrRGe9eMV" -} diff --git a/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json b/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json deleted file mode 100644 index ddc764a0..00000000 --- a/packs/spells/Geben_und_Nehmen_MpqPWr2l8qV4oQyL.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "MpqPWr2l8qV4oQyL", - "name": "Geben und Nehmen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/heart-inside.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel des Zaubers erhält 50 % des Schadens, den es per Schlagen im Nahkampf verursacht (also abzüglich des Abwehrwurfs des Gegners), in Form von heilender Magie auf die eigene Lebenskraft gutgeschrieben.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344567, - "modifiedTime": 1740227862568, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!MpqPWr2l8qV4oQyL" -} diff --git a/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json b/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json deleted file mode 100644 index 537a1763..00000000 --- a/packs/spells/Gehorche_wZYElRaDmhqgzUvQ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "wZYElRaDmhqgzUvQ", - "name": "Gehorche", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/convince.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg wird das Ziel dem Zauberwirker hörig und führt bedingungslos jeden seiner Befehle aus (außer Selbstmord oder -verstümmelung). Es würde sogar seine eigenen Kameraden angreifen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+VE)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE / 2", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 12, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344901, - "modifiedTime": 1740227862590, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!wZYElRaDmhqgzUvQ" -} diff --git a/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json b/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json deleted file mode 100644 index f8235480..00000000 --- a/packs/spells/Giftbann_ONhSaLNmvvacgCjA.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ONhSaLNmvvacgCjA", - "name": "Giftbann", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/foamy-disc.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Neutralisiert augenblicklich ein nichtmagisches Gift, sofern es noch nicht zu spät ist.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 3, - "wizard": 6, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344594, - "modifiedTime": 1740227862570, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ONhSaLNmvvacgCjA" -} diff --git a/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json b/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json deleted file mode 100644 index c17efbc3..00000000 --- a/packs/spells/Giftschutz_lSIJsq1WJbNTpV9F.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "lSIJsq1WJbNTpV9F", - "name": "Giftschutz", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel erhält einen Bonus auf Abwehr-Proben gegen Gifte in Höhe der Stufe des Zauberwirkers. Der alleinige Bonus (ohne den normalen Abwehr-Wert) wirkt auch gegen Gifte, bei denen normalerweise keine Abwehr erlaubt ist.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 1, - "wizard": 2, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344871, - "modifiedTime": 1740227862585, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lSIJsq1WJbNTpV9F" -} diff --git a/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json b/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json deleted file mode 100644 index d75163f7..00000000 --- a/packs/spells/Gl_hender_Glaube_919AW6tITRT8WikD.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "919AW6tITRT8WikD", - "name": "Glühender Glaube", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/glowing-hands.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Die berührte Waffe – das Ziel des Zaubers – erglüht vor heiliger Kraft. Für die Wirkungsdauer des Zaubers gilt der mit der Waffe verursachte Schaden als magisch und der WB wird um VE/2 erhöht, während die Abwehr getroffener Gegner gegen Angriffe mit dieser Waffe um VE/2 gesenkt wird.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 6, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344475, - "modifiedTime": 1740227862560, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!919AW6tITRT8WikD" -} diff --git a/packs/spells/Halt_1hhpEYpQQ0oLNptl.json b/packs/spells/Halt_1hhpEYpQQ0oLNptl.json deleted file mode 100644 index 92163e90..00000000 --- a/packs/spells/Halt_1hhpEYpQQ0oLNptl.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "1hhpEYpQQ0oLNptl", - "name": "Halt", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/skoll/halt.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg kann sich das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, nicht mehr bewegen.

\n

Die Starre endet vorzeitig, sollte das Ziel Schaden erhalten. Während der Starre ist es dem Ziel möglich, die Augen zu bewegen, zu atmen und klar zu denken. Ein erstarrter Zauberwirker könnte also immer noch seine Zauber wechseln oder gar versuchen, ohne Worte und Gesten (DS4 S. 47) einen Zauber zu wagen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 2, - "wizard": 6, - "sorcerer": 6 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344449, - "modifiedTime": 1740227862556, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1hhpEYpQQ0oLNptl" -} diff --git a/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json b/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json deleted file mode 100644 index 7958892d..00000000 --- a/packs/spells/Heilbeeren_htK3mzAMFbTwYRTR.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "htK3mzAMFbTwYRTR", - "name": "Heilbeeren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/cherry.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Heiler benötigt frische Beeren, kleine Nüsse, schmackhafte Blätter o. ä. für diesen Zauber. Insgesamt wird von ihnen eine Anzahl gleich dem Probenergebnis (bei Druiden x 2) mit einem Heileffekt versehen: Jede Heilbeere heilt augenblicklich 1 LK (pro Aktion können bis zu 10 Heilbeeren verzehrt werden). Die Heilbeeren verlieren nach VE Tagen ihre Wirkung, oder wenn der Heiler den Zauber erneut anwendet.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 1, - "wizard": 10, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344856, - "modifiedTime": 1740227862583, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!htK3mzAMFbTwYRTR" -} diff --git a/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json b/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json deleted file mode 100644 index f58cb2e8..00000000 --- a/packs/spells/Heilende_Aura_pFPofa4TEi69slEy.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "pFPofa4TEi69slEy", - "name": "Heilende Aura", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/beams-aura.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Heiler und alle seine Gefährten in einem Radius von VE in Metern erhalten 1 LK jede Kampfrunde geheilt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "VE", - "unit": "meter" - }, - "duration": { - "value": "Prb x 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344880, - "modifiedTime": 1740227862586, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pFPofa4TEi69slEy" -} diff --git a/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json b/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json deleted file mode 100644 index 9e58d5c9..00000000 --- a/packs/spells/Heilende_Hand_FJE2X2GXFDs9LT7J.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "FJE2X2GXFDs9LT7J", - "name": "Heilende Hand", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/sbed/health-normal.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Durch Hand auflegen wird bei dem Ziel Lebenskraft in Höhe des Probenergebnisses geheilt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 1, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berührung", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "custom" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344515, - "modifiedTime": 1740227862564, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FJE2X2GXFDs9LT7J" -} diff --git a/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json b/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json deleted file mode 100644 index 9144ad00..00000000 --- a/packs/spells/Heilende_Strahlen_4StILfq4zNUWBAgz.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "4StILfq4zNUWBAgz", - "name": "Heilende Strahlen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sinusoidal-beam.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Lichtstrahlen schießen vom Heiler aus und heilen die Wunden von bis zu VE/2 Gefährten, die Lebenskraft in Höhe des Probenergebnisses dazu erhalten. Es wird nur eine Probe für diesen Zielzauber gewürfelt: Einzig der Distanzmalus (DS4 S. 43) des Ziels, das am weitesten entfernt steht, wird als Malus gewertet.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "2r", - "minimumLevels": { - "healer": 12, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344453, - "modifiedTime": 1740227862556, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!4StILfq4zNUWBAgz" -} diff --git a/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json b/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json deleted file mode 100644 index 745c7986..00000000 --- a/packs/spells/Heilendes_Feld_HWjB5kPr3AZbFOFZ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "HWjB5kPr3AZbFOFZ", - "name": "Heilendes Feld", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/chained-heart.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber heilt bei allen Gefährten im Wirkungsradius die Lebenskraft um das Probenergebnis.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "custom" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 18, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344535, - "modifiedTime": 1740227862565, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!HWjB5kPr3AZbFOFZ" -} diff --git a/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json b/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json deleted file mode 100644 index 9a6495fb..00000000 --- a/packs/spells/Heilendes_Licht_9VLNUomSaxPTdfZY.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "9VLNUomSaxPTdfZY", - "name": "Heilendes Licht", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sunbeams.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein vom Heiler ausgehender Lichtstrahl heilt die Lebenskraft des Ziels in Höhe des Probenergebnisses.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "2r", - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344478, - "modifiedTime": 1740227862561, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9VLNUomSaxPTdfZY" -} diff --git a/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json b/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json deleted file mode 100644 index 4a17240a..00000000 --- a/packs/spells/Heiliger_Hammer_QzcgykKQKztABe2a.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "QzcgykKQKztABe2a", - "name": "Heiliger Hammer", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/hammer-drop.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Hammer aus hellem Licht erscheint innerhalb eines Radius von VE in Metern um den Heiler herum.

\n

Innerhalb dieses Wirkungsbereiches kämpft er völlig selbstständig, hört jedoch auf gedankliche Kampfkommandos des Zauberwirkers wie „Halte den Dämon auf“ oder „Helfe dem Paladin“.

\n

Bewegt sich der Charakter, wandert der Wirkungsbereich des Hammers mit ihm mit, so dass die heilige Waffe niemals mehr als VE x 2 in Metern von ihm entfernt sein kann. Der heilige Hammer verschwindet, sobald seine (nicht heilbaren) LK auf Null oder niedriger sinken bzw. die Zauberdauer abgelaufen ist.

\n

Sämtliche Kampfwerte des heiligen Hammers entsprechen der Stufe des Heilers +8. Die einzige Ausnahme bildet der Laufen-Wert, der dem doppelten Laufen-Wert des Heilers entspricht.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 10, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344613, - "modifiedTime": 1740227862571, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QzcgykKQKztABe2a" -} diff --git a/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json b/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json deleted file mode 100644 index 0c75f92f..00000000 --- a/packs/spells/K_rperexplosion_apMuLg0knKnmC2Wv.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "apMuLg0knKnmC2Wv", - "name": "Körperexplosion", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/mine-explosion.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauber versucht das Ziel zur Explosion zu bringen. Der verursachte Schaden entspricht dem vierfachen Probenergebnis, das Ziel würfelt Abwehr ohne Panzerungsboni von Gegenständen.

\n

Der Zauber ist gegen körperlose Wesen – wie beispielsweise @Compendium[ds4.creatures.cE5kI3uqXWQrCaI5]{Geister} – nicht einsetzbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 20 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344714, - "modifiedTime": 1740227862578, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!apMuLg0knKnmC2Wv" -} diff --git a/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json b/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json deleted file mode 100644 index 35d054f0..00000000 --- a/packs/spells/Kettenblitz_gePnhgqnsmdEbj3Z.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "gePnhgqnsmdEbj3Z", - "name": "Kettenblitz", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-lightning.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker schießt einen Blitz auf einen Feind, der auf bis zu VE weitere Gegner in seiner Nähe überspringt. Nur Gegner, die 2 oder mehr Meter von einem ihrer getroffenen Mitstreiter entfernt stehen, kann der Kettenblitz nicht erreichen.

\n

Getroffene Gegner in Metallrüstung dürfen keine Abwehr gegen einen Kettenblitz würfeln.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 3, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": true, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": 16, - "wizard": 10, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344849, - "modifiedTime": 1740227862583, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gePnhgqnsmdEbj3Z" -} diff --git a/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json b/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json deleted file mode 100644 index 3148f2ff..00000000 --- a/packs/spells/Kleiner_Terror_dt2E4g7iwVqTSlMl.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "dt2E4g7iwVqTSlMl", - "name": "Kleiner Terror", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/cathelineau/dread.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der halbierten Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren. Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+VE)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "custom" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 2, - "wizard": 6, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344750, - "modifiedTime": 1740227862580, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dt2E4g7iwVqTSlMl" -} diff --git a/packs/spells/Kontrollieren_9gc1CF70165NXymH.json b/packs/spells/Kontrollieren_9gc1CF70165NXymH.json deleted file mode 100644 index 926f081e..00000000 --- a/packs/spells/Kontrollieren_9gc1CF70165NXymH.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "9gc1CF70165NXymH", - "name": "Kontrollieren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/cathelineau/fomorian.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg bringt der Zauberwirker eine maximale Anzahl untoter Ziele gleich seiner Stufe unter Kontrolle, selbst wenn diese einem anderen Zauberwirker unterstehen.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche durch den Zauber betroffen sind. Alternativ kann auch ein einzelner Untoter als Ziel bestimmt werden.

\n

Kontrollierte Untote unterstehen dem Zauberwirker, führen bedingungslos seine Befehle aus und können nur auf Wunsch des Zauberwirkers wieder ihren Frieden finden, oder wenn dieser stirbt.

\n

Ein Zauberwirker kann nicht mehr Untote gleichzeitig kontrollieren, als seine eigene Stufe beträgt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis erlöst", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344481, - "modifiedTime": 1740227862561, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9gc1CF70165NXymH" -} diff --git a/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json b/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json deleted file mode 100644 index adeedc8d..00000000 --- a/packs/spells/Lauschen_WkZBOsMblhcrPRUF.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "WkZBOsMblhcrPRUF", - "name": "Lauschen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/human-ear.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann sein Hörzentrum an einen bis zu VE x 5 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt) und vernimmt dadurch alles, was dort zu hören ist, als würde er sich dort befinden.

Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück des Belauschten.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-1 pro 10 m Entfernung" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 6, - "wizard": 2, - "sorcerer": 2 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344685, - "modifiedTime": 1740227862576, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!WkZBOsMblhcrPRUF" -} diff --git a/packs/spells/Licht_L4pdDXSYAOgtWIbd.json b/packs/spells/Licht_L4pdDXSYAOgtWIbd.json deleted file mode 100644 index 2e73dc39..00000000 --- a/packs/spells/Licht_L4pdDXSYAOgtWIbd.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "L4pdDXSYAOgtWIbd", - "name": "Licht", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/explosion-rays.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das berührte, leblose Ziel – beipielsweise ein Stab oder eine kleine, abdeckbare Münze – leuchtet fackelhell auf.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 5, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344558, - "modifiedTime": 1740227862567, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!L4pdDXSYAOgtWIbd" -} diff --git a/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json b/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json deleted file mode 100644 index bbdcedfd..00000000 --- a/packs/spells/Lichtlanze_1b32mq9AWEMuoBAs.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "1b32mq9AWEMuoBAs", - "name": "Lichtlanze", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/sun-spear.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.lj8NQ5l4wLWmYcEt]{Lichtpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 5, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "custom" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": 10, - "wizard": 12, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344448, - "modifiedTime": 1740227862555, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1b32mq9AWEMuoBAs" -} diff --git a/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json b/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json deleted file mode 100644 index 95e3d9b3..00000000 --- a/packs/spells/Lichtpfeil_lj8NQ5l4wLWmYcEt.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "lj8NQ5l4wLWmYcEt", - "name": "Lichtpfeil", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/middle-arrow.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Gegen den Schaden dieses Zielzaubers erhalten @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} einen Malus von 2 auf ihre Abwehr.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 2, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": 2, - "wizard": 5, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344872, - "modifiedTime": 1740227862585, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lj8NQ5l4wLWmYcEt" -} diff --git a/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json b/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json deleted file mode 100644 index 57e14134..00000000 --- a/packs/spells/Lichts_ule_6bptWPrq5gkX2UaT.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "6bptWPrq5gkX2UaT", - "name": "Lichtsäule", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/laser-precision.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.6bptWPrq5gkX2UaT]{Lichtsäule}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit (Settingoption)} ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} können diesen Zauber nicht anwenden.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} addieren ihren Talentrang auf den PW der Zielzaubern-Probe der Lichtsäule.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 8, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": 16, - "wizard": 19, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344460, - "modifiedTime": 1740227862558, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!6bptWPrq5gkX2UaT" -} diff --git a/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json b/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json deleted file mode 100644 index 3a1e61be..00000000 --- a/packs/spells/Magie_bannen_tBWEyulMfJFzPuWM.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "tBWEyulMfJFzPuWM", - "name": "Magie bannen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/magic-swirl.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker bannt permanent einen Zauberspruch oder magischen Effekt. Die Probe wird durch die Stufe des Wesens, welches den Zauber wirkte, gemindert.

\n

Versucht man den Zauberspruch gegen ein magisches Wesen (worunter auch Zauberwirker fallen) anzuwenden, gilt dessen halbierte LK als Malus auf die Probe. Bei einem Erfolg wird das Ziel aber nicht automatisch gebannt, sondern erhält nicht abwehrbaren Schaden in Höhe des doppelten Probenergebnisses. Stirbt das Ziel, verschwindet es spurlos samt seiner getragenen Ausrüstung.

\n

Sollte der bannende Charakter die Probe jedoch nicht schaffen, kann er selbst zum Ziel des Zaubers werden: Der Zauberwirker würfelt augenblicklich und aktionsfrei erneut den Zauber – allerdings ist er diesmal selbst das Ziel. Alle angewendeten, verstärkenden Zaubereffekte (beispielsweise durch Talente), gelten auch bei diesem zweiten Wurf.

\n

Die gleiche Prozedur kommt zur Anwendung, wenn der Zauberwirker versucht, den magischen Effekt eines Gegenstandes zu bannen. Der ZB-Malus bei Gegenständen entspricht dabei der Stufesumme all derjenigen, die diesen Gegenstand erschufen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "- Wirkerstufe bzw. -LK / 2" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 12, - "wizard": 7, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344893, - "modifiedTime": 1740227862589, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tBWEyulMfJFzPuWM" -} diff --git a/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json b/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json deleted file mode 100644 index 8f8d8e53..00000000 --- a/packs/spells/Magie_entdecken_d1PUhzL8wuBe3mTl.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "d1PUhzL8wuBe3mTl", - "name": "Magie entdecken", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Scheitert ein Zauberwirker, die Magie einer Örtlichkeit, eines Objektes oder eines Wesen zu erspüren (DS4 S. 47), kann er sämtliche Magie im Wirkungsbreich – nur für ihn sichtbar – mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, sofern sie nicht verborgen ist (unter einem Umhang, in einer Truhe usw.).

\n

Betrachtet man Zauberwirker, leuchten diese ebenfalls kurz auf, je heller, desto mächtiger ist die Magie in ihnen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344738, - "modifiedTime": 1740227862579, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!d1PUhzL8wuBe3mTl" -} diff --git a/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json b/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json deleted file mode 100644 index 555741ba..00000000 --- a/packs/spells/Magie_identifizieren_pUhIT77TSIDrv9Pi.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "pUhIT77TSIDrv9Pi", - "name": "Magie identifizieren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-axe.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Offenbart dem Zauberwirker die Quelle und/oder Funktion der Magie eines Objektes oder einer Örtlichkeit.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": 5, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344882, - "modifiedTime": 1740227862587, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pUhIT77TSIDrv9Pi" -} diff --git a/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json b/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json deleted file mode 100644 index 8b7e8bbc..00000000 --- a/packs/spells/Magische_Barriere_KhmJCaFuP7Tgdw7q.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "KhmJCaFuP7Tgdw7q", - "name": "Magische Barriere", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/stone-wall.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker erschafft ein unbewegliches, würfelförmiges Kraftfeld mit einer Größe von maximal VE/2 m³, welches sämtliche Magie- und Zaubersprucheffekte nach innen und außen hin komplett abblockt. Weder @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerbälle}, noch @Compendium[ds4.spells.WkZBOsMblhcrPRUF]{Lauschen}- oder @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport}-Zauber können diese magische Barriere durchbrechen.

\n

Die magische Barriere verschwindet, sofern der Zauerwirker sie nicht – nach Ablauf der Spruchdauer – durch ununterbrochene Konzentration (zählt als ganze Aktion) aufrecht erhält.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE min oder Konzentration", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 14, - "wizard": 10, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344555, - "modifiedTime": 1740227862567, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KhmJCaFuP7Tgdw7q" -} diff --git a/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json b/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json deleted file mode 100644 index 2761314d..00000000 --- a/packs/spells/Magische_R_stung_ZdlsX5F803JJEat6.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ZdlsX5F803JJEat6", - "name": "Magische Rüstung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/willdabeast/chain-mail.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Die Lebenskraft des Charakters erhöht sich um das Wurfergebnis. Erhält der Zauberwirker Schaden, kostet ihn das zuerst immer die (nicht heilbare) Lebenskraft der magischen Rüstung, bevor es an die eigene Lebenskraft geht. Die LK der magischen Rüstung bleiben erhalten, bis sie durch Schaden verloren sind, oder wenn der Charakter den Zauber abermals anwendet.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344699, - "modifiedTime": 1740227862577, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZdlsX5F803JJEat6" -} diff --git a/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json b/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json deleted file mode 100644 index 83260ca4..00000000 --- a/packs/spells/Magische_Waffe_ASvdS1fyjmRS1Xb6.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ASvdS1fyjmRS1Xb6", - "name": "Magische Waffe", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/pointy-sword.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber verleiht einer Waffe magische Kräfte. Ihr WB erhöht sich für die Dauer des Zaubers um +1 und der mit ihr verursachte Schaden gilt als magisch, verletzt beispielsweise also auch körperlose Wesen wie Geister.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": 1, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344485, - "modifiedTime": 1740227862562, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ASvdS1fyjmRS1Xb6" -} diff --git a/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json b/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json deleted file mode 100644 index 27398e13..00000000 --- a/packs/spells/Magisches_Schloss_dzYAc9ti7ghhkyiX.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "dzYAc9ti7ghhkyiX", - "name": "Magisches Schloss", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/padlock.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber verschließt auf magische Weise eine Klappe, Truhe, Tür oder ähnliche Öffnung.

\n

Das Probenergebnis stellt die Erschwernis dar, um dieses Schloss zu öffnen (ob nun mit einem Dietrich, roher Gewalt oder Magie), nur der Zauberwirker selbst kann es ohne Probleme öffnen.

\n

Der Zauber kann auch auf ein mechanisches Schloss gesprochen werden, um dessen Schlosswert (SW) zu verstärken.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Bis Schloss geöffnet", - "unit": "custom" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": 3, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344760, - "modifiedTime": 1740227862581, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dzYAc9ti7ghhkyiX" -} diff --git a/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json b/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json deleted file mode 100644 index 30c94342..00000000 --- a/packs/spells/Manabrot_JvK5b8DXdHgaByjP.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "JvK5b8DXdHgaByjP", - "name": "Manabrot", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/sliced-bread.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus warmes, aber geschmackloses Manabrot.

\n

Maximal kann der Zauberwirker eine Anzahl von Manabrot gleich seiner halbierten Stufe erschaffen. Jeder der blau-violetten, teigähnlichen Klumpen, entspricht einer ganzen Mahlzeit (von denen ein Erwachsener 3 pro Tag benötigt) für eine Person.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344550, - "modifiedTime": 1740227862566, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JvK5b8DXdHgaByjP" -} diff --git a/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json b/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json deleted file mode 100644 index c789d594..00000000 --- a/packs/spells/Nahrung_zaubern_l8o3vG0kW9qvFmBY.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "l8o3vG0kW9qvFmBY", - "name": "Nahrung zaubern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/potato.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker bündelt die magische Energien um sich herum und erschafft daraus die Grundzutat einer einfachen Mahlzeit, wie etwa Linsen, Reis oder Rüben.

Maximal kann der Zauberwirker genügend Zutaten für eine Anzahl von Mahlzeiten (von denen ein Erwachsener 3 pro Tag benötigt) gleich seiner Stufe erschaffen

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 2, - "wizard": 7, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344869, - "modifiedTime": 1740227862584, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!l8o3vG0kW9qvFmBY" -} diff --git a/packs/spells/Netz_73bT47FtQgPp9Snq.json b/packs/spells/Netz_73bT47FtQgPp9Snq.json deleted file mode 100644 index 4af51994..00000000 --- a/packs/spells/Netz_73bT47FtQgPp9Snq.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "73bT47FtQgPp9Snq", - "name": "Netz", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/spider-web.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Netz aus klebriger Astralmasse mit einem Radius von VE/2 in Metern erscheint.

\n

Vom Netz getroffene Wesen, welche keine Abwehr dagegen würfeln dürfen, halbieren für die Dauer des Zaubers Initiative, Laufen und Schlagen.

\n

Der Zauber wirkt nicht gegen Wesen, die 2+ Größenkategorien (DS4 S. 104) größer sind.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+ST)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 4, - "wizard": 9, - "sorcerer": 9 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344461, - "modifiedTime": 1740227862558, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!73bT47FtQgPp9Snq" -} diff --git a/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json b/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json deleted file mode 100644 index 15cedc91..00000000 --- a/packs/spells/Niesanfall_c9confMPTK2Q7AfX.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "c9confMPTK2Q7AfX", - "name": "Niesanfall", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/energy-breath.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg kann das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, sich vor lauter Niesen nur (mit halbiertem Laufen-Wert) bewegen, bis der Spruchwirker wieder an der Reihe ist.

\n

Der Niesanfall endet vorzeitig, sollte das Ziel Schaden erhalten.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "1", - "unit": "rounds" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": 1, - "wizard": 3, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344729, - "modifiedTime": 1740227862578, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!c9confMPTK2Q7AfX" -} diff --git a/packs/spells/Putzteufel_gLzyooEA8RBya37o.json b/packs/spells/Putzteufel_gLzyooEA8RBya37o.json deleted file mode 100644 index 5365f60a..00000000 --- a/packs/spells/Putzteufel_gLzyooEA8RBya37o.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "gLzyooEA8RBya37o", - "name": "Putzteufel", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-broom.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker erschafft einen kleinen, magischen Diener, der für ihn unglaublich flink putzt, aufräumt und packt.

\n

Ansonsten ist der Putzteufel völlig unütz, befolgt keine andersartigen Befehle und verpufft bei Schaden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "bis zu VE / 2", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344835, - "modifiedTime": 1740227862582, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gLzyooEA8RBya37o" -} diff --git a/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json b/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json deleted file mode 100644 index b655da2c..00000000 --- a/packs/spells/Reinigen_ZXBYdYAtcs3FoTAx.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ZXBYdYAtcs3FoTAx", - "name": "Reinigen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/shower.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber reinigt eine ungewaschene Person, einen Gegenstand (wie einen schlammbesudelten Umhang) oder auch eine Mahlzeit (von Bakterien, Fäulnis und Gift).

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": 3, - "wizard": 7, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344695, - "modifiedTime": 1740227862577, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZXBYdYAtcs3FoTAx" -} diff --git a/packs/spells/Rost_eMeuOnBODch7D9dm.json b/packs/spells/Rost_eMeuOnBODch7D9dm.json deleted file mode 100644 index 86be76a4..00000000 --- a/packs/spells/Rost_eMeuOnBODch7D9dm.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "eMeuOnBODch7D9dm", - "name": "Rost", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/rusty-sword.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber lässt bei Erfolg eine nichtmagische Waffe oder ein nichtmagisches Rüstungsteil aus Metall augenblicklich zu rostigem Staub zerfallen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-WB der Waffe bzw. -PA der Rüstung" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 5, - "wizard": 7, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344764, - "modifiedTime": 1740227862581, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eMeuOnBODch7D9dm" -} diff --git a/packs/spells/Schatten_5mF59XCsZffF0cSp.json b/packs/spells/Schatten_5mF59XCsZffF0cSp.json deleted file mode 100644 index 560184a0..00000000 --- a/packs/spells/Schatten_5mF59XCsZffF0cSp.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "5mF59XCsZffF0cSp", - "name": "Schatten", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/shadow-follower.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dunkle Schatten umhüllen das Ziel (welches keine Abwehr dagegen würfeln darf), wodurch es -8 auf alle Handlungen hat, bei denen es besser sehen können sollte. Augenlosen Untoten, wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten}, aber auch blinden Lebewesen, kann der Zauber nichts anhaben.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "rounds" - }, - "cooldownDuration": "5r", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344458, - "modifiedTime": 1740227862557, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5mF59XCsZffF0cSp" -} diff --git a/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json b/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json deleted file mode 100644 index 24eadfca..00000000 --- a/packs/spells/Schatten_erwecken_dPGm1Ji2U0fJxnT3.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "dPGm1Ji2U0fJxnT3", - "name": "Schatten erwecken", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/two-shadows.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Schwarzmagier kann die Seelen von einer maximalen Anzahl von Toten im Wirkungsradius gleich seiner eigenen Stufe verderben und in Form tödlicher @Compendium[ds4.creatures.T9YRYe0vnR4Qg4UM]{Schatten} (DS4 S. 121) zu gequältem Unleben erwecken. Die Schatten benötigen drei Kampfrunden, um sich zu bilden, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344742, - "modifiedTime": 1740227862579, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dPGm1Ji2U0fJxnT3" -} diff --git a/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json b/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json deleted file mode 100644 index 1fafd734..00000000 --- a/packs/spells/Schattenklinge_RUfE7hqqHCKMEMbh.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "RUfE7hqqHCKMEMbh", - "name": "Schattenklinge", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/blade-fall.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Die verzauberte Klinge verströmt rauchartige Schatten voll dunkler Magie. Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} die Waffe benutzt:

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch. Jedesmal, wenn mit der Waffe Schaden verursacht wird, sinkt die Abwehr des Ziels um 1. Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist.

\n

Schattenklinge ist nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge}, @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe}, @Compendium[ds4.spells.919AW6tITRT8WikD]{Glühender Glaube} oder @Compendium[ds4.spells.cggG4v6EBPmEZuAQ]{Waffe des Lichts} kombinierbar.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344617, - "modifiedTime": 1740227862572, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RUfE7hqqHCKMEMbh" -} diff --git a/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json b/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json deleted file mode 100644 index 32511554..00000000 --- a/packs/spells/Schattenlanze_b5RFJWPaYbpXNpsv.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "b5RFJWPaYbpXNpsv", - "name": "Schattenlanze", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/spear-hook.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.tPFiElqQuvih76gd]{Schattenpfeil}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 5, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344719, - "modifiedTime": 1740227862578, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!b5RFJWPaYbpXNpsv" -} diff --git a/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json b/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json deleted file mode 100644 index 267985d8..00000000 --- a/packs/spells/Schattenpfeil_tPFiElqQuvih76gd.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "tPFiElqQuvih76gd", - "name": "Schattenpfeil", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/energy-arrow.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Gegen den Schaden dieses Zielzaubers erhalten @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} einen Malus von 2 auf ihre Abwehr.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 2, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 2 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344895, - "modifiedTime": 1740227862589, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tPFiElqQuvih76gd" -} diff --git a/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json b/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json deleted file mode 100644 index 585fe8a0..00000000 --- a/packs/spells/Schattens_ule_mg3rChUVQrZ09gCW.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "mg3rChUVQrZ09gCW", - "name": "Schattensäule", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/bubbling-beam.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dies ist eine mächtigere Variante des Zaubers @Compendium[ds4.spells.b5RFJWPaYbpXNpsv]{Schattenlanze}, gegen dessen Schaden @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts (Settingoption)} ebenfalls einen Malus von 2 auf ihre Abwehr erhalten.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können diesen Zauber nicht anwenden.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} addieren ihren Talentrang auf den PW der Zielzaubern-Probe Schattensäule.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 8, - "complex": "" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 10", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1r", - "minimumLevels": { - "healer": null, - "wizard": 20, - "sorcerer": 15 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344876, - "modifiedTime": 1740227862586, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!mg3rChUVQrZ09gCW" -} diff --git a/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json b/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json deleted file mode 100644 index 5654d63a..00000000 --- a/packs/spells/Schleudern_bKCGwIne0uoWZiY0.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "bKCGwIne0uoWZiY0", - "name": "Schleudern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/heavenly-dog/catapult.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauberspruch, gegen den das Ziel keine Abwehr würfeln kann, schleudert das Ziel (Probenergebnis/3) Meter weit fort.

\n

Das Ziel erhält für die Distanz, die es geschleudert wird (auch wenn eine Wand den Flug bremst) Sturzschaden (DS4 S. 85), gegen den es ganz normal Abwehr würfelt.

\n

Nach dem Fortschleudern liegt das Ziel immer am Boden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE / 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 16, - "wizard": 12, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344726, - "modifiedTime": 1740227862578, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!bKCGwIne0uoWZiY0" -} diff --git a/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json b/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json deleted file mode 100644 index 646ba6d7..00000000 --- a/packs/spells/Schutzfeld_NWPoiZHCmZ7ZJud4.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "NWPoiZHCmZ7ZJud4", - "name": "Schutzfeld", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/omega.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein Schutzfeld mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, an dem nichtmagische Geschosse von außen her wirkungslos abprallen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344578, - "modifiedTime": 1740227862569, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NWPoiZHCmZ7ZJud4" -} diff --git a/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json b/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json deleted file mode 100644 index f07bbc57..00000000 --- a/packs/spells/Schutzkuppel_TKx3LO5ZWQuKpK04.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "TKx3LO5ZWQuKpK04", - "name": "Schutzkuppel", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/shiny-omega.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine Schutzkuppel mit einem Radius von VE in Metern erscheint um den Zauberwirker herum, solange er sich konzentriert (zählt als ganze Aktion).

\n

Die unbewegliche Kuppel ist von beiden Seiten unpassierbar – weder Angriffe, Personen noch Zauber wie @Compendium[ds4.spells.ANV77WNlbZFRMssv]{Teleport} gelangen hindurch.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": 8, - "wizard": 12, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344643, - "modifiedTime": 1740227862574, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TKx3LO5ZWQuKpK04" -} diff --git a/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json b/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json deleted file mode 100644 index d2af2909..00000000 --- a/packs/spells/Schutzschild_dehnen_s31yIj9viKMLyaen.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "s31yIj9viKMLyaen", - "name": "Schutzschild dehnen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Verdoppelt die erwürfelte Dauer eines @Compendium[ds4.spells.dpz383XbGFXEsGot]{Schutzschild}-Zaubers, der bereits auf das Ziel wirkt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344888, - "modifiedTime": 1740227862588, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!s31yIj9viKMLyaen" -} diff --git a/packs/spells/Schutzschild_dpz383XbGFXEsGot.json b/packs/spells/Schutzschild_dpz383XbGFXEsGot.json deleted file mode 100644 index f015ab16..00000000 --- a/packs/spells/Schutzschild_dpz383XbGFXEsGot.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "dpz383XbGFXEsGot", - "name": "Schutzschild", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/bell-shield.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis die Dauer des Zaubers abgelaufen ist.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 4, - "wizard": 8, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344746, - "modifiedTime": 1740227862580, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dpz383XbGFXEsGot" -} diff --git a/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json b/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json deleted file mode 100644 index b80d24b8..00000000 --- a/packs/spells/Schutzschild_st_rken_0O56S0JDXi2y71Pu.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "0O56S0JDXi2y71Pu", - "name": "Schutzschild stärken", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/diamond-hard.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Verdoppelt den Bonus auf die Abwehr eines @Compendium[ds4.spells.dpz383XbGFXEsGot]{Schutzschild}-Zaubers, der bereits auf das Ziel wirkt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 4, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344446, - "modifiedTime": 1740227862555, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0O56S0JDXi2y71Pu" -} diff --git a/packs/spells/Schweben_SPnYNGggFb8XRICE.json b/packs/spells/Schweben_SPnYNGggFb8XRICE.json deleted file mode 100644 index 1843856f..00000000 --- a/packs/spells/Schweben_SPnYNGggFb8XRICE.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "SPnYNGggFb8XRICE", - "name": "Schweben", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/angel-wings.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel kann statt zu laufen auch lotrecht hoch und runter schweben.

Der Laufen-Wert beim Schweben ist dabei genau so hoch, wie am Boden (man kann im Schweben nicht rennen).

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "custom" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": 7, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344620, - "modifiedTime": 1740227862572, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!SPnYNGggFb8XRICE" -} diff --git a/packs/spells/Schweig_rojd8AL3iXmGfc5m.json b/packs/spells/Schweig_rojd8AL3iXmGfc5m.json deleted file mode 100644 index c973b3b9..00000000 --- a/packs/spells/Schweig_rojd8AL3iXmGfc5m.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "rojd8AL3iXmGfc5m", - "name": "Schweig", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/silenced.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, verstummt für die Dauer des Zauberspruchs. Verstummte Zauberwirker können solange nur wortlos zaubern (DS4 S. 47).

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE/2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 12, - "wizard": 10, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344886, - "modifiedTime": 1740227862588, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rojd8AL3iXmGfc5m" -} diff --git a/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json b/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json deleted file mode 100644 index 2fcb65dc..00000000 --- a/packs/spells/Segen_ZF5cwMCnw4Uf1MCz.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ZF5cwMCnw4Uf1MCz", - "name": "Segen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-hand-grenade.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker und bis zu VE x 2 Kameraden in VE x 2 Meter Umkreis werden gesegnet.

\n

Für die Dauer des Zauberspruchs erhalten sie auf alle Proben einen PW-Bonus von +1.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 2, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344690, - "modifiedTime": 1740227862576, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZF5cwMCnw4Uf1MCz" -} diff --git a/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json b/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json deleted file mode 100644 index 86c87c54..00000000 --- a/packs/spells/Skelette_erwecken_bGs9MiTMj6k4d1Nl.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "bGs9MiTMj6k4d1Nl", - "name": "Skelette erwecken", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/skoll/raise-skeleton.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Schwarzmagier kann eine maximale Anzahl von @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skeletten} (DS4 S. 122) im Wirkungsradius gleich seiner eigenen Stufe zu untotem Leben erwecken. Die Skelette benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 6 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344722, - "modifiedTime": 1740227862578, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!bGs9MiTMj6k4d1Nl" -} diff --git a/packs/spells/Spionage_xR5aBGFz3916e82x.json b/packs/spells/Spionage_xR5aBGFz3916e82x.json deleted file mode 100644 index 05150494..00000000 --- a/packs/spells/Spionage_xR5aBGFz3916e82x.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "xR5aBGFz3916e82x", - "name": "Spionage", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/spy.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker begibt sich in einen tranceähnlichen Zustand, in dem seine optischen und akustischen Sinne sich von seinem Körper lösen können.

\n

Sein unsichtbarer, hörender Blick bewegt sich mit einer konstanten Geschwindigkeit von VE Meter pro Kampfrunde und kann durch die kleinsten Öffnungen dringen. Der Zauberwirker sieht und hört dabei alles, als wäre er selbst vor Ort.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 8, - "wizard": 6, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344903, - "modifiedTime": 1740227862591, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!xR5aBGFz3916e82x" -} diff --git a/packs/spells/Springen_L6NrH3AEmS2I3NWG.json b/packs/spells/Springen_L6NrH3AEmS2I3NWG.json deleted file mode 100644 index 06b0e5bc..00000000 --- a/packs/spells/Springen_L6NrH3AEmS2I3NWG.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "L6NrH3AEmS2I3NWG", - "name": "Springen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker springt augenblicklich bis zu Probenergebnis/2 Meter weit und landet dabei wieder sicher auf seinen Beinen. Alternativ kann man auch hoch oder runter springen, beispielsweise um einen Balkon zu erreichen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 5, - "wizard": 2, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344560, - "modifiedTime": 1740227862568, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!L6NrH3AEmS2I3NWG" -} diff --git a/packs/spells/Spurt_KUbT1gBeThcLY7vU.json b/packs/spells/Spurt_KUbT1gBeThcLY7vU.json deleted file mode 100644 index f4e72bf9..00000000 --- a/packs/spells/Spurt_KUbT1gBeThcLY7vU.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "KUbT1gBeThcLY7vU", - "name": "Spurt", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/run.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Laufen-Wert des Ziels wird für die Dauer des Zaubers verdoppelt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 7, - "wizard": 7, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344553, - "modifiedTime": 1740227862567, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KUbT1gBeThcLY7vU" -} diff --git a/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json b/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json deleted file mode 100644 index 59e9d8f2..00000000 --- a/packs/spells/Steinwand_NRfYtF7tFoNMe1cR.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "NRfYtF7tFoNMe1cR", - "name": "Steinwand", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/brick-wall.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker erschafft eine Steinwand, die Ausmaße von bis zu 1 m x VE m x VE m annehmen kann und nicht wieder verschwindet.

\n

Die Steinwand muss auf festen Boden stehen und kann nicht an einem Ort erscheinen, wo sich bereits etwas befindet.

\n

Die Steinwand hat eine Abwehr gleich der dreifachen Stufe des Zauberwirkers, für den Fall, dass jemand sie mit Gewalt durchdringen will. Jeder einzelne Kubikmeter der Steinwand verfügt über LK in Höhe der Stufe des Zauberwirkers.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": true, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 14 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344573, - "modifiedTime": 1740227862569, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NRfYtF7tFoNMe1cR" -} diff --git a/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json b/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json deleted file mode 100644 index 747915c7..00000000 --- a/packs/spells/Sto_gebet_DPFRVvfvmhCfcm7E.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "DPFRVvfvmhCfcm7E", - "name": "Stoßgebet", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/kneeling.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine Druckwelle heiliger Macht schießt aus dem Heiler und bringt Gegner in einem Radius gleich seiner doppelten Stufe in Metern zu Fall.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 5, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344507, - "modifiedTime": 1740227862563, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!DPFRVvfvmhCfcm7E" -} diff --git a/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json b/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json deleted file mode 100644 index 4b30b53f..00000000 --- a/packs/spells/Stolpern_KIyVOdiXZnXJIAh6.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "KIyVOdiXZnXJIAh6", - "name": "Stolpern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/tripwire.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, stürzt augenblicklich zu Boden.

Misslingt ihm außerdem eine Probe auf AGI+GE, lässt er alles Gehaltene fallen.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(AGI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344552, - "modifiedTime": 1740227862567, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KIyVOdiXZnXJIAh6" -} diff --git a/packs/spells/Tanz_lQJvJQFzSxfriOlc.json b/packs/spells/Tanz_lQJvJQFzSxfriOlc.json deleted file mode 100644 index 0ee9e8ac..00000000 --- a/packs/spells/Tanz_lQJvJQFzSxfriOlc.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "lQJvJQFzSxfriOlc", - "name": "Tanz", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/ballerina-shoes.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel, welches keine Abwehr gegen den Zauber würfeln darf, kann für die Dauer des Zauberspruchs nur tanzen (und dabei höchstens 1 m pro Kampfrunde laufen).

Das groteske Schauspiel endet vorzeitig, sollte das Ziel Schaden erhalten.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE / 2", - "unit": "minutes" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 8, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344870, - "modifiedTime": 1740227862584, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lQJvJQFzSxfriOlc" -} diff --git a/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json b/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json deleted file mode 100644 index 00c9ec01..00000000 --- a/packs/spells/Tarnender_Nebel_BdBUObZr9RahUqxA.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "BdBUObZr9RahUqxA", - "name": "Tarnender Nebel", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/fog.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine Nebelwolke mit einem Radius von maximal VE in Metern entsteht.

Angriffe gegen Ziele in der Nebelwolke werden um 8 erschwert, gleichsam erhalten alle innerhalb des Nebels -8 auf alle Proben, bei denen man besser sehen können sollte. Eine Nebelwolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": true, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 4, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344494, - "modifiedTime": 1740227862563, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!BdBUObZr9RahUqxA" -} diff --git a/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json b/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json deleted file mode 100644 index 068385bd..00000000 --- a/packs/spells/Telekinese_VGeMfTNSKWzNGm6r.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "VGeMfTNSKWzNGm6r", - "name": "Telekinese", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/sbed/weight-crush.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mit diesem Zauber lässt der Zauberwirker einen unbelebten Gegenstand mit einer Geschwindigkeit von 1 m pro Kampfrunde schweben, solange er sich ununterbrochen konzentriert (zählt als ganze Aktion).

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-1 pro (Stufe x 5) kg Gewicht" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344670, - "modifiedTime": 1740227862575, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VGeMfTNSKWzNGm6r" -} diff --git a/packs/spells/Teleport_ANV77WNlbZFRMssv.json b/packs/spells/Teleport_ANV77WNlbZFRMssv.json deleted file mode 100644 index cf4e5a1e..00000000 --- a/packs/spells/Teleport_ANV77WNlbZFRMssv.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ANV77WNlbZFRMssv", - "name": "Teleport", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/teleport.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber teleportiert den Zauberwirker und bis zu VE Begleiter an einen ihm bekannten Ort. War der Zauberwirker nur einmal dort und kennt ihn nur flüchtig, wird der PW der Zaubern-Probe halbiert. Bei einem Teleport-Patzer erscheinen die Charaktere in einem Objekt (zu tief im Boden, ein naher Baum) und erhalten W20 nicht abwehrbaren Schaden (2W20, wenn der Ort nur flüchtig bekannt ist).

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-1 pro Begleiter" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 20, - "wizard": 10, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344484, - "modifiedTime": 1740227862562, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ANV77WNlbZFRMssv" -} diff --git a/packs/spells/Terror_SgDFje4OTxqPEzoA.json b/packs/spells/Terror_SgDFje4OTxqPEzoA.json deleted file mode 100644 index 747c421e..00000000 --- a/packs/spells/Terror_SgDFje4OTxqPEzoA.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "SgDFje4OTxqPEzoA", - "name": "Terror", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/terror.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg fliehen betroffene Ziele – maximal eine Anzahl gleich der Stufe des Zauberwirkers – so schnell wie möglich in panischer Angst und können erst nach Ablauf der Zauberdauer wieder umkehren.

Der Effekt endet bei jedem Fliehenden, der Schaden erleidet.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+VE)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 5, - "wizard": 9, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344636, - "modifiedTime": 1740227862573, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!SgDFje4OTxqPEzoA" -} diff --git a/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json b/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json deleted file mode 100644 index 6db20c31..00000000 --- a/packs/spells/Tierbeherschung_TVsayZ3WkUxyzKbL.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "TVsayZ3WkUxyzKbL", - "name": "Tierbeherschung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/charging-bull.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Erfolg wird das Tier zu einem willenlosen Sklaven des Zauberwirkers. Es befolgt alle seine einsilbigen Befehle, auch wenn diese den eigenen Tod bedeuten können.

Ein Zauberwirker kann niemals mehr als VE Tiere gleichzeitig durch diesen Zauber beherrschen.

Endet der Zauber, nimmt das Tier wieder sein ursprüngliches Verhalten an.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-LK / 2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 9, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344646, - "modifiedTime": 1740227862574, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TVsayZ3WkUxyzKbL" -} diff --git a/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json b/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json deleted file mode 100644 index 38970d36..00000000 --- a/packs/spells/Tiere_bes_nftigen_GpdYH1BAO4tIf6Fj.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "GpdYH1BAO4tIf6Fj", - "name": "Tiere besänftigen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/paw-heart.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Aggressive Tiere im Wirkungsradius können mit diesem Zauber besänftigt werden. Magische Wesen (wie beispielsweise @Compendium[ds4.creatures.SQv63FQBjA5jW5xv]{Einhörner} oder @Compendium[ds4.creatures.O2maANGDJHPLX8aE]{Unwölfe}) sind gegen den Zauber immun, ebenso Tiere, die unter einem Kontrollzauber wie @Compendium[ds4.spells.TVsayZ3WkUxyzKbL]{Tierbeherschung} o.ä. stehen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-LK / 5 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 1, - "wizard": 7, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344530, - "modifiedTime": 1740227862565, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GpdYH1BAO4tIf6Fj" -} diff --git a/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json b/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json deleted file mode 100644 index cabe7bb4..00000000 --- a/packs/spells/Totengespr_ch_sKCHnXV6c4w1CJWf.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "sKCHnXV6c4w1CJWf", - "name": "Totengespräch", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/half-dead.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann den Geist eines Toten befragen, dieser muss ihm antworten, allerdings nicht automatisch wahrheitsgemäß.

\n

Maximal wirkt der Zauber VE Minuten oder bis dem Geist VE Fragen gestellt wurden, die dieser nur mit „Ja“ oder „Nein“ beantwortet. Der Geist versteht die Sprache des Zauberwirkers und antwortet in dieser.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE Fragen, bzw. VE Minuten", - "unit": "custom" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 9 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344891, - "modifiedTime": 1740227862588, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sKCHnXV6c4w1CJWf" -} diff --git a/packs/spells/Trugbild_eMilydZd4gqDUsff.json b/packs/spells/Trugbild_eMilydZd4gqDUsff.json deleted file mode 100644 index 96445252..00000000 --- a/packs/spells/Trugbild_eMilydZd4gqDUsff.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "eMilydZd4gqDUsff", - "name": "Trugbild", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/mirror-mirror.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber erschafft eine rein optische, unbewegliche Illusion, deren Ausmaße maximal VE/2 Kubikmeter betragen können. Die Illusion ist mit einer erfolgreichen Bemerken-Probe (DS4 S. 89) – abzüglich des halbierten Probenergebnisses der Trugbild Zaubern-Probe – durchschaubar.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE / 2", - "unit": "hours" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 7 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344792, - "modifiedTime": 1740227862581, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!eMilydZd4gqDUsff" -} diff --git a/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json b/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json deleted file mode 100644 index 9448292b..00000000 --- a/packs/spells/Unsichtbares_sehen_nR6Wbt9k2c8SBVpT.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "nR6Wbt9k2c8SBVpT", - "name": "Unsichtbares sehen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible-face.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel erhält für die Dauer des Zauberspruchs die Fähigkeit, unsichtbare Objekte und Lebewesen ganz normal erkennen zu können.

\n

Magie, magische Effekte – bis auf den Zauberspruch @Compendium[ds4.spells.EXqdD6yddQ4c0zAw]{Unsichtbarkeit} – oder auch verborgene Fallen gelten nicht als unsichtbar in Bezug auf diesen Zauberspruch.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 10, - "wizard": 12, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344878, - "modifiedTime": 1740227862586, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nR6Wbt9k2c8SBVpT" -} diff --git a/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json b/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json deleted file mode 100644 index cf9cfab8..00000000 --- a/packs/spells/Unsichtbarkeit_EXqdD6yddQ4c0zAw.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "EXqdD6yddQ4c0zAw", - "name": "Unsichtbarkeit", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/invisible.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Macht ein Lebewesen (samt seiner getragenen Ausrüstung) oder ein Objekt für die Dauer des Zauberspruchs unsichtbar.

Der Zauberspruch endet vorzeitig, wenn das Ziel jemanden angreift, zaubert oder selbst Schaden erhält.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 20, - "wizard": 12, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344512, - "modifiedTime": 1740227862564, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!EXqdD6yddQ4c0zAw" -} diff --git a/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json b/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json deleted file mode 100644 index a6835906..00000000 --- a/packs/spells/Verborgenes_sehen_zWol1q702sjg2b7K.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "zWol1q702sjg2b7K", - "name": "Verborgenes sehen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/secret-door.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann unbelebte Dinge – die verborgen oder absichtlich versteckt sind (Fallen, Geheimtüren u.ä.) – mit Hilfe dieses Zaubers für kurze Zeit aufleuchten sehen, selbst wenn sie durch etwas verdeckt sind, wie ein Vorhang oder ein Behältnis.

Der Zauber funktioniert nicht bei magischen oder unsichtbaren Objekten.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 8, - "wizard": 8, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344907, - "modifiedTime": 1740227862592, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zWol1q702sjg2b7K" -} diff --git a/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json b/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json deleted file mode 100644 index 7878c249..00000000 --- a/packs/spells/Verdampfen_s3nfDjJjDtiHGKzm.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "s3nfDjJjDtiHGKzm", - "name": "Verdampfen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/smoking-orb.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel beginnt vor magischer Hitze regelrecht zu verdampfen. Der innerlich wirkende Schaden entspricht dem dreifachen Probenergebnis, das Ziel würfelt seine Abwehr ohne die Panzerungsboni von seinen Gegenständen.

\n

Der Zauber ist gegen wasserlose Wesen – wie beispielsweise @Compendium[ds4.creatures.Rvu16XzEjizdqNsu]{Skelette} oder @Compendium[ds4.creatures.tYcKw69Feoy3B6hG]{Feuerelementare} – nicht einsetzbar.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": true, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": true, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 20, - "sorcerer": 18 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344889, - "modifiedTime": 1740227862588, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!s3nfDjJjDtiHGKzm" -} diff --git a/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json b/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json deleted file mode 100644 index 3723a8fd..00000000 --- a/packs/spells/Vergr__ern_uryiDdwKAwbASnuH.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "uryiDdwKAwbASnuH", - "name": "Vergrößern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/expand.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Die Körpergröße des freiwilligen Ziels – samt seiner Ausrüstung – verdoppelt sich augenblicklich. Charaktere nehmen die Größenkategorie „groß“ (DS4 S. 104) an.

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ sowie Laufen verdoppelt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -4, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "rounds" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344899, - "modifiedTime": 1740227862590, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uryiDdwKAwbASnuH" -} diff --git a/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json b/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json deleted file mode 100644 index eae0020b..00000000 --- a/packs/spells/Verkleinern_ITWKevUdrtyBHjgR.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ITWKevUdrtyBHjgR", - "name": "Verkleinern", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/contract.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das freiwillige Ziel – samt seiner Ausrüstung – wird auf ein Zehntel seiner Körpergröße verkleinert. Charaktere nehmen die Größenkategorie „winzig“ (DS4 S. 104) an.

Für die Dauer des Zauberspruchs werden KÖR, ST und HÄ halbiert und Laufen durch 10 geteilt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -4, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "minutes" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 10, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344543, - "modifiedTime": 1740227862565, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ITWKevUdrtyBHjgR" -} diff --git a/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json b/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json deleted file mode 100644 index 2a4f7dcc..00000000 --- a/packs/spells/Verlangsamen_tqJ8DBLXcnCfrG3t.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "tqJ8DBLXcnCfrG3t", - "name": "Verlangsamen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/snail.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber halbiert den Laufen-Wert von einer maximalen Anzahl von Zielen gleich der halbierten Stufe des Zauberwirkers.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 3, - "wizard": 8, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344897, - "modifiedTime": 1740227862589, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tqJ8DBLXcnCfrG3t" -} diff --git a/packs/spells/Versetzen_WETUfLs0pbo1odAp.json b/packs/spells/Versetzen_WETUfLs0pbo1odAp.json deleted file mode 100644 index 4fb194fd..00000000 --- a/packs/spells/Versetzen_WETUfLs0pbo1odAp.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "WETUfLs0pbo1odAp", - "name": "Versetzen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/body-swapping.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das einwilligende Ziel wird bis zu Probenergebnis / 2 Meter weit teleportiert, eine klare Sichtlinie vorausgesetzt.

Reicht die ermittelte Entfernung nicht aus, um den Zielpunkt zu erreichen, wird der Charakter dennoch – so weit wie möglich – in dessen Richtung versetzt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 10, - "wizard": 6, - "sorcerer": 6 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344681, - "modifiedTime": 1740227862576, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!WETUfLs0pbo1odAp" -} diff --git a/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json b/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json deleted file mode 100644 index 31020498..00000000 --- a/packs/spells/Versetzte_Stimme_SaLY0K9FQRb1TQoQ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "SaLY0K9FQRb1TQoQ", - "name": "Versetzte Stimme", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/lips.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann das von ihm Gesagte an einen bis zu VE x 10 Meter entfernten Punkt verlagern (eine klare Sichtlinie vorausgesetzt).

\n

Dieser Punkt kann eine freie Stelle im Raum sein oder auch ein Kleidungsstück einer Person.

\n

Jeder in Hörweite dieses Punktes kann den Zauberwirker hören.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-1 pro 10 Meter Entfernung" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE x 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 2, - "sorcerer": 3 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344624, - "modifiedTime": 1740227862572, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!SaLY0K9FQRb1TQoQ" -} diff --git a/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json b/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json deleted file mode 100644 index 20f9384b..00000000 --- a/packs/spells/Verteidigung_0Jp3WM3Aba8VKcrb.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "0Jp3WM3Aba8VKcrb", - "name": "Verteidigung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/templar-shield.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel erhält das Probenergebnis als Bonus auf seine Abwehr, bis der Zauberwirker in der nächsten Kampfrunde wieder an der Reihe ist.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": true, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "1", - "unit": "rounds" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": 1, - "wizard": 4, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344444, - "modifiedTime": 1740227862555, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!0Jp3WM3Aba8VKcrb" -} diff --git a/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json b/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json deleted file mode 100644 index 55d6fcfe..00000000 --- a/packs/spells/Vertreiben_QVcmtKpmT5HzIwur.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "QVcmtKpmT5HzIwur", - "name": "Vertreiben", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/chalk-outline-murder.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Vertreibt eine Anzahl von Untoten im Wirkungsbereich gleich der halbierten Stufe des Zauberwirkers.

\n

Für die Dauer der Vertreibung ziehen sich die Untoten so schnell wie möglich von dem Zauberwirker zurück bis auf eine Distanz von Probenergebnis x 5 m.

\n

Bis zum Ablauf des Zaubers können die Untoten niemanden in seinem Wirkungsbereich angreifen.

\n

Der Effekt endet bei jedem Untoten, der Schaden erleidet.

\n

Bei zu vielen Untoten entscheidet der Zufall, welche betroffen sind. Alternativ kann auch ein bestimmter Untoter als Ziel der Vertreibung bestimmt werden.

\n

Wird beim Vertreiben ein Immersieg gewürfelt, erhalten die betroffenen Untoten zusätzlichen abwehrbaren Schaden in der tatsächlichen Höhe des Immersiegs.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(KÖR+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "minutes" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344603, - "modifiedTime": 1740227862570, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!QVcmtKpmT5HzIwur" -} diff --git a/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json b/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json deleted file mode 100644 index 4c02e993..00000000 --- a/packs/spells/Verwandlung_4Wlx1LdkUK3BYctJ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "4Wlx1LdkUK3BYctJ", - "name": "Verwandlung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/ghost-ally.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker nimmt das Aussehen einer anderen Person an, die seinem Volk angehören und gleichen Geschlechts sein muss.

\n

Handelt es sich um eine bestimmte Person, die der Charakter jedoch nur flüchtig oder aus der Ferne kennt, können ihm Fehler unterlaufen, wodurch Bekannte der Zielperson mit einer Bemerken-Probe den Zauber durchschauen können.

\n

Untote Wesen u. ä. kann man mit diesem rein optischen Effekt nicht täuschen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 10 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344455, - "modifiedTime": 1740227862557, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!4Wlx1LdkUK3BYctJ" -} diff --git a/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json b/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json deleted file mode 100644 index 34d9b959..00000000 --- a/packs/spells/Verwirren_niQVUxJHzdMDlwXc.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "niQVUxJHzdMDlwXc", - "name": "Verwirren", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/misdirection.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauberspruch verwirrt bei Erfolg das Ziel, dessen Handeln für die gesamte Zauberdauer auf folgender Tabelle jede Kampfrunde neu ermittelt wird:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
W20Der Verwirrte…
1–5… greift die Charaktere an
6–10… läuft verwirrt in eine zufällige Richtung
11–15… steht verwirrt herum
16+… greift die eigenen Verbündeten an
", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": true, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 2", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 8, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344879, - "modifiedTime": 1740227862586, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!niQVUxJHzdMDlwXc" -} diff --git a/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json b/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json deleted file mode 100644 index de762690..00000000 --- a/packs/spells/Volksgestalt_8Y5rUQhP8XCQM9xL.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "8Y5rUQhP8XCQM9xL", - "name": "Volksgestalt", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/relationship-bounds.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bis zu VE einwilligende, humanoide Ziele (zu denen natürlich auch der Zauberwirker selbst gehören kann) in Reichweite werden in die Gestalt eines anderen humanoiden Volkes der gleichen Größenkategorie (DS4 S. 104) verwandelt (nicht jedoch seine Ausrüstung).

\n

Beispielsweise könnte man einen Menschen in einen Ork oder sogar in einen uralten Zwerg verwandeln.

\n

Der Charakter behält dabei all seine Fähigkeiten und erhält umgekehrt auch keine Fähigkeiten des Volkes, in das er verwandelt wurde.

\n

Während die Stimme sich dem neuen Volk anpasst, erinnern Augen und Gesichtzüge weiterhin an die eigentliche Gestalt des verwandelten Charakters.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -4, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": true, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": 5, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344473, - "modifiedTime": 1740227862560, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8Y5rUQhP8XCQM9xL" -} diff --git a/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json b/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json deleted file mode 100644 index 18afc937..00000000 --- a/packs/spells/W_chter_7HCeOPLYvb1SQxcV.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "7HCeOPLYvb1SQxcV", - "name": "Wächter", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/static-guard.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Ein magischer Wächter alarmiert bzw. weckt den Zauberwirker, sobald ein Wesen sich bis auf VE x 2 Meter oder weniger dem Zielpunkt nähert.

\n

Dies gilt nicht für Wesen, die sich während des Zaubervorgangs bereits in diesem Bereich aufhielten.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 4, - "wizard": 6, - "sorcerer": 5 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344463, - "modifiedTime": 1740227862558, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7HCeOPLYvb1SQxcV" -} diff --git a/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json b/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json deleted file mode 100644 index f66a4e08..00000000 --- a/packs/spells/Waffe_des_Lichts_cggG4v6EBPmEZuAQ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "cggG4v6EBPmEZuAQ", - "name": "Waffe des Lichts", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/aspergillum.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Die anvisierte Waffe erstrahlt mit der heiligen Kraft des Lichts.

\n

Die folgenden Effekte gelten nur, wenn ein Charakter mit dem Talent Diener des Lichts die Waffe benutzt:

\n

Für die Dauer des Zauberspruchs wird der WB der Waffe um +1 erhöht und ihr Schaden gilt als magisch.

\n

Jedesmal, wenn mit der Waffe Schaden verursacht wird, erhöht sich die Abwehr des Waffenträgers um 1.

\n

Dieser Effekt endet, wenn die Zauberdauer abgelaufen ist oder der Charakter die Waffe fallen lässt.

\n

Waffe des Lichts kann man nicht mit @Compendium[ds4.spells.gJ3Z8y7i6LWjSMKJ]{Flammenklinge}, @Compendium[ds4.spells.Gc5G9kixOqNbuwp1]{Frostwaffe} oder @Compendium[ds4.spells.RUfE7hqqHCKMEMbh]{Schattenklinge} kombinieren.

\n

Charaktere mit dem Talent Diener der Dunkelheit können diesen Zauber nicht anwenden.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": true, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 7, - "wizard": 8, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344734, - "modifiedTime": 1740227862579, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!cggG4v6EBPmEZuAQ" -} diff --git a/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json b/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json deleted file mode 100644 index 4cb08b56..00000000 --- a/packs/spells/Wahnsinn_OODDFguw5Y113ywm.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "OODDFguw5Y113ywm", - "name": "Wahnsinn", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/mad-scientist.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel des Zaubers wird auf der Stelle wahnsinnig und zu einem sabbernden Schwachsinnigen, dessen Geist fortan auf 0 gesenkt ist.

\n

Nur der Zauberspruch @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} kann diesen Effekt bannen, wofür pro wiederherzustellenden Punkt in GEI der Spruch jeweils einmal auf das Ziel angewendet werden muss.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-(GEI+AU)/2 des Ziels" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 15 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344599, - "modifiedTime": 1740227862570, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!OODDFguw5Y113ywm" -} diff --git a/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json b/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json deleted file mode 100644 index fbd55d98..00000000 --- a/packs/spells/Wand_ffnung_7foZzrxZuX0dCh3C.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "7foZzrxZuX0dCh3C", - "name": "Wandöffnung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/hole.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker öffnet ein kreisrundes Loch von 1 m Durchmesser in einer bis zu VE x 10 cm dicken, nichtmagischen Steinwand.

\n

Nach Ablauf des Zaubers verschwindet das Loch ohne Spuren zu hinterlassen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": true, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. / 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": 6, - "sorcerer": 14 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344466, - "modifiedTime": 1740227862558, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7foZzrxZuX0dCh3C" -} diff --git a/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json b/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json deleted file mode 100644 index 26f7cb63..00000000 --- a/packs/spells/Wasser_teilen_zcuCpowoHDs7eIHn.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "zcuCpowoHDs7eIHn", - "name": "Wasser teilen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/zigzag-hieroglyph.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann jegliche Gewässer teilen und eine 1 m breite Schneise bis zu Grund in sie schlagen, ihre Länge einzig und allein begrenzt durch den Entfernungsmalus auf Zielzauber (DS4 S. 43).

\n

Wird der Zauber gegen flüssige Wesen wie beispielsweise @Compendium[ds4.creatures.ZJF6ieo8O0GXfgwz]{Wasserelementare} eingesetzt, entspricht das Wurfergebnis nicht abwehrbaren Schaden, während die Zauberdauer nur noch augenblicklich ist.

", - "equipped": false, - "spellType": "targetedSpellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": true, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": 12, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344908, - "modifiedTime": 1740227862592, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zcuCpowoHDs7eIHn" -} diff --git a/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json b/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json deleted file mode 100644 index 4df3b242..00000000 --- a/packs/spells/Wasser_weihen_TKkpNdYo6cbFq7Pt.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "TKkpNdYo6cbFq7Pt", - "name": "Wasser weihen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/holy-water.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Berührtes, reines Wasser wird zu heiligem @Compendium[ds4.equipment.RoXGTPdisjn6AdYK]{Weihwasser}. Bei jeder Anwendung des Zaubers stellt der Heiler eine Anzahl an Weihwassereinheiten (etwa 1/2 Liter) gleich dem halbierten Probenergebnis her, genügend „normales“ Wasser als Rohstoff vorausgesetzt.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 1, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344639, - "modifiedTime": 1740227862573, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TKkpNdYo6cbFq7Pt" -} diff --git a/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json b/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json deleted file mode 100644 index 04786c32..00000000 --- a/packs/spells/Wasserwandeln_mYZ3gFtRJASLL9pv.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "mYZ3gFtRJASLL9pv", - "name": "Wasserwandeln", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/walk.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Das Ziel des Zaubers kann eine Anzahl von Runden gleich dem Probenergebnis auf Wasser laufen, als befände es sich an Land.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": true, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": true, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "VE", - "unit": "hours" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": 5, - "wizard": 9, - "sorcerer": 9 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344875, - "modifiedTime": 1740227862585, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!mYZ3gFtRJASLL9pv" -} diff --git a/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json b/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json deleted file mode 100644 index 4763840f..00000000 --- a/packs/spells/Wechselzauber_DNplbUwfxszg5UbZ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "DNplbUwfxszg5UbZ", - "name": "Wechselzauber", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/magick-trick.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Präpariert einen Zauberspruch des Zauberwirkers, um einmalig aktionsfrei zu diesem zu wechseln.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 12, - "wizard": 10, - "sorcerer": 12 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344503, - "modifiedTime": 1740227862563, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!DNplbUwfxszg5UbZ" -} diff --git a/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json b/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json deleted file mode 100644 index 896e07ed..00000000 --- a/packs/spells/Wiederbelebung_duf86LKvOIyDXJbc.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "duf86LKvOIyDXJbc", - "name": "Wiederbelebung", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/heart-wings.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauber belebt einen Charakter, der nicht eines natürlichen Todes starb, wieder zum Leben mit 1 LK.

\n

Das Ziel darf höchstens seit W20 Tagen tot sein und verliert bei der Wiederbelebung permanent 1 Punkt KÖR (DS4 S. 42).

\n

Charaktere mit KÖR 1 können folglich also nicht mehr mit Hilfe dieses Zauberspruchs wiederbelebt bleiben.

\n

Zu beachten ist, dass dieser Zauber keine besonderen Verletzungen heilt – beispielsweise sollte ein aufgeschlitzte Kehle oder ein zerstampfter Körper vor der Wiederbelebung mit dem Zauber @Compendium[ds4.spells.pmYcjLXv1EB9bM59]{Allheilung} behandelt werden, um ein erneutes Ableben gleich nach der Wiederbelebung zu verhindern.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": true, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 10, - "wizard": null, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344757, - "modifiedTime": 1740227862580, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!duf86LKvOIyDXJbc" -} diff --git a/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json b/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json deleted file mode 100644 index 8987ad8e..00000000 --- a/packs/spells/Wolke_der_Reue_aDitBSXiHFI67zDZ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "aDitBSXiHFI67zDZ", - "name": "Wolke der Reue", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/tear-tracks.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine unsichtbare Wolke der Reue mit einem Radius von maximal VE in Metern entsteht.

Jeder Charakter innerhalb der Wolke empfindet ein unterschwelliges Schuldgefühl, wirkt leicht verunsichert und erhält dadurch -1 auf alle Proben.

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -2, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": true, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": 1, - "wizard": 6, - "sorcerer": null - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344707, - "modifiedTime": 1740227862577, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!aDitBSXiHFI67zDZ" -} diff --git a/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json b/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json deleted file mode 100644 index f76af558..00000000 --- a/packs/spells/Wolke_des_Todes_xs7tx8K3ZdQ76u0b.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "xs7tx8K3ZdQ76u0b", - "name": "Wolke des Todes", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/skull-mask.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine schwarze, qualmende Wolke des Todes mit einem Radius von maximal VE in Metern entsteht.

\n

Zwar ist die Wolke nicht undurchsichtig, dennoch werden Angriffe gegen Ziele darin um 2 erschwert, gleichsam erhalten alle innerhalb der Wolke -2 auf alle Proben, bei denen man besser sehen können sollte.

\n

Jeder Charakter innerhalb der Wolke erleidet pro Runde automatisch einen nicht abwehrbaren Punkt Schaden.

\n

Sollte der Schwarzmagier über das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} verfügen, wird sein Talentrang auf den nicht abwehrbaren Schaden, den jedes Opfer pro Kampfrunde erleidet, addiert.

\n

Eine Wolke kann durch Wind bewegt oder gar auseinander geweht werden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -4, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": true, - "transport": false, - "damage": true, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": true - }, - "maxDistance": { - "value": "VE x 5", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb. x 2", - "unit": "rounds" - }, - "cooldownDuration": "100r", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 13 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344904, - "modifiedTime": 1740227862591, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!xs7tx8K3ZdQ76u0b" -} diff --git a/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json b/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json deleted file mode 100644 index 27853e84..00000000 --- a/packs/spells/Zauberabklang_uAgln8KHIaeK9G1I.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "uAgln8KHIaeK9G1I", - "name": "Zauberabklang", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/backward-time.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Mit diesem Zauber kann versucht werden, die Abklingzeit eines zuvor (innerhalb der letzten VE Kamfprunden) erfolgreich gewirkten Zauberspruchs wieder auf Null zu senken.

Misslingt die Probe, kann man den Zauberabklang bei diesem speziellen Zauberspruch erst wieder versuchen, wenn der Zauberwirker ihn abermals gewirkt hat.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "- eigene Zugangsstufe für den Spruch" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 10, - "wizard": 5, - "sorcerer": 9 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344898, - "modifiedTime": 1740227862590, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!uAgln8KHIaeK9G1I" -} diff --git a/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json b/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json deleted file mode 100644 index 8df3393e..00000000 --- a/packs/spells/Zauberleiter_USNJNNF2jDaS6BDQ.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "USNJNNF2jDaS6BDQ", - "name": "Zauberleiter", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/ladder.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Eine magische Leiter entsteht, die bis zu VE x Zauberwirkerstufe Meter hoch sein kann.

Die Leiter steht fest im Raum und benötigt keinen Halt. Sie bleibt, solange der Zauberwirker sich ununterbrochen konzentriert (zählt als ganze Aktion).

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Konzentration", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": 8, - "wizard": 4, - "sorcerer": 4 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344664, - "modifiedTime": 1740227862574, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!USNJNNF2jDaS6BDQ" -} diff --git a/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json b/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json deleted file mode 100644 index fd93b2e4..00000000 --- a/packs/spells/Zaubertrick_kOCHuBrtIXOwoZ1J.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "kOCHuBrtIXOwoZ1J", - "name": "Zaubertrick", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/magic-hat.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieser Zauberspruch erzeugt kleine, unschädliche Illusionen. Beispielsweise kann der Zauberwirker schwebende Bälle zaubern oder die Illusion eines Kaninchens aus einem Hut ziehen.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "VE x 2", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": null, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344867, - "modifiedTime": 1740227862584, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kOCHuBrtIXOwoZ1J" -} diff --git a/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json b/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json deleted file mode 100644 index 2cdd4189..00000000 --- a/packs/spells/Zeitstop_BGnY1p1qZXwpzXFA.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "BGnY1p1qZXwpzXFA", - "name": "Zeitstop", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/lorc/time-trap.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker hält die Zeit an, bis die Zauberdauer endet oder er Schaden verursacht bzw. selber erleidet.

Andere Objekte und Lebewesen können nicht bewegt werden – sie sind starr in der Zeit eingefroren.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": -5, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Selbst", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Prb.", - "unit": "rounds" - }, - "cooldownDuration": "d20d", - "minimumLevels": { - "healer": null, - "wizard": 15, - "sorcerer": 20 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344490, - "modifiedTime": 1740227862562, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!BGnY1p1qZXwpzXFA" -} diff --git a/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json b/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json deleted file mode 100644 index 5e989850..00000000 --- a/packs/spells/Zombies_erwecken_mBFPKvtK3Rmq7CFY.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "mBFPKvtK3Rmq7CFY", - "name": "Zombies erwecken", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/skoll/raise-zombie.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Schwarzmagier kann eine maximale Anzahl an Leichen gleich seiner eigenen Stufe im Wirkungsradius zu untotem Leben erwecken.

\n

Die @Compendium[ds4.creatures.rLUCyWfSBebB8cSC]{Zombies} (DS4 S. 125) benötigen drei Kampfrunden, um sich zu erheben, danach wollen sie ihren Erwecker vernichten, um wieder Erlösung zu finden, gelingt es diesem nicht, sie mit dem Zauber @Compendium[ds4.spells.9gc1CF70165NXymH]{Kontrollieren} zu beherrschen.

\n

Charaktere mit dem Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} können den Zauber nicht anwenden.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": true, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": true, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "VE x 5", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "1d", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": 8 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344873, - "modifiedTime": 1740227862585, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!mBFPKvtK3Rmq7CFY" -} diff --git a/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json b/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json deleted file mode 100644 index 46484376..00000000 --- a/packs/spells/_ffnen_ip0DVeb1YeNrEeUu.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "_id": "ip0DVeb1YeNrEeUu", - "name": "Öffnen", - "type": "spell", - "img": "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Öffnet ein Schloss, ohne es zu beschädigen. Der normalerweise immer +0 betragende Schlosswert (SW) kann durch bessere Qualität oder den Zauberspruch @Compendium[ds4.spells.dzYAc9ti7ghhkyiX]{Magisches Schloss} erhöht werden.

\n

Misslingt der Zauber, kann der Zauberwirker es erneut versuchen. Jeder Folgewurf senkt den PW der Zaubern-Proben bei diesem speziellen Schloss jedoch um jeweils 2.

\n

Dieser kumulative Malus gegen dieses eine Schloss erlischt erst, wenn der Zauberwirker eine neue Stufe erreicht.

", - "equipped": false, - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "-SW" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "Berühren", - "unit": "custom" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "Sofort", - "unit": "custom" - }, - "cooldownDuration": "10r", - "minimumLevels": { - "healer": 2, - "wizard": 1, - "sorcerer": 1 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995344866, - "modifiedTime": 1740227862584, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ip0DVeb1YeNrEeUu" -} diff --git a/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json b/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json deleted file mode 100644 index 2f50fb88..00000000 --- a/packs/talents/Abklingen_w2Dn16q2f0gBxTch.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "w2Dn16q2f0gBxTch", - "name": "Abklingen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent senkt die Zauberabklingzeit jedes Zaubers um 1 Runde pro Talentrang. Es ist jedoch nicht möglich, die Abklingzeit eines Zaubers unter Null zu senken.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349656, - "modifiedTime": 1740227862745, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!w2Dn16q2f0gBxTch" -} diff --git a/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json b/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json deleted file mode 100644 index 5fc5bc57..00000000 --- a/packs/talents/Abklingendes_Blut_yIcgnr9Xr7Kwocaj.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "yIcgnr9Xr7Kwocaj", - "name": "Abklingendes Blut", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Blutmagier kann für das Opfern von bis zu 1 LK pro Talentrang (zählt als freie Aktion) die Abklingzeit eines gerade abklingenden Zauberspruchs um jeweils 1 Runde senken.

\n

Pro weiterem Talentrang kann ein weiterer LK geopfert werden, wodurch die Abklingzeit um eine weitere Runde gesenkt wird.

\n

Abklingendes Blut ist mit dem Talent @Compendium[ds4.talents.w2Dn16q2f0gBxTch]{Abklingen} kombinierbar.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349660, - "modifiedTime": 1740227862746, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yIcgnr9Xr7Kwocaj" -} diff --git a/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json b/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json deleted file mode 100644 index 1a2fb7ae..00000000 --- a/packs/talents/Aderschlitzer_JbGKvhxVEAdczQib.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "JbGKvhxVEAdczQib", - "name": "Aderschlitzer", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird bei einem Angriff mit einem Messer, Dolch oder Einhandschwert bzw. mit einer Schußwaffe ein Würfelergebnis erzielt, welches gleich oder kleiner als der Talentrang in Aderschlitzer ist, wird die Abwehr des Gegners gegen diesen Angriff pro Talentrang um 5 gesenkt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349509, - "modifiedTime": 1740227862727, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JbGKvhxVEAdczQib" -} diff --git a/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json b/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json deleted file mode 100644 index 6320b68c..00000000 --- a/packs/talents/Adlergestalt_sSKiZ5hdQMBnAYRA.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "sSKiZ5hdQMBnAYRA", - "name": "Adlergestalt", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in einen flugfähigen @Compendium[ds4.creatures.HjpxMlpyjPr3hd3r]{Adler} (DS4 S. 106) verwandeln. Auch kann er die Gestalt kleinerer Vögel annehmen. Die Verwandlung dauert 1 Runde. Der Effekt endet auf Wunsch des Druiden oder durch seinen Tod. Erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich dabei nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte eines Adlers an.

\n

In Adlergestalt ist es dem Druiden nicht möglich, zu sprechen oder zu zaubern, wohl aber, Gesprochenes zu verstehen und die Sinne des Adlers einzusetzen. Zauber, die beispielsweise Tiere kontrollieren, haben auf den Druiden in Adlergestalt keinen Einfluss.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349641, - "modifiedTime": 1740227862743, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sSKiZ5hdQMBnAYRA" -} diff --git a/packs/talents/Akrobat_9qdc56F4XTntYoo9.json b/packs/talents/Akrobat_9qdc56F4XTntYoo9.json deleted file mode 100644 index 3d4133ef..00000000 --- a/packs/talents/Akrobat_9qdc56F4XTntYoo9.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_id": "9qdc56F4XTntYoo9", - "name": "Akrobat", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "ouQeQaI46fM2mq4D", - "changes": [ - { - "key": "system.checks.climb", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.jump", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Akrobatische Proben +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!9qdc56F4XTntYoo9.ouQeQaI46fM2mq4D" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein geübter Kletterer und Turner. Auf alle Proben, bei denen es um athletisches Geschick, Balancieren oder Kletterkunst geht, erhält der Charakter einen Bonus von +2 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349488, - "modifiedTime": 1740227862724, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9qdc56F4XTntYoo9" -} diff --git a/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json b/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json deleted file mode 100644 index 7eb4b2dd..00000000 --- a/packs/talents/Alchemie_XUyuomVVOxuSSKXl.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "XUyuomVVOxuSSKXl", - "name": "Alchemie", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird benötigt, um magische Tränke zu brauen (DS4 S. 101).

\n

Jeder Talentrang reduziert die Zubereitungsdauer von Tränken und gibt +1 auf Proben, um diese herzustellen oder zu identifizieren (DS4 S. 47).

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349553, - "modifiedTime": 1740227862733, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XUyuomVVOxuSSKXl" -} diff --git a/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json b/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json deleted file mode 100644 index 15e3881a..00000000 --- a/packs/talents/Arkane_Explosion_hGuQT644hBIM8G4J.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "hGuQT644hBIM8G4J", - "name": "Arkane Explosion", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden sein magisches Potenzial in einer kugelförmigen, arkanen Explosion entladen, deren Mittelpunkt er bildet.

\n

Die Kugel hat einen festen Durchmesser von Stufe/2 Meter und verursacht nicht abwehrbaren Schaden mit einem Probenwert von 10 pro Talentrang.

\n

Pro Gefährten, der im Explosionsradius steht, kann der Charakter GEI+VE würfeln, um ihn vor dem Schaden zu bewahren.

\n

Das Talent @Compendium[ds4.talents.2ASdMhcx0hN3ZpPc]{Explosionskontrolle} kann hier ebenfalls angewendet werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349605, - "modifiedTime": 1740227862738, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hGuQT644hBIM8G4J" -} diff --git a/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json b/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json deleted file mode 100644 index da6f3912..00000000 --- a/packs/talents/Ausweichen_h8rhfVd2pINsa4d2.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "h8rhfVd2pINsa4d2", - "name": "Ausweichen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal pro Kampf einen gegen ihn gerichteten Nahkampfangriff komplett ignorieren (zählt als freie Aktion). Dass der Charakter einem Angriff ausweichen will, muss angesagt werden, bevor feststeht, ob dieser Schlag ihn trifft oder nicht. Gegen Angriffe von Gegnern, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349602, - "modifiedTime": 1740227862737, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!h8rhfVd2pINsa4d2" -} diff --git a/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json b/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json deleted file mode 100644 index 24cc8d50..00000000 --- a/packs/talents/B_ndiger_kqm5iBvDGn8NQ4BR.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "kqm5iBvDGn8NQ4BR", - "name": "Bändiger", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Einmal pro Talentrang kann der Charakter mit GEI+AU versuchen, einer selbst beschworenen bzw. selbst herbeigerufenen Wesenheit, die er nicht unter seine Kontrolle bringen konnte (die Probe auf Zaubern also misslang), dennoch seinen Willen aufzuzwingen (jeder Versuch zählt als eine ganze Aktion). Bei einem Erfolg kann der Charakter versuchen, noch ein weiteres Wesen (sofern vorhanden) in der gleichen Runde zu bändigen (zählt nun als freie Aktion), insgesamt jedoch nicht mehr zusätzliche Wesenheiten pro Runde, als sein Talentrang beträgt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349615, - "modifiedTime": 1740227862739, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kqm5iBvDGn8NQ4BR" -} diff --git a/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json b/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json deleted file mode 100644 index 8925940a..00000000 --- a/packs/talents/B_rengestalt_8pylauN1hY933vrQ.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "8pylauN1hY933vrQ", - "name": "Bärengestalt", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in einen @Compendium[ds4.creatures.InLjj4RGxfkDrtXr]{Bären} (DS4 S. 106) verwandeln. Alternativ kann in Absprache mit dem Spielleiter bei Talenterwerb auch ein anderes „großes“ (DS4 S. 104) Tier gewählt werden. Die Verwandlung dauert 1 Runde. Der Effekt endet auf Wunsch des Druiden oder durch seinen Tod. Erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte des Tieres an.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349484, - "modifiedTime": 1740227862723, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8pylauN1hY933vrQ" -} diff --git a/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json b/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json deleted file mode 100644 index 721ec6a0..00000000 --- a/packs/talents/Beschw_rer_MIYh9GTkm7xIquWK.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "MIYh9GTkm7xIquWK", - "name": "Beschwörer", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "1Lrnk4tNGWXSdCd1", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.demonology" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Dämonologie +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!MIYh9GTkm7xIquWK.1Lrnk4tNGWXSdCd1" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein Experte im Beschwören von Dämonen. Er erhält auf alle Versuche, Dämonen zu beschwören und diese zu kontrollieren einen Bonus von +2 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349517, - "modifiedTime": 1740227862728, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!MIYh9GTkm7xIquWK" -} diff --git a/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json b/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json deleted file mode 100644 index 4b3a54c4..00000000 --- a/packs/talents/Beute_Sch_tzen_5eEaKiUSzWBhG8Bn.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "5eEaKiUSzWBhG8Bn", - "name": "Beute Schätzen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "HHnWhHQf9ibLVCAP", - "changes": [ - { - "key": "system.checks.appraise", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Schätzen +3", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!5eEaKiUSzWBhG8Bn.HHnWhHQf9ibLVCAP" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter erhält pro Talentrang einen Bonus von +3, wenn er den Wert eines Gegenstandes schätzt.

\n

Auch kann er mit GEI+AU spüren, ob dieser magisch ist (nicht aber im Anschluss mit GEI+VE, wie Zauberwirker, seine Funktionsweise erkennen), worauf der gleiche Bonus angerechnet wird.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349465, - "modifiedTime": 1740227862721, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5eEaKiUSzWBhG8Bn" -} diff --git a/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json b/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json deleted file mode 100644 index b9601058..00000000 --- a/packs/talents/Bildung_KgOHPx5oQHKBuVPc.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_id": "KgOHPx5oQHKBuVPc", - "name": "Bildung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "JbL6BC0HyUKyxBvd", - "changes": [ - { - "key": "system.checks.decipherScript", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.communicate", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Bildungsproben +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!KgOHPx5oQHKBuVPc.JbL6BC0HyUKyxBvd" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter hat einen gewissen Grad an Bildung erworben.

\n

Im Gegensatz zu dem Talent @Compendium[ds4.talents.IB1OJ65TseuSw9ZI]{Wissensegebiet}, welches nur einzelne Themengebiete umfasst, erhält man durch das Talent Bildung einen +2 Bonus pro Talentrang auf alle Proben, bei denen es um Allgemeinwissen oder das Lösen von Rätseln geht.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349513, - "modifiedTime": 1740227862728, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KgOHPx5oQHKBuVPc" -} diff --git a/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json b/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json deleted file mode 100644 index b9474c28..00000000 --- a/packs/talents/Blitzmacher_zhzVJz6WhSMMeTuY.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "zhzVJz6WhSMMeTuY", - "name": "Blitzmacher", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "zcVXFPGvCoUuso15", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.lightning && @item.system.spellGroups.damage" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Blitzschadenszauber +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!zhzVJz6WhSMMeTuY.zcVXFPGvCoUuso15" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker ist geübt im Umgang mit Zaubersprüchen, die Blitze erzeugen.

\n

Er erhält auf alle Zauber, die Blitzschaden verursachen, einen Bonus von +1 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349662, - "modifiedTime": 1740227862747, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zhzVJz6WhSMMeTuY" -} diff --git a/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json b/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json deleted file mode 100644 index 6c911229..00000000 --- a/packs/talents/Blocker_9y7I3NIFuFC5lG4s.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "9y7I3NIFuFC5lG4s", - "name": "Blocker", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter versteht es, im Kampf seinen Schild geschickt einzusetzen.

\n

In jeder Kampfrunde, in der er keine offensive Handlung unternimmt, dabei einen Schild führt und sich nicht einen Schritt bewegt, erhält er pro Talentrang +2 auf seine Abwehr gegen alle Angriffe, derer er sich bewusst ist und die nicht von hinten erfolgen. Zusätzlich kann er mit demselben Bonus KÖR+HÄ aktionsfrei würfeln, um im Kampf nicht zurückgedrängt zu werden (DS4 S. 44). Einmal pro Kampf kann ein Blocker pro Talentrang einen Patzer bei der Abwehr wiederholen, auch wenn er gerade eine offensiv Handlung unternimmt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349489, - "modifiedTime": 1740227862724, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9y7I3NIFuFC5lG4s" -} diff --git a/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json b/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json deleted file mode 100644 index 276dd512..00000000 --- a/packs/talents/Blutige_Heilung_ODepf0g8Us5jBqLm.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "ODepf0g8Us5jBqLm", - "name": "Blutige Heilung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Blutmagier einmal pro Kampf (außerhalb eines Kampfes beliebig oft) versuchen, sich mit der Kraft des eigenen Blutes zu heilen (zählt als eine freie Aktion, die einmal pro Runde möglich ist), was allerdings auch misslingen kann.

\n

Der Charakter würfelt dafür mit einem Probenwert gleich seiner eigenen Stufe.

\n

Bei einem Erfolg wird er um das doppelte Probenergebnis geheilt, bei einem Misserfolg erleidet er jedoch nicht abwehrbaren Schaden gleich seinem doppelten Talentrang. Bei einem Patzer ist das Talent außerdem W20 Stunden nicht mehr einsetzbar.

\n

Wird bei der blutigen Heilung das Talent @Compendium[ds4.talents.AM8Wp2ZVwWgbUXQz]{Macht des Blutes} angewendet, wird als dessen Bonus das Attribut KÖR bzw. GEI verwendet, was immer höher ist.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349530, - "modifiedTime": 1740227862730, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ODepf0g8Us5jBqLm" -} diff --git a/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json b/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json deleted file mode 100644 index d6f52e39..00000000 --- a/packs/talents/Blutschild_hUfTQbzMpbOH03qq.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "hUfTQbzMpbOH03qq", - "name": "Blutschild", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Blutmagier kann für das Opfern von 2 LK seine Abwehr für W20 Runden um +2 erhöhen (zählt als freie Aktion).

\n

Pro weiteren Talentrang können zwei weitere LK geopfert werden, welche die Abwehr um weitere +2 erhöhen.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349606, - "modifiedTime": 1740227862738, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hUfTQbzMpbOH03qq" -} diff --git a/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json b/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json deleted file mode 100644 index 3f9d2c70..00000000 --- a/packs/talents/Brutaler_Hieb_ZnT8LMCRqZS3zpJO.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "ZnT8LMCRqZS3zpJO", - "name": "Brutaler Hieb", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "aC7UEoDRrwhs7j3U", - "changes": [ - { - "key": "system.checks.featOfStrength", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Kraftakt +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ZnT8LMCRqZS3zpJO.aC7UEoDRrwhs7j3U" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Schlagen für einen Angriff um den Wert von KÖR erhöhen.

\n

Es ist möglich, mehrere Talentränge in einem einzigen Schlag zu vereinen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349558, - "modifiedTime": 1740227862734, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZnT8LMCRqZS3zpJO" -} diff --git a/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json b/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json deleted file mode 100644 index 28a2f671..00000000 --- a/packs/talents/Charmant_pAOP7wkvhtsNIPQ8.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_id": "pAOP7wkvhtsNIPQ8", - "name": "Charmant", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "PzOc07kYoWYygECD", - "changes": [ - { - "key": "system.checks.flirt", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.haggle", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Soziale Proben +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!pAOP7wkvhtsNIPQ8.PzOc07kYoWYygECD" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Auf sämtliche Proben sozialer Interaktion, beispielsweise um sympathisch aufzutreten oder eine Geschichte glaubhafter zu berichten, erhält der Charakter pro Talentrang einen Bonus von +2 (bei Vertretern des anderen Geschlechts sogar +3).

\n

Settingoption:
In vielen Settings ist es Zwergen verwehrt, dieses Talent zu erlernen.

\n

 

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349630, - "modifiedTime": 1740227862741, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pAOP7wkvhtsNIPQ8" -} diff --git a/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json b/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json deleted file mode 100644 index 7eb95447..00000000 --- a/packs/talents/D_monen_zerschmettern_DZcu8KQFWChBVPRR.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "DZcu8KQFWChBVPRR", - "name": "Dämonen zerschmettern", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen Nahkampfangriff gegen einen Dämonen führen, der nicht abgewehrt werden kann.

\n

Vor dem Angriffswurf muss angesagt werden, dass das Talent zum Einsatz kommen soll, welches mit Talenten wie @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} und/oder @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} kombiniert werden kann.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349497, - "modifiedTime": 1740227862725, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!DZcu8KQFWChBVPRR" -} diff --git a/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json b/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json deleted file mode 100644 index 53165336..00000000 --- a/packs/talents/D_monenbrut_7H5VfdfMACJbv8bz.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "7H5VfdfMACJbv8bz", - "name": "Dämonenbrut", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Dämonologe auf Wunsch bei einer Beschwörung einen weiteren Dämon gleichen Typs beschwören. Ein zusätzlicher Beschwörungskreis oder eine weitere Probe werden dafür nicht benötigt.

\n

Sollte die Beschwörung misslingen, wendet sich die gesamte Dämonenbrut gegen ihren Beschwörer.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349478, - "modifiedTime": 1740227862722, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7H5VfdfMACJbv8bz" -} diff --git a/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json b/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json deleted file mode 100644 index bf018a58..00000000 --- a/packs/talents/D_monenzauber_sThruiUnwaN9KHrP.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "sThruiUnwaN9KHrP", - "name": "Dämonenzauber", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Dämonologe einem einzelnen seiner beschworenen Dämonen einen seiner eigenen Zaubersprüche beibringen (dauert eine Aktion), mit Ausnahme des Zauberspruchs @Compendium[ds4.spells.yy43TiBbip28QRhs]{Dämonen beschwören}. Der jeweilige Dämon hat für die Dauer seiner Beschwörung den jeweiligen Zauber aktiv und kann ihn nach den normalen Regeln einsetzen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349643, - "modifiedTime": 1740227862743, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sThruiUnwaN9KHrP" -} diff --git a/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json b/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json deleted file mode 100644 index 22106f9d..00000000 --- a/packs/talents/Diebeskunst_VqzpRGrHclPSGLP0.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "_id": "VqzpRGrHclPSGLP0", - "name": "Diebeskunst", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "HQXZuzxIk1xmD1FQ", - "changes": [ - { - "key": "system.checks.disableTraps", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.openLock", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.pickPocket", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.workMechanism", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.search", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Diebeskunstproben +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!VqzpRGrHclPSGLP0.HQXZuzxIk1xmD1FQ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter erhält einen Bonus von +2 pro Talentrang auf alle Proben, bei denen es darum geht, Fallen zu entdecken und zu entschärfen, fremde Taschen zu leeren, Schlösser zu öffnen oder Glücksspiele zu manipulieren.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349546, - "modifiedTime": 1740227862733, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!VqzpRGrHclPSGLP0" -} diff --git a/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json b/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json deleted file mode 100644 index fbb9c721..00000000 --- a/packs/talents/Diener_der_Dunkelheit_hAfZhfLqCjPvho3u.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "hAfZhfLqCjPvho3u", - "name": "Diener der Dunkelheit", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter dient den Mächten der Dunkelheit. Er erhält auf alle Angriffe gegen @Compendium[ds4.special-creature-abilities.KDDlwN9as9B4ljeA]{Wesen des Lichts}/@Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} einen Bonus von +1 pro Talentrang. Gleiches gilt für seine Abwehr gegen Schaden von Lichtzaubern.

\n

Charakter mit diesem Talent können nicht das Talent @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} erlernen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349604, - "modifiedTime": 1740227862737, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!hAfZhfLqCjPvho3u" -} diff --git a/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json b/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json deleted file mode 100644 index 16992060..00000000 --- a/packs/talents/Diener_des_Lichts_Wwvj3V65hIe0JWul.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "Wwvj3V65hIe0JWul", - "name": "Diener des Lichts", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter dient den Mächten des Lichts. Er erhält gegen alle Angriffe von @Compendium[ds4.special-creature-abilities.R3j1CjXJckUH0CBG]{Wesen der Dunkelheit}/@Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Dienern der Dunkelheit} einen Bonus von +1 pro Talentrang auf seine Abwehr. Gleiches gilt bei Schaden von Schattenzaubern.

\n

Charaktere, die gegen die Prinzipien des Lichts verstoßen (beispielsweise sinnlos Morden) verlieren Talentränge ersatzlos.

\n

Charaktere mit diesem Talent können nicht das Talent @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} erlernen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349549, - "modifiedTime": 1740227862733, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Wwvj3V65hIe0JWul" -} diff --git a/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json b/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json deleted file mode 100644 index 78f2508c..00000000 --- a/packs/talents/Einbetten_MbPRlVBm0JsBoA6X.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "MbPRlVBm0JsBoA6X", - "name": "Einbetten", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird benötigt, um magische Gegenstände herzustellen (DS4 S. 101). Jeder Talentrang reduziert die Herstellungsdauer von magischen Gegenständen und gibt +1 auf Einbetten- Proben, um diese zu fertigen.

\n

Einbetten hilft zwar auch bei der Herstellung von Tränken bzw. Schriftrollen, dennoch wird dafür zunächst immer noch das Talent @Compendium[ds4.talents.XUyuomVVOxuSSKXl]{Alchemie} bzw. @Compendium[ds4.talents.t56WOCnxZwQWhajW]{Runenkunde} benötigt.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349520, - "modifiedTime": 1740227862729, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!MbPRlVBm0JsBoA6X" -} diff --git a/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json b/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json deleted file mode 100644 index 76a52529..00000000 --- a/packs/talents/Einstecker_ZvswuU2GqxDQwgpM.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "_id": "ZvswuU2GqxDQwgpM", - "name": "Einstecker", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "2rmByR3ov2nUHHEj", - "changes": [ - { - "key": "system.combatValues.hitPoints.total", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Lebenskraft +3", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ZvswuU2GqxDQwgpM.2rmByR3ov2nUHHEj" - }, - { - "_id": "ulUx8SX4R1q1ikhw", - "changes": [ - { - "key": "system.checks.defyPoison", - "mode": 2, - "value": "1", - "priority": null - }, - { - "key": "system.checks.resistDisease", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Gift/Krankheit trotzen +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!ZvswuU2GqxDQwgpM.ulUx8SX4R1q1ikhw" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter versteht es, ordentlich Schaden einzustecken.

\n

Pro Talentrang steigt die Lebenskraft (LK) um +3.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349560, - "modifiedTime": 1740227862735, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ZvswuU2GqxDQwgpM" -} diff --git a/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json b/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json deleted file mode 100644 index 8bf36806..00000000 --- a/packs/talents/Elementare_b_ndeln_11ZOcPcDIigrXvww.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "11ZOcPcDIigrXvww", - "name": "Elementare bündeln", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Elementarist auf Wunsch bei einer Herbeirufung eine weitere Elementarstufe (I) herbeirufen.

\n

Der Elementarist muss vor der Herbeirufung schon festlegen, wie viele der zusätzlichen Elementare einzeln oder gebündelt – wodurch sich ihre Stufen (DS4 S. 53) bis maximal III addieren – erscheinen sollen. Ein zusätzliches Elementarportal oder Proben werden dafür nicht benötigt, aber der ZB entsprechend gesenkt.

\n

Sollte die Herbeirufung misslingen, wenden sich alle Elementare – gebündelte wie ungebündelte – gegen den Elementaristen.

", - "rank": { - "base": 0, - "max": 10, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349428, - "modifiedTime": 1740227862719, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!11ZOcPcDIigrXvww" -} diff --git a/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json b/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json deleted file mode 100644 index a512603a..00000000 --- a/packs/talents/Elementen_trotzen_HFCY3fxIbeXapRan.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "HFCY3fxIbeXapRan", - "name": "Elementen trotzen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden erlittenen Schaden durch die Elemente (beispielsweise durch Blitze, Eis oder Feuer) aller Art ignorieren.

\n

Dies gilt auch für Schaden, der normalerweise nicht abgewehrt werden kann (beispielsweise durch den Zauberspruch @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball}).

\n

Die schützende Wirkung wird als freie Aktion ausgelöst und hält eine ununterbrochene Anzahl von Runden gleich dem dreifachen Talentrang an.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349504, - "modifiedTime": 1740227862726, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!HFCY3fxIbeXapRan" -} diff --git a/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json b/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json deleted file mode 100644 index 1ed55a17..00000000 --- a/packs/talents/Explosionskontrolle_2ASdMhcx0hN3ZpPc.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "2ASdMhcx0hN3ZpPc", - "name": "Explosionskontrolle", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter eine Person (auch sich selbst) vor der Wirkung eines seiner eigenen Flächenzauber verschonen. Pro Talentrang kann er das Talent einmal pro Kampf einsetzen.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349453, - "modifiedTime": 1740227862719, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2ASdMhcx0hN3ZpPc" -} diff --git a/packs/talents/F_rsorger_MdIritgH5eEAngSY.json b/packs/talents/F_rsorger_MdIritgH5eEAngSY.json deleted file mode 100644 index 0642fdba..00000000 --- a/packs/talents/F_rsorger_MdIritgH5eEAngSY.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "MdIritgH5eEAngSY", - "name": "Fürsorger", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "d2tT2smyOwGtpzlC", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && (@item.system.spellGroups.healing || @item.system.spellGroups.protection)" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Heil- und Schutzzauber +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!MdIritgH5eEAngSY.d2tT2smyOwGtpzlC" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist geübt im Umgang mit heilender und schützender Magie.

\n

Er erhält auf alle Heil- und Schutzzauber +1 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349522, - "modifiedTime": 1740227862729, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!MdIritgH5eEAngSY" -} diff --git a/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json b/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json deleted file mode 100644 index d3425704..00000000 --- a/packs/talents/Feuermagier_8D01Z1kDIDcsuVCn.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "8D01Z1kDIDcsuVCn", - "name": "Feuermagier", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "MbXCCUny8g0DURC5", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.fire" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Feuerzauber +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!8D01Z1kDIDcsuVCn.MbXCCUny8g0DURC5" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker ist geübt im Umgang mit Feuermagie. Er erhält auf alle Zauber, die einen Feuereffekt haben, einen Bonus von +1 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349480, - "modifiedTime": 1740227862723, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8D01Z1kDIDcsuVCn" -} diff --git a/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json b/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json deleted file mode 100644 index ce6e43b3..00000000 --- a/packs/talents/Fieser_Schuss_srLA4jC8lsZbp3nT.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "srLA4jC8lsZbp3nT", - "name": "Fieser Schuss", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Schießen einen Angriff lang um den Wert von Agilität erhöhen. Es ist möglich, mehrere Talentränge in einem einzigen Schuß zu vereinen. Zielzauber profitieren nicht von diesem Talent.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349648, - "modifiedTime": 1740227862744, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!srLA4jC8lsZbp3nT" -} diff --git a/packs/talents/Flink_v5axYsQQ2w57Iu4p.json b/packs/talents/Flink_v5axYsQQ2w57Iu4p.json deleted file mode 100644 index 73dfc36a..00000000 --- a/packs/talents/Flink_v5axYsQQ2w57Iu4p.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "v5axYsQQ2w57Iu4p", - "name": "Flink", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "fDKyU3R0ACgW9uw3", - "changes": [ - { - "key": "system.combatValues.movement.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Laufen +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!v5axYsQQ2w57Iu4p.fDKyU3R0ACgW9uw3" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist schnell und gut zu Fuß. Der Wert für Laufen wird pro Erwerb des Talents um 1 erhöht.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349653, - "modifiedTime": 1740227862744, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!v5axYsQQ2w57Iu4p" -} diff --git a/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json b/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json deleted file mode 100644 index a95dbee0..00000000 --- a/packs/talents/Friedvoller_Hieb_lvBKtlBcyVldzsrw.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "lvBKtlBcyVldzsrw", - "name": "Friedvoller Hieb", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen friedvollen Hieb mittels eines waffenlosen Angriffs ausführen. Das Resultat wird wie gewohnt ermittelt (also abzüglich der Abwehr), allerdings wird kein Schaden erzeugt, stattdessen ist das Opfer für 1 Runde pro letztendlich erhaltenem Schadenspunkt gelähmt.

\n

Wird das gelähmte Ziel anderweitig angegriffen, wozu auch geistesbeeinflussende Zauber u. ä. zählen, endet die Wirkung.

\n

Gegen Ziele, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349623, - "modifiedTime": 1740227862740, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lvBKtlBcyVldzsrw" -} diff --git a/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json b/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json deleted file mode 100644 index d1750511..00000000 --- a/packs/talents/Frontheiler_2jZY66sVnHSIFq7P.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "2jZY66sVnHSIFq7P", - "name": "Frontheiler", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Heiler einmal alle 24 Stunden die Abklingzeit eines Heilzaubers (so auch @Compendium[ds4.spells.duf86LKvOIyDXJbc]{Wiederbelebung}) ignorieren.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349456, - "modifiedTime": 1740227862720, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2jZY66sVnHSIFq7P" -} diff --git a/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json b/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json deleted file mode 100644 index 19fde36f..00000000 --- a/packs/talents/Genesung_UUYS4u0DmEbGzXxI.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "UUYS4u0DmEbGzXxI", - "name": "Genesung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "j6Npl52FgDvkTwk7", - "changes": [ - { - "key": "system.attributes.body.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Körper +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!UUYS4u0DmEbGzXxI.j6Npl52FgDvkTwk7" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

War ein Charakter vorübergehend tot und hat dadurch Punkte des Attributs KÖR eingebüßt, kann pro Talentrang +1 KÖR wiederhergestellt werden.

\n

Es ist mit diesem Talent nicht möglich, KÖR über den ursprünglichen Wert zu steigern.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349544, - "modifiedTime": 1740227862732, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!UUYS4u0DmEbGzXxI" -} diff --git a/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json b/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json deleted file mode 100644 index be421d9b..00000000 --- a/packs/talents/Ger_stet_nMxDermxN1pUziUJ.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "nMxDermxN1pUziUJ", - "name": "Gerüstet", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Jeder Rang dieses Talentes gestattet es dem Charakter, die nächste Klasse (Stoff, Leder, Kette, Platte) von Rüstungen zu tragen. So kann ein Kleriker, der das Talent erstmalig erwirbt, Rüstungen aus Kette wie ein Späher tragen (allerdings weiterhin keine Helme, DS4 S. 41), statt wie bislang nur Rüstungen aus Stoff oder Leder.

\n

Die normalen Abzügen durch die Rüstung in Höhe ihrer PA, beispielsweise beim Zaubern, bleiben allerdings bestehen. Um diese zu senken, wird das Talent @Compendium[ds4.talents.lXzQsIobk5yaZ47a]{Rüstzauberer} benötigt.

", - "rank": { - "base": 0, - "max": 2, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349626, - "modifiedTime": 1740227862740, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nMxDermxN1pUziUJ" -} diff --git a/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json b/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json deleted file mode 100644 index ab1eb747..00000000 --- a/packs/talents/Gezieltes_Gift_8nkrwGAE0HPoAAEm.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "8nkrwGAE0HPoAAEm", - "name": "Gezieltes Gift", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Attentäter kennt die Stellen, wo man im Kampf den Gegner treffen muss, damit ein Waffengift seine Wirkung ideal entfalten kann.

\n

Pro Talentrang werden bei seinen Angriffen mit vergifteten Waffen Schadensgifte um +2 Schaden, Betäubungsgifte um +2 Minuten und Lähmungsgifte um +2 Runden erhöht.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349482, - "modifiedTime": 1740227862723, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8nkrwGAE0HPoAAEm" -} diff --git a/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json b/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json deleted file mode 100644 index 73320c08..00000000 --- a/packs/talents/Gl_ckspilz_Y6nYTc9XJnmV9ZxX.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "Y6nYTc9XJnmV9ZxX", - "name": "Glückspilz", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein wahrer Glückspilz, kann er doch einmal pro Talentrang alle 24 Stunden einen Patzer ignorieren und den jeweiligen Wurf wiederholen.

\n

Sollte der neue Wurf ebenfalls ein Patzer sein, man aber über mehr als einen Talentrang verfügt, kann dieser ebenfalls ausgeglichen werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349556, - "modifiedTime": 1740227862734, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Y6nYTc9XJnmV9ZxX" -} diff --git a/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json b/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json deleted file mode 100644 index 6fae07b6..00000000 --- a/packs/talents/Handwerk_vnEDVqVCsZuf8NYN.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "vnEDVqVCsZuf8NYN", - "name": "Handwerk", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird für jede Handwerksart (Bogenbauer, Schreiner, Steinmetz, Waffenschmied usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Handwerk und erhält auf alle diesbezüglichen Proben, sei es um Gegenstände herzustellen oder beschädigte Ausrüstung zu reparieren (DS4 S. 88), einen Bonus von +3 pro Talentrang, den man für dieses Handwerk erworben hat.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349655, - "modifiedTime": 1740227862745, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!vnEDVqVCsZuf8NYN" -} diff --git a/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json b/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json deleted file mode 100644 index a478d97d..00000000 --- a/packs/talents/Heimlichkeit_sqGJRKlgFoD2vLCD.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "_id": "sqGJRKlgFoD2vLCD", - "name": "Heimlichkeit", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "MBeD0OrohtuDdSFy", - "changes": [ - { - "key": "system.checks.hide", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.pickPocket", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.sneak", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.search", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Heimlichkeitsproben +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!sqGJRKlgFoD2vLCD.MBeD0OrohtuDdSFy" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein geübter Schleicher und versteht sich darauf, nicht bemerkt zu werden.

\n

Er erhält +2 auf alle Proben, bei denen es darum geht, leise zu sein, sich zu verbergen, nicht bemerkt zu werden oder etwas heimlich zu tun, wie beispielsweise Taschendiebstahl.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349645, - "modifiedTime": 1740227862743, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sqGJRKlgFoD2vLCD" -} diff --git a/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json b/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json deleted file mode 100644 index 39130d3e..00000000 --- a/packs/talents/Heldengl_ck_WMXI5ckyEdlC29j4.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "WMXI5ckyEdlC29j4", - "name": "Heldenglück", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist wahrlich vom Glück gesegnet, kann er doch einmal pro Talentrang alle 24 Stunden einen beliebigen Würfelwurf wiederholen.

\n

Sollte das neue Wurfergebnis ebenfalls nicht gefallen, kann man erneut die Probe wiederholen, sofern man noch über weitere Talentränge verfügt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349548, - "modifiedTime": 1740227862733, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!WMXI5ckyEdlC29j4" -} diff --git a/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json b/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json deleted file mode 100644 index 6f8a550e..00000000 --- a/packs/talents/Herausforderer_der_Elemente_6YJLvjCIUmhqlaFb.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "6YJLvjCIUmhqlaFb", - "name": "Herausforderer der Elemente", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Elementarist einmal alle 24 Stunden die Abklingzeit des Zauberspruchs Elementar Harbeirufen (@Compendium[ds4.spells.9GBDoyVXPXjWoLix]{Erde}, @Compendium[ds4.spells.8BT2TqPHC0v2OzNe]{Feuer}, @Compendium[ds4.spells.PXIVHRBpLwlzrk3L]{Luft}, @Compendium[ds4.spells.ftDPIhLCVRLRpOix]{Wasser}) ignorieren. Alternativ kann dies auch bei einem Zauber angewendet werden, der Elementarschaden verursacht.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349472, - "modifiedTime": 1740227862722, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!6YJLvjCIUmhqlaFb" -} diff --git a/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json b/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json deleted file mode 100644 index 983da479..00000000 --- a/packs/talents/Herr_der_Elemente_w34myctr1EDmXSPI.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "w34myctr1EDmXSPI", - "name": "Herr der Elemente", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "UZeS8KqoBFS8oY35", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.damage && (@item.system.spellGroups.lightning || @item.system.spellGroups.earth || @item.system.spellGroups.water || @item.system.spellGroups.ice || @item.system.spellGroups.fire || @item.system.spellGroups.air)" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Elementarschadenszauber +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!w34myctr1EDmXSPI.UZeS8KqoBFS8oY35" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist geübt im Freisetzen elementarer Kräfte.

\n

Er erhält auf alle Zauber, die Schaden verursachen, der auf den Elementen Erde, Feuer, Luft (hierzu zählen auch Blitzzauber) oder Wasser (hierzu zählen auch Eiszauber) basiert, einen Bonus von +1 pro Talentrang.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349657, - "modifiedTime": 1740227862745, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!w34myctr1EDmXSPI" -} diff --git a/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json b/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json deleted file mode 100644 index 5e51d5c4..00000000 --- a/packs/talents/Hinterh_ltiger_Angriff_8apgKsktW4pyWmMq.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "8apgKsktW4pyWmMq", - "name": "Hinterhältiger Angriff", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Einmal pro Kampf kann der Attentäter einen Gegner mit einem hinterhältigen Angriff im Nahkampf attackieren, sofern er einen Dolch, ein Messer oder eine Würgewaffe (Draht, Schur usw.) dafür benutzt und das Opfer sich des Angriffs nicht gewahr ist. Dafür wird in dieser Runde sein Wert in Schlagen um GE – multipliziert mit dem Talentrang – erhöht.

\n

Wurde durch den hinterhältigen Angriff der Kampf eröffnet, kann das Ziel (sofern der hinterhältigen Angriff auch gelang) in dieser Runde nicht mehr agieren.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349481, - "modifiedTime": 1740227862723, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8apgKsktW4pyWmMq" -} diff --git a/packs/talents/Homonkulus_de0VlXllMzMK8lga.json b/packs/talents/Homonkulus_de0VlXllMzMK8lga.json deleted file mode 100644 index ad9a2885..00000000 --- a/packs/talents/Homonkulus_de0VlXllMzMK8lga.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "de0VlXllMzMK8lga", - "name": "Homonkulus", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Erzmagier erschafft Kraft seiner Magie einen kleinen, magischen, humanoiden Begleiter, der ihm beim Zaubern helfen kann.

\n

Der Homunkulus hat KÖR, AGI und GEI jeweils 4 und verfügt über 6 Punkte für Eigenschaften, die der Erzmagier frei verteilen kann.

\n

Homunkuli sind klein (halbe LK, zu treffen -2) und können nur Grunzlaute von sich geben, verstehen aber simple Worte und einsilbige Befehle ihres Erschaffers.

\n

Befindet sich der Homunkulus nicht mehr als AU x 5 (des Charakters) in Metern von dem Erzmagier entfernt, kann er ihm pro Talentrang einen aufteilbaren Bonus von +2 auf VE und/oder AU geben.

\n

Die genaue Verteilung kann der Erzmagier jede Runde als freie Handlung umändern. Es ist nicht möglich, die Talente @Compendium[ds4.talents.KwGcyAzyqbz7oiTl]{Vertrauter} oder @Compendium[ds4.talents.tkLyvmSYvVslMXVE]{Vertrautenband} auf Homunkuli anzuwenden.

\n

Homunkuli sind äußerst feige und scheuen den Kampf. Sie ergreifen die Flucht, sobald sie Schaden erhalten und kehren erst zu ihrem Erschaffer zurück, wenn die Gefahr vorüber ist, dann jedoch so schnell wie möglich. Dank der Fähigkeit, ihren Erschaffer und seine Gemütslage zu spüren, stellt dies für sie kein Problem dar.

\n

Stirbt ein Homunkulus, kann der Erzmagier innerhalb von W20 Stunden einen neuen erschaffen, sofern er in dieser Zeit Zugang zu einem Alchimistenlabor hat.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349576, - "modifiedTime": 1740227862736, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!de0VlXllMzMK8lga" -} diff --git a/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json b/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json deleted file mode 100644 index 8f33b059..00000000 --- a/packs/talents/Ich_muss_weg__42FNsShgm1B6MClC.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "42FNsShgm1B6MClC", - "name": "Ich muss weg!", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter in jedem Kampf für jeweils eine Runde sämtliche gegen ihn gerichteten Nahkampfangriffe komplett ignorieren.

\n

Dabei darf er aber seine Gegner nicht attackieren, sondern muss sich dabei um mindestens 2 m von ihnen entfernen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349462, - "modifiedTime": 1740227862720, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!42FNsShgm1B6MClC" -} diff --git a/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json b/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json deleted file mode 100644 index 8b9cc577..00000000 --- a/packs/talents/In_Deckung_cLkCx5hxP7rVYUqD.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "cLkCx5hxP7rVYUqD", - "name": "In Deckung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter versteht es, im Kampf geschickt in die Defensive zu gehen.

\n

Pro Talentrang werden in jeder Kampfrunde, in der er keine offensive Handlung unternimmt, alle Angriffe gegen ihn um 2 gesenkt, sofern er sich ihrer bewusst ist.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349573, - "modifiedTime": 1740227862736, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!cLkCx5hxP7rVYUqD" -} diff --git a/packs/talents/Instrument_Nu7TKGp987s5mHA0.json b/packs/talents/Instrument_Nu7TKGp987s5mHA0.json deleted file mode 100644 index 53777987..00000000 --- a/packs/talents/Instrument_Nu7TKGp987s5mHA0.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "Nu7TKGp987s5mHA0", - "name": "Instrument", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird für jedes Instrument (Flöte, Mandoline, Harfe, Trommel usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Instrument und erhält auf alle diesbezüglichen Proben einen Bonus von +3 pro Talentrang, den man für dieses Instrument erworben hat.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349529, - "modifiedTime": 1740227862730, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Nu7TKGp987s5mHA0" -} diff --git a/packs/talents/J_ger_61Dz3XpStwlMfsbL.json b/packs/talents/J_ger_61Dz3XpStwlMfsbL.json deleted file mode 100644 index 1201dc4c..00000000 --- a/packs/talents/J_ger_61Dz3XpStwlMfsbL.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_id": "61Dz3XpStwlMfsbL", - "name": "Jäger", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "1YQV8nWWzoU30KHR", - "changes": [ - { - "key": "system.checks.startFire", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.readTracks", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Jagdproben +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!61Dz3XpStwlMfsbL.1YQV8nWWzoU30KHR" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter wandert oft durch die Wildnis und erhält durch dieses Talent +2 auf Proben, mit denen Spuren gelesen, Wild gejagt oder die richtige Marschrichtung wiedergefunden werden soll.

\n

Pro Talentrang kann außerdem eine Mahlzeit (von denen 3 einer Tagesration entsprechen) problemlos beschafft werden (Beeren pflücken, Kleintier erlegen usw.).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349470, - "modifiedTime": 1740227862721, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!61Dz3XpStwlMfsbL" -} diff --git a/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json b/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json deleted file mode 100644 index c431fd1f..00000000 --- a/packs/talents/K_mpfer_6z0JXGEqdzDTWQ7f.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "6z0JXGEqdzDTWQ7f", - "name": "Kämpfer", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "XkW7XqOCXg2e4OTo", - "changes": [ - { - "key": "system.combatValues.meleeAttack.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Schlagen +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!6z0JXGEqdzDTWQ7f.XkW7XqOCXg2e4OTo" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein geübter Nahkämpfer: Er erhält pro Talentrang auf Schlagen einen Bonus von +1.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349475, - "modifiedTime": 1740227862722, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!6z0JXGEqdzDTWQ7f" -} diff --git a/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json b/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json deleted file mode 100644 index 16ca561e..00000000 --- a/packs/talents/Kann_ich_mal_vorbei__XNjKX9xKkktkwAHk.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "XNjKX9xKkktkwAHk", - "name": "Kann ich mal vorbei?", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Meisterdieb kann einmal alle 24 Stunden pro Talentrang eine Zielperson durch Ansprechen, Vorbeidrängeln etc. derart ablenken, dass sämtliche Bemerken-Proben gegen Taschendiebstahl u.ä. dieser Person für Talentrang in Runden um die Stufe des Meisterdiebes erschwert werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349551, - "modifiedTime": 1740227862733, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XNjKX9xKkktkwAHk" -} diff --git a/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json b/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json deleted file mode 100644 index 0b1a5d3c..00000000 --- a/packs/talents/Kletterass_l0le4xG5t0gUh2Y1.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "l0le4xG5t0gUh2Y1", - "name": "Kletterass", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "GlAlx4yvg5rCHu20", - "changes": [ - { - "key": "system.checks.climb", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Klettern +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!l0le4xG5t0gUh2Y1.GlAlx4yvg5rCHu20" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter erhält auf alle Klettern- Probe einen Bonus von +2 pro Talentrang und die normale Klettergeschwindigkeit von Laufen/2 wird pro Talentrang um 1 m erhöht.

\n

Außerdem kann der Charakter an überhängenden Wänden oder gar kopfüber an Decken ganz „normal“ klettern (also diesbezügliche Mali ignorieren), sofern diese nicht gänzlich eben sind, sondern über Vorsprünge, Stalagtiten, Mauerfugen o. ä. verfügen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349617, - "modifiedTime": 1740227862739, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!l0le4xG5t0gUh2Y1" -} diff --git a/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json b/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json deleted file mode 100644 index 1764a520..00000000 --- a/packs/talents/Knechtschaft_Bp7OVgurG40CR1Mw.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "Bp7OVgurG40CR1Mw", - "name": "Knechtschaft", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter jeder selbst beschworenen bzw. selbst herbeigerufenen Wesenheit eine weitere Frage stellen bzw. einen weiteren Auftrag erteilen und die Zeit, die das Wesen ihm dienen muss, um 1 Stunde verlängern.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349493, - "modifiedTime": 1740227862725, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Bp7OVgurG40CR1Mw" -} diff --git a/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json b/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json deleted file mode 100644 index 4b816f97..00000000 --- a/packs/talents/Kraft_der_Bestie_lim7XMqSaQ0nrHkO.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "lim7XMqSaQ0nrHkO", - "name": "Kraft der Bestie", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Druide alle seine zur Verfügung stehenden Kampfwerte in @Compendium[ds4.talents.sSKiZ5hdQMBnAYRA]{Adler-}, @Compendium[ds4.talents.8pylauN1hY933vrQ]{Bären-} oder @Compendium[ds4.talents.iP5aZcqriVLjdVcd]{Tiergestalt} um jeweils +2 erhöhen.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349622, - "modifiedTime": 1740227862740, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lim7XMqSaQ0nrHkO" -} diff --git a/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json b/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json deleted file mode 100644 index 80096ef3..00000000 --- a/packs/talents/Kreiszeichner_sqWBOfkvuv7ZTrVM.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "sqWBOfkvuv7ZTrVM", - "name": "Kreiszeichner", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein Meister im Zeichnen von Beschwörungskreisen und kann pro Talentrang 2 weitere Stunden Arbeit in sie investieren. Zusätzlich wird der Zeitaufwand von jeder Stunden, die an dem Kreis gezeichnet wird, um 15 Minuten pro Talentrang gesenkt. Außerdem gewährt das Talent +1 pro Talentrang beim Beschwören, selbst wenn dies nur mit einem improvisierten Beschwörungskreis geschieht.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349647, - "modifiedTime": 1740227862743, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!sqWBOfkvuv7ZTrVM" -} diff --git a/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json b/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json deleted file mode 100644 index 929b6977..00000000 --- a/packs/talents/Langfinger_pDPVZpnhvlabmcvT.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "pDPVZpnhvlabmcvT", - "name": "Langfinger", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Bei Versuchen, Leute zu bestehlen, kann der Meisterdieb einmal alle 24 Stunden pro Talentrang AGI zu seiner Probe auf Taschendiebstahl dazu addieren.

\n

Es ist möglich, mehrere Talentränge in einer einzelnen Probe zu vereinen. Ebenso ist es natürlich mit @Compendium[ds4.talents.VqzpRGrHclPSGLP0]{Diebeskunst} kombinierbar.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349632, - "modifiedTime": 1740227862742, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pDPVZpnhvlabmcvT" -} diff --git a/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json b/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json deleted file mode 100644 index 14301cf4..00000000 --- a/packs/talents/M_chtige_Beschw_rung_pEH7q5M85j50f45J.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "pEH7q5M85j50f45J", - "name": "Mächtige Beschwörung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Dämonologe Punkte in Höhe von seinem Wert in GEI bei jedem seiner beschworenen Dämonen auf dessen Kampfwerte beliebig verteilen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349635, - "modifiedTime": 1740227862742, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pEH7q5M85j50f45J" -} diff --git a/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json b/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json deleted file mode 100644 index ffad02c9..00000000 --- a/packs/talents/M_chtige_Erweckung_2zY11r1tKxBzNB0e.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "2zY11r1tKxBzNB0e", - "name": "Mächtige Erweckung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Nekromant Punkte in Höhe von GEI/2 auf die Kampfwerte eines jeden von ihm erweckten Untoten beliebig verteilen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349457, - "modifiedTime": 1740227862720, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!2zY11r1tKxBzNB0e" -} diff --git a/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json b/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json deleted file mode 100644 index 91c9e47d..00000000 --- a/packs/talents/M_chtige_Herbeirufung_wpZ1LCG8nLu4PSc9.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "wpZ1LCG8nLu4PSc9", - "name": "Mächtige Herbeirufung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Elementarist Punkte in Höhe von seinem Wert in GEI bei jedem seiner herbeigerufenen Elementare auf dessen Kampfwerte beliebig verteilen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349657, - "modifiedTime": 1740227862745, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!wpZ1LCG8nLu4PSc9" -} diff --git a/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json b/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json deleted file mode 100644 index 58c888cc..00000000 --- a/packs/talents/Macht_des_Blutes_AM8Wp2ZVwWgbUXQz.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "AM8Wp2ZVwWgbUXQz", - "name": "Macht des Blutes", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Blutmagier einmal pro Tag den Probenwert einer beliebigen Probe um den Wert ihres enthaltenen Attributs erhöhen.

\n

Beispielsweise könnte der Probenwert einer Klettern-Probe (AGI+ST) um den Wert in Agilität erhöht werden.

\n

Es ist möglich, mehrere Talentränge in einer einzigen Probe zu vereinen.

\n

Allerdings erhält der Blutmagier jedesmal beim Einsatz des Talents 2 Punkte nicht abwehrbaren Schaden pro eingesetzten Talentrang.

\n

Eine Kombination mit dem Talent @Compendium[ds4.talents.XiwLao8lZi3JL0ku]{Zaubermacht} ist möglich (dessen dabei eingesetzte Talentränge verursachen aber keinen Schaden beim Blutmagier).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349491, - "modifiedTime": 1740227862725, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!AM8Wp2ZVwWgbUXQz" -} diff --git a/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json b/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json deleted file mode 100644 index cfb75b6e..00000000 --- a/packs/talents/Macht_des_Blutes_bu9alxaRfnzzTyX1.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "bu9alxaRfnzzTyX1", - "name": "Macht des Blutes", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Blutmagier einmal pro Tag den Probenwert einer beliebigen Probe um den Wert ihres enthaltenen Attributs erhöhen. Beispielsweise könnte der Probenwert einer Klettern-Probe (AGI+ST) um den Wert in Agilität erhöht werden. Es ist möglich, mehrere Talentränge in einer einzigen Probe zu vereinen. Allerdings erhält der Blutmagier jedesmal beim Einsatz des Talents 2 Punkte nicht abwehrbaren Schaden pro eingesetzten Talentrang.

\n

Eine Kombination mit dem Talent @Compendium[ds4.talents.XiwLao8lZi3JL0ku]{Zaubermacht} ist möglich (dessen dabei eingesetzte Talentränge verursachen aber keinen Schaden beim Blutmagier).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349571, - "modifiedTime": 1740227862736, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!bu9alxaRfnzzTyX1" -} diff --git a/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json b/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json deleted file mode 100644 index 7d41d059..00000000 --- a/packs/talents/Magieresistent_yMVciLvr77vbTw6r.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "yMVciLvr77vbTw6r", - "name": "Magieresistent", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Gegen den Charakter gerichtete Zauber werden um +2 pro Talentrang erschwert. Dies gilt jedoch nicht für Zauber, die Elementarschaden (beispielsweise mit Blitzen, Eis oder Feuer) verursachen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349660, - "modifiedTime": 1740227862746, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yMVciLvr77vbTw6r" -} diff --git a/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json b/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json deleted file mode 100644 index b2583540..00000000 --- a/packs/talents/Manipulator_Mz5glQvRowlF5U8X.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "Mz5glQvRowlF5U8X", - "name": "Manipulator", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "WS2cnABb8FYRhtpJ", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.mindAffecting" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Geistesbeeinflusende Zauber +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!Mz5glQvRowlF5U8X.WS2cnABb8FYRhtpJ" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein Meister der magischen Beeinflussung des Geistes.

\n

Er erhält auf alle geistesbeeinflussenden Zauber einen Bonus von +1.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349524, - "modifiedTime": 1740227862729, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Mz5glQvRowlF5U8X" -} diff --git a/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json b/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json deleted file mode 100644 index 5e60c9d7..00000000 --- a/packs/talents/Meister_aller_Klassen_nbDef1IPNyYcXmua.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "nbDef1IPNyYcXmua", - "name": "Meister aller Klassen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann eines seiner drei Attribute (KÖR, AGI oder GEI) um +1 steigern.

", - "rank": { - "base": 0, - "max": 1, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349627, - "modifiedTime": 1740227862741, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!nbDef1IPNyYcXmua" -} diff --git a/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json b/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json deleted file mode 100644 index 0a1a380d..00000000 --- a/packs/talents/Meister_seiner_Klasse_DUexlPzqyH2xPxYP.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "DUexlPzqyH2xPxYP", - "name": "Meister seiner Klasse", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann das primäre Attribut seiner Klasse um +1 steigern:

\n

Krieger steigern KÖR, Späher steigern AGI und Zauberwirker steigern GEI.

", - "rank": { - "base": 0, - "max": 1, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349495, - "modifiedTime": 1740227862725, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!DUexlPzqyH2xPxYP" -} diff --git a/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json b/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json deleted file mode 100644 index 21ae69ae..00000000 --- a/packs/talents/Meucheln_G3fbdAorLMCa2hGu.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "G3fbdAorLMCa2hGu", - "name": "Meucheln", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Senkt die Abwehr des Gegners gegen Schaden durch das Talent @Compendium[ds4.talents.8apgKsktW4pyWmMq]{Hinterhältiger Angriff} um 5 pro Talentrang.

\n

Gegen Ziele, die 2+ Größenkategorien (DS4 S. 104) größer sind, ist das Talent wirkungslos.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349500, - "modifiedTime": 1740227862726, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!G3fbdAorLMCa2hGu" -} diff --git a/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json b/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json deleted file mode 100644 index d673a966..00000000 --- a/packs/talents/Nekromantie_oxWYfqhbcsDoaaUJ.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "oxWYfqhbcsDoaaUJ", - "name": "Nekromantie", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "pgGKKWy5nLTSdp8l", - "changes": [ - { - "key": "system.spellModifier.numerical", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.spellGroups.necromancy" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Nekromantie +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!oxWYfqhbcsDoaaUJ.pgGKKWy5nLTSdp8l" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kennt sich sehr gut mit nekromantischen Zaubern aus.

\n

Er erhält auf alle Zauber, die Untote bannen, erwecken oder kontrollieren, einen Bonus von +2 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349628, - "modifiedTime": 1740227862741, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!oxWYfqhbcsDoaaUJ" -} diff --git a/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json b/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json deleted file mode 100644 index cb33bd76..00000000 --- a/packs/talents/Panzerung_zerschmettern_PRkbeuKFTWd8Ja3Q.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "PRkbeuKFTWd8Ja3Q", - "name": "Panzerung zerschmettern", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Jedesmal, wenn ein Charakter mit einem Nahkampfangriff bei einem Gegner Schaden verursacht, sinkt der PA-Wert eines zufällig zu ermittelnden Rüstungsteils des Opfers um 1 Punkt pro Talentrang.

\n

Welches einzelne Rüstungsteil der getragenen Panzerung betroffen ist, wird zufällig ermittelt.

\n

Wird dabei ein magisches Rüstungsteil getroffen, zeigt das Talent allerdings keine Wirkung.

\n

Sinkt der PA-Wert eines Rüstungsteils auf Null oder niedriger, gilt es als zerstört, kann aber von einem findigen Handwerker wieder repariert werden (DS4 S. 88).

\n

Gegen natürliche Rüstungen (Chitinpanzer, Drachenschuppen, Hornpanzer u. ä.) ist das Talent dagegen wirkungslos.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349533, - "modifiedTime": 1740227862731, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!PRkbeuKFTWd8Ja3Q" -} diff --git a/packs/talents/Parade_8wHCsoZEQp3rScWe.json b/packs/talents/Parade_8wHCsoZEQp3rScWe.json deleted file mode 100644 index f1858811..00000000 --- a/packs/talents/Parade_8wHCsoZEQp3rScWe.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "8wHCsoZEQp3rScWe", - "name": "Parade", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter hat gelernt, die Nahkampfangriffe seiner Gegner zu parieren.

\n

Sofern er eine Nahkampfwaffe gezogen hat, erhält der Charakter pro Talentrang +1 auf seine Abwehr gegen jeden Nahkampfangriff, dessen er sich bewusst ist und der nicht von hinten erfolgt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349485, - "modifiedTime": 1740227862724, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!8wHCsoZEQp3rScWe" -} diff --git a/packs/talents/Perfektion_iI1SP1214SpIzBCW.json b/packs/talents/Perfektion_iI1SP1214SpIzBCW.json deleted file mode 100644 index 05d91fce..00000000 --- a/packs/talents/Perfektion_iI1SP1214SpIzBCW.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "iI1SP1214SpIzBCW", - "name": "Perfektion", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann die Boni auf Schlagen und Gegnerabwehr eines bereits erworbenen @Compendium[ds4.talents.v9ocoi91dKJahAe3]{Waffenkennertalents} für eine einzelne Waffenart pro Talentrang um +1 steigern.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349607, - "modifiedTime": 1740227862738, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iI1SP1214SpIzBCW" -} diff --git a/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json b/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json deleted file mode 100644 index 73443373..00000000 --- a/packs/talents/Pr_gler_GVuVyP3uLw3Fkiwf.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "GVuVyP3uLw3Fkiwf", - "name": "Prügler", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Wird bei einem Angriff mit stumpfen Waffen, Äxten oder zweihändigen Waffen ein Immersieg erzielt, wird die Abwehr des Gegners gegen diesen Angriff pro Talentrang um 5 gesenkt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349501, - "modifiedTime": 1740227862726, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GVuVyP3uLw3Fkiwf" -} diff --git a/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json b/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json deleted file mode 100644 index 57003939..00000000 --- a/packs/talents/Pr_ziser_Schuss_NSBiWy4FTIu6Y2Vv.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "NSBiWy4FTIu6Y2Vv", - "name": "Präziser Schuss", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Späher einmal alle 24 Stunden mit einem Fernkampfangriff einen präzisen Schuss abfeuern, gegen den keine Abwehr gewürfelt wird.

\n

Der präzise Schuss muss vor dem Würfeln der Schießen-Probe angesagt werden und kann pro Talentrang mit einem Talentrang eines anderen Talents (beispielsweise @Compendium[ds4.talents.srLA4jC8lsZbp3nT]{Fieser Schuss}) kombiniert werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349527, - "modifiedTime": 1740227862730, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NSBiWy4FTIu6Y2Vv" -} diff --git a/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json b/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json deleted file mode 100644 index e44d7675..00000000 --- a/packs/talents/R_sttr_ger_3AkPGw4beW52LIAY.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "3AkPGw4beW52LIAY", - "name": "Rüstträger", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist es gewohnt, schwere Rüstung zu tragen und sich in ihr zu bewegen. Der durch Rüstung verursachte Malus auf Laufen wird pro Talentrang um 0,5 gemindert.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349459, - "modifiedTime": 1740227862720, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!3AkPGw4beW52LIAY" -} diff --git a/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json b/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json deleted file mode 100644 index 728700bd..00000000 --- a/packs/talents/R_stzauberer_lXzQsIobk5yaZ47a.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "lXzQsIobk5yaZ47a", - "name": "Rüstzauberer", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "BBiQrltkYi3Jo0Am", - "changes": [ - { - "key": "system.armorValueSpellMalus", - "mode": 2, - "value": "-2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Panzerungs-Zaubermalus -2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!lXzQsIobk5yaZ47a.BBiQrltkYi3Jo0Am" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann ein Panzerungsmalus (PA) in Höhe von 2 beim Zaubern/Zielzaubern ignoriert werden. Beispielsweise benötigt es 2 Talentränge, um ungehindert in einem @Compendium[ds4.equipment.t13RJoXrsS0HAyIQ]{Plattenpanzer} (PA 3) samt @Compendium[ds4.equipment.fKhTsMO4YXDYY8GX]{Metallhelm} (PA 1) zaubern zu können.

", - "rank": { - "base": 0, - "max": 1, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349620, - "modifiedTime": 1740227862740, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lXzQsIobk5yaZ47a" -} diff --git a/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json b/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json deleted file mode 100644 index 8f373674..00000000 --- a/packs/talents/Raserei_pC1K0VHWTpaJqwtt.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_id": "pC1K0VHWTpaJqwtt", - "name": "Raserei", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "YPU4v5VXXeRcscmP", - "changes": [ - { - "key": "system.combatValues.meleeAttack.total", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": true, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Schlagen +2, Abwehr -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!pC1K0VHWTpaJqwtt.YPU4v5VXXeRcscmP" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Berserker kann pro Talentrang seine Abwehr um 1 Punkt mindern und dadurch seinen Wert in Schlagen um +2 erhöhen.

\n

Diese Umschichtung kann jede Runde geändert werden (zählt als freie Aktion).

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349631, - "modifiedTime": 1740227862741, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!pC1K0VHWTpaJqwtt" -} diff --git a/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json b/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json deleted file mode 100644 index 6bb6ee60..00000000 --- a/packs/talents/Reiten_bA8wUU0bKouuxkQ5.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "bA8wUU0bKouuxkQ5", - "name": "Reiten", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "d5V2GjfkccIubrfY", - "changes": [ - { - "key": "system.checks.ride", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Reiten +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!bA8wUU0bKouuxkQ5.d5V2GjfkccIubrfY" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Charaktere mit diesem Talent haben reiten gelernt, können also problemlos die Richtung oder Geschwindigkeit ihres Reittieres um einen Schritt ändern und vom Pferderücken aus angreifen (DS4 S. 92).

\n

Pro Talentrang erhalten sie bei Sprüngen oder Proben, um die Reitrichtung oder die Geschwindigkeit um mehr als einen Schritt zu wechseln, einen Bonus von +2. Im berittenen Kampf erhalten sie pro Talentrang +1 auf Schlagen-Proben gegen unberittene Gegner.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349567, - "modifiedTime": 1740227862736, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!bA8wUU0bKouuxkQ5" -} diff --git a/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json b/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json deleted file mode 100644 index 7dd98e7c..00000000 --- a/packs/talents/Ritual_der_Narben_g4XI9wikUdxoCFNg.json +++ /dev/null @@ -1,102 +0,0 @@ -{ - "_id": "g4XI9wikUdxoCFNg", - "name": "Ritual der Narben", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "t1DVGkDGOwrjFccz", - "changes": [ - { - "key": "system.combatValues.defense.total", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.combatValues.hitPoints.total", - "mode": 2, - "value": "-1", - "priority": null - }, - { - "key": "system.checks.flirt", - "mode": 2, - "value": "-1", - "priority": null - }, - { - "key": "system.checks.haggle", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Abwehr +2, soziale Proben -1, Lebenskraft -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!g4XI9wikUdxoCFNg.t1DVGkDGOwrjFccz" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang erhält der Charakter permanent einen magischen Bonus von +2 auf seine Abwehr. Die gesamte Haut des Charakters ist nach diesem Ritual durch vernarbte Runen entstellt, was ihm bei Proben auf soziale Interaktion einen Malus von -1 pro Talentrang einbringt. Außerdem hat das Ritual seinen Preis:

\n

Der Charakter verliert pro Talentrang permanent 1 Punkt Lebenskraft (LK).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349592, - "modifiedTime": 1740227862737, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!g4XI9wikUdxoCFNg" -} diff --git a/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json b/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json deleted file mode 100644 index 0fd81e0d..00000000 --- a/packs/talents/Rundumschlag_RTLVQgPmjiPDdTFw.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "RTLVQgPmjiPDdTFw", - "name": "Rundumschlag", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann mit einer Zweihandwaffe per Rundumschlag pro Talentrang einen weiteren, angrenzende Gegner mit seinem Schlag treffen. Für jeden weiteren Feind, den er per Rundumschlag treffen will, wird der Schlagen-Wert (es wird nur eine einzige Probe für den ganzen Rundumschlag gewürfelt) um 1 und die Abwehr um 2 gesenkt, bis der Charakter wieder an der Reihe ist.

\n

Kampfmönche können dieses Talent nur waffenlos in Verbindung mit dem Talent @Compendium[ds4.talents.1VAiKGCnqKfNC8AE]{Waffenloser Meister} benutzen. Dabei kann der Talentrang von Rundumschlag nie höher sein als der von Waffenloser Meister.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349541, - "modifiedTime": 1740227862732, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RTLVQgPmjiPDdTFw" -} diff --git a/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json b/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json deleted file mode 100644 index ebb1583c..00000000 --- a/packs/talents/Runenkunde_t56WOCnxZwQWhajW.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "t56WOCnxZwQWhajW", - "name": "Runenkunde", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird benötigt, will man Schriftrollen herstellen (DS4 S. 101). Jeder Talentrang reduziert die Zubereitungsdauer von Schriftrollen und gibt +1 auf Proben, um diese zu fertigen, oder gefundene Schriftrollen zu identifizieren. Es handelt sich bei den magischen Runen auf einer Schriftrolle um keine tatsächlichen Schriftzeichen, die man lesen, geschweige denn übersetzen könnte.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349649, - "modifiedTime": 1740227862744, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!t56WOCnxZwQWhajW" -} diff --git a/packs/talents/Salve_zvZelUv5qQz3adKN.json b/packs/talents/Salve_zvZelUv5qQz3adKN.json deleted file mode 100644 index de3724db..00000000 --- a/packs/talents/Salve_zvZelUv5qQz3adKN.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "zvZelUv5qQz3adKN", - "name": "Salve", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Einmal pro Kampf kann der Charakter mit einer Fernkampfwaffe einen zusätzlichen Schuss pro Talentrang abfeuern. Bei mehreren Talenträngen können die zusätzlichen Schüsse alle zusammen in einer Runde gebündelt abgefeuert werden oder aufgeteilt in einzelnen Runden.

\n

Die einzelnen Schüsse werden dabei als eigenständige Angriffe behandelt, können also beispielsweise nicht mehrfach durch das Talent @Compendium[ds4.talents.srLA4jC8lsZbp3nT]{Fieser Schuss} aufgebessert werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349663, - "modifiedTime": 1740227862747, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!zvZelUv5qQz3adKN" -} diff --git a/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json b/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json deleted file mode 100644 index 7e2a6014..00000000 --- a/packs/talents/Sattelsch_tze_IIvsBSAqFFUFqALo.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "IIvsBSAqFFUFqALo", - "name": "Sattelschütze", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent gestattet dem Charakter, während des Reitens mit einer Schusswaffe zu schießen, die mit beiden Händen gehalten wird.

\n

Dennoch gibt es bei diesem schwierigen Manöver immer noch einen Malus von -5 im Trab und -10 im Galopp auf die Schießen-Probe (DS4 S. 92).

\n

Durch den zweiten und dritten Talentrang in Sattelschütze kann dieser Malus jedoch um jeweils 5 gemindert werden.

\n

Der Charakter benötigt mindestens einen Talentrang im Talent @Compendium[ds4.talents.bA8wUU0bKouuxkQ5]{Reiten}, um Sattelschütze erwerben zu können.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349506, - "modifiedTime": 1740227862727, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!IIvsBSAqFFUFqALo" -} diff --git a/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json b/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json deleted file mode 100644 index d66e0616..00000000 --- a/packs/talents/Sch_tze_GWVLcfQ2fm3Hc0zP.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_id": "GWVLcfQ2fm3Hc0zP", - "name": "Schütze", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "v4ruKzcrriNyrgvE", - "changes": [ - { - "key": "system.combatValues.rangedAttack.total", - "mode": 2, - "value": "1", - "priority": null - }, - { - "key": "system.combatValues.targetedSpellcasting.total", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Schießen und Zielzauber +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!GWVLcfQ2fm3Hc0zP.v4ruKzcrriNyrgvE" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein geübter Fernkämpfer: Er erhält auf Schießen und Zielzauber einen Bonus von +1 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349503, - "modifiedTime": 1740227862726, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!GWVLcfQ2fm3Hc0zP" -} diff --git a/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json b/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json deleted file mode 100644 index dfdbeb05..00000000 --- a/packs/talents/Scharfsch_tze_OYneDZJStjhuDp41.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "OYneDZJStjhuDp41", - "name": "Scharfschütze", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "jJ2oSM9Bs4dDApiH", - "changes": [ - { - "key": "system.opponentDefenseForAttackType.ranged", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'weapon' && ('@item.system.attackType' === 'ranged' || '@item.system.attackType' === 'meleeRanged')" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Gegnerabwehr bei Fernkampfangriffen", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!OYneDZJStjhuDp41.jJ2oSM9Bs4dDApiH" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Im Fernkampf zielt der Charakter auf die verletzliche Körperpartien seines Ziels:

\n

Die Abwehr des Gegners wird gegen die Fernkampfangriffe des Charakters mittels Schießen um 1 pro Talentrang gesenkt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349532, - "modifiedTime": 1740227862731, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!OYneDZJStjhuDp41" -} diff --git a/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json b/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json deleted file mode 100644 index 94112359..00000000 --- a/packs/talents/Schlachtruf_jmjtmMy7DnG205xR.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "jmjtmMy7DnG205xR", - "name": "Schlachtruf", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal pro Kampf als freie Aktion einen Schlachtruf ausstoßen, der auf ihn und drei Kameraden pro Talentrang in Hörweite wirkt:

\n

Durch den Schlachtruf ermutigt, erhalten sie für W20/2 Runden einen Bonus von +1 pro Talentrang auf alle Angriffe.

\n

Ein Charakter kann immer nur von einem Schlachtruf profitieren.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349612, - "modifiedTime": 1740227862739, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!jmjtmMy7DnG205xR" -} diff --git a/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json b/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json deleted file mode 100644 index 8dfbe444..00000000 --- a/packs/talents/Schlitzohr_lDqu4RpV5Nr6BnPW.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "lDqu4RpV5Nr6BnPW", - "name": "Schlitzohr", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "ZFoibqksWVXEfiOB", - "changes": [ - { - "key": "system.checks.haggle", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Feilschen +3", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!lDqu4RpV5Nr6BnPW.ZFoibqksWVXEfiOB" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Auf alle Proben sozialer Interaktion, bei denen geblufft, gefeilscht oder verhandelt wird, erhält der Charakter einen Bonus von +3 pro Talentrang.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349619, - "modifiedTime": 1740227862739, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!lDqu4RpV5Nr6BnPW" -} diff --git a/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json b/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json deleted file mode 100644 index ac9ffcc0..00000000 --- a/packs/talents/Schlossknacker_NR3BzKbROxHjpGrs.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "_id": "NR3BzKbROxHjpGrs", - "name": "Schlossknacker", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "8JquYZA8S06MnE0n", - "changes": [ - { - "key": "system.checks.openLock", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.workMechanism", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Schloss/Mechanismus öffnen +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!NR3BzKbROxHjpGrs.8JquYZA8S06MnE0n" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang erhält der Charakter einen Bonus von +2 auf sämtliche Proben, um Schlösser zu öffnen.

\n

Außerdem kann pro Talentrang ein weiteres Mal versucht werden, ein und das selbe Schloss zu öffnen, ohne bereits einen Malus zu erhalten (DS4 S. 93).

\n

Schlossknacker ist mit dem @Compendium[ds4.talents.VqzpRGrHclPSGLP0]{Diebeskunst} kombinierbar.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349526, - "modifiedTime": 1740227862729, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!NR3BzKbROxHjpGrs" -} diff --git a/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json b/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json deleted file mode 100644 index 18f087e3..00000000 --- a/packs/talents/Schmerzhafter_Wechsel_YPFshcSE5pZS0dto.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "YPFshcSE5pZS0dto", - "name": "Schmerzhafter Wechsel", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal pro Kampf zu einem beliebigen, nicht aktiven Zauber wechseln (zählt als freie Aktion), wodurch er jedoch augenblicklich W20/2 abwehrbaren Schaden erleidet.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349557, - "modifiedTime": 1740227862734, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!YPFshcSE5pZS0dto" -} diff --git a/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json b/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json deleted file mode 100644 index 3e73d9d8..00000000 --- a/packs/talents/Schnelle_Reflexe_TQG9TbBb9S0nHogC.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "TQG9TbBb9S0nHogC", - "name": "Schnelle Reflexe", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "XEVDTsOyhPJIytd9", - "changes": [ - { - "key": "system.combatValues.initiative.total", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Initiative +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!TQG9TbBb9S0nHogC.XEVDTsOyhPJIytd9" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann schnell reagieren. Im Kampf erhält er pro Talentrang einen Bonus von +2 auf seine Initiative.

\n

Zusätzlich kann man pro Talentrang einmal im Kampf eine Waffe als freie Aktion ziehen, wechseln oder vom Boden aufheben.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349543, - "modifiedTime": 1740227862732, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!TQG9TbBb9S0nHogC" -} diff --git a/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json b/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json deleted file mode 100644 index 9d36c4d7..00000000 --- a/packs/talents/Schnutz_vor_Elementen_yCHMzXoqCRrNU5Br.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "yCHMzXoqCRrNU5Br", - "name": "Schnutz vor Elementen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann jederzeit die Wirkung der Außentemperatur auf ihn um bis zu 15 °C pro Talentrang variieren und damit für ihn den Aufenthalt in besonders kalten oder heißen Gebieten angenehmer zu machen.

\n

Pro Talentrang kann er diese Wirkung auf zwei willige Gefährten in VE Meter Umkreis ausdehnen.

\n

Außerdem kann er pro Talentrang einmal alle 24 Stunden – als freie Aktion – seine Abwehr gegen Elementarschaden (beispielsweise durch Blitz-, Eis- oder Feuerzauber), gegen den ein Abwehrwurf zulässig ist (also beispielsweise nicht beim Zauberspruch @Compendium[ds4.spells.ifRUXwqnjd1SCcRG]{Feuerball}), pro Talentrang um 5 erhöhen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349659, - "modifiedTime": 1740227862746, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!yCHMzXoqCRrNU5Br" -} diff --git a/packs/talents/Schwimmen_RJauLusDDQWo77JU.json b/packs/talents/Schwimmen_RJauLusDDQWo77JU.json deleted file mode 100644 index f3ffdb58..00000000 --- a/packs/talents/Schwimmen_RJauLusDDQWo77JU.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "RJauLusDDQWo77JU", - "name": "Schwimmen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "neVzXXAck47nnOFM", - "changes": [ - { - "key": "system.checks.swim", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Schwimmen +3", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!RJauLusDDQWo77JU.neVzXXAck47nnOFM" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann schwimmen (DS4 S. 93) und erhält pro Talentrang auf alle diesbezüglichen Proben +3.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349536, - "modifiedTime": 1740227862732, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!RJauLusDDQWo77JU" -} diff --git a/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json b/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json deleted file mode 100644 index bac43876..00000000 --- a/packs/talents/Sehnenschneider_s37iJhz4IQVhCWbe.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "s37iJhz4IQVhCWbe", - "name": "Sehnenschneider", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann im Kampf einmal pro Talentrang einem Gegner die „Sehnen schneiden“. Er muss dies vor dem entsprechendem Nahkampfangriff ansagen. Für diese Aktion wird die Abwehr des Charakters halbiert, bis er in der nächsten Kampfrunde wieder an der Reihe ist.

\n

Wird beim Gegner ein Schaden erzielt, wird dieser Schaden halbiert und der Laufen- Wert des Gegners um 0,5 pro Talentrang gesenkt. Wird kein Schaden verursacht, zählt dies nicht als Talenteinsatz und ein erneuter Versuch ist möglich. Die Verletzung kann nur auf magische Weise geheilt werden (einfachste Heilmagie reicht allerdings).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349640, - "modifiedTime": 1740227862743, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!s37iJhz4IQVhCWbe" -} diff --git a/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json b/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json deleted file mode 100644 index 48aa9407..00000000 --- a/packs/talents/Sensensp_tter_7ZBxxxx32wacXkHS.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "7ZBxxxx32wacXkHS", - "name": "Sensenspötter", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Nekromant kann dem Tod ein Schnippchen schlagen:

\n

Sobald er regeltechnisch stirbt, kann er noch eine weitere Runde pro Talentrang handeln, als ober er noch am Leben wäre, vorausgesetzt, er ist nicht enthauptet, explodiert, zerstampft u. ä.

\n

Sollte der Nekromant bei Eintritt des Todes bereits bewusstlos sein, bleibt er dies weiterhin, kann allerdings in dieser Zeit verarztet und geheilt werden, als wäre er noch am Leben.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349479, - "modifiedTime": 1740227862723, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!7ZBxxxx32wacXkHS" -} diff --git a/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json b/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json deleted file mode 100644 index cae74e81..00000000 --- a/packs/talents/Spruchmeister_JldVU3O4mmDWqk8s.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "JldVU3O4mmDWqk8s", - "name": "Spruchmeister", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Zauberwirker kann einmal alle 24 Stunden die Abklingzeit eines bestimmten Zauberspruchs ignorieren. Bei Erwerb eines Talentranges muss festgelegt werden, um welchen Zauber es sich dabei handelt. Werden mehrere Talentränge in ein und den selben Zauberspruch investiert, kann seine Abklingzeit einmal mehr pro Talentrang innerhalb der 24 Stunden ignoriert werden. Zaubersprüche, deren reguläre Abklingzeit mehr als 24 Stunden beträgt, können nicht gewählt werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349511, - "modifiedTime": 1740227862728, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!JldVU3O4mmDWqk8s" -} diff --git a/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json b/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json deleted file mode 100644 index 52b3f3c1..00000000 --- a/packs/talents/Stabbindung_soobr7uyQgDm3DoN.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "soobr7uyQgDm3DoN", - "name": "Stabbindung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird rangweise an einen bestimmten Kampfstab gebunden – so kann der Charakter beispielsweise in einen Kampfstab zwei Talentränge investieren und einen dritten Talentrang beispielsweise in einen Ersatzkampfstab.

\n

Der Kampfstab wird durch diesen Vorgang magisch, zerbricht also nicht einfach bei einem Schlagen-Patzer.

\n

Pro jeweiligen Talentrang erhält der Charakter +1 auf Zielzauber (zusätzlich zu dem normalen, nichtmagischen +1 Bonus des Kampfstabs), sofern er den Stab hält.

\n

Desweiteren bindet er pro investierten Talentrang einen seiner Zauber an den Stab, wodurch er den Kampfstab wie einen Zauberstab für diesen Zauber benutzen kann. Wird ein Kampfstab wider Erwarten zerstört, sind die investierten Talentränge nicht verloren und können – nach Ablauf von W20 Wochen – an einen anderen Stab gebunden werden.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349644, - "modifiedTime": 1740227862743, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!soobr7uyQgDm3DoN" -} diff --git a/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json b/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json deleted file mode 100644 index 37c3072e..00000000 --- a/packs/talents/Standhaft_5LXCr1G1Hmx622V0.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "5LXCr1G1Hmx622V0", - "name": "Standhaft", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang sinkt die Lebenskraft-Grenze, ab der ein Charakter bewusstlos wird, um jeweils 3.

\n

Ein Charakter mit Standhaft III wird also erst mit -9 LK bewusstlos, statt schon bei Null. Alles natürlich nur unter der Voraussetzung, dass man so viele negative LK auch überleben kann (DS4 S. 42).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349463, - "modifiedTime": 1740227862720, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5LXCr1G1Hmx622V0" -} diff --git a/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json b/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json deleted file mode 100644 index 0f35e0ba..00000000 --- a/packs/talents/Teufelchen_5nve4XNc1bJdfZNN.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "5nve4XNc1bJdfZNN", - "name": "Teufelchen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Beschwörer erhält pro Talentrang ein kleines, fliegendes Teufelchen als Begleiter, das ihn im Kampf unterstützt. Teufelchen können nur Knurrlaute von sich geben, verstehen aber simple Worte und einsilbige Befehle ihres Beschwörers.

\n

Sobald der Charakter es befiehlt oder das Teufelchen über weniger als 1 LK verfügt, kehrt es zurück auf seine Existenzebene, von wo es erst nach frühestens W20 Stunden wiederkehren kann, sofern der Charakter dies wünscht.

\n

Es ist nicht möglich, die Talente @Compendium[ds4.talents.KwGcyAzyqbz7oiTl]{Vertrauter} oder @Compendium[ds4.talents.tkLyvmSYvVslMXVE]{Vertrautenband} auf ein Teufelchen anzuwenden.

\n

Es gibt drei Arten von Teufelchen (@Compendium[ds4.creatures.aqbcBjeCJUHJ5uVj]{Teufelchen I}, @Compendium[ds4.creatures.SxbO1iTrXYGbdMoC]{Teufelchen II}, @Compendium[ds4.creatures.22pkyKnZoRLG0nnY]{Teufelchen III}), auf die man durch weitere Talentränge Zugang erhält. Bei Erwerb eines Talentranges wird festgelegt, um was für ein Teufelchen es sich dabei handelt. Es ist auch immer möglich, ein rangniedrigeres Teufelchen erneut auszuwählen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349466, - "modifiedTime": 1740227862721, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!5nve4XNc1bJdfZNN" -} diff --git a/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json b/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json deleted file mode 100644 index fc81ef13..00000000 --- a/packs/talents/Tiergestalt_iP5aZcqriVLjdVcd.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "iP5aZcqriVLjdVcd", - "name": "Tiergestalt", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Druide kann sich pro Talentrang einmal alle 24 Stunden samt seiner Ausrüstung (magische Boni von Gegenständen wirken dadurch weiterhin) in ein Tier der Größenkategorie „normal“ (DS4 S. 104) oder kleiner verwandeln, wie beispielsweise eine Maus, eine Katze oder ein Wolf, aber keine magischen, giftigen oder flugfähigen Tiere.

\n

Die Verwandlung dauert eine Runde und kann jederzeit rückgängig gemacht werden, erlittener Schaden bleibt nach der Rückverwandlung gänzlich bestehen.

\n

GEI, VE und AU des Druiden verändern sich in Tiergestalt nicht, jedoch nehmen alle anderen Attribute, Eigenschaften und Kampfwerte die Werte des Tieres an, nicht jedoch Spezialangriffe wie beispielsweise den Giftbiss einer Schlange.

\n

In Tiergestalt ist es dem Druiden nicht möglich, zu sprechen oder zu zaubern, wohl aber, Gesprochenes zu verstehen und die Sinne des Tieres einzusetzen.

\n

Zauber, die beispielsweise Tiere kontrollieren, haben auf den verwandelten Druiden keinen Einfluss.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349608, - "modifiedTime": 1740227862738, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!iP5aZcqriVLjdVcd" -} diff --git a/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json b/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json deleted file mode 100644 index 781bb6ca..00000000 --- a/packs/talents/Tiermeister_IfyKb7y4YoUTssTs.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "IfyKb7y4YoUTssTs", - "name": "Tiermeister", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "oelEFuhY9y6DsxXO", - "changes": [ - { - "key": "system.checks.ride", - "mode": 2, - "value": "3", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Reiten +3", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!IfyKb7y4YoUTssTs.oelEFuhY9y6DsxXO" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter hat ein Gespür für Tiere und erhält auf alle Proben im Umgang mit ihnen +3 (dieser Bonus zählt auch auf Reiten-Proben, um die Reitgeschwindigkeit oder die Richtung zu ändern).

\n

Einmal alle 24 Stunden pro Talentrang kann er außerdem eine beliebige Anzahl wilder, aggressiver oder selbst ausgehungerter Tiere dazu bringen, ihn und zwei Begleiter pro Talentrang zu verschonen (es sei denn, sie greifen ihrerseits die Tiere an).

\n

Dies ist auch bei tollwütigen oder kontrollierten Tieren möglich, sofern hier dem Charakter eine Probe gegen GEI+AU+Talentrang gelingt (zählt als ganze Aktion, ein Versuch pro Talentrang).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349508, - "modifiedTime": 1740227862727, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!IfyKb7y4YoUTssTs" -} diff --git a/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json b/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json deleted file mode 100644 index 196fe661..00000000 --- a/packs/talents/Tod_entrinnen_9hpucJC8WArBiXUR.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "9hpucJC8WArBiXUR", - "name": "Tod entrinnen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Sobald der Charakter weniger als 1 LK besitzt, aber immer noch lebt, heilt er automatisch nach 5 Runden (-1 Runde pro Talentrang) 1 LK pro Talentrang pro Runde.

\n

Sobald seine LK wieder im positiven Bereich sind, endet der Heileffekt und der Charakter ist augenblicklich voll einsatzfähig.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349487, - "modifiedTime": 1740227862724, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!9hpucJC8WArBiXUR" -} diff --git a/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json b/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json deleted file mode 100644 index 6c6905b2..00000000 --- a/packs/talents/Todeskraft_Q98LHOFZmKVoafp8.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "Q98LHOFZmKVoafp8", - "name": "Todeskraft", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Immer wenn in Reichweite von 2+Talentrang in Metern ein Lebewesen, von mindestens „kleiner“ Größenkategorie (DS4 S. 104), zu Tode kommt, regeneriert der Nekromant 2 LK pro Talentrang in Todeskraft.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349534, - "modifiedTime": 1740227862731, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!Q98LHOFZmKVoafp8" -} diff --git a/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json b/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json deleted file mode 100644 index 5db467c8..00000000 --- a/packs/talents/Totenrufer_rbHZFVutiQ25glBq.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "rbHZFVutiQ25glBq", - "name": "Totenrufer", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Nekromant einmal alle 24 Stunden die Abklingzeit eines Zaubers zum Erwecken von Untoten ignorieren.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349639, - "modifiedTime": 1740227862742, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rbHZFVutiQ25glBq" -} diff --git a/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json b/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json deleted file mode 100644 index 790af2b5..00000000 --- a/packs/talents/Uners_ttliches_Beschw_ren_fIrcapAlXMqto18X.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "fIrcapAlXMqto18X", - "name": "Unersättliches Beschwören", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Dämonologe einmal alle 24 Stunden die Abklingzeit des Zauberspruchs Dämonen beschwören ignorieren.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349586, - "modifiedTime": 1740227862737, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!fIrcapAlXMqto18X" -} diff --git a/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json b/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json deleted file mode 100644 index e75f912c..00000000 --- a/packs/talents/Untote_Horden_FoY7VbBTatyHOrb8.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "FoY7VbBTatyHOrb8", - "name": "Untote Horden", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang erhöht sich die Anzahl der erweckbaren und kontrollierbaren Untoten (entspricht der Stufe des Charakters) um 3.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349498, - "modifiedTime": 1740227862725, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!FoY7VbBTatyHOrb8" -} diff --git a/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json b/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json deleted file mode 100644 index a5937dea..00000000 --- a/packs/talents/Untote_zerschmettern_ml6GkLIsqDII9Mcp.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "ml6GkLIsqDII9Mcp", - "name": "Untote zerschmettern", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal alle 24 Stunden einen Nahkampfangriff gegen einen Untoten führen, der nicht abgewehrt werden kann.

\n

Vor dem Angriffswurf muss angesagt werden, dass das Talent zum Einsatz kommen soll, welches mit Talenten wie @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} und/oder @Compendium[ds4.talents.AT9Bi7Tsr8k3HujP]{Vergeltung} kombiniert werden kann.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349624, - "modifiedTime": 1740227862740, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!ml6GkLIsqDII9Mcp" -} diff --git a/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json b/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json deleted file mode 100644 index 6f52e489..00000000 --- a/packs/talents/Verdr_cken_inRlUNgoiaHm4pf6.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "inRlUNgoiaHm4pf6", - "name": "Verdrücken", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter kann sich bei den Aktionen Aufstehen und Rennen zusätzlich um einen Meter pro Talentrang bewegen.

\n

Zusätzlich kann er, gefesselt oder in Ketten gelegt, zweimal pro Talentrang versuchen, sich mit AGI+BE aus einer Fessel oder Schelle zu winden (man benötigt beispielsweise 2 erfolgreiche Proben, um beide Hände aus Handschellen zu befreien).

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349610, - "modifiedTime": 1740227862738, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!inRlUNgoiaHm4pf6" -} diff --git a/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json b/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json deleted file mode 100644 index 00baf5d0..00000000 --- a/packs/talents/Vergeltung_AT9Bi7Tsr8k3HujP.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "AT9Bi7Tsr8k3HujP", - "name": "Vergeltung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Im Kampf kann der Charakter einmal pro Talentrang seinen Wert in Schlagen für eine Runde um seinen vierfachen Talentrang in @Compendium[ds4.talents.hAfZhfLqCjPvho3u]{Diener der Dunkelheit} bzw. @Compendium[ds4.talents.Wwvj3V65hIe0JWul]{Diener des Lichts} erhöhen.

\n

Es ist nicht mögliche, mehrere Talentränge von Vergeltung in einer einzelnen Probe zu vereinen.

\n

Eine Kombination mit Talenten wie beispielsweise @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb} ist allerdings uneingeschränkt möglich.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349492, - "modifiedTime": 1740227862725, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!AT9Bi7Tsr8k3HujP" -} diff --git a/packs/talents/Verheerer_6oXmRM21CLfELqKv.json b/packs/talents/Verheerer_6oXmRM21CLfELqKv.json deleted file mode 100644 index a1b05c4e..00000000 --- a/packs/talents/Verheerer_6oXmRM21CLfELqKv.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "6oXmRM21CLfELqKv", - "name": "Verheerer", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "aqgIfpGWXYeXn1y6", - "changes": [ - { - "key": "system.opponentDefense", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'spell' && @item.system.allowsDefense" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Gegnerabwehr bei Zaubern/Zielzaubern -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!6oXmRM21CLfELqKv.aqgIfpGWXYeXn1y6" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter versteht es, seine Magie verheerend einzusetzen:

\n

Die Abwehr des Gegners wird gegen Schaden durch die Zauberangriffe des Charakters (mittels Zaubern oder Zielzaubern) um 1 pro Talentrang gesenkt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349474, - "modifiedTime": 1740227862722, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!6oXmRM21CLfELqKv" -} diff --git a/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json b/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json deleted file mode 100644 index f3b1b9a8..00000000 --- a/packs/talents/Verletzen_dtynnRNkxg59Nqz4.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "dtynnRNkxg59Nqz4", - "name": "Verletzen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "x1FVRsSyjHwOfYRs", - "changes": [ - { - "key": "system.opponentDefenseForAttackType.melee", - "mode": 2, - "value": "-1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": true, - "itemName": "", - "condition": "'@item.type' === 'weapon' && ('@item.system.attackType' === 'melee' || '@item.system.attackType' === 'meleeRanged')" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Gegnerabwehr bei Nahkampfangriffen -1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!dtynnRNkxg59Nqz4.x1FVRsSyjHwOfYRs" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Im Nahkampf zielt der Charakter auf die verletzlichen Körperpartien seines Gegenübers:

\n

Die Abwehr des Gegners wird gegen die Nahkampfangriffe des Charakters mittels Schlagen um 1 pro Talentrang gesenkt.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349581, - "modifiedTime": 1740227862736, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!dtynnRNkxg59Nqz4" -} diff --git a/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json b/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json deleted file mode 100644 index ff0cf6be..00000000 --- a/packs/talents/Vernichtender_Schlag_tmFeIA1PSVHqGGjx.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "tmFeIA1PSVHqGGjx", - "name": "Vernichtender Schlag", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "rK7expqsrPV5t8f1", - "changes": [ - { - "key": "system.checks.featOfStrength", - "mode": 2, - "value": "1", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Kraftakt +1", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!tmFeIA1PSVHqGGjx.rK7expqsrPV5t8f1" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Krieger einmal alle 24 Stunden mit einem Nahkampfangriff einen vernichtenden Schlag ausführen, gegen den keine Abwehr gewürfelt wird.

\n

Der vernichtende Schlag muss vor dem Würfeln der Schlagen-Probe angekündigt werden und kann pro Talentrang mit maximal einem Talentrang eines anderen Talents (beispielsweise @Compendium[ds4.talents.ZnT8LMCRqZS3zpJO]{Brutaler Hieb}) kombiniert werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349652, - "modifiedTime": 1740227862744, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tmFeIA1PSVHqGGjx" -} diff --git a/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json b/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json deleted file mode 100644 index cb3e0f49..00000000 --- a/packs/talents/Vertrautenband_tkLyvmSYvVslMXVE.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "tkLyvmSYvVslMXVE", - "name": "Vertrautenband", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Schafft ein besonderes Band zwischen dem Charakter und einem einzelnen seiner Vertrauten, wodurch beide sich telepathisch miteinander verständigen (einfache Kommunikation wie „Gefahr?“, „Flieh!“ oder „Hilf mir!“) können.

\n

Zusätzlich wird pro Talentrang ein Bonus von +3 auf die Eigenschaften des Vertrauten verteilt.

\n

Jedesmal, wenn der Charakter um eine Stufe aufsteigt, erhält dieses Tier außerdem +1 auf eine beliebige Eigenschaft. Wird das Tier getötet, erlischt das Band, wird jedoch bei Wiederbelebung des Tieres erneuert. Ist dies nicht der Fall, sind die Talentränge nicht verloren und können für ein neues Vertrautenband mit einem anderen Vertrauten eingesetzt werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349650, - "modifiedTime": 1740227862744, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!tkLyvmSYvVslMXVE" -} diff --git a/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json b/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json deleted file mode 100644 index 68c8dcf0..00000000 --- a/packs/talents/Vertrauter_KwGcyAzyqbz7oiTl.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "KwGcyAzyqbz7oiTl", - "name": "Vertrauter", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang schließt sich Spähern ein Tier (Falke, Hund, Pferd, Wolf usw.), Zauberwirkern ein Kleintier (Katze, Kröte, Rabe usw.) und Paladinen ein Schlachtross an. Ein Druide kann jede Art von Tier bis Größenkategorie “groß” (DS4 S. 104) wählen.

\n

Die treuen Tiere befolgen einfache, einsilbige Befehle wie „Platz!“ und „Fass!“ und haben Verstand +1, auch wenn mit ihnen keine intelligente Kommunikation möglich ist und sie auch nicht zum heimlichen Auskundschaften etc. abgerichtet werden können. Ein Vertrauter gewährt seinem Besitzer, sofern er nicht mehr als AU x 5 (des Charakters) in Metern von ihm entfernt ist, einen Bonus von +1 auf einen von zwei Kampfwerten:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KlasseVertrautenbonus
SpäherInitiative oder Schießen
ZauberwirkerZaubern oder Zielzaubern
PaladinAbwehr oder Schlagen
\n

Der zu erhöhende Kampfwert wird bei Erhalt des Vertrauten ausgewählt.

\n

Wird ein Vertrauter getötet, erleidet der Charakter im selben Moment W20/2 nicht abwehrbaren Schaden und der Bonus auf den Kampfwert erlischt. Wird der Vertraute nicht wiederbelebt, kann für seinen Talentrang ein neuer Vertrauter gewählt werden, allerdings erst nach frühestens W20 Wochen. Bis dahin hat der Charakter temporär KÖR-1.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349514, - "modifiedTime": 1740227862728, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!KwGcyAzyqbz7oiTl" -} diff --git a/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json b/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json deleted file mode 100644 index 8dce687b..00000000 --- a/packs/talents/Waffenkenner_v9ocoi91dKJahAe3.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "v9ocoi91dKJahAe3", - "name": "Waffenkenner", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter besondere Kenntnisse im Umgang mit einer bestimmten Art von Nahkampfwaffe erlangen (beispielsweise Dolche, Langschwerter oder Streitäxte).

\n

Er erhält im Kampf mit dieser Waffenart Schlagen +1 und die Abwehr des Gegners wird um 1 gesenkt. Es ist nicht möglich, Waffenkenner mehrmals für ein und dieselbe Waffenart zu erlangen, jedoch kann der Talentrang mit Hilfe des Talents @Compendium[ds4.talents.iI1SP1214SpIzBCW]{Perfektion} weiter ausgebaut werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349654, - "modifiedTime": 1740227862745, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!v9ocoi91dKJahAe3" -} diff --git a/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json b/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json deleted file mode 100644 index 105c2318..00000000 --- a/packs/talents/Waffenloser_Meister_1VAiKGCnqKfNC8AE.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "1VAiKGCnqKfNC8AE", - "name": "Waffenloser Meister", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Kampfmönch ist ein Meister des waffenlosen Kampfes, der WB seiner unbewaffneten Angriffe beträgt +1 pro Talentrang.

\n

Der normalerweise gültige Bonus von +5 auf Abwehr gegen waffenlose Angriffe entfällt bei seinen Gegnern, deren Abwehr außerdem noch pro Talentrang um 1 gesenkt wird. Außerdem erhält ein waffenloser Meister +1 auf Abwehr und Initiative pro Talentrang, sofern er keinen Schild und keine Art von Rüstungen bis auf Stoff trägt.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349448, - "modifiedTime": 1740227862719, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!1VAiKGCnqKfNC8AE" -} diff --git a/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json b/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json deleted file mode 100644 index 11b17c5a..00000000 --- a/packs/talents/Wahrnehmung_aojENPok9Guo3JN1.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "_id": "aojENPok9Guo3JN1", - "name": "Wahrnehmung", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "qxrTP7Cs4mFS7lLU", - "changes": [ - { - "key": "system.checks.perception", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.wakeUp", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.decipherScript", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.readTracks", - "mode": 2, - "value": "2", - "priority": null - }, - { - "key": "system.checks.search", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Wahrnehmungsproben +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!aojENPok9Guo3JN1.qxrTP7Cs4mFS7lLU" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter ist ein aufmerksamer Beobachter. Auf alle Bemerken-Proben erhält er +2 pro Talentrang.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349562, - "modifiedTime": 1740227862735, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!aojENPok9Guo3JN1" -} diff --git a/packs/talents/Wechsler_gwCc6niwZL45wklE.json b/packs/talents/Wechsler_gwCc6niwZL45wklE.json deleted file mode 100644 index 1903d92b..00000000 --- a/packs/talents/Wechsler_gwCc6niwZL45wklE.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "_id": "gwCc6niwZL45wklE", - "name": "Wechsler", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [ - { - "_id": "nxzOItIzbsdQSbby", - "changes": [ - { - "key": "system.checks.changeSpell", - "mode": 2, - "value": "2", - "priority": null - } - ], - "disabled": false, - "duration": { - "startTime": null, - "seconds": null, - "combat": null, - "rounds": null, - "turns": null, - "startRound": null, - "startTurn": null - }, - "transfer": true, - "flags": { - "ds4": { - "itemEffectConfig": { - "applyToItems": false, - "itemName": "", - "condition": "" - } - } - }, - "tint": "#ffffff", - "origin": null, - "name": "Zauber wechseln +2", - "description": "", - "statuses": [], - "_stats": { - "coreVersion": "12.331", - "systemId": null, - "systemVersion": null, - "createdTime": null, - "modifiedTime": null, - "lastModifiedBy": null, - "compendiumSource": null, - "duplicateSource": null - }, - "img": "icons/svg/aura.svg", - "type": "base", - "system": {}, - "sort": 0, - "_key": "!items.effects!gwCc6niwZL45wklE.nxzOItIzbsdQSbby" - } - ], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Charakter hat gelernt, sich auf das Auswechseln seines aktiven Zaubers zu konzentrieren: Er erhält auf Proben, um seine Zauber zu wechseln, pro Talentrang einen Bonus von +2.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349596, - "modifiedTime": 1740227862737, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!gwCc6niwZL45wklE" -} diff --git a/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json b/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json deleted file mode 100644 index fcd834ef..00000000 --- a/packs/talents/Wissensegebiet_IB1OJ65TseuSw9ZI.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "IB1OJ65TseuSw9ZI", - "name": "Wissensegebiet", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird für jedes Wissensgebiet (Alte Sagen, Mathematik, Naturkunde, Sternenkunde, Zwergische Religion usw.) individuell erlernt, kann also mehrmals bis Höchstrang III erworben werden.

\n

Man beherrscht das jeweilige Wissensgebiet und erhält auf alle diesbezüglichen Proben einen Bonus von +3 pro Talentrang, den man für dieses Wissensgebiet erworben hat.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349505, - "modifiedTime": 1740227862727, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!IB1OJ65TseuSw9ZI" -} diff --git a/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json b/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json deleted file mode 100644 index 0d85ea53..00000000 --- a/packs/talents/Zauber_ausl_sen_kZti1KQIbf4UPvI7.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "kZti1KQIbf4UPvI7", - "name": "Zauber auslösen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Meisterdieb kann, wie ein Zauberwirker, Zaubersprüche von Schriftrollen oder aus Zauberbüchern ablesen und dadurch auslösen, wodurch die Schrift des Zaubers verblasst und er verschwindet.

\n

Pro Talentrang wird eine der drei Zauberklassen Heiler, Zauberer oder Schwarzmagier gewählt und fortan kann der Charakter alle Zauber, die dieser Klasse zugänglich sind, unabhängig von seiner Stufe ablesen und auslösen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349613, - "modifiedTime": 1740227862739, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!kZti1KQIbf4UPvI7" -} diff --git a/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json b/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json deleted file mode 100644 index 2e93c1cb..00000000 --- a/packs/talents/Zaubermacht_XiwLao8lZi3JL0ku.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "XiwLao8lZi3JL0ku", - "name": "Zaubermacht", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang kann der Charakter einmal pro Kampf seinen Wert in Zaubern oder Zielzaubern eine Runde lang um den Wert von Geist erhöhen, sofern es sich dabei um einen Zauber handelt, der andere schädigt oder heilt. Es ist möglich, mehrere Talentränge in einem einzigen Zauber zu vereinen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349554, - "modifiedTime": 1740227862733, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!XiwLao8lZi3JL0ku" -} diff --git a/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json b/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json deleted file mode 100644 index f7693395..00000000 --- a/packs/talents/Zauberwaffe_rCRPchtSJye0K5nt.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "rCRPchtSJye0K5nt", - "name": "Zauberwaffe", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Dieses Talent wird pro Talentrang an eine bestimmte Nahkampfwaffe gebunden – so kann der Charakter beispielsweise in sein Lieblingsschwert zwei Talentränge investieren und einen dritten Talentrang beispielsweise in einen Bihänder. Pro Talentrang erhält der Charakter +1 auf Zielzaubern, sofern er die jeweilige Waffe in den Händen hält.

\n

Desweiteren kann er pro gebundenen Talentrang einen seiner Zauber an die Waffe binden, um sie wie einen Zauberstab für diesen Zauber zu nutzen. Wird eine Zauberwaffe zerstört, sind die investierten Talentränge nicht verloren und können (nach Ablauf von W20 Wochen) an eine andere Waffe gebunden werden.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349637, - "modifiedTime": 1740227862742, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rCRPchtSJye0K5nt" -} diff --git a/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json b/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json deleted file mode 100644 index 8403acbc..00000000 --- a/packs/talents/Zehrender_Spurt_qnYeR3a3LNUJ329t.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "qnYeR3a3LNUJ329t", - "name": "Zehrender Spurt", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Der Blutmagier kann für das Opfern von 1 LK (zählt als freie Aktion) seinen Wert in Laufen für W20/2 Runden um 2 m erhöhen. Pro weiterem Talentrang kann ein zusätzlicher LK geopfert werden, um Laufen um weitere 2 m zu erhöhen.

", - "rank": { - "base": 0, - "max": 3, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349636, - "modifiedTime": 1740227862742, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!qnYeR3a3LNUJ329t" -} diff --git a/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json b/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json deleted file mode 100644 index f65ab081..00000000 --- a/packs/talents/Zwei_Waffen_rXXw5aS0pCr5amWa.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "_id": "rXXw5aS0pCr5amWa", - "name": "Zwei Waffen", - "type": "talent", - "img": "icons/svg/item-bag.svg", - "effects": [], - "folder": null, - "sort": 0, - "flags": {}, - "system": { - "description": "

Pro Talentrang wird der Malus von -10 auf Schlagen und Abwehr beim Kampf mit zwei Waffen um jeweils 2 Punkte gemindert.

", - "rank": { - "base": 0, - "max": 5, - "mod": 0 - } - }, - "ownership": { - "default": 0 - }, - "_stats": { - "systemId": "ds4", - "systemVersion": "1.21.1", - "coreVersion": "12.331", - "createdTime": 1668995349638, - "modifiedTime": 1740227862742, - "lastModifiedBy": "uxmyzF1AAOHwjAmE", - "compendiumSource": null, - "duplicateSource": null - }, - "_key": "!items!rXXw5aS0pCr5amWa" -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 86fb9412..00000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,5332 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - devDependencies: - '@commitlint/cli': - specifier: 19.7.1 - version: 19.7.1(@types/node@18.19.76)(typescript@5.7.3) - '@commitlint/config-conventional': - specifier: 19.7.1 - version: 19.7.1 - '@eslint/js': - specifier: 9.21.0 - version: 9.21.0 - '@foundryvtt/foundryvtt-cli': - specifier: 1.0.4 - version: 1.0.4 - '@guanghechen/rollup-plugin-copy': - specifier: 6.0.4 - version: 6.0.4(rollup@4.34.8) - '@swc/core': - specifier: 1.10.18 - version: 1.10.18 - '@types/fs-extra': - specifier: 11.0.4 - version: 11.0.4 - '@types/jquery': - specifier: 3.5.32 - version: 3.5.32 - '@types/node': - specifier: 18.19.76 - version: 18.19.76 - conventional-changelog-cli: - specifier: 5.0.0 - version: 5.0.0(conventional-commits-filter@5.0.0) - conventional-changelog-conventionalcommits: - specifier: 8.0.0 - version: 8.0.0 - eslint: - specifier: 9.21.0 - version: 9.21.0(jiti@2.4.2) - eslint-config-prettier: - specifier: 10.0.1 - version: 10.0.1(eslint@9.21.0(jiti@2.4.2)) - fs-extra: - specifier: 11.3.0 - version: 11.3.0 - globals: - specifier: 16.0.0 - version: 16.0.0 - handlebars: - specifier: 4.7.8 - version: 4.7.8 - npm-run-all: - specifier: 4.1.5 - version: 4.1.5 - prettier: - specifier: 3.5.2 - version: 3.5.2 - rimraf: - specifier: 6.0.1 - version: 6.0.1 - rollup: - specifier: 4.34.8 - version: 4.34.8 - rollup-plugin-styler: - specifier: 2.0.0 - version: 2.0.0(rollup@4.34.8)(typescript@5.7.3) - rollup-plugin-swc3: - specifier: 0.12.1 - version: 0.12.1(@swc/core@1.10.18)(rollup@4.34.8) - sass: - specifier: 1.85.0 - version: 1.85.0 - semver: - specifier: 7.7.1 - version: 7.7.1 - tslib: - specifier: 2.8.1 - version: 2.8.1 - typescript: - specifier: 5.7.3 - version: 5.7.3 - typescript-eslint: - specifier: 8.24.1 - version: 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - vite: - specifier: 6.1.1 - version: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) - vitest: - specifier: 3.0.6 - version: 3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) - yargs: - specifier: 17.7.2 - version: 17.7.2 - -packages: - - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - - '@commitlint/cli@19.7.1': - resolution: {integrity: sha512-iObGjR1tE/PfDtDTEfd+tnRkB3/HJzpQqRTyofS2MPPkDn1mp3DBC8SoPDayokfAy+xKhF8+bwRCJO25Nea0YQ==} - engines: {node: '>=v18'} - hasBin: true - - '@commitlint/config-conventional@19.7.1': - resolution: {integrity: sha512-fsEIF8zgiI/FIWSnykdQNj/0JE4av08MudLTyYHm4FlLWemKoQvPNUYU2M/3tktWcCEyq7aOkDDgtjrmgWFbvg==} - engines: {node: '>=v18'} - - '@commitlint/config-validator@19.5.0': - resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} - engines: {node: '>=v18'} - - '@commitlint/ensure@19.5.0': - resolution: {integrity: sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==} - engines: {node: '>=v18'} - - '@commitlint/execute-rule@19.5.0': - resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} - engines: {node: '>=v18'} - - '@commitlint/format@19.5.0': - resolution: {integrity: sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==} - engines: {node: '>=v18'} - - '@commitlint/is-ignored@19.7.1': - resolution: {integrity: sha512-3IaOc6HVg2hAoGleRK3r9vL9zZ3XY0rf1RsUf6jdQLuaD46ZHnXBiOPTyQ004C4IvYjSWqJwlh0/u2P73aIE3g==} - engines: {node: '>=v18'} - - '@commitlint/lint@19.7.1': - resolution: {integrity: sha512-LhcPfVjcOcOZA7LEuBBeO00o3MeZa+tWrX9Xyl1r9PMd5FWsEoZI9IgnGqTKZ0lZt5pO3ZlstgnRyY1CJJc9Xg==} - engines: {node: '>=v18'} - - '@commitlint/load@19.6.1': - resolution: {integrity: sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==} - engines: {node: '>=v18'} - - '@commitlint/message@19.5.0': - resolution: {integrity: sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==} - engines: {node: '>=v18'} - - '@commitlint/parse@19.5.0': - resolution: {integrity: sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==} - engines: {node: '>=v18'} - - '@commitlint/read@19.5.0': - resolution: {integrity: sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==} - engines: {node: '>=v18'} - - '@commitlint/resolve-extends@19.5.0': - resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} - engines: {node: '>=v18'} - - '@commitlint/rules@19.6.0': - resolution: {integrity: sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==} - engines: {node: '>=v18'} - - '@commitlint/to-lines@19.5.0': - resolution: {integrity: sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==} - engines: {node: '>=v18'} - - '@commitlint/top-level@19.5.0': - resolution: {integrity: sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==} - engines: {node: '>=v18'} - - '@commitlint/types@19.5.0': - resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} - engines: {node: '>=v18'} - - '@conventional-changelog/git-client@1.0.1': - resolution: {integrity: sha512-PJEqBwAleffCMETaVm/fUgHldzBE35JFk3/9LL6NUA5EXa3qednu+UT6M7E5iBu3zIQZCULYIiZ90fBYHt6xUw==} - engines: {node: '>=18'} - peerDependencies: - conventional-commits-filter: ^5.0.0 - conventional-commits-parser: ^6.0.0 - peerDependenciesMeta: - conventional-commits-filter: - optional: true - conventional-commits-parser: - optional: true - - '@dual-bundle/import-meta-resolve@4.1.0': - resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} - - '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.19.2': - resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.12.0': - resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.0': - resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.21.0': - resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.2.7': - resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@fastify/deepmerge@2.0.0': - resolution: {integrity: sha512-fsaybTGDyQ5KpPsplQqb9yKdCf2x/pbNpMNk8Tvp3rRz7lVcupKysH4b2ELMN2P4Hak1+UqTYdTj/u4FNV2p0g==} - - '@foundryvtt/foundryvtt-cli@1.0.4': - resolution: {integrity: sha512-iEdNP3JbGwGQ0ZgawLFNCXvcSmSl2Xv/NjY2Fj35i+m0JYi1er9qfJl/hhECIEsrXG27tboEqbFXqFLMgXM4kg==} - engines: {node: '>17.0.0'} - hasBin: true - - '@guanghechen/chalk.types@1.0.3': - resolution: {integrity: sha512-Li14uVSkz4ZopzkANVZIZRCXHZdsfqZJ1loQli6Evme333Fp2e7Eo+ZTelgDVvyvfHMBh9pJixak4y+taBOnmg==} - - '@guanghechen/chalk@1.0.3': - resolution: {integrity: sha512-hTqwg1TioJdx8RfZI8e/V50oy3VaLWzwRUVJPZlNxbDlHVrPoAwH5b60P/Gr1rwMjfQESeVBiykepR7JkHeexg==} - - '@guanghechen/globby@1.0.2': - resolution: {integrity: sha512-lNj4TEIDxhkATP1COH8cyZfnfDteZ5Mk2jPg46mc3AblD0OQ5ihePOLYryOufENjaH7r2kLaGazeBAXyRJJGbQ==} - engines: {node: '>= 18.0.0'} - - '@guanghechen/rollup-plugin-copy@6.0.4': - resolution: {integrity: sha512-ytnHdaUAs3en3id8CZ/g1NEvtmlXUGEU1py3N8bR/vFKlZEFTcvh5VpuFUGalqJP+FWKy/g6xyPT4OBnLHHw1A==} - engines: {node: '>= 18.0.0'} - peerDependencies: - rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 - - '@guanghechen/std@1.0.4': - resolution: {integrity: sha512-jjFX1ud5AULLaF6koHuiIHZQMgGkwKi22D6LzkIea05zZ/I7MmR+HRzQ4+XkfcY2YvHbt9zMGyhBqJrQaiPi+w==} - engines: {node: '>= 18.0.0'} - - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} - engines: {node: '>=18.18'} - - '@hutson/parse-repository-url@5.0.0': - resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==} - engines: {node: '>=10.13.0'} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} - engines: {node: '>= 10.0.0'} - - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@rollup/pluginutils@5.1.2': - resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.34.8': - resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.34.8': - resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.34.8': - resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.34.8': - resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.34.8': - resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.34.8': - resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': - resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.34.8': - resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.34.8': - resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.34.8': - resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': - resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': - resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.34.8': - resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.34.8': - resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.34.8': - resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.34.8': - resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.34.8': - resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.34.8': - resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.34.8': - resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} - cpu: [x64] - os: [win32] - - '@seald-io/binary-search-tree@1.0.3': - resolution: {integrity: sha512-qv3jnwoakeax2razYaMsGI/luWdliBLHTdC6jU55hQt1hcFqzauH/HsBollQ7IR4ySTtYhT+xyHoijpA16C+tA==} - - '@seald-io/nedb@4.0.4': - resolution: {integrity: sha512-CUNcMio7QUHTA+sIJ/DC5JzVNNsHe743TPmC4H5Gij9zDLMbmrCT2li3eVB72/gF63BPS8pWEZrjlAMRKA8FDw==} - - '@swc/core-darwin-arm64@1.10.18': - resolution: {integrity: sha512-FdGqzAIKVQJu8ROlnHElP59XAUsUzCFSNsou+tY/9ba+lhu8R9v0OI5wXiPErrKGZpQFMmx/BPqqhx3X4SuGNg==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - - '@swc/core-darwin-x64@1.10.18': - resolution: {integrity: sha512-RZ73gZRituL/ZVLgrW6BYnQ5g8tuStG4cLUiPGJsUZpUm0ullSH6lHFvZTCBNFTfpQChG6eEhi2IdG6DwFp1lw==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - - '@swc/core-linux-arm-gnueabihf@1.10.18': - resolution: {integrity: sha512-8iJqI3EkxJuuq21UHoen1VS+QlS23RvynRuk95K+Q2HBjygetztCGGEc+Xelx9a0uPkDaaAtFvds4JMDqb9SAA==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - - '@swc/core-linux-arm64-gnu@1.10.18': - resolution: {integrity: sha512-8f1kSktWzMB6PG+r8lOlCfXz5E8Qhsmfwonn77T/OfjvGwQaWrcoASh2cdjpk3dydbf8jsKGPQE1lSc7GyjXRQ==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-arm64-musl@1.10.18': - resolution: {integrity: sha512-4rv+E4VLdgQw6zjbTAauCAEExxChvxMpBUMCiZweTNPKbJJ2dY6BX2WGJ1ea8+RcgqR/Xysj3AFbOz1LBz6dGA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - - '@swc/core-linux-x64-gnu@1.10.18': - resolution: {integrity: sha512-vTNmyRBVP+sZca+vtwygYPGTNudTU6Gl6XhaZZ7cEUTBr8xvSTgEmYXoK/2uzyXpaTUI4Bmtp1x81cGN0mMoLQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-linux-x64-musl@1.10.18': - resolution: {integrity: sha512-1TZPReKhFCeX776XaT6wegknfg+g3zODve+r4oslFHI+g7cInfWlxoGNDS3niPKyuafgCdOjme2g3OF+zzxfsQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - - '@swc/core-win32-arm64-msvc@1.10.18': - resolution: {integrity: sha512-o/2CsaWSN3bkzVQ6DA+BiFKSVEYvhWGA1h+wnL2zWmIDs2Knag54sOEXZkCaf8YQyZesGeXJtPEy9hh/vjJgkA==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - - '@swc/core-win32-ia32-msvc@1.10.18': - resolution: {integrity: sha512-eTPASeJtk4mJDfWiYEiOC6OYUi/N7meHbNHcU8e+aKABonhXrIo/FmnTE8vsUtC6+jakT1TQBdiQ8fzJ1kJVwA==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - - '@swc/core-win32-x64-msvc@1.10.18': - resolution: {integrity: sha512-1Dud8CDBnc34wkBOboFBQud9YlV1bcIQtKSg7zC8LtwR3h+XAaCayZPkpGmmAlCv1DLQPvkF+s0JcaVC9mfffQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - - '@swc/core@1.10.18': - resolution: {integrity: sha512-IUWKD6uQYGRy8w2X9EZrtYg1O3SCijlHbCXzMaHQYc1X7yjijQh4H3IVL9ssZZyVp2ZDfQZu4bD5DWxxvpyjvg==} - engines: {node: '>=10'} - peerDependencies: - '@swc/helpers': '*' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@swc/counter@0.1.3': - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - - '@swc/types@0.1.17': - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@types/conventional-commits-parser@5.0.0': - resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} - - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - - '@types/fs-extra@11.0.4': - resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} - - '@types/jquery@3.5.32': - resolution: {integrity: sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/jsonfile@6.1.1': - resolution: {integrity: sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==} - - '@types/node@18.19.76': - resolution: {integrity: sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==} - - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - '@types/semver@7.5.8': - resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - - '@types/sizzle@2.3.3': - resolution: {integrity: sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==} - - '@typescript-eslint/eslint-plugin@8.24.1': - resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/parser@8.24.1': - resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/scope-manager@8.24.1': - resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.24.1': - resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/types@8.24.1': - resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.24.1': - resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/utils@8.24.1': - resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - '@typescript-eslint/visitor-keys@8.24.1': - resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@vitest/expect@3.0.6': - resolution: {integrity: sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==} - - '@vitest/mocker@3.0.6': - resolution: {integrity: sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==} - peerDependencies: - msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - msw: - optional: true - vite: - optional: true - - '@vitest/pretty-format@3.0.6': - resolution: {integrity: sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==} - - '@vitest/runner@3.0.6': - resolution: {integrity: sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==} - - '@vitest/snapshot@3.0.6': - resolution: {integrity: sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==} - - '@vitest/spy@3.0.6': - resolution: {integrity: sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==} - - '@vitest/utils@3.0.6': - resolution: {integrity: sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==} - - JSONStream@1.3.5: - resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} - hasBin: true - - abstract-level@1.0.3: - resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} - engines: {node: '>=12'} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.14.0: - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} - engines: {node: '>=0.4.0'} - hasBin: true - - add-stream@1.0.0: - resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==} - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - - array-ify@1.0.0: - resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - - cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - - call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001469: - resolution: {integrity: sha512-Rcp7221ScNqQPP3W+lVOYDyjdR6dC+neEQCttoNr5bAyz54AboB4iwpnWgyi8P4YUsPybVzT4LgWiBbI3drL4g==} - - caniuse-lite@1.0.30001699: - resolution: {integrity: sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==} - - catering@2.1.1: - resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} - engines: {node: '>=6'} - - chai@5.2.0: - resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} - engines: {node: '>=12'} - - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - chalk@5.4.1: - resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} - engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - classic-level@1.4.1: - resolution: {integrity: sha512-qGx/KJl3bvtOHrGau2WklEZuXhS3zme+jf+fsu6Ej7W7IP/C49v7KNlWIsT1jZu0YnfzSIYDGcEWpCa1wKGWXQ==} - engines: {node: '>=12'} - - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - compare-func@2.0.0: - resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - conventional-changelog-angular@7.0.0: - resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} - engines: {node: '>=16'} - - conventional-changelog-angular@8.0.0: - resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==} - engines: {node: '>=18'} - - conventional-changelog-atom@5.0.0: - resolution: {integrity: sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==} - engines: {node: '>=18'} - - conventional-changelog-cli@5.0.0: - resolution: {integrity: sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==} - engines: {node: '>=18'} - hasBin: true - - conventional-changelog-codemirror@5.0.0: - resolution: {integrity: sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==} - engines: {node: '>=18'} - - conventional-changelog-conventionalcommits@7.0.2: - resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} - engines: {node: '>=16'} - - conventional-changelog-conventionalcommits@8.0.0: - resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} - engines: {node: '>=18'} - - conventional-changelog-core@8.0.0: - resolution: {integrity: sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==} - engines: {node: '>=18'} - - conventional-changelog-ember@5.0.0: - resolution: {integrity: sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==} - engines: {node: '>=18'} - - conventional-changelog-eslint@6.0.0: - resolution: {integrity: sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==} - engines: {node: '>=18'} - - conventional-changelog-express@5.0.0: - resolution: {integrity: sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==} - engines: {node: '>=18'} - - conventional-changelog-jquery@6.0.0: - resolution: {integrity: sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==} - engines: {node: '>=18'} - - conventional-changelog-jshint@5.0.0: - resolution: {integrity: sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==} - engines: {node: '>=18'} - - conventional-changelog-preset-loader@5.0.0: - resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} - engines: {node: '>=18'} - - conventional-changelog-writer@8.0.0: - resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} - engines: {node: '>=18'} - hasBin: true - - conventional-changelog@6.0.0: - resolution: {integrity: sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==} - engines: {node: '>=18'} - - conventional-commits-filter@5.0.0: - resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} - engines: {node: '>=18'} - - conventional-commits-parser@5.0.0: - resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} - engines: {node: '>=16'} - hasBin: true - - conventional-commits-parser@6.0.0: - resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==} - engines: {node: '>=18'} - hasBin: true - - cosmiconfig-typescript-loader@6.1.0: - resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} - engines: {node: '>=v18'} - peerDependencies: - '@types/node': '*' - cosmiconfig: '>=9' - typescript: '>=5' - - cosmiconfig@8.3.6: - resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - - cross-spawn@6.0.5: - resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} - engines: {node: '>=4.8'} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - css-declaration-sorter@7.2.0: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - - css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@2.3.1: - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@7.0.6: - resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano-utils@5.0.0: - resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - cssnano@7.0.6: - resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - dargs@8.1.0: - resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} - engines: {node: '>=12'} - - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decode-uri-component@0.4.1: - resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} - engines: {node: '>=14.16'} - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dot-prop@5.3.0: - resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} - engines: {node: '>=8'} - - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - - electron-to-chromium@1.5.101: - resolution: {integrity: sha512-L0ISiQrP/56Acgu4/i/kfPwWSgrzYZUnQrC0+QPFuhqlLP1Ir7qzPPDVS9BcKIyWTRU8+o6CC8dKw38tSWhYIA==} - - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - env-paths@2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - - error-ex@1.3.2: - resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - - es-abstract@1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.6.0: - resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} - - es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - - esbuild@0.24.2: - resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-config-prettier@10.0.1: - resolution: {integrity: sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-scope@8.2.0: - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.21.0: - resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - esm@3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - - espree@10.3.0: - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eventemitter3@5.0.1: - resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} - - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} - engines: {node: '>=12.0.0'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - filter-obj@5.1.0: - resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} - engines: {node: '>=14.16'} - - find-up-simple@1.0.0: - resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} - engines: {node: '>=18'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - find-up@7.0.0: - resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} - engines: {node: '>=18'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.2: - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} - - for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - - foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - - fs-extra@11.3.0: - resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} - engines: {node: '>=14.14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - - get-intrinsic@1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} - - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} - - git-raw-commits@4.0.0: - resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} - engines: {node: '>=16'} - hasBin: true - - git-raw-commits@5.0.0: - resolution: {integrity: sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==} - engines: {node: '>=18'} - hasBin: true - - git-semver-tags@8.0.0: - resolution: {integrity: sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==} - engines: {node: '>=18'} - hasBin: true - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob@11.0.0: - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} - engines: {node: 20 || >=22} - hasBin: true - - global-directory@4.0.1: - resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} - engines: {node: '>=18'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@16.0.0: - resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} - engines: {node: '>=18'} - - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - handlebars@4.7.8: - resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} - engines: {node: '>=0.4.7'} - hasBin: true - - has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - - has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hosted-git-info@2.8.9: - resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - - hosted-git-info@7.0.0: - resolution: {integrity: sha512-ICclEpTLhHj+zCuSb2/usoNXSVkxUSIopre+b1w8NDY9Dntp9LO4vLdHYI336TH8sAqwrRgnSfdkBG2/YpisHA==} - engines: {node: ^16.14.0 || >=18.0.0} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - - ignore@5.3.1: - resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} - engines: {node: '>= 4'} - - ignore@7.0.3: - resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} - engines: {node: '>= 4'} - - immediate@3.0.6: - resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - - immutable@5.0.3: - resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} - - import-fresh@3.3.0: - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} - engines: {node: '>=6'} - - import-meta-resolve@4.1.0: - resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - index-to-position@0.1.2: - resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} - engines: {node: '>=18'} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - ini@4.1.1: - resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - - internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} - - is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - - is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - - is-buffer@2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - - is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-obj@2.0.0: - resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} - engines: {node: '>=8'} - - is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - - is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - - is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - - is-text-path@2.0.0: - resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} - engines: {node: '>=8'} - - is-typed-array@1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - jackspeak@4.0.1: - resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} - engines: {node: 20 || >=22} - - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-better-errors@1.0.2: - resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - jsonparse@1.3.1: - resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} - engines: {'0': node >= 0.2.0} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - level-supports@4.0.1: - resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} - engines: {node: '>=12'} - - level-transcoder@1.0.1: - resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} - engines: {node: '>=12'} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lie@3.1.1: - resolution: {integrity: sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==} - - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - - localforage@1.10.0: - resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.isplainobject@4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - - lodash.kebabcase@4.1.1: - resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.mergewith@4.6.2: - resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} - - lodash.snakecase@4.1.1: - resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} - - lodash.startcase@4.4.0: - resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash.upperfirst@4.3.1: - resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} - - loupe@3.1.3: - resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} - - lru-cache@10.0.1: - resolution: {integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==} - engines: {node: 14 || >=16.14} - - lru-cache@11.0.0: - resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} - engines: {node: 20 || >=22} - - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} - - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.0.30: - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - - memorystream@0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - - meow@12.1.0: - resolution: {integrity: sha512-SvSqzS5ktjGoySdCwxQI16iO/ID1LtxM03QvJ4FF2H5cCtXLN7YbfKBCL9btqXSSuJ5TNG4UH6wvWtXZuvgvrw==} - engines: {node: '>=16.10'} - - meow@13.2.0: - resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} - engines: {node: '>=18'} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - minimatch@10.0.1: - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} - engines: {node: 20 || >=22} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true - - module-error@1.0.2: - resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} - engines: {node: '>=10'} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - napi-macros@2.2.2: - resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - nedb-promises@6.2.3: - resolution: {integrity: sha512-enq0IjNyBz9Qy9W/QPCcLGh/QORGBjXbIeZeWvIjO3OMLyAvlKT3hiJubP2BKEiFniUlR3L01o18ktqgn5jxqA==} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - nice-try@1.0.5: - resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-gyp-build@4.6.0: - resolution: {integrity: sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==} - hasBin: true - - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - - normalize-package-data@2.5.0: - resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} - - normalize-package-data@6.0.0: - resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} - engines: {node: ^16.14.0 || >=18.0.0} - - npm-run-all@4.1.5: - resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} - engines: {node: '>= 4'} - hasBin: true - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} - engines: {node: '>= 0.8.0'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - p-queue@8.1.0: - resolution: {integrity: sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw==} - engines: {node: '>=18'} - - p-timeout@6.1.4: - resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} - engines: {node: '>=14.16'} - - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@4.0.0: - resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} - engines: {node: '>=4'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - parse-json@8.1.0: - resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} - engines: {node: '>=18'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - path-key@2.0.1: - resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} - engines: {node: '>=4'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@2.0.0: - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} - engines: {node: 20 || >=22} - - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - - pathval@2.0.0: - resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} - engines: {node: '>= 14.16'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - pidtree@0.3.1: - resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} - engines: {node: '>=0.10'} - hasBin: true - - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - - postcss-calc@10.1.1: - resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} - engines: {node: ^18.12 || ^20.9 || >=22.0} - peerDependencies: - postcss: ^8.4.38 - - postcss-colormin@7.0.2: - resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-convert-values@7.0.4: - resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-comments@7.0.3: - resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-duplicates@7.0.1: - resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-empty@7.0.0: - resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-discard-overridden@7.0.0: - resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-longhand@7.0.4: - resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-merge-rules@7.0.4: - resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-font-values@7.0.0: - resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-gradients@7.0.0: - resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-params@7.0.2: - resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-minify-selectors@7.0.4: - resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-modules-extract-imports@3.0.0: - resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-local-by-default@4.2.0: - resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-scope@3.0.0: - resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: ^8.1.0 - - postcss-normalize-charset@7.0.0: - resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-display-values@7.0.0: - resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-positions@7.0.0: - resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-repeat-style@7.0.0: - resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-string@7.0.0: - resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-timing-functions@7.0.0: - resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-unicode@7.0.2: - resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-url@7.0.0: - resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-normalize-whitespace@7.0.0: - resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-ordered-values@7.0.1: - resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-initial@7.0.2: - resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-reduce-transforms@7.0.0: - resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-selector-parser@6.0.11: - resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} - engines: {node: '>=4'} - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} - engines: {node: '>=4'} - - postcss-svgo@7.0.1: - resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} - peerDependencies: - postcss: ^8.4.31 - - postcss-unique-selectors@7.0.3: - resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.2: - resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier@3.5.2: - resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} - engines: {node: '>=14'} - hasBin: true - - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - query-string@9.1.1: - resolution: {integrity: sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==} - engines: {node: '>=18'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - read-package-up@11.0.0: - resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} - engines: {node: '>=18'} - - read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - - read-pkg@9.0.1: - resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} - engines: {node: '>=18'} - - readdirp@4.0.1: - resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} - engines: {node: '>= 14.16.0'} - - regexp.prototype.flags@1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve.exports@2.0.3: - resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} - engines: {node: '>=10'} - - resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@6.0.1: - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} - engines: {node: 20 || >=22} - hasBin: true - - rollup-plugin-styler@2.0.0: - resolution: {integrity: sha512-u96KK3hfA5RDeZFuE1kW0mu7FKS6sDu0RlGx9vijqQbzlmrzkhkBtge5gXZ6wF0CnTgcn7CfkwKOwIcWVZU/VQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - rollup: ^2.63.0 || ^3.0.0 || ^4.0.0 - - rollup-plugin-swc3@0.12.1: - resolution: {integrity: sha512-iNV1T432XvyejZ19/41C2gLbXxEOiiJynPPAFF0WzwwFT5FHx7SstAp0yjJRLyrbZjfIhoWJVl3hX3c3Stv/GQ==} - engines: {node: '>=16'} - peerDependencies: - '@swc/core': '>=1.2.165' - rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 - - rollup-preserve-directives@1.1.2: - resolution: {integrity: sha512-OOaYh4zO0Dcd/eVWGB8H69CgTiohl+jJqc2TLtjLENVIQaV2rxO3OW6RILzCQOdDvPT+/rzwRp+97OXhem895Q==} - peerDependencies: - rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 - - rollup@4.34.8: - resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - - sass@1.85.0: - resolution: {integrity: sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==} - engines: {node: '>=14.0.0'} - hasBin: true - - semver@5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - - shebang-command@1.2.0: - resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} - engines: {node: '>=0.10.0'} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@1.0.0: - resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} - engines: {node: '>=0.10.0'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shell-quote@1.8.0: - resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} - - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - - siginfo@2.0.0: - resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - - signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - spdx-correct@3.2.0: - resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} - - spdx-expression-parse@3.0.1: - resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - - spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} - - split-on-first@3.0.0: - resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} - engines: {node: '>=12'} - - split2@4.2.0: - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} - engines: {node: '>= 10.x'} - - stackback@0.0.2: - resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - - string.prototype.padend@3.1.4: - resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==} - engines: {node: '>= 0.4'} - - string.prototype.trim@1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - - string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.0.1: - resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - stylehacks@7.0.4: - resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.31 - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svgo@3.3.2: - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} - engines: {node: '>=14.0.0'} - hasBin: true - - temp-dir@3.0.0: - resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==} - engines: {node: '>=14.16'} - - tempfile@5.0.0: - resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==} - engines: {node: '>=14.18'} - - text-extensions@2.4.0: - resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} - engines: {node: '>=8'} - - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - - tinybench@2.9.0: - resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - - tinypool@1.0.2: - resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - ts-api-utils@2.0.1: - resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - type-fest@4.20.0: - resolution: {integrity: sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==} - engines: {node: '>=16'} - - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - - typescript-eslint@8.24.1: - resolution: {integrity: sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' - - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} - engines: {node: '>=14.17'} - hasBin: true - - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} - engines: {node: '>=0.8.0'} - hasBin: true - - unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unicorn-magic@0.1.0: - resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} - engines: {node: '>=18'} - - universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - validate-npm-package-license@3.0.4: - resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - - vite-node@3.0.6: - resolution: {integrity: sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - - vite@6.1.1: - resolution: {integrity: sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - vitest@3.0.6: - resolution: {integrity: sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.6 - '@vitest/ui': 3.0.6 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/debug': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - - which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - - which-typed-array@1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} - - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - why-is-node-running@2.3.0: - resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} - engines: {node: '>=8'} - hasBin: true - - wordwrap@1.0.0: - resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - -snapshots: - - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.1 - - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@commitlint/cli@19.7.1(@types/node@18.19.76)(typescript@5.7.3)': - dependencies: - '@commitlint/format': 19.5.0 - '@commitlint/lint': 19.7.1 - '@commitlint/load': 19.6.1(@types/node@18.19.76)(typescript@5.7.3) - '@commitlint/read': 19.5.0 - '@commitlint/types': 19.5.0 - tinyexec: 0.3.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/config-conventional@19.7.1': - dependencies: - '@commitlint/types': 19.5.0 - conventional-changelog-conventionalcommits: 7.0.2 - - '@commitlint/config-validator@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - ajv: 8.12.0 - - '@commitlint/ensure@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - lodash.camelcase: 4.3.0 - lodash.kebabcase: 4.1.1 - lodash.snakecase: 4.1.1 - lodash.startcase: 4.4.0 - lodash.upperfirst: 4.3.1 - - '@commitlint/execute-rule@19.5.0': {} - - '@commitlint/format@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - chalk: 5.3.0 - - '@commitlint/is-ignored@19.7.1': - dependencies: - '@commitlint/types': 19.5.0 - semver: 7.7.1 - - '@commitlint/lint@19.7.1': - dependencies: - '@commitlint/is-ignored': 19.7.1 - '@commitlint/parse': 19.5.0 - '@commitlint/rules': 19.6.0 - '@commitlint/types': 19.5.0 - - '@commitlint/load@19.6.1(@types/node@18.19.76)(typescript@5.7.3)': - dependencies: - '@commitlint/config-validator': 19.5.0 - '@commitlint/execute-rule': 19.5.0 - '@commitlint/resolve-extends': 19.5.0 - '@commitlint/types': 19.5.0 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.7.3) - cosmiconfig-typescript-loader: 6.1.0(@types/node@18.19.76)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3) - lodash.isplainobject: 4.0.6 - lodash.merge: 4.6.2 - lodash.uniq: 4.5.0 - transitivePeerDependencies: - - '@types/node' - - typescript - - '@commitlint/message@19.5.0': {} - - '@commitlint/parse@19.5.0': - dependencies: - '@commitlint/types': 19.5.0 - conventional-changelog-angular: 7.0.0 - conventional-commits-parser: 5.0.0 - - '@commitlint/read@19.5.0': - dependencies: - '@commitlint/top-level': 19.5.0 - '@commitlint/types': 19.5.0 - git-raw-commits: 4.0.0 - minimist: 1.2.8 - tinyexec: 0.3.2 - - '@commitlint/resolve-extends@19.5.0': - dependencies: - '@commitlint/config-validator': 19.5.0 - '@commitlint/types': 19.5.0 - global-directory: 4.0.1 - import-meta-resolve: 4.1.0 - lodash.mergewith: 4.6.2 - resolve-from: 5.0.0 - - '@commitlint/rules@19.6.0': - dependencies: - '@commitlint/ensure': 19.5.0 - '@commitlint/message': 19.5.0 - '@commitlint/to-lines': 19.5.0 - '@commitlint/types': 19.5.0 - - '@commitlint/to-lines@19.5.0': {} - - '@commitlint/top-level@19.5.0': - dependencies: - find-up: 7.0.0 - - '@commitlint/types@19.5.0': - dependencies: - '@types/conventional-commits-parser': 5.0.0 - chalk: 5.3.0 - - '@conventional-changelog/git-client@1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0)': - dependencies: - '@types/semver': 7.5.8 - semver: 7.7.1 - optionalDependencies: - conventional-commits-filter: 5.0.0 - conventional-commits-parser: 6.0.0 - - '@dual-bundle/import-meta-resolve@4.1.0': {} - - '@esbuild/aix-ppc64@0.24.2': - optional: true - - '@esbuild/android-arm64@0.24.2': - optional: true - - '@esbuild/android-arm@0.24.2': - optional: true - - '@esbuild/android-x64@0.24.2': - optional: true - - '@esbuild/darwin-arm64@0.24.2': - optional: true - - '@esbuild/darwin-x64@0.24.2': - optional: true - - '@esbuild/freebsd-arm64@0.24.2': - optional: true - - '@esbuild/freebsd-x64@0.24.2': - optional: true - - '@esbuild/linux-arm64@0.24.2': - optional: true - - '@esbuild/linux-arm@0.24.2': - optional: true - - '@esbuild/linux-ia32@0.24.2': - optional: true - - '@esbuild/linux-loong64@0.24.2': - optional: true - - '@esbuild/linux-mips64el@0.24.2': - optional: true - - '@esbuild/linux-ppc64@0.24.2': - optional: true - - '@esbuild/linux-riscv64@0.24.2': - optional: true - - '@esbuild/linux-s390x@0.24.2': - optional: true - - '@esbuild/linux-x64@0.24.2': - optional: true - - '@esbuild/netbsd-arm64@0.24.2': - optional: true - - '@esbuild/netbsd-x64@0.24.2': - optional: true - - '@esbuild/openbsd-arm64@0.24.2': - optional: true - - '@esbuild/openbsd-x64@0.24.2': - optional: true - - '@esbuild/sunos-x64@0.24.2': - optional: true - - '@esbuild/win32-arm64@0.24.2': - optional: true - - '@esbuild/win32-ia32@0.24.2': - optional: true - - '@esbuild/win32-x64@0.24.2': - optional: true - - '@eslint-community/eslint-utils@4.4.0(eslint@9.21.0(jiti@2.4.2))': - dependencies: - eslint: 9.21.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.19.2': - dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.0 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/core@0.12.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.0': - dependencies: - ajv: 6.12.6 - debug: 4.4.0 - espree: 10.3.0 - globals: 14.0.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.21.0': {} - - '@eslint/object-schema@2.1.6': {} - - '@eslint/plugin-kit@0.2.7': - dependencies: - '@eslint/core': 0.12.0 - levn: 0.4.1 - - '@fastify/deepmerge@2.0.0': {} - - '@foundryvtt/foundryvtt-cli@1.0.4': - dependencies: - chalk: 5.4.1 - classic-level: 1.4.1 - esm: 3.2.25 - js-yaml: 4.1.0 - mkdirp: 3.0.1 - nedb-promises: 6.2.3 - yargs: 17.7.2 - - '@guanghechen/chalk.types@1.0.3': {} - - '@guanghechen/chalk@1.0.3': - dependencies: - '@guanghechen/chalk.types': 1.0.3 - - '@guanghechen/globby@1.0.2': - dependencies: - fast-glob: 3.3.3 - ignore: 7.0.3 - - '@guanghechen/rollup-plugin-copy@6.0.4(rollup@4.34.8)': - dependencies: - '@guanghechen/chalk': 1.0.3 - '@guanghechen/globby': 1.0.2 - '@guanghechen/std': 1.0.4 - chokidar: 4.0.3 - dir-glob: 3.0.1 - micromatch: 4.0.8 - rollup: 4.34.8 - - '@guanghechen/std@1.0.4': {} - - '@humanfs/core@0.19.1': {} - - '@humanfs/node@0.16.6': - dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@humanwhocodes/retry@0.4.2': {} - - '@hutson/parse-repository-url@5.0.0': {} - - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.0.1 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - '@parcel/watcher-android-arm64@2.4.1': - optional: true - - '@parcel/watcher-darwin-arm64@2.4.1': - optional: true - - '@parcel/watcher-darwin-x64@2.4.1': - optional: true - - '@parcel/watcher-freebsd-x64@2.4.1': - optional: true - - '@parcel/watcher-linux-arm-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.4.1': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.4.1': - optional: true - - '@parcel/watcher-linux-x64-musl@2.4.1': - optional: true - - '@parcel/watcher-win32-arm64@2.4.1': - optional: true - - '@parcel/watcher-win32-ia32@2.4.1': - optional: true - - '@parcel/watcher-win32-x64@2.4.1': - optional: true - - '@parcel/watcher@2.4.1': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 - optional: true - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@rollup/pluginutils@5.1.2(rollup@4.34.8)': - dependencies: - '@types/estree': 1.0.6 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.34.8 - - '@rollup/rollup-android-arm-eabi@4.34.8': - optional: true - - '@rollup/rollup-android-arm64@4.34.8': - optional: true - - '@rollup/rollup-darwin-arm64@4.34.8': - optional: true - - '@rollup/rollup-darwin-x64@4.34.8': - optional: true - - '@rollup/rollup-freebsd-arm64@4.34.8': - optional: true - - '@rollup/rollup-freebsd-x64@4.34.8': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.34.8': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.34.8': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.34.8': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.34.8': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.34.8': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.34.8': - optional: true - - '@rollup/rollup-linux-x64-musl@4.34.8': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.34.8': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.34.8': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.34.8': - optional: true - - '@seald-io/binary-search-tree@1.0.3': {} - - '@seald-io/nedb@4.0.4': - dependencies: - '@seald-io/binary-search-tree': 1.0.3 - localforage: 1.10.0 - util: 0.12.5 - - '@swc/core-darwin-arm64@1.10.18': - optional: true - - '@swc/core-darwin-x64@1.10.18': - optional: true - - '@swc/core-linux-arm-gnueabihf@1.10.18': - optional: true - - '@swc/core-linux-arm64-gnu@1.10.18': - optional: true - - '@swc/core-linux-arm64-musl@1.10.18': - optional: true - - '@swc/core-linux-x64-gnu@1.10.18': - optional: true - - '@swc/core-linux-x64-musl@1.10.18': - optional: true - - '@swc/core-win32-arm64-msvc@1.10.18': - optional: true - - '@swc/core-win32-ia32-msvc@1.10.18': - optional: true - - '@swc/core-win32-x64-msvc@1.10.18': - optional: true - - '@swc/core@1.10.18': - dependencies: - '@swc/counter': 0.1.3 - '@swc/types': 0.1.17 - optionalDependencies: - '@swc/core-darwin-arm64': 1.10.18 - '@swc/core-darwin-x64': 1.10.18 - '@swc/core-linux-arm-gnueabihf': 1.10.18 - '@swc/core-linux-arm64-gnu': 1.10.18 - '@swc/core-linux-arm64-musl': 1.10.18 - '@swc/core-linux-x64-gnu': 1.10.18 - '@swc/core-linux-x64-musl': 1.10.18 - '@swc/core-win32-arm64-msvc': 1.10.18 - '@swc/core-win32-ia32-msvc': 1.10.18 - '@swc/core-win32-x64-msvc': 1.10.18 - - '@swc/counter@0.1.3': {} - - '@swc/types@0.1.17': - dependencies: - '@swc/counter': 0.1.3 - - '@trysound/sax@0.2.0': {} - - '@types/conventional-commits-parser@5.0.0': - dependencies: - '@types/node': 18.19.76 - - '@types/estree@1.0.6': {} - - '@types/fs-extra@11.0.4': - dependencies: - '@types/jsonfile': 6.1.1 - '@types/node': 18.19.76 - - '@types/jquery@3.5.32': - dependencies: - '@types/sizzle': 2.3.3 - - '@types/json-schema@7.0.15': {} - - '@types/jsonfile@6.1.1': - dependencies: - '@types/node': 18.19.76 - - '@types/node@18.19.76': - dependencies: - undici-types: 5.26.5 - - '@types/normalize-package-data@2.4.4': {} - - '@types/semver@7.5.8': {} - - '@types/sizzle@2.3.3': {} - - '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/type-utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.1 - eslint: 9.21.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.24.1 - debug: 4.4.0 - eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.24.1': - dependencies: - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/visitor-keys': 8.24.1 - - '@typescript-eslint/type-utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - debug: 4.4.0 - eslint: 9.21.0(jiti@2.4.2) - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.24.1': {} - - '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)': - dependencies: - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/visitor-keys': 8.24.1 - debug: 4.4.0 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.7.1 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.21.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.24.1 - '@typescript-eslint/types': 8.24.1 - '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) - eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.24.1': - dependencies: - '@typescript-eslint/types': 8.24.1 - eslint-visitor-keys: 4.2.0 - - '@vitest/expect@3.0.6': - dependencies: - '@vitest/spy': 3.0.6 - '@vitest/utils': 3.0.6 - chai: 5.2.0 - tinyrainbow: 2.0.0 - - '@vitest/mocker@3.0.6(vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0))': - dependencies: - '@vitest/spy': 3.0.6 - estree-walker: 3.0.3 - magic-string: 0.30.17 - optionalDependencies: - vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) - - '@vitest/pretty-format@3.0.6': - dependencies: - tinyrainbow: 2.0.0 - - '@vitest/runner@3.0.6': - dependencies: - '@vitest/utils': 3.0.6 - pathe: 2.0.3 - - '@vitest/snapshot@3.0.6': - dependencies: - '@vitest/pretty-format': 3.0.6 - magic-string: 0.30.17 - pathe: 2.0.3 - - '@vitest/spy@3.0.6': - dependencies: - tinyspy: 3.0.2 - - '@vitest/utils@3.0.6': - dependencies: - '@vitest/pretty-format': 3.0.6 - loupe: 3.1.3 - tinyrainbow: 2.0.0 - - JSONStream@1.3.5: - dependencies: - jsonparse: 1.3.1 - through: 2.3.8 - - abstract-level@1.0.3: - dependencies: - buffer: 6.0.3 - catering: 2.1.1 - is-buffer: 2.0.5 - level-supports: 4.0.1 - level-transcoder: 1.0.1 - module-error: 1.0.2 - queue-microtask: 1.2.3 - - acorn-jsx@5.3.2(acorn@8.14.0): - dependencies: - acorn: 8.14.0 - - acorn@8.14.0: {} - - add-stream@1.0.0: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.12.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - - ansi-regex@5.0.1: {} - - ansi-regex@6.0.1: {} - - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@6.2.1: {} - - argparse@2.0.1: {} - - array-buffer-byte-length@1.0.0: - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - - array-ify@1.0.0: {} - - assertion-error@2.0.1: {} - - available-typed-arrays@1.0.5: {} - - balanced-match@1.0.2: {} - - base64-js@1.5.1: {} - - boolbase@1.0.0: {} - - brace-expansion@1.1.11: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.1: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browserslist@4.24.4: - dependencies: - caniuse-lite: 1.0.30001699 - electron-to-chromium: 1.5.101 - node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) - - buffer@6.0.3: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - - cac@6.7.14: {} - - call-bind@1.0.2: - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.0 - - callsites@3.1.0: {} - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001469 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001469: {} - - caniuse-lite@1.0.30001699: {} - - catering@2.1.1: {} - - chai@5.2.0: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.1.3 - pathval: 2.0.0 - - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@5.3.0: {} - - chalk@5.4.1: {} - - check-error@2.1.1: {} - - chokidar@4.0.3: - dependencies: - readdirp: 4.0.1 - - classic-level@1.4.1: - dependencies: - abstract-level: 1.0.3 - catering: 2.1.1 - module-error: 1.0.2 - napi-macros: 2.2.2 - node-gyp-build: 4.6.0 - - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.3: {} - - color-name@1.1.4: {} - - colord@2.9.3: {} - - commander@7.2.0: {} - - compare-func@2.0.0: - dependencies: - array-ify: 1.0.0 - dot-prop: 5.3.0 - - concat-map@0.0.1: {} - - conventional-changelog-angular@7.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-angular@8.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-atom@5.0.0: {} - - conventional-changelog-cli@5.0.0(conventional-commits-filter@5.0.0): - dependencies: - add-stream: 1.0.0 - conventional-changelog: 6.0.0(conventional-commits-filter@5.0.0) - meow: 13.2.0 - tempfile: 5.0.0 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-changelog-codemirror@5.0.0: {} - - conventional-changelog-conventionalcommits@7.0.2: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-conventionalcommits@8.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-core@8.0.0(conventional-commits-filter@5.0.0): - dependencies: - '@hutson/parse-repository-url': 5.0.0 - add-stream: 1.0.0 - conventional-changelog-writer: 8.0.0 - conventional-commits-parser: 6.0.0 - git-raw-commits: 5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) - git-semver-tags: 8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) - hosted-git-info: 7.0.0 - normalize-package-data: 6.0.0 - read-package-up: 11.0.0 - read-pkg: 9.0.1 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-changelog-ember@5.0.0: {} - - conventional-changelog-eslint@6.0.0: {} - - conventional-changelog-express@5.0.0: {} - - conventional-changelog-jquery@6.0.0: {} - - conventional-changelog-jshint@5.0.0: - dependencies: - compare-func: 2.0.0 - - conventional-changelog-preset-loader@5.0.0: {} - - conventional-changelog-writer@8.0.0: - dependencies: - '@types/semver': 7.5.8 - conventional-commits-filter: 5.0.0 - handlebars: 4.7.8 - meow: 13.2.0 - semver: 7.7.1 - - conventional-changelog@6.0.0(conventional-commits-filter@5.0.0): - dependencies: - conventional-changelog-angular: 8.0.0 - conventional-changelog-atom: 5.0.0 - conventional-changelog-codemirror: 5.0.0 - conventional-changelog-conventionalcommits: 8.0.0 - conventional-changelog-core: 8.0.0(conventional-commits-filter@5.0.0) - conventional-changelog-ember: 5.0.0 - conventional-changelog-eslint: 6.0.0 - conventional-changelog-express: 5.0.0 - conventional-changelog-jquery: 6.0.0 - conventional-changelog-jshint: 5.0.0 - conventional-changelog-preset-loader: 5.0.0 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-commits-filter@5.0.0: {} - - conventional-commits-parser@5.0.0: - dependencies: - JSONStream: 1.3.5 - is-text-path: 2.0.0 - meow: 12.1.0 - split2: 4.2.0 - - conventional-commits-parser@6.0.0: - dependencies: - meow: 13.2.0 - - cosmiconfig-typescript-loader@6.1.0(@types/node@18.19.76)(cosmiconfig@9.0.0(typescript@5.7.3))(typescript@5.7.3): - dependencies: - '@types/node': 18.19.76 - cosmiconfig: 9.0.0(typescript@5.7.3) - jiti: 2.4.2 - typescript: 5.7.3 - - cosmiconfig@8.3.6(typescript@5.7.3): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.7.3 - - cosmiconfig@9.0.0(typescript@5.7.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.7.3 - - cross-spawn@6.0.5: - dependencies: - nice-try: 1.0.5 - path-key: 2.0.1 - semver: 5.7.1 - shebang-command: 1.2.0 - which: 1.3.1 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-declaration-sorter@7.2.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - - css-what@6.1.0: {} - - cssesc@3.0.0: {} - - cssnano-preset-default@7.0.6(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - css-declaration-sorter: 7.2.0(postcss@8.5.2) - cssnano-utils: 5.0.0(postcss@8.5.2) - postcss: 8.5.2 - postcss-calc: 10.1.1(postcss@8.5.2) - postcss-colormin: 7.0.2(postcss@8.5.2) - postcss-convert-values: 7.0.4(postcss@8.5.2) - postcss-discard-comments: 7.0.3(postcss@8.5.2) - postcss-discard-duplicates: 7.0.1(postcss@8.5.2) - postcss-discard-empty: 7.0.0(postcss@8.5.2) - postcss-discard-overridden: 7.0.0(postcss@8.5.2) - postcss-merge-longhand: 7.0.4(postcss@8.5.2) - postcss-merge-rules: 7.0.4(postcss@8.5.2) - postcss-minify-font-values: 7.0.0(postcss@8.5.2) - postcss-minify-gradients: 7.0.0(postcss@8.5.2) - postcss-minify-params: 7.0.2(postcss@8.5.2) - postcss-minify-selectors: 7.0.4(postcss@8.5.2) - postcss-normalize-charset: 7.0.0(postcss@8.5.2) - postcss-normalize-display-values: 7.0.0(postcss@8.5.2) - postcss-normalize-positions: 7.0.0(postcss@8.5.2) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.2) - postcss-normalize-string: 7.0.0(postcss@8.5.2) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.2) - postcss-normalize-unicode: 7.0.2(postcss@8.5.2) - postcss-normalize-url: 7.0.0(postcss@8.5.2) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.2) - postcss-ordered-values: 7.0.1(postcss@8.5.2) - postcss-reduce-initial: 7.0.2(postcss@8.5.2) - postcss-reduce-transforms: 7.0.0(postcss@8.5.2) - postcss-svgo: 7.0.1(postcss@8.5.2) - postcss-unique-selectors: 7.0.3(postcss@8.5.2) - - cssnano-utils@5.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - cssnano@7.0.6(postcss@8.5.2): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.2) - lilconfig: 3.1.3 - postcss: 8.5.2 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - - dargs@8.1.0: {} - - debug@4.4.0: - dependencies: - ms: 2.1.3 - - decode-uri-component@0.4.1: {} - - deep-eql@5.0.2: {} - - deep-is@0.1.4: {} - - define-properties@1.2.0: - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - - detect-libc@1.0.3: - optional: true - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-prop@5.3.0: - dependencies: - is-obj: 2.0.0 - - eastasianwidth@0.2.0: {} - - electron-to-chromium@1.5.101: {} - - emoji-regex@8.0.0: {} - - emoji-regex@9.2.2: {} - - entities@4.5.0: {} - - env-paths@2.2.1: {} - - error-ex@1.3.2: - dependencies: - is-arrayish: 0.2.1 - - es-abstract@1.21.2: - dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 - - es-module-lexer@1.6.0: {} - - es-set-tostringtag@2.0.1: - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - has-tostringtag: 1.0.0 - - es-to-primitive@1.2.1: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - - esbuild@0.24.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.24.2 - '@esbuild/android-arm': 0.24.2 - '@esbuild/android-arm64': 0.24.2 - '@esbuild/android-x64': 0.24.2 - '@esbuild/darwin-arm64': 0.24.2 - '@esbuild/darwin-x64': 0.24.2 - '@esbuild/freebsd-arm64': 0.24.2 - '@esbuild/freebsd-x64': 0.24.2 - '@esbuild/linux-arm': 0.24.2 - '@esbuild/linux-arm64': 0.24.2 - '@esbuild/linux-ia32': 0.24.2 - '@esbuild/linux-loong64': 0.24.2 - '@esbuild/linux-mips64el': 0.24.2 - '@esbuild/linux-ppc64': 0.24.2 - '@esbuild/linux-riscv64': 0.24.2 - '@esbuild/linux-s390x': 0.24.2 - '@esbuild/linux-x64': 0.24.2 - '@esbuild/netbsd-arm64': 0.24.2 - '@esbuild/netbsd-x64': 0.24.2 - '@esbuild/openbsd-arm64': 0.24.2 - '@esbuild/openbsd-x64': 0.24.2 - '@esbuild/sunos-x64': 0.24.2 - '@esbuild/win32-arm64': 0.24.2 - '@esbuild/win32-ia32': 0.24.2 - '@esbuild/win32-x64': 0.24.2 - - escalade@3.1.1: {} - - escalade@3.2.0: {} - - escape-string-regexp@1.0.5: {} - - escape-string-regexp@4.0.0: {} - - eslint-config-prettier@10.0.1(eslint@9.21.0(jiti@2.4.2)): - dependencies: - eslint: 9.21.0(jiti@2.4.2) - - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.0: {} - - eslint@9.21.0(jiti@2.4.2): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.21.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.19.2 - '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.0 - '@eslint/js': 9.21.0 - '@eslint/plugin-kit': 0.2.7 - '@humanfs/node': 0.16.6 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.6 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.0 - escape-string-regexp: 4.0.0 - eslint-scope: 8.2.0 - eslint-visitor-keys: 4.2.0 - espree: 10.3.0 - esquery: 1.5.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.1 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 - optionalDependencies: - jiti: 2.4.2 - transitivePeerDependencies: - - supports-color - - esm@3.2.25: {} - - espree@10.3.0: - dependencies: - acorn: 8.14.0 - acorn-jsx: 5.3.2(acorn@8.14.0) - eslint-visitor-keys: 4.2.0 - - esquery@1.5.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@5.3.0: {} - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.6 - - esutils@2.0.3: {} - - eventemitter3@5.0.1: {} - - expect-type@1.1.0: {} - - fast-deep-equal@3.1.3: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fastq@1.15.0: - dependencies: - reusify: 1.0.4 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - filter-obj@5.1.0: {} - - find-up-simple@1.0.0: {} - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - find-up@7.0.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - unicorn-magic: 0.1.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.2 - keyv: 4.5.4 - - flatted@3.3.2: {} - - for-each@0.3.3: - dependencies: - is-callable: 1.2.7 - - foreground-child@3.1.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - - fs-extra@11.3.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - - fsevents@2.3.3: - optional: true - - function-bind@1.1.1: {} - - function-bind@1.1.2: {} - - function.prototype.name@1.1.5: - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - functions-have-names: 1.2.3 - - functions-have-names@1.2.3: {} - - get-caller-file@2.0.5: {} - - get-intrinsic@1.2.0: - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - - get-symbol-description@1.0.0: - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - - get-tsconfig@4.8.1: - dependencies: - resolve-pkg-maps: 1.0.0 - - git-raw-commits@4.0.0: - dependencies: - dargs: 8.1.0 - meow: 12.1.0 - split2: 4.2.0 - - git-raw-commits@5.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): - dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) - meow: 13.2.0 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-commits-parser - - git-semver-tags@8.0.0(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0): - dependencies: - '@conventional-changelog/git-client': 1.0.1(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.0.0) - meow: 13.2.0 - transitivePeerDependencies: - - conventional-commits-filter - - conventional-commits-parser - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob@11.0.0: - dependencies: - foreground-child: 3.1.1 - jackspeak: 4.0.1 - minimatch: 10.0.1 - minipass: 7.1.2 - package-json-from-dist: 1.0.0 - path-scurry: 2.0.0 - - global-directory@4.0.1: - dependencies: - ini: 4.1.1 - - globals@14.0.0: {} - - globals@16.0.0: {} - - globalthis@1.0.3: - dependencies: - define-properties: 1.2.0 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.0 - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - handlebars@4.7.8: - dependencies: - minimist: 1.2.8 - neo-async: 2.6.2 - source-map: 0.6.1 - wordwrap: 1.0.0 - optionalDependencies: - uglify-js: 3.17.4 - - has-bigints@1.0.2: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.0: - dependencies: - get-intrinsic: 1.2.0 - - has-proto@1.0.1: {} - - has-symbols@1.0.3: {} - - has-tostringtag@1.0.0: - dependencies: - has-symbols: 1.0.3 - - has@1.0.3: - dependencies: - function-bind: 1.1.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hosted-git-info@2.8.9: {} - - hosted-git-info@7.0.0: - dependencies: - lru-cache: 10.0.1 - - icss-utils@5.1.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - ieee754@1.2.1: {} - - ignore@5.3.1: {} - - ignore@7.0.3: {} - - immediate@3.0.6: {} - - immutable@5.0.3: {} - - import-fresh@3.3.0: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-meta-resolve@4.1.0: {} - - imurmurhash@0.1.4: {} - - index-to-position@0.1.2: {} - - inherits@2.0.4: {} - - ini@4.1.1: {} - - internal-slot@1.0.5: - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - side-channel: 1.0.4 - - is-arguments@1.1.1: - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - - is-array-buffer@3.0.2: - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-typed-array: 1.1.10 - - is-arrayish@0.2.1: {} - - is-bigint@1.0.4: - dependencies: - has-bigints: 1.0.2 - - is-boolean-object@1.1.2: - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - - is-buffer@2.0.5: {} - - is-callable@1.2.7: {} - - is-core-module@2.11.0: - dependencies: - has: 1.0.3 - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-date-object@1.0.5: - dependencies: - has-tostringtag: 1.0.0 - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-generator-function@1.0.10: - dependencies: - has-tostringtag: 1.0.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-negative-zero@2.0.2: {} - - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.0 - - is-number@7.0.0: {} - - is-obj@2.0.0: {} - - is-regex@1.1.4: - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - - is-shared-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.2 - - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.0 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - - is-text-path@2.0.0: - dependencies: - text-extensions: 2.4.0 - - is-typed-array@1.1.10: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.2 - - isexe@2.0.0: {} - - jackspeak@4.0.1: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - - jiti@2.4.2: {} - - js-tokens@4.0.0: {} - - js-yaml@4.1.0: - dependencies: - argparse: 2.0.1 - - json-buffer@3.0.1: {} - - json-parse-better-errors@1.0.2: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonparse@1.3.1: {} - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - level-supports@4.0.1: {} - - level-transcoder@1.0.1: - dependencies: - buffer: 6.0.3 - module-error: 1.0.2 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lie@3.1.1: - dependencies: - immediate: 3.0.6 - - lilconfig@3.1.3: {} - - lines-and-columns@1.2.4: {} - - load-json-file@4.0.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - - localforage@1.10.0: - dependencies: - lie: 3.1.1 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash.camelcase@4.3.0: {} - - lodash.isplainobject@4.0.6: {} - - lodash.kebabcase@4.1.1: {} - - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - - lodash.mergewith@4.6.2: {} - - lodash.snakecase@4.1.1: {} - - lodash.startcase@4.4.0: {} - - lodash.uniq@4.5.0: {} - - lodash.upperfirst@4.3.1: {} - - loupe@3.1.3: {} - - lru-cache@10.0.1: {} - - lru-cache@11.0.0: {} - - magic-string@0.30.17: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - - mdn-data@2.0.28: {} - - mdn-data@2.0.30: {} - - memorystream@0.3.1: {} - - meow@12.1.0: {} - - meow@13.2.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - minimatch@10.0.1: - dependencies: - brace-expansion: 2.0.1 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.11 - - minimatch@9.0.4: - dependencies: - brace-expansion: 2.0.1 - - minimist@1.2.8: {} - - minipass@7.1.2: {} - - mkdirp@3.0.1: {} - - module-error@1.0.2: {} - - ms@2.1.3: {} - - nanoid@3.3.8: {} - - napi-macros@2.2.2: {} - - natural-compare@1.4.0: {} - - nedb-promises@6.2.3: - dependencies: - '@seald-io/nedb': 4.0.4 - - neo-async@2.6.2: {} - - nice-try@1.0.5: {} - - node-addon-api@7.1.1: - optional: true - - node-gyp-build@4.6.0: {} - - node-releases@2.0.19: {} - - normalize-package-data@2.5.0: - dependencies: - hosted-git-info: 2.8.9 - resolve: 1.22.1 - semver: 5.7.1 - validate-npm-package-license: 3.0.4 - - normalize-package-data@6.0.0: - dependencies: - hosted-git-info: 7.0.0 - is-core-module: 2.11.0 - semver: 7.7.1 - validate-npm-package-license: 3.0.4 - - npm-run-all@4.1.5: - dependencies: - ansi-styles: 3.2.1 - chalk: 2.4.2 - cross-spawn: 6.0.5 - memorystream: 0.3.1 - minimatch: 3.1.2 - pidtree: 0.3.1 - read-pkg: 3.0.0 - shell-quote: 1.8.0 - string.prototype.padend: 3.1.4 - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - object-inspect@1.12.3: {} - - object-keys@1.1.1: {} - - object.assign@4.1.4: - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - - optionator@0.9.3: - dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-limit@4.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - - p-queue@8.1.0: - dependencies: - eventemitter3: 5.0.1 - p-timeout: 6.1.4 - - p-timeout@6.1.4: {} - - package-json-from-dist@1.0.0: {} - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-json@4.0.0: - dependencies: - error-ex: 1.3.2 - json-parse-better-errors: 1.0.2 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.24.7 - error-ex: 1.3.2 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - parse-json@8.1.0: - dependencies: - '@babel/code-frame': 7.24.7 - index-to-position: 0.1.2 - type-fest: 4.20.0 - - path-exists@4.0.0: {} - - path-exists@5.0.0: {} - - path-key@2.0.1: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@2.0.0: - dependencies: - lru-cache: 11.0.0 - minipass: 7.1.2 - - path-type@3.0.0: - dependencies: - pify: 3.0.0 - - path-type@4.0.0: {} - - pathe@2.0.3: {} - - pathval@2.0.0: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - pidtree@0.3.1: {} - - pify@3.0.0: {} - - postcss-calc@10.1.1(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - - postcss-colormin@7.0.2(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-convert-values@7.0.4(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@7.0.3(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-selector-parser: 6.1.2 - - postcss-discard-duplicates@7.0.1(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - postcss-discard-empty@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - postcss-discard-overridden@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - postcss-merge-longhand@7.0.4(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.2) - - postcss-merge-rules@7.0.4(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.2) - postcss: 8.5.2 - postcss-selector-parser: 6.1.2 - - postcss-minify-font-values@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@7.0.0(postcss@8.5.2): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.2) - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-minify-params@7.0.2(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - cssnano-utils: 5.0.0(postcss@8.5.2) - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@7.0.4(postcss@8.5.2): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.2 - postcss-selector-parser: 6.1.2 - - postcss-modules-extract-imports@3.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - postcss-modules-local-by-default@4.2.0(postcss@8.5.2): - dependencies: - icss-utils: 5.1.0(postcss@8.5.2) - postcss: 8.5.2 - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-selector-parser: 6.0.11 - - postcss-modules-values@4.0.0(postcss@8.5.2): - dependencies: - icss-utils: 5.1.0(postcss@8.5.2) - postcss: 8.5.2 - - postcss-normalize-charset@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - - postcss-normalize-display-values@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@7.0.2(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@7.0.1(postcss@8.5.2): - dependencies: - cssnano-utils: 5.0.0(postcss@8.5.2) - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@7.0.2(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - caniuse-api: 3.0.0 - postcss: 8.5.2 - - postcss-reduce-transforms@7.0.0(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@6.0.11: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@7.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-svgo@7.0.1(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-value-parser: 4.2.0 - svgo: 3.3.2 - - postcss-unique-selectors@7.0.3(postcss@8.5.2): - dependencies: - postcss: 8.5.2 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.5.2: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prelude-ls@1.2.1: {} - - prettier@3.5.2: {} - - punycode@2.3.0: {} - - query-string@9.1.1: - dependencies: - decode-uri-component: 0.4.1 - filter-obj: 5.1.0 - split-on-first: 3.0.0 - - queue-microtask@1.2.3: {} - - read-package-up@11.0.0: - dependencies: - find-up-simple: 1.0.0 - read-pkg: 9.0.1 - type-fest: 4.20.0 - - read-pkg@3.0.0: - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - - read-pkg@9.0.1: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 6.0.0 - parse-json: 8.1.0 - type-fest: 4.20.0 - unicorn-magic: 0.1.0 - - readdirp@4.0.1: {} - - regexp.prototype.flags@1.4.3: - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - - require-directory@2.1.1: {} - - require-from-string@2.0.2: {} - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve.exports@2.0.3: {} - - resolve@1.22.1: - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.0.4: {} - - rimraf@6.0.1: - dependencies: - glob: 11.0.0 - package-json-from-dist: 1.0.0 - - rollup-plugin-styler@2.0.0(rollup@4.34.8)(typescript@5.7.3): - dependencies: - '@rollup/pluginutils': 5.1.2(rollup@4.34.8) - cosmiconfig: 8.3.6(typescript@5.7.3) - cssnano: 7.0.6(postcss@8.5.2) - fs-extra: 11.3.0 - icss-utils: 5.1.0(postcss@8.5.2) - mime-types: 2.1.35 - p-queue: 8.1.0 - postcss: 8.5.2 - postcss-modules-extract-imports: 3.0.0(postcss@8.5.2) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.2) - postcss-modules-scope: 3.0.0(postcss@8.5.2) - postcss-modules-values: 4.0.0(postcss@8.5.2) - postcss-value-parser: 4.2.0 - query-string: 9.1.1 - resolve: 1.22.10 - resolve.exports: 2.0.3 - rollup: 4.34.8 - source-map-js: 1.2.1 - tslib: 2.8.1 - transitivePeerDependencies: - - typescript - - rollup-plugin-swc3@0.12.1(@swc/core@1.10.18)(rollup@4.34.8): - dependencies: - '@dual-bundle/import-meta-resolve': 4.1.0 - '@fastify/deepmerge': 2.0.0 - '@rollup/pluginutils': 5.1.2(rollup@4.34.8) - '@swc/core': 1.10.18 - get-tsconfig: 4.8.1 - rollup: 4.34.8 - rollup-preserve-directives: 1.1.2(rollup@4.34.8) - - rollup-preserve-directives@1.1.2(rollup@4.34.8): - dependencies: - magic-string: 0.30.17 - rollup: 4.34.8 - - rollup@4.34.8: - dependencies: - '@types/estree': 1.0.6 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.34.8 - '@rollup/rollup-android-arm64': 4.34.8 - '@rollup/rollup-darwin-arm64': 4.34.8 - '@rollup/rollup-darwin-x64': 4.34.8 - '@rollup/rollup-freebsd-arm64': 4.34.8 - '@rollup/rollup-freebsd-x64': 4.34.8 - '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 - '@rollup/rollup-linux-arm-musleabihf': 4.34.8 - '@rollup/rollup-linux-arm64-gnu': 4.34.8 - '@rollup/rollup-linux-arm64-musl': 4.34.8 - '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 - '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 - '@rollup/rollup-linux-riscv64-gnu': 4.34.8 - '@rollup/rollup-linux-s390x-gnu': 4.34.8 - '@rollup/rollup-linux-x64-gnu': 4.34.8 - '@rollup/rollup-linux-x64-musl': 4.34.8 - '@rollup/rollup-win32-arm64-msvc': 4.34.8 - '@rollup/rollup-win32-ia32-msvc': 4.34.8 - '@rollup/rollup-win32-x64-msvc': 4.34.8 - fsevents: 2.3.3 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - safe-regex-test@1.0.0: - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-regex: 1.1.4 - - sass@1.85.0: - dependencies: - chokidar: 4.0.3 - immutable: 5.0.3 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.4.1 - - semver@5.7.1: {} - - semver@7.7.1: {} - - shebang-command@1.2.0: - dependencies: - shebang-regex: 1.0.0 - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@1.0.0: {} - - shebang-regex@3.0.0: {} - - shell-quote@1.8.0: {} - - side-channel@1.0.4: - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - object-inspect: 1.12.3 - - siginfo@2.0.0: {} - - signal-exit@4.1.0: {} - - source-map-js@1.2.1: {} - - source-map@0.6.1: {} - - spdx-correct@3.2.0: - dependencies: - spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 - - spdx-exceptions@2.3.0: {} - - spdx-expression-parse@3.0.1: - dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 - - spdx-license-ids@3.0.13: {} - - split-on-first@3.0.0: {} - - split2@4.2.0: {} - - stackback@0.0.2: {} - - std-env@3.8.0: {} - - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.0.1 - - string.prototype.padend@3.1.4: - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - - string.prototype.trim@1.2.7: - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - - string.prototype.trimend@1.0.6: - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - - string.prototype.trimstart@1.0.6: - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.0.1: - dependencies: - ansi-regex: 6.0.1 - - strip-bom@3.0.0: {} - - strip-json-comments@3.1.1: {} - - stylehacks@7.0.4(postcss@8.5.2): - dependencies: - browserslist: 4.24.4 - postcss: 8.5.2 - postcss-selector-parser: 6.1.2 - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svgo@3.3.2: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 5.1.0 - css-tree: 2.3.1 - css-what: 6.1.0 - csso: 5.0.5 - picocolors: 1.1.1 - - temp-dir@3.0.0: {} - - tempfile@5.0.0: - dependencies: - temp-dir: 3.0.0 - - text-extensions@2.4.0: {} - - through@2.3.8: {} - - tinybench@2.9.0: {} - - tinyexec@0.3.2: {} - - tinypool@1.0.2: {} - - tinyrainbow@2.0.0: {} - - tinyspy@3.0.2: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - ts-api-utils@2.0.1(typescript@5.7.3): - dependencies: - typescript: 5.7.3 - - tslib@2.8.1: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - type-fest@4.20.0: {} - - typed-array-length@1.0.4: - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.10 - - typescript-eslint@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3))(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@2.4.2))(typescript@5.7.3) - eslint: 9.21.0(jiti@2.4.2) - typescript: 5.7.3 - transitivePeerDependencies: - - supports-color - - typescript@5.7.3: {} - - uglify-js@3.17.4: - optional: true - - unbox-primitive@1.0.2: - dependencies: - call-bind: 1.0.2 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - - undici-types@5.26.5: {} - - unicorn-magic@0.1.0: {} - - universalify@2.0.0: {} - - update-browserslist-db@1.1.2(browserslist@4.24.4): - dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.0 - - util-deprecate@1.0.2: {} - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.10 - which-typed-array: 1.1.9 - - validate-npm-package-license@3.0.4: - dependencies: - spdx-correct: 3.2.0 - spdx-expression-parse: 3.0.1 - - vite-node@3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): - dependencies: - cac: 6.7.14 - debug: 4.4.0 - es-module-lexer: 1.6.0 - pathe: 2.0.3 - vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): - dependencies: - esbuild: 0.24.2 - postcss: 8.5.2 - rollup: 4.34.8 - optionalDependencies: - '@types/node': 18.19.76 - fsevents: 2.3.3 - jiti: 2.4.2 - sass: 1.85.0 - - vitest@3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0): - dependencies: - '@vitest/expect': 3.0.6 - '@vitest/mocker': 3.0.6(vite@6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0)) - '@vitest/pretty-format': 3.0.6 - '@vitest/runner': 3.0.6 - '@vitest/snapshot': 3.0.6 - '@vitest/spy': 3.0.6 - '@vitest/utils': 3.0.6 - chai: 5.2.0 - debug: 4.4.0 - expect-type: 1.1.0 - magic-string: 0.30.17 - pathe: 2.0.3 - std-env: 3.8.0 - tinybench: 2.9.0 - tinyexec: 0.3.2 - tinypool: 1.0.2 - tinyrainbow: 2.0.0 - vite: 6.1.1(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) - vite-node: 3.0.6(@types/node@18.19.76)(jiti@2.4.2)(sass@1.85.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 18.19.76 - transitivePeerDependencies: - - jiti - - less - - lightningcss - - msw - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - which-boxed-primitive@1.0.2: - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - - which-typed-array@1.1.9: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - - which@1.3.1: - dependencies: - isexe: 2.0.0 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - - wordwrap@1.0.0: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.0.1 - - y18n@5.0.8: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - - yocto-queue@0.1.0: {} - - yocto-queue@1.0.0: {} diff --git a/pnpm-lock.yaml.license b/pnpm-lock.yaml.license deleted file mode 100644 index 31803f36..00000000 --- a/pnpm-lock.yaml.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/prettier.config.js b/prettier.config.js deleted file mode 100644 index c75da361..00000000 --- a/prettier.config.js +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -// @ts-check - -/** - * @type {import("prettier").Config} - */ -export default { - semi: true, - trailingComma: "all", - singleQuote: false, - printWidth: 120, - tabWidth: 2, -}; diff --git a/renovate.json b/renovate.json deleted file mode 100644 index 16438b93..00000000 --- a/renovate.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": ["config:base", ":automergeAll", ":automergePr", ":prHourlyLimitNone", ":prConcurrentLimitNone"], - "packageRules": [ - { - "matchPackagePatterns": ["^@pixi"], - "enabled": false - }, - { - "matchPackageNames": ["@types/node"], - "matchUpdateTypes": ["major"], - "enabled": false - } - ] -} diff --git a/renovate.json.license b/renovate.json.license deleted file mode 100644 index 31803f36..00000000 --- a/renovate.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js index af0c04d8..d7b6c67d 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,63 +1,12 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT +const typescript = require("rollup-plugin-typescript2"); +const { nodeResolve } = require("@rollup/plugin-node-resolve"); -import styles from "rollup-plugin-styler"; -import { swc } from "rollup-plugin-swc3"; - -import { copy } from "@guanghechen/rollup-plugin-copy"; - -import { distDirectory, name, sourceDirectory } from "./tools/const.js"; - -const staticFiles = [ - ".reuse", - "assets", - "ATTRIBUTION.md", - "fonts", - "lang", - "LICENSE.md", - "LICENSES", - "README.md", - "system.json.license", - "system.json", - "template.json.license", - "template.json", - "templates", -]; -const isProduction = process.env.NODE_ENV === "production"; - -/** - * @type {import('rollup').RollupOptions} - */ -const config = { - input: { [name]: `${sourceDirectory}/${name}.ts` }, - output: { - dir: distDirectory, - format: "es", - sourcemap: true, - assetFileNames: "[name].[ext]", - }, - plugins: [ - swc({ - jsc: { - minify: isProduction && { - sourceMap: true, - mangle: { - keepClassNames: true, - keepFnNames: true, - }, - }, - }, - sourceMaps: true, - }), - styles({ - mode: ["extract", `css/${name}.css`], - url: false, - sourceMap: true, - minimize: isProduction, - }), - copy({ targets: [{ src: staticFiles, dest: distDirectory }] }), - ], +module.exports = { + input: "src/module/ds4.ts", + output: { + dir: "dist/module", + format: "es", + sourcemap: true, + }, + plugins: [nodeResolve(), typescript({})], }; - -export default config; diff --git a/scss/components/actor/_actor_header.scss b/scss/components/actor/_actor_header.scss deleted file mode 100644 index 068c0f1a..00000000 --- a/scss/components/actor/_actor_header.scss +++ /dev/null @@ -1,55 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/mixins"; - -.ds4-actor-header { - display: flex; - flex-grow: 0; - flex-shrink: 0; - gap: 1em; - - &__img { - border: none; - height: 100px; - width: 100px; - &--editable { - cursor: pointer; - } - } - - &__data { - display: flex; - flex-direction: column; - } - - &__data-row { - align-content: center; - display: flex; - flex: 1; - flex-direction: row; - gap: 0.5em; - > * { - flex: 1; - } - } - - &__name { - display: flex; - align-items: center; - border-bottom: 0; - margin: 0; - } - - &__name-input[type="text"] { - @include mixins.font-heading-upper; - background-color: transparent; - border: none; - flex: 1; - font-size: 1.25em; - height: auto; - } -} diff --git a/scss/components/actor/_actor_progression.scss b/scss/components/actor/_actor_progression.scss deleted file mode 100644 index 15ac258c..00000000 --- a/scss/components/actor/_actor_progression.scss +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Oliver Rümpelein - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/colors"; -@use "../../utils/mixins"; -@use "../../utils/variables"; - -.ds4-actor-progression { - @include mixins.mark-invalid-or-disabled-input; - display: flex; - gap: 0.5em; - - &__entry { - align-items: center; - display: flex; - flex: 1; - gap: 0.25em; - justify-content: flex-end; - } - - &__label { - @include mixins.font-heading-upper; - border: none; - color: colors.$c-light-grey; - margin: 0; - padding: 0; - text-align: right; - } - - &__input { - flex: 0 0 5ch; - - &--slayer-points { - &::-webkit-inner-spin-button, - &::-webkit-outer-spin-button { - -webkit-appearance: auto; - } - &:hover, - &:focus { - -moz-appearance: auto; - } - } - } -} diff --git a/scss/components/actor/_actor_properties.scss b/scss/components/actor/_actor_properties.scss deleted file mode 100644 index 78edeb28..00000000 --- a/scss/components/actor/_actor_properties.scss +++ /dev/null @@ -1,36 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Oliver Rümpelein - * SPDX-FileCopyrightText: 2021 Gesina Schwalbe - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/mixins"; -@use "../../utils/variables"; - -.ds4-actor-properties { - @include mixins.mark-invalid-or-disabled-input; - display: flex; - gap: 0.25em; - - &__property { - flex: 1; - } - - &__property-label { - font-size: 0.9em; - font-weight: bold; - white-space: nowrap; - } - - &__property-select { - width: 100%; - height: var(--form-field-height); - } - - &__property-multi-input { - display: flex; - gap: 0.125em; - } -} diff --git a/scss/components/actor/_actor_sheet.scss b/scss/components/actor/_actor_sheet.scss deleted file mode 100644 index 7d21ec9c..00000000 --- a/scss/components/actor/_actor_sheet.scss +++ /dev/null @@ -1,10 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-actor-sheet { - min-height: 645px; - min-width: 650px; -} diff --git a/scss/components/actor/_biography.scss b/scss/components/actor/_biography.scss deleted file mode 100644 index cf033a71..00000000 --- a/scss/components/actor/_biography.scss +++ /dev/null @@ -1,11 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-biography-tab-content { - display: grid; - grid-template-columns: 1fr 3fr; - column-gap: 1em; -} diff --git a/scss/components/actor/_check.scss b/scss/components/actor/_check.scss deleted file mode 100644 index 2b64328b..00000000 --- a/scss/components/actor/_check.scss +++ /dev/null @@ -1,35 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/mixins"; - -.ds4-check { - background: transparent; - border: none; - cursor: pointer; - display: flex; - font-family: inherit; - font-size: inherit; - justify-content: space-between; - line-height: inherit; - margin: 0; - - &:focus { - box-shadow: none; - } - - &:hover { - @include mixins.foundry-highlight-text-shadow; - box-shadow: none; - } - - &[disabled] { - cursor: auto; - &:hover { - text-shadow: none; - } - } -} diff --git a/scss/components/actor/_checks.scss b/scss/components/actor/_checks.scss deleted file mode 100644 index 47f0c77a..00000000 --- a/scss/components/actor/_checks.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-checks { - column-gap: 2em; - display: grid; - grid-auto-flow: column; - grid-template-columns: 1fr 1fr 1fr; - grid-template-rows: repeat(10, 1fr); - row-gap: 0.25em; - white-space: nowrap; -} diff --git a/scss/components/actor/_combat_value.scss b/scss/components/actor/_combat_value.scss deleted file mode 100644 index 184aa31e..00000000 --- a/scss/components/actor/_combat_value.scss +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/mixins"; -@use "../../utils/variables"; - -.ds4-combat-value { - $size: 3.75rem; - - display: grid; - place-items: center; - row-gap: 0.125em; - - &__value { - $combat-values-icons-path: "#{variables.$official-icons-path}/combat-values"; - @include mixins.centered-content; - - background-position: center; - background-repeat: no-repeat; - background-size: contain; - font-size: 1.5em; - height: $size; - width: $size; - - &--hitPoints { - background-image: url("#{$combat-values-icons-path}/hit-points.png"); - } - &--defense { - background-image: url("#{$combat-values-icons-path}/defense.png"); - } - &--initiative { - background-image: url("#{$combat-values-icons-path}/initiative.png"); - } - &--movement { - background-image: url("#{$combat-values-icons-path}/movement-rate.png"); - } - &--meleeAttack { - background-image: url("#{$combat-values-icons-path}/melee-attack.png"); - } - &--rangedAttack { - background-image: url("#{$combat-values-icons-path}/ranged-attack.png"); - } - &--spellcasting { - background-image: url("#{$combat-values-icons-path}/spellcasting.png"); - } - &--targetedSpellcasting { - background-image: url("#{$combat-values-icons-path}/targeted-spellcasting.png"); - } - } - - &__label { - @include mixins.font-heading-upper; - font-size: 1.2em; - white-space: nowrap; - } - - &__formula { - align-items: center; - justify-content: space-between; - display: flex; - gap: 0.15em; - text-align: center; - width: $size; - } - - &__formula-base, - &__formula-modifier { - flex: 1 1 4em; - } -} diff --git a/scss/components/actor/_combat_values.scss b/scss/components/actor/_combat_values.scss deleted file mode 100644 index def84140..00000000 --- a/scss/components/actor/_combat_values.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/variables"; - -.ds4-combat-values { - border-bottom: variables.$border-groove; - display: flex; - margin: variables.$margin-sm 0; - padding-bottom: variables.$margin-sm; - justify-content: space-between; -} diff --git a/scss/components/actor/_core_value.scss b/scss/components/actor/_core_value.scss deleted file mode 100644 index 140ca89e..00000000 --- a/scss/components/actor/_core_value.scss +++ /dev/null @@ -1,42 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/colors"; -@use "../../utils/mixins"; -@use "../../utils/variables"; - -.ds4-core-value { - align-items: center; - display: flex; - - &__label { - @include mixins.font-heading-upper; - flex: 1; - font-size: 2em; - text-align: center; - } - - &__value { - align-items: center; - display: flex; - flex: 1.1; - font-size: 1.2em; - gap: 0.15em; - text-align: center; - } - - &__value-input, - &__value-total { - flex: 1 1 4em; - } - - &--trait { - .ds4-core-value__label { - -webkit-text-stroke: 1px colors.$c-black; - color: transparent; - } - } -} diff --git a/scss/components/actor/_core_values.scss b/scss/components/actor/_core_values.scss deleted file mode 100644 index cf1dc459..00000000 --- a/scss/components/actor/_core_values.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/colors"; -@use "../../utils/variables"; - -.ds4-core-values { - column-gap: 0.5em; - display: grid; - grid-template-columns: repeat(3, 1fr); - row-gap: 0.5em; -} diff --git a/scss/components/actor/_currency.scss b/scss/components/actor/_currency.scss deleted file mode 100644 index 2cbe3c31..00000000 --- a/scss/components/actor/_currency.scss +++ /dev/null @@ -1,22 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/variables"; - -.ds4-currency { - align-items: center; - display: flex; - gap: 1em; - margin: 0.5em 0; -} - -.ds4-currency-title { - border-bottom: variables.$border-groove; - font-weight: bold; - margin-bottom: 0; - margin-top: 1em; - padding-left: 1em; -} diff --git a/scss/components/actor/_description.scss b/scss/components/actor/_description.scss deleted file mode 100644 index 37830530..00000000 --- a/scss/components/actor/_description.scss +++ /dev/null @@ -1,9 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-description { - height: 100%; -} diff --git a/scss/components/actor/_profile.scss b/scss/components/actor/_profile.scss deleted file mode 100644 index cad7b14c..00000000 --- a/scss/components/actor/_profile.scss +++ /dev/null @@ -1,28 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-profile { - display: flex; - flex-direction: column; - gap: 0.5em; - - &__entry { - display: flex; - flex-direction: column; - align-items: center; - } - - &__entry-input { - &--multiline { - resize: none; - } - } - - &__entry-label { - font-size: 0.8em; - font-weight: bold; - } -} diff --git a/scss/components/dice/_dice_total.scss b/scss/components/dice/_dice_total.scss deleted file mode 100644 index 5d041aef..00000000 --- a/scss/components/dice/_dice_total.scss +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/colors"; - -// Needs to be nested in .dice-roll to win against foundry's style.css with respect to specificity -.dice-roll .ds4-dice-total { - @mixin color-filter($rotation) { - filter: sepia(0.5) hue-rotate($rotation); - } - - &--coup { - @include color-filter(60deg); - background-color: colors.$c-coup-bg; - color: colors.$c-coup; - } - - &--fumble { - @include color-filter(-60deg); - background-color: colors.$c-fumble-bg; - color: colors.$c-fumble; - } -} diff --git a/scss/components/item/_item_header.scss b/scss/components/item/_item_header.scss deleted file mode 100644 index 2e122a36..00000000 --- a/scss/components/item/_item_header.scss +++ /dev/null @@ -1,51 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/colors"; -@use "../../utils/mixins"; - -.ds4-item-header { - align-items: center; - display: flex; - gap: 1em; - - &__img { - border: none; - cursor: pointer; - height: 100px; - width: 100px; - } - - &__data { - flex: 1; - } - - &__type { - @include mixins.font-heading-upper; - border: none; - color: colors.$c-light-grey; - margin-bottom: 0; - } - - &__name { - border: none; - margin: 0; - } - - &__name-label { - display: none; - } - - &__name-input[type="text"] { - @include mixins.font-heading-upper; - background-color: transparent; - border: none; - font-size: 1.25em; - height: auto; - padding-left: 0; - padding-right: 0; - } -} diff --git a/scss/components/item/_item_properties.scss b/scss/components/item/_item_properties.scss deleted file mode 100644 index 903fa97e..00000000 --- a/scss/components/item/_item_properties.scss +++ /dev/null @@ -1,21 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Gesina Schwalbe - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/mixins"; -@use "../../utils/variables"; - -.ds4-item-properties { - @include mixins.mark-invalid-or-disabled-input; - - &__title { - border-bottom: variables.$border-groove; - font-weight: bold; - margin-bottom: 0; - margin-top: 1em; - padding-left: 1em; - } -} diff --git a/scss/components/item/_item_sheet.scss b/scss/components/item/_item_sheet.scss deleted file mode 100644 index eef6e821..00000000 --- a/scss/components/item/_item_sheet.scss +++ /dev/null @@ -1,10 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-item-sheet { - min-height: 400px; - min-width: 540px; -} diff --git a/scss/components/shared/_add_button.scss b/scss/components/shared/_add_button.scss deleted file mode 100644 index 0b61713d..00000000 --- a/scss/components/shared/_add_button.scss +++ /dev/null @@ -1,9 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-add-button { - padding: 0 calc(1em / 3); -} diff --git a/scss/components/shared/_checkbox_grid.scss b/scss/components/shared/_checkbox_grid.scss deleted file mode 100644 index 52dd9ec3..00000000 --- a/scss/components/shared/_checkbox_grid.scss +++ /dev/null @@ -1,27 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-checkbox-grid { - $gap: 3px; - gap: $gap; - display: grid; - font-size: var(--font-size-12); - grid-template-columns: 1fr 1fr; - - &__item { - align-items: center; - display: flex; - gap: $gap; - justify-content: flex-start; - > * { - flex: 0 0 auto; - } - } - - &__checkbox[type="checkbox"] { - margin: 0; - } -} diff --git a/scss/components/shared/_control_button_group.scss b/scss/components/shared/_control_button_group.scss deleted file mode 100644 index faa39058..00000000 --- a/scss/components/shared/_control_button_group.scss +++ /dev/null @@ -1,16 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-control-button-group { - display: flex; - text-align: center; - width: 100%; - padding: 0 calc(1em / 3); - - &__button { - flex: 1; - } -} diff --git a/scss/components/shared/_editor.scss b/scss/components/shared/_editor.scss deleted file mode 100644 index dead15ce..00000000 --- a/scss/components/shared/_editor.scss +++ /dev/null @@ -1,18 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-sheet-form { - .editor { - height: 100%; - - .tox { - .tox-toolbar-overlord, - .tox-toolbar__primary { - background: transparent; - } - } - } -} diff --git a/scss/components/shared/_embedded_document_list.scss b/scss/components/shared/_embedded_document_list.scss deleted file mode 100644 index 50b8d5e1..00000000 --- a/scss/components/shared/_embedded_document_list.scss +++ /dev/null @@ -1,152 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Gesina Schwalbe - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/mixins"; -@use "../../utils/variables"; - -.ds4-embedded-document-list { - @include mixins.mark-invalid-or-disabled-input; - - $row-height: 1.75em; - - display: grid; - grid-column-gap: 0.5em; - grid-row-gap: 0.2em; - margin: 0; - padding: 0.5em 0; - - &--weapon { - grid-template-columns: $row-height $row-height 3ch 3fr $row-height 1fr 3ch 5fr 5ch; - :nth-child(9n + 1), - :nth-child(9n + 5), - :nth-child(9n + 6), - :nth-child(9n + 7) { - justify-self: center; - } - } - &--armor { - grid-template-columns: $row-height $row-height 3ch 3fr 1fr 1fr 3ch 5fr 5ch; - :nth-child(9n + 1), - :nth-child(9n + 7) { - justify-self: center; - } - } - &--shield { - grid-template-columns: $row-height $row-height 3ch 1fr 3ch 3fr 5ch; - :nth-child(7n + 1), - :nth-child(7n + 5) { - justify-self: center; - } - } - &--equipment { - grid-template-columns: $row-height $row-height 3ch 1fr 10ch 3fr 5ch; - :nth-child(7n + 1) { - justify-self: center; - } - } - &--loot { - grid-template-columns: $row-height 3ch 1fr 10ch 3fr 5ch; - } - &--spell { - grid-template-columns: $row-height $row-height 2fr $row-height 1fr 1fr 1fr 1fr 5ch; - :nth-child(9n + 1), - :nth-child(9n + 4) { - justify-self: center; - } - } - &--talent { - grid-template-columns: $row-height 1fr 4ch 3fr 5ch; - :nth-child(9n + 3) { - justify-self: center; - } - } - &--racial-ability, - &--language, - &--alphabet, - &--special-creature-ability { - grid-template-columns: $row-height 1fr 3fr 5ch; - } - - &--effect { - grid-template-columns: $row-height $row-height $row-height 3fr 2fr $row-height 5ch; - :nth-child(7n + 1), - :nth-child(7n + 2), - :nth-child(7n + 6) { - justify-self: center; - } - } - - &--item-effect { - grid-template-columns: $row-height 1fr 5ch; - } - - &__row { - display: contents; // TODO: Once chromium supports `grid-template-columns: subgrid` (https://bugs.chromium.org/p/chromium/issues/detail?id=618969), switch to `display: grid; grid: 1/-1; grid-template-columns: subgrid` - - &--header { - font-weight: bold; - } - - > * { - height: $row-height; - line-height: $row-height; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - } - - &__image { - border: none; - } - - &__editable { - &[type="text"], - &[type="number"] { - background-color: transparent; - border: 0; - padding: 0; - height: 100%; - } - - &--checkbox { - &[type="checkbox"] { - width: 100%; - height: 100%; - margin: 0px; - } - } - } - - &__description { - overflow: hidden; - text-overflow: ellipsis; - - :not(:first-child) { - display: none; - } - - > * { - font-size: 0.75em; - margin: 0; - overflow: hidden; - text-overflow: ellipsis; - } - } - - &__clickable { - cursor: pointer; - } -} - -.ds4-embedded-document-list-title { - border-bottom: variables.$border-groove; - font-weight: bold; - margin-bottom: 0; - margin-top: 1em; - padding-left: 1em; -} diff --git a/scss/components/shared/_form_group.scss b/scss/components/shared/_form_group.scss deleted file mode 100644 index 12687e48..00000000 --- a/scss/components/shared/_form_group.scss +++ /dev/null @@ -1,27 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-form-group { - clear: both; - display: flex; - flex-direction: row; - flex-wrap: wrap; - margin: 3px 0; - align-items: center; - - &--start { - align-items: flex-start; - } - - & > * { - flex: 3; - } - - &__label { - flex: 2; - line-height: var(--form-field-height); - } -} diff --git a/scss/components/shared/_rollable_image.scss b/scss/components/shared/_rollable_image.scss deleted file mode 100644 index 53affbcd..00000000 --- a/scss/components/shared/_rollable_image.scss +++ /dev/null @@ -1,39 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-rollable-image { - position: relative; - - &--rollable { - cursor: pointer; - - &:hover { - .ds4-rollable-image__image { - opacity: 0.25; - } - - .ds4-rollable-image__overlay { - opacity: 1; - } - } - } - - &__image { - border: none; - transition: 0.1s ease; - } - - &__overlay { - border: none; - bottom: 0; - left: 0; - opacity: 0; - position: absolute; - right: 0; - top: 0; - transition: 0.1s ease; - } -} diff --git a/scss/components/shared/_sheet_body.scss b/scss/components/shared/_sheet_body.scss deleted file mode 100644 index 3b19d5ca..00000000 --- a/scss/components/shared/_sheet_body.scss +++ /dev/null @@ -1,10 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-sheet-body { - height: 100%; - overflow-y: auto; -} diff --git a/scss/components/shared/_sheet_form.scss b/scss/components/shared/_sheet_form.scss deleted file mode 100644 index 861de722..00000000 --- a/scss/components/shared/_sheet_form.scss +++ /dev/null @@ -1,13 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-sheet-form { - display: flex; - flex-direction: column; - flex-wrap: nowrap; - font-family: var(--ds4-font-primary); - height: 100%; -} diff --git a/scss/components/shared/_sheet_tab.scss b/scss/components/shared/_sheet_tab.scss deleted file mode 100644 index ea1d13fc..00000000 --- a/scss/components/shared/_sheet_tab.scss +++ /dev/null @@ -1,19 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-sheet-tab { - flex-direction: column; - flex-wrap: nowrap; - height: 100%; - - &[data-tab].active { - display: flex; - } - - > * { - flex-shrink: 0; - } -} diff --git a/scss/components/shared/_sheet_tab_nav.scss b/scss/components/shared/_sheet_tab_nav.scss deleted file mode 100644 index 676fea60..00000000 --- a/scss/components/shared/_sheet_tab_nav.scss +++ /dev/null @@ -1,28 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@use "../../utils/variables"; - -.ds4-sheet-tab-nav { - border-bottom: variables.$border-groove; - border-top: variables.$border-groove; - display: flex; - flex-wrap: nowrap; - height: calc(2 * var(--line-height-16)); - justify-content: space-around; - line-height: calc(2 * var(--line-height-16)); - margin: variables.$margin-sm 0; - - &__item { - flex: 0 1 auto !important; // necessary to override the styling from lang-de, see https://gitlab.com/henry4k/foundryvtt-lang-de/-/issues/9 - font-weight: bold; - white-space: nowrap; - - &.active { - text-shadow: 0 0 variables.$padding-md var(--color-shadow-primary); - } - } -} diff --git a/scss/ds4.scss b/scss/ds4.scss deleted file mode 100644 index 4f533640..00000000 --- a/scss/ds4.scss +++ /dev/null @@ -1,49 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Oliver Rümpelein - * SPDX-FileCopyrightText: 2021 Gesina Schwalbe - * - * SPDX-License-Identifier: MIT - */ - -// global -@import "global/accessibility"; -@import "global/fonts"; -@import "global/utils"; - -// shared -@import "components/shared/add_button"; -@import "components/shared/control_button_group"; -@import "components/shared/checkbox_grid"; -@import "components/shared/editor"; -@import "components/shared/embedded_document_list"; -@import "components/shared/form_group"; -@import "components/shared/rollable_image"; -@import "components/shared/sheet_body"; -@import "components/shared/sheet_form"; -@import "components/shared/sheet_tab_nav"; -@import "components/shared/sheet_tab"; - -// actor -@import "components/actor/actor_header"; -@import "components/actor/actor_progression"; -@import "components/actor/actor_properties"; -@import "components/actor/actor_sheet"; -@import "components/actor/biography"; -@import "components/actor/check"; -@import "components/actor/checks"; -@import "components/actor/combat_value"; -@import "components/actor/combat_values"; -@import "components/actor/core_value"; -@import "components/actor/core_values"; -@import "components/actor/currency"; -@import "components/actor/description"; -@import "components/actor/profile"; - -// item -@import "components/item/item_header"; -@import "components/item/item_properties"; -@import "components/item/item_sheet"; - -// dice -@import "components/dice/dice_total"; diff --git a/scss/global/_accessibility.scss b/scss/global/_accessibility.scss deleted file mode 100644 index 6e82b2c9..00000000 --- a/scss/global/_accessibility.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Oliver Rümpelein - * - * SPDX-License-Identifier: MIT - */ - -.ds4-hidden { - display: none; -} - -// This is needed for higher specifity -form .ds4-hidden { - display: none; -} diff --git a/scss/global/_fonts.scss b/scss/global/_fonts.scss deleted file mode 100644 index 4e79e4c0..00000000 --- a/scss/global/_fonts.scss +++ /dev/null @@ -1,60 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -@font-face { - font-display: swap; - font-family: "Lora"; - font-style: normal; - font-weight: normal; - src: - local("Lora"), - url("../fonts/Lora/Lora.woff") format("woff"); -} - -@font-face { - font-display: swap; - font-family: "Lora"; - font-style: normal; - font-weight: bold; - src: - local("Lora"), - url("../fonts/Lora/Lora-Bold.woff") format("woff"); -} - -@font-face { - font-display: swap; - font-family: "Lora"; - font-style: italic; - font-weight: normal; - src: - local("Lora"), - url("../fonts/Lora/Lora-Italic.woff") format("woff"); -} - -@font-face { - font-display: swap; - font-family: "Lora"; - font-style: italic; - font-weight: bold; - src: - local("Lora"), - url("../fonts/Lora/Lora-BoldItalic.woff") format("woff"); -} - -@font-face { - font-display: swap; - font-family: "Wood Stamp"; - font-style: normal; - font-weight: normal; - src: - local("Wood Stamp"), - url("../fonts/Woodstamp/Woodstamp.woff") format("woff"); -} - -:root { - --ds4-font-primary: Lora, serif; - --ds4-font-heading: "Wood Stamp", sans-serif; -} diff --git a/scss/global/_utils.scss b/scss/global/_utils.scss deleted file mode 100644 index 4f982d05..00000000 --- a/scss/global/_utils.scss +++ /dev/null @@ -1,14 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2022 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - -.ds4-code-input { - font-family: var(--font-mono); -} - -// This is needed for higher specifity -form .ds4-code-input { - font-family: var(--font-mono); -} diff --git a/scss/utils/_mixins.scss b/scss/utils/_mixins.scss deleted file mode 100644 index edd0775f..00000000 --- a/scss/utils/_mixins.scss +++ /dev/null @@ -1,31 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Gesina Schwalbe - * - * SPDX-License-Identifier: MIT - */ - -@use "./colors"; - -@mixin centered-content { - display: grid; - place-items: center; -} - -@mixin mark-invalid-or-disabled-input { - input:invalid { - background-color: colors.$c-invalid-input; - } - input:disabled { - background-color: transparent; - } -} - -@mixin foundry-highlight-text-shadow { - text-shadow: 0 0 10px var(--color-shadow-primary); -} - -@mixin font-heading-upper { - font-family: var(--ds4-font-heading); - text-transform: uppercase; -} diff --git a/spec/dice/check-evaluation.spec.ts b/spec/dice/check-evaluation.spec.ts deleted file mode 100644 index f905426f..00000000 --- a/spec/dice/check-evaluation.spec.ts +++ /dev/null @@ -1,374 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { describe, expect, it } from "vitest"; - -import { evaluateCheck } from "../../src/dice/check-evaluation"; - -describe("evaluateCheck with no dice", () => { - it("should throw an error.", () => { - expect(() => evaluateCheck([], 10)).toThrow("Invalid number of dice."); - }); -}); - -describe("evaluateCheck with more dice than required by the checkTargetNumber", () => { - it("should throw an error.", () => { - expect(() => evaluateCheck([10, 10], 10)).toThrow("Invalid number of dice."); - }); -}); - -describe("evaluateCheck with less dice than required by the checkTargetNumber", () => { - it("should throw an error.", () => { - expect(() => evaluateCheck([10], 21)).toThrow("Invalid number of dice."); - }); -}); - -describe("evaluateCheck with a single die", () => { - it("should assign the checkTargetNumber to the single die and be successful.", () => { - expect(evaluateCheck([4], 12)).toEqual([{ result: 4, checkTargetNumber: 12, active: true, discarded: false }]); - }); - - it("should assign the checkTargetNumber to the single die on upper edge case and be successful.", () => { - expect(evaluateCheck([4], 4)).toEqual([{ result: 4, checkTargetNumber: 4, active: true, discarded: false }]); - }); - - it("should assign the checkTargetNumber to the single die on lower edge case not be successful.", () => { - expect(evaluateCheck([5], 4)).toEqual([{ result: 5, checkTargetNumber: 4, active: false, discarded: true }]); - }); - - it("should assign the checkTargetNumber to the single die and not be successful on upper edge case '19'", () => { - expect(evaluateCheck([19], 4)).toEqual([{ result: 19, checkTargetNumber: 4, active: false, discarded: true }]); - }); - - it("should assign the checkTargetNumber to the single die and coup on '1'", () => { - expect(evaluateCheck([1], 4)).toEqual([ - { result: 1, checkTargetNumber: 4, active: true, discarded: false, success: true, count: 4 }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and fumble on '20'", () => { - expect(evaluateCheck([20], 4)).toEqual([ - { result: 20, checkTargetNumber: 4, active: false, discarded: true, failure: true }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and coup on 1", () => { - expect(evaluateCheck([1], 0)).toEqual([ - { result: 1, checkTargetNumber: 0, active: true, discarded: false, success: true, count: 0 }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and fail on values > 1 and < 20", () => { - for (let i = 2; i < 20; i++) { - expect(evaluateCheck([i], 0)).toEqual([{ result: i, checkTargetNumber: 0, active: false, discarded: true }]); - } - }); - - it("should roll a die even when the checkTargetNumber is 0 and fumble on 20", () => { - expect(evaluateCheck([20], 0)).toEqual([ - { result: 20, checkTargetNumber: 0, active: false, discarded: true, failure: true }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and coup on 1", () => { - expect(evaluateCheck([1], -1)).toEqual([ - { result: 1, checkTargetNumber: -1, active: true, discarded: false, success: true, count: -1 }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fail on values > 1 and < 20", () => { - for (let i = 2; i < 20; i++) { - expect(evaluateCheck([i], -1)).toEqual([{ result: i, checkTargetNumber: -1, active: false, discarded: true }]); - } - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fumble on 20", () => { - expect(evaluateCheck([20], -1)).toEqual([ - { result: 20, checkTargetNumber: -1, active: false, discarded: true, failure: true }, - ]); - }); -}); - -describe("evaluateCheck with a single die and coup / fumble modification", () => { - const maximumCoupResult = 2; - const minimumFumbleResult = 19; - - it("should assign the checkTargetNumber to the single die and coup on 'maximumCoupResult'", () => { - expect(evaluateCheck([maximumCoupResult], 4, { maximumCoupResult })).toEqual([ - { - result: maximumCoupResult, - checkTargetNumber: 4, - active: true, - discarded: false, - success: true, - count: 4, - }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and not coup on lower edge case 'maximumCoupResult + 1'", () => { - expect(evaluateCheck([maximumCoupResult + 1], 4, { maximumCoupResult })).toEqual([ - { result: maximumCoupResult + 1, checkTargetNumber: 4, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and fumble on 'minimumFumbleResultResult'", () => { - expect(evaluateCheck([minimumFumbleResult], 20, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult, checkTargetNumber: 20, active: true, discarded: false, failure: true }, - ]); - }); - - it("should assign the checkTargetNumber to the single die and not fumble on upper edge case 'minimumFumbleResult - 1'", () => { - expect(evaluateCheck([minimumFumbleResult - 1], 20, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult - 1, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and coup on 'maximumCoupResult'", () => { - expect(evaluateCheck([maximumCoupResult], 0, { maximumCoupResult })).toEqual([ - { - result: maximumCoupResult, - checkTargetNumber: 0, - active: true, - discarded: false, - success: true, - count: 0, - }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { - for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { - expect(evaluateCheck([i], 0, { maximumCoupResult, minimumFumbleResult })).toEqual([ - { result: i, checkTargetNumber: 0, active: false, discarded: true }, - ]); - } - }); - - it("should roll a die even when the checkTargetNumber is 0 and fumble on 'minimumFumbleResult'", () => { - expect(evaluateCheck([minimumFumbleResult], 0, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult, checkTargetNumber: 0, active: false, discarded: true, failure: true }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and coup on 'maximumCoupResult'", () => { - expect(evaluateCheck([maximumCoupResult], -1, { maximumCoupResult })).toEqual([ - { - result: maximumCoupResult, - checkTargetNumber: -1, - active: true, - discarded: false, - success: true, - count: -1, - }, - ]); - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fail on '> maximumCoupResult and < minimumFumbleResult", () => { - for (let i = maximumCoupResult + 1; i < minimumFumbleResult; i++) { - expect(evaluateCheck([i], -1, { maximumCoupResult, minimumFumbleResult })).toEqual([ - { result: i, checkTargetNumber: -1, active: false, discarded: true }, - ]); - } - }); - - it("should roll a die even when the checkTargetNumber is < 0 and fumble on 'minimumFumbleResult'", () => { - expect(evaluateCheck([minimumFumbleResult], -1, { minimumFumbleResult })).toEqual([ - { result: minimumFumbleResult, checkTargetNumber: -1, active: false, discarded: true, failure: true }, - ]); - }); -}); - -describe("evaluateCheck with multiple dice", () => { - it("should assign the checkTargetNumber for the last sub check to the lowest non coup, even if the first is '20'.", () => { - expect(evaluateCheck([20, 6, 15], 48)).toEqual([ - { result: 20, checkTargetNumber: 20, active: true, discarded: false, failure: true }, - { result: 6, checkTargetNumber: 8, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups.", () => { - expect(evaluateCheck([1, 1, 1], 48)).toEqual([ - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { - expect(evaluateCheck([15, 15, 15], 48)).toEqual([ - { result: 15, checkTargetNumber: 8, active: false, discarded: true }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough.", () => { - expect(evaluateCheck([15, 15, 1], 48)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { - expect(evaluateCheck([15, 1, 20], 48)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 20, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { - expect(evaluateCheck([15, 4, 12], 46)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 4, checkTargetNumber: 6, active: true, discarded: false }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { - expect(evaluateCheck([15, 8, 12], 46)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([15, 1, 8], 46)).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([1, 8], 24)).toEqual([ - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 4, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup used for last sub CTN.", () => { - expect(evaluateCheck([1, 19], 38)).toEqual([ - { result: 1, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup and a coup is used for the last sub CTN", () => { - expect(evaluateCheck([1, 1, 15], 48)).toEqual([ - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); -}); - -describe("evaluateCheck with multiple dice and coup / fumble modification", () => { - it("should assign the checkTargetNumber for the last sub check to the lowest non coup and fumble if the first is '19'.", () => { - expect(evaluateCheck([19, 15, 6], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 19, checkTargetNumber: 20, active: true, discarded: false, failure: true }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 6, checkTargetNumber: 8, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups ('1' and '2').", () => { - expect(evaluateCheck([2, 1, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { - expect(evaluateCheck([15, 15, 15], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 8, active: false, discarded: true }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough.", () => { - expect(evaluateCheck([15, 15, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { - expect(evaluateCheck([15, 2, 20], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 20, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '19'.", () => { - expect(evaluateCheck([15, 2, 19], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { - expect(evaluateCheck([15, 4, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 4, checkTargetNumber: 6, active: true, discarded: false }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { - expect(evaluateCheck([15, 8, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - { result: 12, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([15, 2, 8], 46, { maximumCoupResult: 2 })).toEqual([ - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 6, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { - expect(evaluateCheck([2, 8], 24, { maximumCoupResult: 2 })).toEqual([ - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 8, checkTargetNumber: 4, active: false, discarded: true }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup used for last sub CTN.", () => { - expect(evaluateCheck([2, 19], 38, { maximumCoupResult: 2 })).toEqual([ - { result: 2, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup ('1' and '2') and a coup is used for the last sub CTN", () => { - expect(evaluateCheck([1, 2, 15], 48, { maximumCoupResult: 2 })).toEqual([ - { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 15, checkTargetNumber: 20, active: true, discarded: false }, - ]); - }); - - it("should use all the dice if they are coups, even if they are higher than the checkTargetNumber", () => { - expect(evaluateCheck([18, 19, 17], 48, { maximumCoupResult: 19 })).toEqual([ - { result: 18, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, - { result: 19, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - { result: 17, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, - ]); - }); -}); diff --git a/spec/documents/item/spell/calculate-spell-price.spec.ts b/spec/documents/item/spell/calculate-spell-price.spec.ts deleted file mode 100644 index 4f97de6c..00000000 --- a/spec/documents/item/spell/calculate-spell-price.spec.ts +++ /dev/null @@ -1,234 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { describe, expect, it } from "vitest"; - -import { calculateSpellPrice } from "../../../../src/documents/item/spell/calculate-spell-price"; - -import type { CooldownDuration, DS4SpellDataSourceData } from "../../../../src/documents/item/spell/spell-data-source"; - -const defaultData: DS4SpellDataSourceData = { - description: "", - equipped: false, - spellType: "spellcasting", - spellModifier: { - numerical: 0, - complex: "", - }, - allowsDefense: false, - spellGroups: { - lightning: false, - earth: false, - water: false, - ice: false, - fire: false, - healing: false, - light: false, - air: false, - transport: false, - damage: false, - shadow: false, - protection: false, - mindAffecting: false, - demonology: false, - necromancy: false, - transmutation: false, - area: false, - }, - maxDistance: { - value: "", - unit: "meter", - }, - effectRadius: { - value: "", - unit: "meter", - }, - duration: { - value: "", - unit: "custom", - }, - cooldownDuration: "0r", - minimumLevels: { - healer: null, - wizard: null, - sorcerer: null, - }, -}; - -type TestCase = { - minimumLevel: number | null; - expected: number | null; -}; - -type CombinedTestCase = { - minimumLevels: DS4SpellDataSourceData["minimumLevels"]; - expected: number | null; - description: string; -}; - -const testCases: Record = { - healer: [ - { minimumLevel: null, expected: null }, - { minimumLevel: 1, expected: 10 }, - { minimumLevel: 2, expected: 45 }, - { minimumLevel: 3, expected: 80 }, - { minimumLevel: 4, expected: 115 }, - { minimumLevel: 5, expected: 150 }, - { minimumLevel: 6, expected: 185 }, - { minimumLevel: 7, expected: 220 }, - { minimumLevel: 8, expected: 255 }, - { minimumLevel: 9, expected: 290 }, - { minimumLevel: 10, expected: 325 }, - { minimumLevel: 11, expected: 360 }, - { minimumLevel: 12, expected: 395 }, - { minimumLevel: 13, expected: 430 }, - { minimumLevel: 14, expected: 465 }, - { minimumLevel: 15, expected: 500 }, - { minimumLevel: 16, expected: 535 }, - { minimumLevel: 17, expected: 570 }, - { minimumLevel: 18, expected: 605 }, - { minimumLevel: 19, expected: 640 }, - { minimumLevel: 20, expected: 675 }, - ], - sorcerer: [ - { minimumLevel: null, expected: null }, - { minimumLevel: 1, expected: 10 }, - { minimumLevel: 2, expected: 75 }, - { minimumLevel: 3, expected: 140 }, - { minimumLevel: 4, expected: 205 }, - { minimumLevel: 5, expected: 270 }, - { minimumLevel: 6, expected: 335 }, - { minimumLevel: 7, expected: 400 }, - { minimumLevel: 8, expected: 465 }, - { minimumLevel: 9, expected: 530 }, - { minimumLevel: 10, expected: 595 }, - { minimumLevel: 11, expected: 660 }, - { minimumLevel: 12, expected: 725 }, - { minimumLevel: 13, expected: 790 }, - { minimumLevel: 14, expected: 855 }, - { minimumLevel: 15, expected: 920 }, - { minimumLevel: 16, expected: 985 }, - { minimumLevel: 17, expected: 1050 }, - { minimumLevel: 18, expected: 1115 }, - { minimumLevel: 19, expected: 1180 }, - { minimumLevel: 20, expected: 1245 }, - ], - wizard: [ - { minimumLevel: null, expected: null }, - { minimumLevel: 1, expected: 10 }, - { minimumLevel: 2, expected: 60 }, - { minimumLevel: 3, expected: 110 }, - { minimumLevel: 4, expected: 160 }, - { minimumLevel: 5, expected: 210 }, - { minimumLevel: 6, expected: 260 }, - { minimumLevel: 7, expected: 310 }, - { minimumLevel: 8, expected: 360 }, - { minimumLevel: 9, expected: 410 }, - { minimumLevel: 10, expected: 460 }, - { minimumLevel: 11, expected: 510 }, - { minimumLevel: 12, expected: 560 }, - { minimumLevel: 13, expected: 610 }, - { minimumLevel: 14, expected: 660 }, - { minimumLevel: 15, expected: 710 }, - { minimumLevel: 16, expected: 760 }, - { minimumLevel: 17, expected: 810 }, - { minimumLevel: 18, expected: 860 }, - { minimumLevel: 19, expected: 910 }, - { minimumLevel: 20, expected: 960 }, - ], -}; - -function buildCombinedTestCases(): CombinedTestCase[] { - const combinedTestCases: CombinedTestCase[] = []; - - // permutation test cases - const isRelevantPermutationTestCase = (t: TestCase) => - ([null, 1, 10, 20] as (number | null)[]).includes(t.minimumLevel); - - for (const healerTestCase of testCases.healer.filter(isRelevantPermutationTestCase)) { - for (const sorcererTestCase of testCases.sorcerer.filter(isRelevantPermutationTestCase)) { - for (const wizardTestCase of testCases.wizard.filter(isRelevantPermutationTestCase)) { - const expected = - healerTestCase.expected !== null || sorcererTestCase.expected !== null || wizardTestCase.expected !== null - ? Math.min( - healerTestCase.expected ?? Infinity, - sorcererTestCase.expected ?? Infinity, - wizardTestCase.expected ?? Infinity, - ) - : null; - const minimumLevels = { - healer: healerTestCase.minimumLevel, - sorcerer: sorcererTestCase.minimumLevel, - wizard: wizardTestCase.minimumLevel, - }; - const description = JSON.stringify(minimumLevels); - combinedTestCases.push({ - minimumLevels, - expected, - description, - }); - } - } - } - - // single test cases - const isRelevantSingleTestCase = (t: TestCase) => t.minimumLevel !== null; - - for (const spellCasterClass of ["healer", "sorcerer", "wizard"] as const) { - for (const testCase of testCases[spellCasterClass].filter(isRelevantSingleTestCase)) { - const minimumLevels = { - ...defaultData.minimumLevels, - [spellCasterClass]: testCase.minimumLevel, - }; - const description = JSON.stringify(minimumLevels); - combinedTestCases.push({ - minimumLevels, - expected: testCase.expected, - description, - }); - } - } - - return combinedTestCases; -} - -describe("calculateSpellPrice", () => { - const cooldownDurations: { cooldownDuration: CooldownDuration; factor: number }[] = [ - { cooldownDuration: "0r", factor: 1 }, - { cooldownDuration: "1r", factor: 1 }, - { cooldownDuration: "2r", factor: 1 }, - { cooldownDuration: "5r", factor: 1 }, - { cooldownDuration: "10r", factor: 1 }, - { cooldownDuration: "100r", factor: 1 }, - { cooldownDuration: "1d", factor: 2 }, - { cooldownDuration: "d20d", factor: 3 }, - ]; - - describe.each(cooldownDurations)( - "with cooldown duration set to $cooldownDuration", - ({ cooldownDuration, factor }) => { - const dataWithCooldownDuration = { - ...defaultData, - cooldownDuration, - }; - - it.each(buildCombinedTestCases())( - `returns ${factor} × $expected if the minimum leves are $description`, - ({ minimumLevels, expected }) => { - // given - const data: DS4SpellDataSourceData = { - ...dataWithCooldownDuration, - minimumLevels, - }; - - // when - const spellPrice = calculateSpellPrice(data); - - // then - expect(spellPrice).toBe(expected !== null ? expected * factor : expected); - }, - ); - }, - ); -}); diff --git a/spec/expression-evaluation/evaluator.spec.ts b/spec/expression-evaluation/evaluator.spec.ts deleted file mode 100644 index 57b32abc..00000000 --- a/spec/expression-evaluation/evaluator.spec.ts +++ /dev/null @@ -1,90 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { describe, expect, it } from "vitest"; - -import { defaultEvaluator, Evaluator, mathEvaluator } from "../../src/expression-evaluation/evaluator"; - -describe("Evaluator", () => { - it("evaluates expressions that only use identifiers according to the given predicate", () => { - // given - const expression = "typeof 'foo' === 'string' ? 42 : null"; - - // when - const result = defaultEvaluator.evaluate(expression); - - // then - expect(result).toEqual(42); - }); - - it("fails to evaluate expressions that contain identifiers that are not allowed by the predicate", () => { - // given - const expression = "typeof 'foo' === 'string' ? 42 : function (){}"; - - // when - const evaluate = () => defaultEvaluator.evaluate(expression); - - // then - expect(evaluate).toThrowError("'function' is not an allowed identifier."); - }); - - it("fails to evaluate expressions that contain invalid tokens", () => { - // given - const expression = "1;"; - - // when - const evaluate = () => defaultEvaluator.evaluate(expression); - - // then - expect(evaluate).toThrowError("Invalid or unexpected token (1)"); - }); - - it("fails to evaluate expressions that contain arrow functions", () => { - // given - const expression = "(() => 1)()"; - - // when - const evaluate = () => defaultEvaluator.evaluate(expression); - - // then - expect(evaluate).toThrowError("Invalid or unexpected token (4)"); - }); - - it("makes the given context available", () => { - // given - const context = { floor: Math.floor }; - const evaluator = new Evaluator({ context }); - const expression = "floor(0.5)"; - - // when - const result = evaluator.evaluate(expression); - - // then - expect(result).toEqual(0); - }); - - describe("mathEvaluator", () => { - it("makes the given context available", () => { - // given - const expression = "sqrt(sin(PI))"; - - // when - const result = mathEvaluator.evaluate(expression); - - // then - expect(result).toEqual(Math.sqrt(Math.sin(Math.PI))); - }); - - it("does not give acces to the function constructor", () => { - // given - const expression = "sqrt.constructor"; - - // when - const evaluate = () => mathEvaluator.evaluate(expression); - - // then - expect(evaluate).toThrowError("'constructor' is not an allowed identifier."); - }); - }); -}); diff --git a/spec/expression-evaluation/lexer.spec.ts b/spec/expression-evaluation/lexer.spec.ts deleted file mode 100644 index ffb9a2b2..00000000 --- a/spec/expression-evaluation/lexer.spec.ts +++ /dev/null @@ -1,602 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { describe, expect, it } from "vitest"; - -import { Lexer } from "../../src/expression-evaluation/lexer"; - -import type { Token } from "../../src/expression-evaluation/grammar"; - -describe("Lexer", () => { - const singleOperatorTestCases: { input: string; expected: Token[] }[] = [ - { - input: "+", - expected: [ - { type: "+", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "-", - expected: [ - { type: "-", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "*", - expected: [ - { type: "*", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "**", - expected: [ - { type: "**", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "/", - expected: [ - { type: "/", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "%", - expected: [ - { type: "%", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "===", - expected: [ - { type: "===", pos: 0 }, - { type: "eof", pos: 3 }, - ], - }, - { - input: "!==", - expected: [ - { type: "!==", pos: 0 }, - { type: "eof", pos: 3 }, - ], - }, - { - input: "==", - expected: [ - { type: "==", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "<", - expected: [ - { type: "<", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "<=", - expected: [ - { type: "<=", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: ">", - expected: [ - { type: ">", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: ">=", - expected: [ - { type: ">=", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "&&", - expected: [ - { type: "&&", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "||", - expected: [ - { type: "||", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "&", - expected: [ - { type: "&", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "|", - expected: [ - { type: "|", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "<<", - expected: [ - { type: "<<", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: ">>>", - expected: [ - { type: ">>>", pos: 0 }, - { type: "eof", pos: 3 }, - ], - }, - { - input: ".", - expected: [ - { type: ".", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "?.", - expected: [ - { type: "?.", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "??", - expected: [ - { type: "??", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "?", - expected: [ - { type: "?", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: ":", - expected: [ - { type: ":", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "(", - expected: [ - { type: "(", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: ")", - expected: [ - { type: ")", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "[", - expected: [ - { type: "[", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "]", - expected: [ - { type: "]", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: ",", - expected: [ - { type: ",", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "{", - expected: [ - { type: "{", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "}", - expected: [ - { type: "}", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - ]; - - const singleNumberTestCases: { input: string; expected: Token[] }[] = [ - { - input: "1", - expected: [ - { type: "number", symbol: "1", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "42", - expected: [ - { type: "number", symbol: "42", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "42.9", - expected: [ - { type: "number", symbol: "42.9", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: ".9", - expected: [ - { type: "number", symbol: ".9", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "1_1", - expected: [ - { type: "number", symbol: "1_1", pos: 0 }, - { type: "eof", pos: 3 }, - ], - }, - { - input: "10_1", - expected: [ - { type: "number", symbol: "10_1", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "1_1_1", - expected: [ - { type: "number", symbol: "1_1_1", pos: 0 }, - { type: "eof", pos: 5 }, - ], - }, - { - input: ".1_1", - expected: [ - { type: "number", symbol: ".1_1", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - ]; - - const invalidNumberTestCases: { input: string; expected: Token[] }[] = [ - { input: "1.1.1", expected: [{ type: "invalid", pos: 0 }] }, - { input: "1__1", expected: [{ type: "invalid", pos: 0 }] }, - { input: "1_", expected: [{ type: "invalid", pos: 0 }] }, - { input: "1._1", expected: [{ type: "invalid", pos: 0 }] }, - { input: "0_1", expected: [{ type: "invalid", pos: 0 }] }, - { input: "00_1", expected: [{ type: "invalid", pos: 0 }] }, - ]; - - const singleIdentifierTestCases: { input: string; expected: Token[] }[] = [ - { - input: "foo", - expected: [ - { type: "iden", symbol: "foo", pos: 0 }, - { type: "eof", pos: 3 }, - ], - }, - { - input: "_foo", - expected: [ - { type: "iden", symbol: "_foo", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "$foo", - expected: [ - { type: "iden", symbol: "$foo", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "foo1", - expected: [ - { type: "iden", symbol: "foo1", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "_foo1_", - expected: [ - { type: "iden", symbol: "_foo1_", pos: 0 }, - { type: "eof", pos: 6 }, - ], - }, - { - input: "μ", - expected: [ - { type: "iden", symbol: "μ", pos: 0 }, - { type: "eof", pos: 1 }, - ], - }, - { - input: "._1", - expected: [ - { type: ".", pos: 0 }, - { type: "iden", symbol: "_1", pos: 1 }, - { type: "eof", pos: 3 }, - ], - }, - { - input: "true", - expected: [ - { type: "iden", symbol: "true", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "false", - expected: [ - { type: "iden", symbol: "false", pos: 0 }, - { type: "eof", pos: 5 }, - ], - }, - { - input: "null", - expected: [ - { type: "iden", symbol: "null", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "undefined", - expected: [ - { type: "iden", symbol: "undefined", pos: 0 }, - { type: "eof", pos: 9 }, - ], - }, - ]; - - const invalidIdentifierTestCases: { input: string; expected: Token[] }[] = [ - { - input: "1foo", - expected: [ - { type: "number", symbol: "1", pos: 0 }, - { type: "iden", symbol: "foo", pos: 1 }, - { type: "eof", pos: 4 }, - ], - }, - { input: "↓", expected: [{ type: "invalid", pos: 0 }] }, - { input: '"', expected: [{ type: "invalid", pos: 0 }] }, - ]; - - const singleStringTestCases: { input: string; expected: Token[] }[] = [ - { - input: '""', - expected: [ - { type: "string", symbol: '""', pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: '"foo"', - expected: [ - { type: "string", symbol: '"foo"', pos: 0 }, - { type: "eof", pos: 5 }, - ], - }, - { - input: '"\\""', - expected: [ - { type: "string", symbol: '"\\""', pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: '"\\\'"', - expected: [ - { type: "string", symbol: '"\\\'"', pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "''", - expected: [ - { type: "string", symbol: "''", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "'foo'", - expected: [ - { type: "string", symbol: "'foo'", pos: 0 }, - { type: "eof", pos: 5 }, - ], - }, - { - input: "'\\''", - expected: [ - { type: "string", symbol: "'\\''", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "'\\\"'", - expected: [ - { type: "string", symbol: "'\\\"'", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: "``", - expected: [ - { type: "string", symbol: "``", pos: 0 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "`foo`", - expected: [ - { type: "string", symbol: "`foo`", pos: 0 }, - { type: "eof", pos: 5 }, - ], - }, - { - input: "`\\``", - expected: [ - { type: "string", symbol: "`\\``", pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - { - input: '`\\"`', - expected: [ - { type: "string", symbol: '`\\"`', pos: 0 }, - { type: "eof", pos: 4 }, - ], - }, - ]; - - const invalidStringTestCases: { input: string; expected: Token[] }[] = [ - { input: '"', expected: [{ type: "invalid", pos: 0 }] }, - { input: '"\\"', expected: [{ type: "invalid", pos: 0 }] }, - { input: "'", expected: [{ type: "invalid", pos: 0 }] }, - { input: "'\\'", expected: [{ type: "invalid", pos: 0 }] }, - ]; - - const whiteSpaceTestCases: { input: string; expected: Token[] }[] = [ - { input: " ", expected: [{ type: "eof", pos: 1 }] }, - { input: " ", expected: [{ type: "eof", pos: 3 }] }, - { input: "\n", expected: [{ type: "eof", pos: 1 }] }, - { input: " \n", expected: [{ type: "eof", pos: 2 }] }, - { input: " ", expected: [{ type: "eof", pos: 1 }] }, - ]; - - const complicatedTermTestCases: { input: string; expected: Token[] }[] = [ - { - input: "5x", - expected: [ - { type: "number", symbol: "5", pos: 0 }, - { type: "iden", symbol: "x", pos: 1 }, - { type: "eof", pos: 2 }, - ], - }, - { - input: "5*x", - expected: [ - { type: "number", symbol: "5", pos: 0 }, - { type: "*", pos: 1 }, - { type: "iden", symbol: "x", pos: 2 }, - { type: "eof", pos: 3 }, - ], - }, - { - input: "5 * x", - expected: [ - { type: "number", symbol: "5", pos: 0 }, - { type: "*", pos: 2 }, - { type: "iden", symbol: "x", pos: 4 }, - { type: "eof", pos: 5 }, - ], - }, - { - input: "(5 * 5 + 2) / 1.2 === 'foo'", - expected: [ - { type: "(", pos: 0 }, - { type: "number", symbol: "5", pos: 1 }, - { type: "*", pos: 3 }, - { type: "number", symbol: "5", pos: 5 }, - { type: "+", pos: 7 }, - { type: "number", symbol: "2", pos: 9 }, - { type: ")", pos: 10 }, - { type: "/", pos: 12 }, - { type: "number", symbol: "1.2", pos: 14 }, - { type: "===", pos: 18 }, - { type: "string", symbol: "'foo'", pos: 22 }, - { type: "eof", pos: 27 }, - ], - }, - { - input: "(() => {console.log('foo'); return 1;})()", - expected: [ - { type: "(", pos: 0 }, - { type: "(", pos: 1 }, - { type: ")", pos: 2 }, - { type: "invalid", pos: 4 }, - ], - }, - { - input: "(function() {console.log('foo'); return 1;})()", - expected: [ - { type: "(", pos: 0 }, - { type: "iden", symbol: "function", pos: 1 }, - { type: "(", pos: 9 }, - { type: ")", pos: 10 }, - { type: "{", pos: 12 }, - { type: "iden", symbol: "console", pos: 13 }, - { type: ".", pos: 20 }, - { type: "iden", symbol: "log", pos: 21 }, - { type: "(", pos: 24 }, - { type: "string", symbol: "'foo'", pos: 25 }, - { type: ")", pos: 30 }, - { type: "invalid", pos: 31 }, - ], - }, - { - input: "'ranged' === 'ranged'", - expected: [ - { type: "string", symbol: "'ranged'", pos: 0 }, - { type: "===", pos: 9 }, - { type: "string", symbol: "'ranged'", pos: 13 }, - { type: "eof", pos: 21 }, - ], - }, - ]; - - it.each([ - ...singleOperatorTestCases, - ...singleNumberTestCases, - ...invalidNumberTestCases, - ...singleIdentifierTestCases, - ...invalidIdentifierTestCases, - ...singleStringTestCases, - ...invalidStringTestCases, - ...whiteSpaceTestCases, - ...complicatedTermTestCases, - ])("lexes $input correctly", ({ input, expected }) => { - // when - const result = consume(new Lexer(input)); - - // then - expect(result).toEqual(expected); - }); -}); - -function consume(iterable: Iterable): T[] { - const result: T[] = []; - for (const value of iterable) { - result.push(value); - } - return result; -} diff --git a/spec/expression-evaluation/validator.spec.ts b/spec/expression-evaluation/validator.spec.ts deleted file mode 100644 index 52d556d7..00000000 --- a/spec/expression-evaluation/validator.spec.ts +++ /dev/null @@ -1,125 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { describe, expect, it } from "vitest"; - -import { literals, safeOperators } from "../../src/expression-evaluation/grammar"; -import { Validator } from "../../src/expression-evaluation/validator"; - -describe("Validator", () => { - it("allows identifier according to the given predicate", () => { - // given - const predicate = (identifier: string) => identifier === "true"; - const validator = new Validator(predicate); - const input = "true"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).not.toThrow(); - }); - - it("disallows identifier according to the given predicate", () => { - // given - const predicate = (identifier: string) => identifier === "false"; - const validator = new Validator(predicate); - const input = "true"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).toThrowError("'true' is not an allowed identifier"); - }); - - it("allows multiple identifiers according to the given predicate", () => { - // given - const predicate = (identifier: string) => identifier === "true" || identifier === "null"; - const validator = new Validator(predicate); - const input = "true null"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).not.toThrow(); - }); - - it("allows multiple identifiers in a more complex expression according to the given rule", () => { - // given - const predicate = (identifier: string) => identifier === "true" || identifier === "null"; - const validator = new Validator(predicate); - const input = "true === null"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).not.toThrow(); - }); - - it("mentions the first not allowed identifier in the thrown errror", () => { - // given - const predicate = (identifier: string) => identifier === "true" || identifier === "null"; - const validator = new Validator(predicate); - const input = "true === null && undefined === false"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).toThrowError("'undefined' is not an allowed identifier."); - }); - - it("disallows invalid invalid tokens", () => { - // given - const validator = new Validator(); - const input = ";"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).toThrowError("Invalid or unexpected token (0)"); - }); - - it("allows a complicated valid expression", () => { - // given - const predicate = (identifier: string) => [...safeOperators, ...literals, "floor", "random"].includes(identifier); - const validator = new Validator(predicate); - const input = "typeof (floor(random() * 5) / 2) === 'number' ? 42 : 'foo'"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).not.toThrow(); - }); - - it("disallows a complicated expression if it contains a disallowed identifier", () => { - // given - const predicate = (identifier: string) => [...safeOperators, ...literals, "ceil"].includes(identifier); - const validator = new Validator(predicate); - const input = "ceil.constructor('alert(1); return 1;')()"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).toThrowError("'constructor' is not an allowed identifier."); - }); - - it("disallows arrow functions", () => { - // given - const validator = new Validator(); - const input = "() => {}"; - - // when - const validate = () => validator.validate(input); - - // then - expect(validate).toThrowError("Invalid or unexpected token (3)"); - }); -}); diff --git a/spec/localization/localization.spec.ts b/spec/localization/localization.spec.ts index dd733db1..bfe91bc2 100644 --- a/spec/localization/localization.spec.ts +++ b/spec/localization/localization.spec.ts @@ -1,16 +1,14 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { describe, expect, it } from "vitest"; - -import de from "../../lang/de.json"; -import en from "../../lang/en.json"; +import * as fs from "fs-extra"; +import * as path from "path"; describe("English and german localization files", () => { - it("should have the same keys.", () => { - const deKeys = Object.keys(de); - const enKeys = Object.keys(en); - expect(deKeys).toEqual(enKeys); - }); + const localizationPath = "./src/lang/"; + const en: Record = fs.readJSONSync(path.join(localizationPath, "en.json")); + const de: Record = fs.readJSONSync(path.join(localizationPath, "de.json")); + + it("should have the same keys.", () => { + const deKeys = Object.keys(de); + const enKeys = Object.keys(en); + expect(deKeys).toEqual(enKeys); + }); }); diff --git a/spec/rolls/check-evaluation.spec.ts b/spec/rolls/check-evaluation.spec.ts new file mode 100644 index 00000000..4df65e2c --- /dev/null +++ b/spec/rolls/check-evaluation.spec.ts @@ -0,0 +1,269 @@ +import evaluateCheck from "../../src/module/rolls/check-evaluation"; + +Object.defineProperty(globalThis, "game", { value: { i18n: { localize: (key: string) => key } } }); + +describe("evaluateCheck with no dice", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([], 10)).toThrow("DS4.ErrorInvalidNumberOfDice"); + }); +}); + +describe("evaluateCheck with more dice than required by the checkTargetNumber", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([10, 10], 10)).toThrow("DS4.ErrorInvalidNumberOfDice"); + }); +}); + +describe("evaluateCheck with less dice than required by the checkTargetNumber", () => { + it("should throw an error.", () => { + expect(() => evaluateCheck([10], 21)).toThrow("DS4.ErrorInvalidNumberOfDice"); + }); +}); + +describe("evaluateCheck with a single die", () => { + it("should assign the checkTargetNumber to the single die and be successful.", () => { + expect(evaluateCheck([4], 12)).toEqual([{ result: 4, checkTargetNumber: 12, active: true, discarded: false }]); + }); + + it("should assign the checkTargetNumber to the single die on upper edge case and be successful.", () => { + expect(evaluateCheck([4], 4)).toEqual([{ result: 4, checkTargetNumber: 4, active: true, discarded: false }]); + }); + + it("should assign the checkTargetNumber to the single die on lower edge case not be successful.", () => { + expect(evaluateCheck([5], 4)).toEqual([{ result: 5, checkTargetNumber: 4, active: false, discarded: true }]); + }); + + it("should assign the checkTargetNumber to the single die and not be successful on upper edge case '19'", () => { + expect(evaluateCheck([19], 4)).toEqual([{ result: 19, checkTargetNumber: 4, active: false, discarded: true }]); + }); + + it("should assign the checkTargetNumber to the single die and coup on '1'", () => { + expect(evaluateCheck([1], 4)).toEqual([ + { result: 1, checkTargetNumber: 4, active: true, discarded: false, success: true, count: 4 }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and fumble on '20'", () => { + expect(evaluateCheck([20], 4)).toEqual([ + { result: 20, checkTargetNumber: 4, active: false, discarded: true, failure: true }, + ]); + }); +}); + +describe("evaluateCheck with a single die and coup / fumble modification", () => { + it("should assign the checkTargetNumber to the single die and coup on 'maximumCoupResult'", () => { + expect(evaluateCheck([2], 4, { maximumCoupResult: 2 })).toEqual([ + { result: 2, checkTargetNumber: 4, active: true, discarded: false, success: true, count: 4 }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and not coup on lower edge case '3'", () => { + expect(evaluateCheck([3], 4, { maximumCoupResult: 2 })).toEqual([ + { result: 3, checkTargetNumber: 4, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and fumble on 'minimumFUmbleResultResult'", () => { + expect(evaluateCheck([19], 20, { minimumFumbleResult: 19 })).toEqual([ + { result: 19, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + ]); + }); + + it("should assign the checkTargetNumber to the single die and not fumble on upper edge case '18'", () => { + expect(evaluateCheck([18], 20, { minimumFumbleResult: 19 })).toEqual([ + { result: 18, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); +}); + +describe("evaluateCheck with multiple dice", () => { + it("should assign the checkTargetNumber for the last sub check to the lowest non coup, even if the first is '20'.", () => { + expect(evaluateCheck([20, 6, 15], 48)).toEqual([ + { result: 20, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + { result: 6, checkTargetNumber: 8, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups.", () => { + expect(evaluateCheck([1, 1, 1], 48)).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { + expect(evaluateCheck([15, 15, 15], 48)).toEqual([ + { result: 15, checkTargetNumber: 8, active: false, discarded: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough.", () => { + expect(evaluateCheck([15, 15, 1], 48)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { + expect(evaluateCheck([15, 1, 20], 48)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 20, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { + expect(evaluateCheck([15, 4, 12], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 4, checkTargetNumber: 6, active: true, discarded: false }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { + expect(evaluateCheck([15, 8, 12], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([15, 1, 8], 46)).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([1, 8], 24)).toEqual([ + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 4, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups thrown'-edge case, coup used for last sub CTN.", () => { + expect(evaluateCheck([1, 19], 38)).toEqual([ + { result: 1, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup and a coup is used for the last sub CTN", () => { + expect(evaluateCheck([1, 1, 15], 48)).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); +}); + +describe("evaluateCheck with multiple dice and coup / fumble modification", () => { + it("should assign the checkTargetNumber for the last sub check to the lowest non coup and fumble if the first is '19'.", () => { + expect(evaluateCheck([19, 15, 6], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 19, checkTargetNumber: 20, active: true, discarded: false, failure: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 6, checkTargetNumber: 8, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup if there are only coups ('1' and '2').", () => { + expect(evaluateCheck([2, 1, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 1, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first lowest die, even if it is higher than that value.", () => { + expect(evaluateCheck([15, 15, 15], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 8, active: false, discarded: true }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough.", () => { + expect(evaluateCheck([15, 15, 2], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '20'.", () => { + expect(evaluateCheck([15, 2, 20], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 20, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to the first coup ('2') if its sum with the lowest non coup is high enough, even if the last die is '19'.", () => { + expect(evaluateCheck([15, 2, 19], 48, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when all dice are successes.", () => { + expect(evaluateCheck([15, 4, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 4, checkTargetNumber: 6, active: true, discarded: false }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when one dice is a failure.", () => { + expect(evaluateCheck([15, 8, 12], 46, { maximumCoupResult: 2, minimumFumbleResult: 19 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + { result: 12, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([15, 2, 8], 46, { maximumCoupResult: 2 })).toEqual([ + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 6, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup not used for last sub CTN.", () => { + expect(evaluateCheck([2, 8], 24, { maximumCoupResult: 2 })).toEqual([ + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 8, checkTargetNumber: 4, active: false, discarded: true }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result on 2-dice 'lowest dice higher than last check target number and coups ('2') thrown'-edge case, coup used for last sub CTN.", () => { + expect(evaluateCheck([2, 19], 38, { maximumCoupResult: 2 })).toEqual([ + { result: 2, checkTargetNumber: 18, active: true, discarded: false, success: true, count: 18 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should assign the checkTargetNumber for the last sub check to properly maximize the result when there is more than one coup ('1' and '2') and a coup is used for the last sub CTN", () => { + expect(evaluateCheck([1, 2, 15], 48, { maximumCoupResult: 2 })).toEqual([ + { result: 1, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 2, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 15, checkTargetNumber: 20, active: true, discarded: false }, + ]); + }); + + it("should use all the dice if they are coups, even if they are higher than the checkTargetNumber", () => { + expect(evaluateCheck([18, 19, 17], 48, { maximumCoupResult: 19 })).toEqual([ + { result: 18, checkTargetNumber: 8, active: true, discarded: false, success: true, count: 8 }, + { result: 19, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + { result: 17, checkTargetNumber: 20, active: true, discarded: false, success: true, count: 20 }, + ]); + }); +}); diff --git a/spec/setup.ts b/spec/setup.ts deleted file mode 100644 index 5bb4e4bb..00000000 --- a/spec/setup.ts +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import en from "../lang/en.json"; - -function setupPrimitives() { - Object.defineProperties(Number, { - isNumeric: { - value: function (n: unknown) { - if (n instanceof Array) return false; - else if (([null, ""] as unknown[]).includes(n)) return false; - // @ts-expect-error Abusing JavaScript a bit here, but it's the implementation from foundry - return +n === +n; - }, - }, - fromString: { - value: function (str: unknown) { - if (typeof str !== "string" || !str.length) return NaN; - // Remove whitespace. - str = str.replace(/\s+/g, ""); - return Number(str); - }, - }, - }); - - Object.defineProperties(Math, { - clamped: { - value: function (num: number, min: number, max: number) { - return Math.min(max, Math.max(num, min)); - }, - }, - }); -} - -function setupStubs() { - class StubGame { - constructor() { - this.i18n = { - localize: (key: string) => (key in en ? en[key as keyof typeof en] : key), - }; - } - i18n: { - localize: (key: string) => string; - }; - } - - const game = new StubGame(); - - Object.defineProperties(globalThis, { - game: { value: game }, - Game: { value: StubGame }, - }); -} - -setupPrimitives(); -setupStubs(); diff --git a/spec/tsconfig.json b/spec/tsconfig.json deleted file mode 100644 index 9e7018a5..00000000 --- a/spec/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../tsconfig.json", - "include": ["../src", "./"] -} diff --git a/spec/tsconfig.json.license b/spec/tsconfig.json.license deleted file mode 100644 index 31803f36..00000000 --- a/spec/tsconfig.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/spec/tsconfig.spec.json b/spec/tsconfig.spec.json new file mode 100644 index 00000000..e8d5b37c --- /dev/null +++ b/spec/tsconfig.spec.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "types": ["@league-of-foundry-developers/foundry-vtt-types", "jest"] + }, + "include": ["../src", "./"] +} diff --git a/src/apps/active-effect-config.js b/src/apps/active-effect-config.js deleted file mode 100644 index e0acae02..00000000 --- a/src/apps/active-effect-config.js +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export class DS4ActiveEffectConfig extends ActiveEffectConfig { - /** @override */ - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - template: "systems/ds4/templates/sheets/active-effect/active-effect-config.hbs", - }); - } - - /** - * @override - * @param {JQuery} html - */ - activateListeners(html) { - super.activateListeners(html); - const checkbox = html[0]?.querySelector('input[name="flags.ds4.itemEffectConfig.applyToItems"]'); - checkbox?.addEventListener("change", () => this.#toggleItemEffectConfig(checkbox.checked)); - } - - /** - * Toggle the visibility of the item effect config section - * @param {boolean} active The target state - */ - #toggleItemEffectConfig(active) { - const elements = this.element[0]?.querySelectorAll(".ds4-item-effect-config"); - elements?.forEach((element) => { - if (active) { - element.classList.remove("ds4-hidden"); - } else { - element.classList.add("ds4-hidden"); - } - }); - this.setPosition({ height: "auto" }); - } -} diff --git a/src/apps/actor/base-sheet.js b/src/apps/actor/base-sheet.js deleted file mode 100644 index 75a74b11..00000000 --- a/src/apps/actor/base-sheet.js +++ /dev/null @@ -1,496 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../../config"; -import { DS4ActiveEffect } from "../../documents/active-effect"; -import { isCheck } from "../../documents/actor/actor-data-properties-base"; -import { getDS4Settings } from "../../settings"; -import { notifications } from "../../ui/notifications"; -import { enforce, getCanvas, getGame } from "../../utils/utils"; -import { disableOverriddenFields } from "../sheet-helpers"; - -/** - * The base sheet class for all {@link DS4Actor}s. - */ -export class DS4ActorSheet extends ActorSheet { - /** @override */ - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-actor-sheet"], - height: 645, - scrollY: [".ds4-sheet-body"], - tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "values" }], - dragDrop: [ - { dragSelector: ".item-list .item", dropSelector: null }, - { dragSelector: ".effect-list .effect", dropSelector: null }, - { dragSelector: ".ds4-check", dropSelector: null }, - ], - width: 650, - }); - } - - /** @override */ - get template() { - const basePath = "systems/ds4/templates/sheets/actor"; - if (!getGame().user?.isGM && this.actor.limited) return `${basePath}/limited-sheet.hbs`; - return `${basePath}/${this.actor.type}-sheet.hbs`; - } - - /** @override */ - async getData(options = {}) { - const itemsByType = Object.fromEntries( - Object.entries(this.actor.itemTypes).map(([itemType, items]) => { - return [itemType, [...items].sort((a, b) => (a.sort || 0) - (b.sort || 0))]; - }), - ); - - const enrichedEffects = [...this.actor.allApplicableEffects()].map((effect) => { - return { - ...effect.toObject(), - sourceName: effect.parent instanceof Item ? effect.parent.name : effect.sourceName, - factor: effect.factor, - active: effect.active, - uuid: effect.uuid, - }; - }); - - const context = { - ...this.addTooltipsToData(await super.getData(options)), - config: DS4, - itemsByType, - enrichedEffects, - settings: getDS4Settings(), - }; - return context; - } - - /** - * Adds tooltips to the attributes, traits, and combatValues of the given context object. - * @param {object} context - * @protected - */ - addTooltipsToData(context) { - const valueGroups = [context.data.system.attributes, context.data.system.traits, context.data.system.combatValues]; - - valueGroups.forEach((valueGroup) => { - Object.values(valueGroup).forEach((attribute) => { - attribute.tooltip = this.getTooltipForValue(attribute); - }); - }); - return context; - } - - /** - * Generates a tooltip for a given attribute, trait, or combatValue. - * @param {import("../../documents/common/common-data").ModifiableDataBaseTotal} value The value to get a tooltip for - * @returns {string} The tooltip - * @protected - */ - getTooltipForValue(value) { - return `${value.base} (${getGame().i18n.localize("DS4.TooltipBaseValue")}) + ${ - value.mod - } (${getGame().i18n.localize("DS4.TooltipModifier")}) ➞ ${getGame().i18n.localize("DS4.TooltipEffects")} ➞ ${ - value.total - }`; - } - - /** - * @param {JQuery} html - * @override - */ - activateListeners(html) { - super.activateListeners(html); - - if (!this.options.editable) return; - - html.find(".control-item").on("click", this.onControlItem.bind(this)); - html.find(".change-item").on("change", this.onChangeItem.bind(this)); - - html.find(".control-effect").on("click", this.onControlEffect.bind(this)); - html.find(".change-effect").on("change", this.onChangeEffect.bind(this)); - - html.find(".rollable-item").on("click", this.onRollItem.bind(this)); - html.find(".rollable-check").on("click", this.onRollCheck.bind(this)); - - html.find(".sort-items").on("click", this.onSortItems.bind(this)); - - disableOverriddenFields(this.form, this.actor.overrides, (key) => `[name="${key}"]`); - for (const item of this.actor.items) { - disableOverriddenFields( - this.form, - item.overrides, - (key) => `[data-item-uuid="${item.uuid}"] .change-item[data-property="${key}"]`, - ); - } - } - - /** - * Handles a click on an element of this sheet to control an embedded item of the actor corresponding to this sheet. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onControlItem(event) { - event.preventDefault(); - const a = event.currentTarget; - switch (a.dataset["action"]) { - case "create": - return this.onCreateItem(event); - case "edit": - return this.onEditItem(event); - case "delete": - return this.onDeleteItem(event); - } - } - - /** - * Creates a new embedded item using the initial data defined in the HTML dataset of the clicked element. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onCreateItem(event) { - const { type } = foundry.utils.deepClone(event.currentTarget.dataset); - const name = getGame().i18n.localize(`DS4.New${type.capitalize()}Name`); - const itemData = { name, type }; - Item.create(itemData, { parent: this.actor }); - } - - /** - * Opens the sheet of the embedded item corresponding to the clicked element. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - async onEditItem(event) { - const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); - const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; - const item = await fromUuid(uuid); - enforce( - item && item.parent === this.actor, - getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), - ); - item.sheet?.render(true); - } - - /** - * Deletes the embedded item corresponding to the clicked element. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - async onDeleteItem(event) { - const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); - const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; - const item = await fromUuid(uuid); - enforce( - item && item.parent === this.actor, - getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), - ); - item.delete(); - $(li).slideUp(200, () => this.render(false)); - } - - /** - * Applies a change to a property of an embedded item depending on the `data-property` attribute of the - * {@link HTMLInputElement} that has been changed and its new value. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onChangeItem(event) { - return this.onChangeEmbeddedDocument(event, "Item"); - } - - /** - * Handles a click on an element of this sheet to control an embedded effect of the actor corresponding to this - * sheet. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onControlEffect(event) { - event.preventDefault(); - const a = event.currentTarget; - switch (a.dataset["action"]) { - case "create": - return this.onCreateEffect(); - case "edit": - return this.onEditEffect(event); - case "delete": - return this.onDeleteEffect(event); - } - } - - /** - * Creates a new embedded effect. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onCreateEffect() { - DS4ActiveEffect.createDefault(this.actor); - } - - /** - * Opens the sheet of the embedded effect corresponding to the clicked element. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - async onEditEffect(event) { - const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.ActiveEffect.selector); - const uuid = li.dataset[embeddedDocumentListEntryProperties.ActiveEffect.uuidDataAttribute]; - const effect = await fromUuid(uuid); - enforce( - effect && (effect.parent === this.actor || effect.parent.parent === this.actor), - getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), - ); - effect.sheet?.render(true); - } - - /** - * Deletes the embedded item corresponding to the clicked element. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - async onDeleteEffect(event) { - const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.ActiveEffect.selector); - const uuid = li.dataset[embeddedDocumentListEntryProperties.ActiveEffect.uuidDataAttribute]; - const effect = await fromUuid(uuid); - enforce( - effect && (effect.parent === this.actor || effect.parent.parent === this.actor), - getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), - ); - effect.delete(); - $(li).slideUp(200, () => this.render(false)); - } - - /** - * Applies a change to a property of an embedded effect depending on the `data-property` attribute of the - * {@link HTMLInputElement} that has been changed and its new value. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onChangeEffect(event) { - return this.onChangeEmbeddedDocument(event, "ActiveEffect"); - } - - /** - * Applies a change to a property of an embedded document of the actor belonging to this sheet. The change depends - * on the `data-property` attribute of the {@link HTMLInputElement} that has been changed and its new value. - * - * @param {JQuery.ChangeEvent} event The originating click event - * @param {"Item" | "ActiveEffect"} documentName The name of the embedded document to be changed. - * @protected - */ - async onChangeEmbeddedDocument(event, documentName) { - event.preventDefault(); - const element = $(event.currentTarget).get(0); - if (element.disabled) return; - - const documentElement = element.closest(embeddedDocumentListEntryProperties[documentName].selector); - const uuid = documentElement.dataset[embeddedDocumentListEntryProperties[documentName].uuidDataAttribute]; - const property = element.dataset["property"]; - enforce(property !== undefined, TypeError("HTML element does not provide 'data-property' attribute")); - - const newValue = this.parseValue(element); - - const document = await fromUuid(uuid); - - if (documentName === "Item") { - enforce( - document && document.parent === this.actor, - getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), - ); - } else { - enforce( - document && (document.parent === this.actor || document.parent.parent === this.actor), - getGame().i18n.format("DS4.ErrorActorDoesNotHaveEffect", { uuid, actor: this.actor.name }), - ); - } - document.update({ [property]: newValue }); - } - - /** - * Parses the value of the given {@link HTMLInputElement} depending on the element's type - * The value is parsed to: - * - checkbox: `boolean`, if the attribute `data-inverted` is set to a truthy value, the parsed value is inverted - * - text input: `string` - * - number: `number` - * - * @param {HTMLInputElement} element The input element to parse the value from - * @returns {boolean | string | number} The parsed data - * @protected - */ - parseValue(element) { - switch (element.type) { - case "checkbox": { - const inverted = Boolean(element.dataset["inverted"]); - const value = element.checked; - return inverted ? !value : value; - } - case "text": { - const value = element.value; - return value; - } - case "number": { - const value = Number(element.value.trim()); - return value; - } - default: { - throw new TypeError("Binding of item property to this type of HTML element not supported; given: " + element); - } - } - } - - /** - * Handle clickable item rolls. - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - async onRollItem(event) { - event.preventDefault(); - const li = event.currentTarget.closest(embeddedDocumentListEntryProperties.Item.selector); - const uuid = li.dataset[embeddedDocumentListEntryProperties.Item.uuidDataAttribute]; - const item = await fromUuid(uuid); - enforce( - item && item.parent === this.actor, - getGame().i18n.format("DS4.ErrorActorDoesNotHaveItem", { uuid, actor: this.actor.name }), - ); - item.roll().catch((e) => notifications.error(e, { log: true })); - } - - /** - * Handle clickable check rolls. - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onRollCheck(event) { - event.preventDefault(); - event.currentTarget.blur(); - const check = event.currentTarget.dataset["check"]; - this.actor.rollCheck(check).catch((e) => notifications.error(e, { log: true })); - } - - /** - * @param {DragEvent} event - * @override - */ - _onDragStart(event) { - const target = event.currentTarget; - if (!(target instanceof HTMLElement)) return super._onDragStart(event); - - const check = target.dataset.check; - if (!check) return super._onDragStart(event); - - enforce(isCheck(check), getGame().i18n.format("DS4.ErrorCannotDragMissingCheck", { check })); - - const dragData = { - actorId: this.actor.id, - sceneId: this.actor.isToken ? getCanvas().scene?.id : null, - tokenId: this.actor.isToken ? this.actor.token?.id : null, - type: "Check", - data: check, - }; - - event.dataTransfer?.setData("text/plain", JSON.stringify(dragData)); - } - - /** - * Sort items according to the item list header that has been clicked. - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onSortItems(event) { - event.preventDefault(); - const target = event.currentTarget; - const type = target.parentElement?.dataset["type"]; - enforce(type !== undefined, `Could not find property 'type' in the dataset of the parent of ${target}`); - const dataPath = target.dataset["dataPath"]; - enforce(dataPath !== undefined, `Could not find property 'dataPath' in the dataset of ${target}`); - const dataPath2 = target.dataset["dataPath2"]; - /** @type {import("../../documents/item/item").DS4Item[]}*/ - const items = this.actor.items.filter((item) => item.type === type); - items.sort((a, b) => a.sort - b.sort); - - /** - * @param {boolean} invert Whether or not to inverse the sort order - * @returns {(a: import("../../documents/item/item").DS4Item, b: import("../../documents/item/item").DS4Item) => number} A function for sorting items - */ - const sortFunction = (invert) => (a, b) => { - const propertyA = getProperty(a, dataPath); - const propertyB = getProperty(b, dataPath); - const comparison = - typeof propertyA === "string" || typeof propertyB === "string" - ? compareAsStrings(propertyA, propertyB, invert) - : compareAsNumbers(propertyA, propertyB, invert); - - if (comparison === 0 && dataPath2 !== undefined) { - const propertyA = getProperty(a, dataPath); - const propertyB = getProperty(b, dataPath); - return typeof propertyA === "string" || typeof propertyB === "string" - ? compareAsStrings(propertyA, propertyB, invert) - : compareAsNumbers(propertyA, propertyB, invert); - } - - return comparison; - }; - - const sortedItems = [...items].sort(sortFunction(false)); - const wasSortedAlready = !sortedItems.find((item, index) => item !== items[index]); - - if (wasSortedAlready) { - sortedItems.sort(sortFunction(true)); - } - - const updates = sortedItems.map((item, i) => ({ - _id: item.id, - sort: (i + 1) * CONST.SORT_INTEGER_DENSITY, - })); - - this.actor.updateEmbeddedDocuments("Item", updates); - } -} - -/** - * This object contains information about specific properties embedded document list entries for each different type. - */ -const embeddedDocumentListEntryProperties = Object.freeze({ - ActiveEffect: { - selector: ".effect", - uuidDataAttribute: "effectUuid", - }, - Item: { - selector: ".item", - uuidDataAttribute: "itemUuid", - }, -}); - -/** - * Compare two stringifiables as strings. - * @param {{ toString(): string }} a The thing to compare with - * @param {{ toString(): string }} b The thing to compare - * @param {boolean} invert Should the comparison be inverted? - * @return {number} A number that indicates the result of the comparison - */ -const compareAsStrings = (a, b, invert) => { - return invert ? b.toString().localeCompare(a.toString()) : a.toString().localeCompare(b.toString()); -}; - -/** - * Compare two number. - * @param {number} a The number to compare with - * @param {number} b The number to compare - * @param {boolean} invert Should the comparison be inverted? - * @return {number} A number that indicates the result of the comparison - */ -const compareAsNumbers = (a, b, invert) => { - return invert ? b - a : a - b; -}; diff --git a/src/apps/actor/character-sheet.js b/src/apps/actor/character-sheet.js deleted file mode 100644 index 368fe176..00000000 --- a/src/apps/actor/character-sheet.js +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4ActorSheet } from "./base-sheet"; - -/** - * The Sheet class for DS4 Character Actors - */ -export class DS4CharacterActorSheet extends DS4ActorSheet { - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-actor-sheet", "ds4-character-sheet"], - }); - } - - /** @override */ - async getData(options = {}) { - const context = await super.getData(options); - context.data.system.profile.biography = await TextEditor.enrichHTML(context.data.system.profile.biography, { - async: true, - }); - return context; - } -} diff --git a/src/apps/actor/creature-sheet.js b/src/apps/actor/creature-sheet.js deleted file mode 100644 index fe89dec0..00000000 --- a/src/apps/actor/creature-sheet.js +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4ActorSheet } from "./base-sheet"; - -/** - * The Sheet class for DS4 Creature Actors - */ -export class DS4CreatureActorSheet extends DS4ActorSheet { - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-actor-sheet", "ds4-creature-sheet"], - }); - } - - /** @override */ - async getData(options = {}) { - const context = await super.getData(options); - context.data.system.baseInfo.description = await TextEditor.enrichHTML(context.data.system.baseInfo.description, { - async: true, - }); - return context; - } -} diff --git a/src/apps/dialog-with-listeners.js b/src/apps/dialog-with-listeners.js deleted file mode 100644 index c9a3f2a2..00000000 --- a/src/apps/dialog-with-listeners.js +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -/** - * @typedef {DialogOptions} DialogWithListenersOptions - * @property {(html: JQuery, app: DialogWithListeners) => void} [activateAdditionalListeners] An optional function to attach additional listeners to the dialog - */ - -/** - * A simple extension to the {@link Dialog} class that allows attaching additional listeners. - */ -export class DialogWithListeners extends Dialog { - /** @override */ - activateListeners(html) { - super.activateListeners(html); - if (this.options.activateAdditionalListeners !== undefined) { - this.options.activateAdditionalListeners(html, this); - } - } -} diff --git a/src/apps/item-sheet.js b/src/apps/item-sheet.js deleted file mode 100644 index 1fc6f0aa..00000000 --- a/src/apps/item-sheet.js +++ /dev/null @@ -1,150 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../config"; -import { DS4ActiveEffect } from "../documents/active-effect"; -import { enforce, getGame } from "../utils/utils"; -import { disableOverriddenFields } from "./sheet-helpers"; - -/** - * The Sheet class for DS4 Items - */ -export class DS4ItemSheet extends ItemSheet { - /** @override */ - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["sheet", "ds4-item-sheet"], - height: 400, - scrollY: [".ds4-sheet-body"], - tabs: [{ navSelector: ".ds4-sheet-tab-nav", contentSelector: ".ds4-sheet-body", initial: "description" }], - width: 540, - }); - } - - /** @override */ - get template() { - const basePath = "systems/ds4/templates/sheets/item"; - return `${basePath}/${this.item.type}-sheet.hbs`; - } - - /** @override */ - async getData(options = {}) { - const superContext = await super.getData(options); - superContext.data.system.description = await TextEditor.enrichHTML(superContext.data.system.description, { - async: true, - }); - const context = { - ...superContext, - config: DS4, - isOwned: this.item.isOwned, - actor: this.item.actor, - }; - return context; - } - - /** @override */ - _getSubmitData(updateData = {}) { - const data = super._getSubmitData(updateData); - // Prevent submitting overridden values - const overrides = foundry.utils.flattenObject(this.item.overrides); - for (const k of Object.keys(overrides)) { - delete data[k]; - } - return data; - } - - /** @override */ - setPosition(options = {}) { - const position = super.setPosition(options); - if (position) { - const sheetBody = this.element.find(".sheet-body"); - const bodyHeight = position.height - 192; - sheetBody.css("height", bodyHeight); - } - - return position; - } - - /** - * @override - * @param {JQuery} html - */ - activateListeners(html) { - super.activateListeners(html); - - if (!this.options.editable) return; - - html.find(".control-effect").on("click", this.onControlEffect.bind(this)); - - disableOverriddenFields(this.form, this.item.overrides, (key) => `[name="${key}"]`); - } - - /** - * Handles a click on an element of this sheet to control an embedded effect of the item corresponding to this - * sheet. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onControlEffect(event) { - event.preventDefault(); - const a = event.currentTarget; - switch (a.dataset["action"]) { - case "create": - return this.onCreateEffect(); - case "edit": - return this.onEditEffect(event); - case "delete": - return this.onDeleteEffect(event); - } - } - - /** - * Creates a new embedded effect. - * @protected - */ - onCreateEffect() { - DS4ActiveEffect.createDefault(this.item); - } - - /** - * Opens the sheet of the embedded effect corresponding to the clicked element. - * - * @param {JQuery.ClickEvent} event The originating click event - * @porotected - */ - onEditEffect(event) { - const id = $(event.currentTarget) - .parents(embeddedDocumentListEntryProperties.ActiveEffect.selector) - .data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); - const effect = this.item.effects.get(id); - enforce(effect, getGame().i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name })); - effect.sheet?.render(true); - } - - /** - * Deletes the embedded item corresponding to the clicked element. - * - * @param {JQuery.ClickEvent} event The originating click event - * @protected - */ - onDeleteEffect(event) { - const li = $(event.currentTarget).parents(embeddedDocumentListEntryProperties.ActiveEffect.selector); - const id = li.data(embeddedDocumentListEntryProperties.ActiveEffect.idDataAttribute); - this.item.deleteEmbeddedDocuments("ActiveEffect", [id]); - li.slideUp(200, () => this.render(false)); - } -} - -/** - * This object contains information about specific properties embedded document list entries for each different type. - */ -const embeddedDocumentListEntryProperties = Object.freeze({ - ActiveEffect: { - selector: ".effect", - idDataAttribute: "effectId", - }, -}); diff --git a/src/apps/sheet-helpers.js b/src/apps/sheet-helpers.js deleted file mode 100644 index 0a4ef162..00000000 --- a/src/apps/sheet-helpers.js +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../utils/utils"; - -/** - * Disable elements in the given form that match the selector returned for overridden properties. - * @param {HTMLElement | null} form The form in which to disable fields - * @param {Record} overrides The set of overrides of the underlying document - * @param {(key: string) => string} selector A function that generates a selector, based on a property key - */ -export function disableOverriddenFields(form, overrides, selector) { - const inputs = ["INPUT", "SELECT", "TEXTAREA", "BUTTON"]; - const titleAddition = `(${getGame().i18n.localize("DS4.TooltipNotEditableDueToEffects")})`; - - for (const key of Object.keys(foundry.utils.flattenObject(overrides))) { - const elements = form?.querySelectorAll(selector(key)); - elements?.forEach((element) => { - if (inputs.includes(element.tagName) && !element.hasAttribute("disabled")) { - element.setAttribute("disabled", ""); - const title = element.getAttribute("title"); - const newTitle = title === null ? titleAddition : `${title} ${titleAddition}`; - element.setAttribute("title", newTitle); - } - }); - } -} diff --git a/src/assets/icons/game-icons/LICENSE b/src/assets/icons/game-icons/LICENSE new file mode 100644 index 00000000..1a16e055 --- /dev/null +++ b/src/assets/icons/game-icons/LICENSE @@ -0,0 +1,319 @@ +Creative Commons Legal Code + +Attribution 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined above) for the purposes of this + License. + c. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + d. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + e. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + f. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + g. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + h. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + i. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(b), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(b), as requested. + b. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Section 3(b), in the case of an Adaptation, + a credit identifying the use of the Work in the Adaptation (e.g., + "French translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). The credit required by + this Section 4 (b) may be implemented in any reasonable manner; + provided, however, that in the case of a Adaptation or Collection, at + a minimum such credit will appear, if a credit for all contributing + authors of the Adaptation or Collection appears, then as part of these + credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only + use the credit required by this Section for the purpose of attribution + in the manner set out above and, by exercising Your rights under this + License, You may not implicitly or explicitly assert or imply any + connection with, sponsorship or endorsement by the Original Author, + Licensor and/or Attribution Parties, as appropriate, of You or Your + use of the Work, without the separate, express prior written + permission of the Original Author, Licensor and/or Attribution + Parties. + c. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of this License. + + Creative Commons may be contacted at https://creativecommons.org/. diff --git a/assets/icons/game-icons/delapouite/alarm-clock.svg b/src/assets/icons/game-icons/alarm-clock.svg similarity index 100% rename from assets/icons/game-icons/delapouite/alarm-clock.svg rename to src/assets/icons/game-icons/alarm-clock.svg diff --git a/assets/icons/game-icons/lorc/awareness.svg b/src/assets/icons/game-icons/awareness.svg similarity index 100% rename from assets/icons/game-icons/lorc/awareness.svg rename to src/assets/icons/game-icons/awareness.svg diff --git a/assets/icons/game-icons/delapouite/biceps.svg b/src/assets/icons/game-icons/biceps.svg similarity index 100% rename from assets/icons/game-icons/delapouite/biceps.svg rename to src/assets/icons/game-icons/biceps.svg diff --git a/assets/icons/game-icons/delapouite/bookshelf.svg b/src/assets/icons/game-icons/bookshelf.svg similarity index 100% rename from assets/icons/game-icons/delapouite/bookshelf.svg rename to src/assets/icons/game-icons/bookshelf.svg diff --git a/assets/icons/game-icons/lorc/campfire.svg b/src/assets/icons/game-icons/campfire.svg similarity index 100% rename from assets/icons/game-icons/lorc/campfire.svg rename to src/assets/icons/game-icons/campfire.svg diff --git a/assets/icons/game-icons/delapouite/card-exchange.svg b/src/assets/icons/game-icons/card-exchange.svg similarity index 100% rename from assets/icons/game-icons/delapouite/card-exchange.svg rename to src/assets/icons/game-icons/card-exchange.svg diff --git a/assets/icons/game-icons/lorc/cash.svg b/src/assets/icons/game-icons/cash.svg similarity index 100% rename from assets/icons/game-icons/lorc/cash.svg rename to src/assets/icons/game-icons/cash.svg diff --git a/assets/icons/game-icons/delapouite/cavalry.svg b/src/assets/icons/game-icons/cavalry.svg similarity index 100% rename from assets/icons/game-icons/delapouite/cavalry.svg rename to src/assets/icons/game-icons/cavalry.svg diff --git a/assets/icons/game-icons/lorc/charm.svg b/src/assets/icons/game-icons/charm.svg similarity index 100% rename from assets/icons/game-icons/lorc/charm.svg rename to src/assets/icons/game-icons/charm.svg diff --git a/assets/icons/game-icons/lorc/conversation.svg b/src/assets/icons/game-icons/conversation.svg similarity index 100% rename from assets/icons/game-icons/lorc/conversation.svg rename to src/assets/icons/game-icons/conversation.svg diff --git a/assets/icons/game-icons/delapouite/deer-track.svg b/src/assets/icons/game-icons/deer-track.svg similarity index 100% rename from assets/icons/game-icons/delapouite/deer-track.svg rename to src/assets/icons/game-icons/deer-track.svg diff --git a/assets/icons/game-icons/delapouite/discussion.svg b/src/assets/icons/game-icons/discussion.svg similarity index 100% rename from assets/icons/game-icons/delapouite/discussion.svg rename to src/assets/icons/game-icons/discussion.svg diff --git a/assets/icons/game-icons/lorc/hidden.svg b/src/assets/icons/game-icons/hidden.svg similarity index 100% rename from assets/icons/game-icons/lorc/hidden.svg rename to src/assets/icons/game-icons/hidden.svg diff --git a/assets/icons/game-icons/delapouite/jump-across.svg b/src/assets/icons/game-icons/jump-across.svg similarity index 100% rename from assets/icons/game-icons/delapouite/jump-across.svg rename to src/assets/icons/game-icons/jump-across.svg diff --git a/assets/icons/game-icons/lorc/lever.svg b/src/assets/icons/game-icons/lever.svg similarity index 100% rename from assets/icons/game-icons/lorc/lever.svg rename to src/assets/icons/game-icons/lever.svg diff --git a/assets/icons/game-icons/lorc/magnifying-glass.svg b/src/assets/icons/game-icons/magnifying-glass.svg similarity index 100% rename from assets/icons/game-icons/lorc/magnifying-glass.svg rename to src/assets/icons/game-icons/magnifying-glass.svg diff --git a/assets/icons/game-icons/caro-asercion/mountain-climbing.svg b/src/assets/icons/game-icons/mountain-climbing.svg similarity index 100% rename from assets/icons/game-icons/caro-asercion/mountain-climbing.svg rename to src/assets/icons/game-icons/mountain-climbing.svg diff --git a/assets/icons/game-icons/delapouite/mute.svg b/src/assets/icons/game-icons/mute.svg similarity index 100% rename from assets/icons/game-icons/delapouite/mute.svg rename to src/assets/icons/game-icons/mute.svg diff --git a/assets/icons/game-icons/delapouite/padlock-open.svg b/src/assets/icons/game-icons/padlock-open.svg similarity index 100% rename from assets/icons/game-icons/delapouite/padlock-open.svg rename to src/assets/icons/game-icons/padlock-open.svg diff --git a/assets/icons/game-icons/lorc/poison-bottle.svg b/src/assets/icons/game-icons/poison-bottle.svg similarity index 100% rename from assets/icons/game-icons/lorc/poison-bottle.svg rename to src/assets/icons/game-icons/poison-bottle.svg diff --git a/assets/icons/game-icons/delapouite/pool-dive.svg b/src/assets/icons/game-icons/pool-dive.svg similarity index 100% rename from assets/icons/game-icons/delapouite/pool-dive.svg rename to src/assets/icons/game-icons/pool-dive.svg diff --git a/assets/icons/game-icons/darkzaitev/robber-hand.svg b/src/assets/icons/game-icons/robber-hand.svg similarity index 100% rename from assets/icons/game-icons/darkzaitev/robber-hand.svg rename to src/assets/icons/game-icons/robber-hand.svg diff --git a/assets/icons/game-icons/lorc/rune-stone.svg b/src/assets/icons/game-icons/rune-stone.svg similarity index 100% rename from assets/icons/game-icons/lorc/rune-stone.svg rename to src/assets/icons/game-icons/rune-stone.svg diff --git a/assets/icons/game-icons/sbed/shield.svg b/src/assets/icons/game-icons/shield.svg similarity index 100% rename from assets/icons/game-icons/sbed/shield.svg rename to src/assets/icons/game-icons/shield.svg diff --git a/assets/icons/game-icons/delapouite/sparkles.svg b/src/assets/icons/game-icons/sparkles.svg similarity index 100% rename from assets/icons/game-icons/delapouite/sparkles.svg rename to src/assets/icons/game-icons/sparkles.svg diff --git a/assets/icons/game-icons/delapouite/two-coins.svg b/src/assets/icons/game-icons/two-coins.svg similarity index 100% rename from assets/icons/game-icons/delapouite/two-coins.svg rename to src/assets/icons/game-icons/two-coins.svg diff --git a/assets/icons/game-icons/lorc/uncertainty.svg b/src/assets/icons/game-icons/uncertainty.svg similarity index 100% rename from assets/icons/game-icons/lorc/uncertainty.svg rename to src/assets/icons/game-icons/uncertainty.svg diff --git a/assets/icons/game-icons/lorc/virus.svg b/src/assets/icons/game-icons/virus.svg similarity index 100% rename from assets/icons/game-icons/lorc/virus.svg rename to src/assets/icons/game-icons/virus.svg diff --git a/assets/icons/game-icons/lorc/wolf-trap.svg b/src/assets/icons/game-icons/wolf-trap.svg similarity index 100% rename from assets/icons/game-icons/lorc/wolf-trap.svg rename to src/assets/icons/game-icons/wolf-trap.svg diff --git a/src/assets/icons/official/LICENSE b/src/assets/icons/official/LICENSE new file mode 100644 index 00000000..46c81916 --- /dev/null +++ b/src/assets/icons/official/LICENSE @@ -0,0 +1,361 @@ +Creative Commons Legal Code + +Attribution-NonCommercial-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(g) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined above) for the purposes of this + License. + c. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + d. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, Noncommercial, ShareAlike. + e. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + f. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + g. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + h. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + i. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + j. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved, including but not limited to the +rights described in Section 4(e). + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(d), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(d), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under: (i) + the terms of this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). + You must include a copy of, or the URI, for Applicable License with + every copy of each Adaptation You Distribute or Publicly Perform. You + may not offer or impose any terms on the Adaptation that restrict the + terms of the Applicable License or the ability of the recipient of the + Adaptation to exercise the rights granted to that recipient under the + terms of the Applicable License. You must keep intact all notices that + refer to the Applicable License and to the disclaimer of warranties + with every copy of the Work as included in the Adaptation You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Adaptation, You may not impose any effective technological + measures on the Adaptation that restrict the ability of a recipient of + the Adaptation from You to exercise the rights granted to that + recipient under the terms of the Applicable License. This Section 4(b) + applies to the Adaptation as incorporated in a Collection, but this + does not require the Collection apart from the Adaptation itself to be + made subject to the terms of the Applicable License. + c. You may not exercise any of the rights granted to You in Section 3 + above in any manner that is primarily intended for or directed toward + commercial advantage or private monetary compensation. The exchange of + the Work for other copyrighted works by means of digital file-sharing + or otherwise shall not be considered to be intended for or directed + toward commercial advantage or private monetary compensation, provided + there is no payment of any monetary compensation in con-nection with + the exchange of copyrighted works. + d. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and, (iv) consistent with Section 3(b), in the case of an Adaptation, + a credit identifying the use of the Work in the Adaptation (e.g., + "French translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). The credit required by + this Section 4(d) may be implemented in any reasonable manner; + provided, however, that in the case of a Adaptation or Collection, at + a minimum such credit will appear, if a credit for all contributing + authors of the Adaptation or Collection appears, then as part of these + credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only + use the credit required by this Section for the purpose of attribution + in the manner set out above and, by exercising Your rights under this + License, You may not implicitly or explicitly assert or imply any + connection with, sponsorship or endorsement by the Original Author, + Licensor and/or Attribution Parties, as appropriate, of You or Your + use of the Work, without the separate, express prior written + permission of the Original Author, Licensor and/or Attribution + Parties. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor reserves + the exclusive right to collect such royalties for any exercise by + You of the rights granted under this License if Your exercise of + such rights is for a purpose or use which is otherwise than + noncommercial as permitted under Section 4(c) and otherwise waives + the right to collect royalties through any statutory or compulsory + licensing scheme; and, + iii. Voluntary License Schemes. The Licensor reserves the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License that is for a + purpose or use which is otherwise than noncommercial as permitted + under Section 4(c). + f. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE +FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS +AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE +WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT +LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, +ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT +DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED +WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of this License. + + Creative Commons may be contacted at https://creativecommons.org/. + diff --git a/assets/icons/official/combat-values/defense.png b/src/assets/icons/official/combat-values/defense.png similarity index 100% rename from assets/icons/official/combat-values/defense.png rename to src/assets/icons/official/combat-values/defense.png diff --git a/assets/icons/official/combat-values/hit-points.png b/src/assets/icons/official/combat-values/hit-points.png similarity index 100% rename from assets/icons/official/combat-values/hit-points.png rename to src/assets/icons/official/combat-values/hit-points.png diff --git a/assets/icons/official/combat-values/initiative.png b/src/assets/icons/official/combat-values/initiative.png similarity index 100% rename from assets/icons/official/combat-values/initiative.png rename to src/assets/icons/official/combat-values/initiative.png diff --git a/assets/icons/official/combat-values/melee-attack.png b/src/assets/icons/official/combat-values/melee-attack.png similarity index 100% rename from assets/icons/official/combat-values/melee-attack.png rename to src/assets/icons/official/combat-values/melee-attack.png diff --git a/assets/icons/official/combat-values/melee-ranged-attack.png b/src/assets/icons/official/combat-values/melee-ranged-attack.png similarity index 100% rename from assets/icons/official/combat-values/melee-ranged-attack.png rename to src/assets/icons/official/combat-values/melee-ranged-attack.png diff --git a/src/assets/icons/official/combat-values/mind-affecting-spellcasting.png b/src/assets/icons/official/combat-values/mind-affecting-spellcasting.png new file mode 100644 index 00000000..e13b19f5 Binary files /dev/null and b/src/assets/icons/official/combat-values/mind-affecting-spellcasting.png differ diff --git a/assets/icons/official/combat-values/movement-rate.png b/src/assets/icons/official/combat-values/movement-rate.png similarity index 100% rename from assets/icons/official/combat-values/movement-rate.png rename to src/assets/icons/official/combat-values/movement-rate.png diff --git a/assets/icons/official/combat-values/ranged-attack.png b/src/assets/icons/official/combat-values/ranged-attack.png similarity index 100% rename from assets/icons/official/combat-values/ranged-attack.png rename to src/assets/icons/official/combat-values/ranged-attack.png diff --git a/assets/icons/official/combat-values/spellcasting.png b/src/assets/icons/official/combat-values/spellcasting.png similarity index 100% rename from assets/icons/official/combat-values/spellcasting.png rename to src/assets/icons/official/combat-values/spellcasting.png diff --git a/assets/icons/official/combat-values/targeted-spellcasting.png b/src/assets/icons/official/combat-values/targeted-spellcasting.png similarity index 100% rename from assets/icons/official/combat-values/targeted-spellcasting.png rename to src/assets/icons/official/combat-values/targeted-spellcasting.png diff --git a/assets/icons/official/special-creature-abilities/aging.png b/src/assets/icons/official/special-creature-abilities/aging.png similarity index 100% rename from assets/icons/official/special-creature-abilities/aging.png rename to src/assets/icons/official/special-creature-abilities/aging.png diff --git a/assets/icons/official/special-creature-abilities/anti-magic.png b/src/assets/icons/official/special-creature-abilities/anti-magic.png similarity index 100% rename from assets/icons/official/special-creature-abilities/anti-magic.png rename to src/assets/icons/official/special-creature-abilities/anti-magic.png diff --git a/assets/icons/official/special-creature-abilities/attribute-loss.png b/src/assets/icons/official/special-creature-abilities/attribute-loss.png similarity index 100% rename from assets/icons/official/special-creature-abilities/attribute-loss.png rename to src/assets/icons/official/special-creature-abilities/attribute-loss.png diff --git a/assets/icons/official/special-creature-abilities/breath-weapon.png b/src/assets/icons/official/special-creature-abilities/breath-weapon.png similarity index 100% rename from assets/icons/official/special-creature-abilities/breath-weapon.png rename to src/assets/icons/official/special-creature-abilities/breath-weapon.png diff --git a/assets/icons/official/special-creature-abilities/charge.png b/src/assets/icons/official/special-creature-abilities/charge.png similarity index 100% rename from assets/icons/official/special-creature-abilities/charge.png rename to src/assets/icons/official/special-creature-abilities/charge.png diff --git a/assets/icons/official/special-creature-abilities/charm.png b/src/assets/icons/official/special-creature-abilities/charm.png similarity index 100% rename from assets/icons/official/special-creature-abilities/charm.png rename to src/assets/icons/official/special-creature-abilities/charm.png diff --git a/assets/icons/official/special-creature-abilities/climber.png b/src/assets/icons/official/special-creature-abilities/climber.png similarity index 100% rename from assets/icons/official/special-creature-abilities/climber.png rename to src/assets/icons/official/special-creature-abilities/climber.png diff --git a/assets/icons/official/special-creature-abilities/creature-of-darkness.png b/src/assets/icons/official/special-creature-abilities/creature-of-darkness.png similarity index 100% rename from assets/icons/official/special-creature-abilities/creature-of-darkness.png rename to src/assets/icons/official/special-creature-abilities/creature-of-darkness.png diff --git a/assets/icons/official/special-creature-abilities/creature-of-light.png b/src/assets/icons/official/special-creature-abilities/creature-of-light.png similarity index 100% rename from assets/icons/official/special-creature-abilities/creature-of-light.png rename to src/assets/icons/official/special-creature-abilities/creature-of-light.png diff --git a/assets/icons/official/special-creature-abilities/crush.png b/src/assets/icons/official/special-creature-abilities/crush.png similarity index 100% rename from assets/icons/official/special-creature-abilities/crush.png rename to src/assets/icons/official/special-creature-abilities/crush.png diff --git a/assets/icons/official/special-creature-abilities/darkvision.png b/src/assets/icons/official/special-creature-abilities/darkvision.png similarity index 100% rename from assets/icons/official/special-creature-abilities/darkvision.png rename to src/assets/icons/official/special-creature-abilities/darkvision.png diff --git a/assets/icons/official/special-creature-abilities/devourer.png b/src/assets/icons/official/special-creature-abilities/devourer.png similarity index 100% rename from assets/icons/official/special-creature-abilities/devourer.png rename to src/assets/icons/official/special-creature-abilities/devourer.png diff --git a/assets/icons/official/special-creature-abilities/dive-attack.png b/src/assets/icons/official/special-creature-abilities/dive-attack.png similarity index 100% rename from assets/icons/official/special-creature-abilities/dive-attack.png rename to src/assets/icons/official/special-creature-abilities/dive-attack.png diff --git a/assets/icons/official/special-creature-abilities/entangle.png b/src/assets/icons/official/special-creature-abilities/entangle.png similarity index 100% rename from assets/icons/official/special-creature-abilities/entangle.png rename to src/assets/icons/official/special-creature-abilities/entangle.png diff --git a/assets/icons/official/special-creature-abilities/fear.png b/src/assets/icons/official/special-creature-abilities/fear.png similarity index 100% rename from assets/icons/official/special-creature-abilities/fear.png rename to src/assets/icons/official/special-creature-abilities/fear.png diff --git a/assets/icons/official/special-creature-abilities/flight.png b/src/assets/icons/official/special-creature-abilities/flight.png similarity index 100% rename from assets/icons/official/special-creature-abilities/flight.png rename to src/assets/icons/official/special-creature-abilities/flight.png diff --git a/assets/icons/official/special-creature-abilities/flinging.png b/src/assets/icons/official/special-creature-abilities/flinging.png similarity index 100% rename from assets/icons/official/special-creature-abilities/flinging.png rename to src/assets/icons/official/special-creature-abilities/flinging.png diff --git a/assets/icons/official/special-creature-abilities/gaze-attack.png b/src/assets/icons/official/special-creature-abilities/gaze-attack.png similarity index 100% rename from assets/icons/official/special-creature-abilities/gaze-attack.png rename to src/assets/icons/official/special-creature-abilities/gaze-attack.png diff --git a/assets/icons/official/special-creature-abilities/hover.png b/src/assets/icons/official/special-creature-abilities/hover.png similarity index 100% rename from assets/icons/official/special-creature-abilities/hover.png rename to src/assets/icons/official/special-creature-abilities/hover.png diff --git a/assets/icons/official/special-creature-abilities/mind-immunity.png b/src/assets/icons/official/special-creature-abilities/mind-immunity.png similarity index 100% rename from assets/icons/official/special-creature-abilities/mind-immunity.png rename to src/assets/icons/official/special-creature-abilities/mind-immunity.png diff --git a/assets/icons/official/special-creature-abilities/multiple-attacks.png b/src/assets/icons/official/special-creature-abilities/multiple-attacks.png similarity index 100% rename from assets/icons/official/special-creature-abilities/multiple-attacks.png rename to src/assets/icons/official/special-creature-abilities/multiple-attacks.png diff --git a/assets/icons/official/special-creature-abilities/multiple-limbs.png b/src/assets/icons/official/special-creature-abilities/multiple-limbs.png similarity index 100% rename from assets/icons/official/special-creature-abilities/multiple-limbs.png rename to src/assets/icons/official/special-creature-abilities/multiple-limbs.png diff --git a/assets/icons/official/special-creature-abilities/natural-weapons.png b/src/assets/icons/official/special-creature-abilities/natural-weapons.png similarity index 100% rename from assets/icons/official/special-creature-abilities/natural-weapons.png rename to src/assets/icons/official/special-creature-abilities/natural-weapons.png diff --git a/assets/icons/official/special-creature-abilities/night-vision.png b/src/assets/icons/official/special-creature-abilities/night-vision.png similarity index 100% rename from assets/icons/official/special-creature-abilities/night-vision.png rename to src/assets/icons/official/special-creature-abilities/night-vision.png diff --git a/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png b/src/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png similarity index 100% rename from assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png rename to src/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png diff --git a/assets/icons/official/special-creature-abilities/paralysis-effect.png b/src/assets/icons/official/special-creature-abilities/paralysis-effect.png similarity index 100% rename from assets/icons/official/special-creature-abilities/paralysis-effect.png rename to src/assets/icons/official/special-creature-abilities/paralysis-effect.png diff --git a/assets/icons/official/special-creature-abilities/petrification.png b/src/assets/icons/official/special-creature-abilities/petrification.png similarity index 100% rename from assets/icons/official/special-creature-abilities/petrification.png rename to src/assets/icons/official/special-creature-abilities/petrification.png diff --git a/assets/icons/official/special-creature-abilities/poison.png b/src/assets/icons/official/special-creature-abilities/poison.png similarity index 100% rename from assets/icons/official/special-creature-abilities/poison.png rename to src/assets/icons/official/special-creature-abilities/poison.png diff --git a/assets/icons/official/special-creature-abilities/power-of-the-dead.png b/src/assets/icons/official/special-creature-abilities/power-of-the-dead.png similarity index 100% rename from assets/icons/official/special-creature-abilities/power-of-the-dead.png rename to src/assets/icons/official/special-creature-abilities/power-of-the-dead.png diff --git a/assets/icons/official/special-creature-abilities/regeneration.png b/src/assets/icons/official/special-creature-abilities/regeneration.png similarity index 100% rename from assets/icons/official/special-creature-abilities/regeneration.png rename to src/assets/icons/official/special-creature-abilities/regeneration.png diff --git a/assets/icons/official/special-creature-abilities/rust.png b/src/assets/icons/official/special-creature-abilities/rust.png similarity index 100% rename from assets/icons/official/special-creature-abilities/rust.png rename to src/assets/icons/official/special-creature-abilities/rust.png diff --git a/assets/icons/official/special-creature-abilities/sonar.png b/src/assets/icons/official/special-creature-abilities/sonar.png similarity index 100% rename from assets/icons/official/special-creature-abilities/sonar.png rename to src/assets/icons/official/special-creature-abilities/sonar.png diff --git a/assets/icons/official/special-creature-abilities/susceptible.png b/src/assets/icons/official/special-creature-abilities/susceptible.png similarity index 100% rename from assets/icons/official/special-creature-abilities/susceptible.png rename to src/assets/icons/official/special-creature-abilities/susceptible.png diff --git a/assets/icons/official/special-creature-abilities/swarm.png b/src/assets/icons/official/special-creature-abilities/swarm.png similarity index 100% rename from assets/icons/official/special-creature-abilities/swarm.png rename to src/assets/icons/official/special-creature-abilities/swarm.png diff --git a/assets/icons/official/special-creature-abilities/swim.png b/src/assets/icons/official/special-creature-abilities/swim.png similarity index 100% rename from assets/icons/official/special-creature-abilities/swim.png rename to src/assets/icons/official/special-creature-abilities/swim.png diff --git a/src/config.ts b/src/config.ts deleted file mode 100644 index ab6981df..00000000 --- a/src/config.ts +++ /dev/null @@ -1,464 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -const i18nKeys = { - /** - * Define the set of acttack types that can be performed with weapon items - */ - attackTypes: { - melee: "DS4.AttackTypeMelee", - ranged: "DS4.AttackTypeRanged", - meleeRanged: "DS4.AttackTypeMeleeRanged", - }, - - /** - * Define the set of item availabilties - */ - itemAvailabilities: { - unset: "DS4.ItemAvailabilityUnset", - hamlet: "DS4.ItemAvailabilityHamlet", - village: "DS4.ItemAvailabilityVilage", - city: "DS4.ItemAvailabilityCity", - elves: "DS4.ItemAvailabilityElves", - dwarves: "DS4.ItemAvailabilityDwarves", - nowhere: "DS4.ItemAvailabilityNowhere", - }, - - /** - * Define the set of item types - */ - itemTypes: { - weapon: "DS4.ItemTypeWeapon", - armor: "DS4.ItemTypeArmor", - shield: "DS4.ItemTypeShield", - spell: "DS4.ItemTypeSpell", - equipment: "DS4.ItemTypeEquipment", - loot: "DS4.ItemTypeLoot", - talent: "DS4.ItemTypeTalent", - racialAbility: "DS4.ItemTypeRacialAbility", - language: "DS4.ItemTypeLanguage", - alphabet: "DS4.ItemTypeAlphabet", - specialCreatureAbility: "DS4.ItemTypeSpecialCreatureAbility", - }, - - /** - * Define the set of armor types, a character may only wear one item of each at any given time - */ - armorTypes: { - body: "DS4.ArmorTypeBody", - helmet: "DS4.ArmorTypeHelmet", - vambrace: "DS4.ArmorTypeVambrace", - greaves: "DS4.ArmorTypeGreaves", - vambraceGreaves: "DS4.ArmorTypeVambraceGreaves", - }, - - /** - * Define abbreviations for the armor types - */ - armorTypesAbbr: { - body: "DS4.ArmorTypeBodyAbbr", - helmet: "DS4.ArmorTypeHelmetAbbr", - vambrace: "DS4.ArmorTypeVambraceAbbr", - greaves: "DS4.ArmorTypeGreavesAbbr", - vambraceGreaves: "DS4.ArmorTypeVambraceGreavesAbbr", - }, - - /** - * Define the set of armor materials, used to determine if a character may wear the armor without additional penalties - */ - armorMaterialTypes: { - cloth: "DS4.ArmorMaterialTypeCloth", - leather: "DS4.ArmorMaterialTypeLeather", - chain: "DS4.ArmorMaterialTypeChain", - plate: "DS4.ArmorMaterialTypePlate", - natural: "DS4.ArmorMaterialTypeNatural", - }, - - /** - * Define the abbreviations of armor materials - */ - armorMaterialTypesAbbr: { - cloth: "DS4.ArmorMaterialTypeClothAbbr", - leather: "DS4.ArmorMaterialTypeLeatherAbbr", - chain: "DS4.ArmorMaterialTypeChainAbbr", - plate: "DS4.ArmorMaterialTypePlateAbbr", - natural: "DS4.ArmorMaterialTypeNaturalAbbr", - }, - - spellTypes: { - spellcasting: "DS4.SpellTypeSpellcasting", - targetedSpellcasting: "DS4.SpellTypeTargetedSpellcasting", - }, - - spellGroups: { - lightning: "DS4.SpellGroupLightning", - earth: "DS4.SpellGroupEarth", - water: "DS4.SpellGroupWater", - ice: "DS4.SpellGroupIce", - fire: "DS4.SpellGroupFire", - healing: "DS4.SpellGroupHealing", - light: "DS4.SpellGroupLight", - air: "DS4.SpellGroupAir", - transport: "DS4.SpellGroupTransport", - damage: "DS4.SpellGroupDamage", - shadow: "DS4.SpellGroupShadow", - protection: "DS4.SpellGroupProtection", - mindAffecting: "DS4.SpellGroupMindAffecting", - demonology: "DS4.SpellGroupDemonology", - necromancy: "DS4.SpellGroupNecromancy", - transmutation: "DS4.SpellGroupTransmutation", - area: "DS4.SpellGroupArea", - }, - - cooldownDurations: { - "0r": "DS4.CooldownDuration0R", - "1r": "DS4.CooldownDuration1R", - "2r": "DS4.CooldownDuration2R", - "5r": "DS4.CooldownDuration5R", - "10r": "DS4.CooldownDuration10R", - "100r": "DS4.CooldownDuration100R", - "1d": "DS4.CooldownDuration1D", - d20d: "DS4.CooldownDurationD20D", - }, - - /** - * Define the set of actor types - */ - actorTypes: { - character: "DS4.ActorTypeCharacter", - creature: "DS4.ActorTypeCreature", - }, - - /** - * Define the set of attributes an actor has - */ - attributes: { - body: "DS4.AttributeBody", - mobility: "DS4.AttributeMobility", - mind: "DS4.AttributeMind", - }, - - /** - * Define the set of traits an actor has - */ - traits: { - strength: "DS4.TraitStrength", - agility: "DS4.TraitAgility", - intellect: "DS4.TraitIntellect", - constitution: "DS4.TraitConstitution", - dexterity: "DS4.TraitDexterity", - aura: "DS4.TraitAura", - }, - - /** - * Define the set of combat values an actor has - */ - combatValues: { - hitPoints: "DS4.CombatValuesHitPoints", - defense: "DS4.CombatValuesDefense", - initiative: "DS4.CombatValuesInitiative", - movement: "DS4.CombatValuesMovement", - meleeAttack: "DS4.CombatValuesMeleeAttack", - rangedAttack: "DS4.CombatValuesRangedAttack", - spellcasting: "DS4.CombatValuesSpellcasting", - targetedSpellcasting: "DS4.CombatValuesTargetedSpellcasting", - }, - - /** - * The what do display in the actor sheets for the combat value text (in some languages, abbreviations are necessary) - */ - combatValuesSheet: { - hitPoints: "DS4.CombatValuesHitPointsSheet", - defense: "DS4.CombatValuesDefenseSheet", - initiative: "DS4.CombatValuesInitiativeSheet", - movement: "DS4.CombatValuesMovementSheet", - meleeAttack: "DS4.CombatValuesMeleeAttackSheet", - rangedAttack: "DS4.CombatValuesRangedAttackSheet", - spellcasting: "DS4.CombatValuesSpellcastingSheet", - targetedSpellcasting: "DS4.CombatValuesTargetedSpellcastingSheet", - }, - - /** - * Define the base info of a character - */ - characterBaseInfo: { - race: "DS4.CharacterBaseInfoRace", - class: "DS4.CharacterBaseInfoClass", - heroClass: "DS4.CharacterBaseInfoHeroClass", - culture: "DS4.CharacterBaseInfoCulture", - }, - - /** - * Define the progression info of a character - */ - characterProgression: { - level: "DS4.CharacterProgressionLevel", - experiencePoints: "DS4.CharacterProgressionExperiencePoints", - talentPoints: "DS4.CharacterProgressionTalentPoints", - progressPoints: "DS4.CharacterProgressionProgressPoints", - }, - - /** - * Define the language info of a character - */ - characterLanguage: { - languages: "DS4.CharacterLanguageLanguages", - alphabets: "DS4.CharacterLanguageAlphabets", - }, - - /** - * Define the profile info of a character - */ - characterProfile: { - biography: "DS4.CharacterProfileBiography", - gender: "DS4.CharacterProfileGender", - birthday: "DS4.CharacterProfileBirthday", - birthplace: "DS4.CharacterProfileBirthplace", - age: "DS4.CharacterProfileAge", - height: "DS4.CharacterProfileHeight", - hairColor: "DS4.CharacterProfileHairColor", - weight: "DS4.CharacterProfileWeight", - eyeColor: "DS4.CharacterProfileEyeColor", - specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics", - }, - /** - * Define currency elements of a character - */ - characterCurrency: { - gold: "DS4.CharacterCurrencyGold", - silver: "DS4.CharacterCurrencySilver", - copper: "DS4.CharacterCurrencyCopper", - }, - - /** - * Define the different creature types a creature can be - */ - creatureTypes: { - animal: "DS4.CreatureTypeAnimal", - construct: "DS4.CreatureTypeConstruct", - humanoid: "DS4.CreatureTypeHumanoid", - magicalEntity: "DS4.CreatureTypeMagicalEntity", - plantBeing: "DS4.CreatureTypePlantBeing", - undead: "DS4.CreatureTypeUndead", - }, - - /** - * Define the different size categories creatures fall into - */ - creatureSizeCategories: { - tiny: "DS4.CreatureSizeCategoryTiny", - small: "DS4.CreatureSizeCategorySmall", - normal: "DS4.CreatureSizeCategoryNormal", - large: "DS4.CreatureSizeCategoryLarge", - huge: "DS4.CreatureSizeCategoryHuge", - colossal: "DS4.CreatureSizeCategoryColossal", - }, - - /** - * Define the base info of a creature - */ - creatureBaseInfo: { - loot: "DS4.CreatureBaseInfoLoot", - foeFactor: "DS4.CreatureBaseInfoFoeFactor", - creatureType: "DS4.CreatureBaseInfoCreatureType", - sizeCategory: "DS4.CreatureBaseInfoSizeCategory", - experiencePoints: "DS4.CreatureBaseInfoExperiencePoints", - description: "DS4.CreatureBaseInfoDescription", - }, - - /** - * Define translations for available distance units - */ - distanceUnits: { - meter: "DS4.UnitMeters", - kilometer: "DS4.UnitKilometers", - custom: "DS4.UnitCustom", - }, - /** - * Define abbreviations for available distance units - */ - distanceUnitsAbbr: { - meter: "DS4.UnitMetersAbbr", - kilometer: "DS4.UnitKilometersAbbr", - custom: "DS4.UnitCustomAbbr", - }, - - /** - * Define translations for available duration units - */ - temporalUnits: { - rounds: "DS4.UnitRounds", - minutes: "DS4.UnitMinutes", - hours: "DS4.UnitHours", - days: "DS4.UnitDays", - custom: "DS4.UnitCustom", - }, - - /** - * Define abbreviations for available duration units - */ - temporalUnitsAbbr: { - rounds: "DS4.UnitRoundsAbbr", - minutes: "DS4.UnitMinutesAbbr", - hours: "DS4.UnitHoursAbbr", - days: "DS4.UnitDaysAbbr", - custom: "DS4.UnitCustomAbbr", - }, - - checks: { - appraise: "DS4.ChecksAppraise", - changeSpell: "DS4.ChecksChangeSpell", - climb: "DS4.ChecksClimb", - communicate: "DS4.ChecksCommunicate", - decipherScript: "DS4.ChecksDecipherScript", - defend: "DS4.ChecksDefend", - defyPoison: "DS4.ChecksDefyPoison", - disableTraps: "DS4.ChecksDisableTraps", - featOfStrength: "DS4.ChecksFeatOfStrength", - flirt: "DS4.ChecksFlirt", - haggle: "DS4.ChecksHaggle", - hide: "DS4.ChecksHide", - identifyMagic: "DS4.ChecksIdentifyMagic", - jump: "DS4.ChecksJump", - knowledge: "DS4.ChecksKnowledge", - openLock: "DS4.ChecksOpenLock", - perception: "DS4.ChecksPerception", - pickPocket: "DS4.ChecksPickPocket", - readTracks: "DS4.ChecksReadTracks", - resistDisease: "DS4.ChecksResistDisease", - ride: "DS4.ChecksRide", - search: "DS4.ChecksSearch", - senseMagic: "DS4.ChecksSenseMagic", - sneak: "DS4.ChecksSneak", - startFire: "DS4.ChecksStartFire", - swim: "DS4.ChecksSwim", - wakeUp: "DS4.ChecksWakeUp", - workMechanism: "DS4.ChecksWorkMechanism", - }, - - /** - * Translations for the standard check modifiers - */ - checkModifiers: { - routine: "DS4.CheckModifierRoutine", - veryEasy: "DS4.CheckModifierVeryEasy", - easy: "DS4.CheckModifierEasy", - normal: "DS4.CheckModifierMormal", - difficult: "DS4.CheckModifierDifficult", - veryDifficult: "DS4.CheckModifierVeryDifficult", - extremelyDifficult: "DS4.CheckModifierExtremelyDifficult", - custom: "DS4.CheckModifierCustom", - }, -}; - -export const DS4 = { - // ASCII Artwork - ASCII: String.raw`_____________________________________________________________________________________________ - ____ _ _ _ _ ____ _____ ___ _ _ ____ _ _ __ _______ ____ ____ _ _ -| _ \| | | | \ | |/ ___| ____/ _ \| \ | / ___|| | / \\ \ / / ____| _ \/ ___| | || | -| | | | | | | \| | | _| _|| | | | \| \___ \| | / _ \\ V /| _| | |_) \___ \ | || |_ -| |_| | |_| | |\ | |_| | |__| |_| | |\ |___) | |___ / ___ \| | | |___| _ < ___) | |__ _| -|____/ \___/|_| \_|\____|_____\___/|_| \_|____/|_____/_/ \_\_| |_____|_| \_\____/ |_| -=============================================================================================`, - - /** - * A dictionary of dictionaries each mapping keys to localized strings - * resp. their localization keys. - * The localization is assumed to take place on each reload. - */ - i18n: i18nKeys, - - /** - * A dictionary of dictionaries each mapping keys to localizion keys. - */ - i18nKeys, - - /** - * A dictionary of dictionaries mapping keys to icon file paths. - */ - icons: { - /** - * Define the file paths to icon images - */ - attackTypes: { - melee: "systems/ds4/assets/icons/official/combat-values/melee-attack.png", - meleeRanged: "systems/ds4/assets/icons/official/combat-values/melee-ranged-attack.png", - ranged: "systems/ds4/assets/icons/official/combat-values/ranged-attack.png", - }, - - /** - * Define the file paths to icon images - */ - spellTypes: { - spellcasting: "systems/ds4/assets/icons/official/combat-values/spellcasting.png", - targetedSpellcasting: "systems/ds4/assets/icons/official/combat-values/targeted-spellcasting.png", - }, - - /** - * Define the file paths to check images - */ - checks: { - appraise: "systems/ds4/assets/icons/game-icons/delapouite/two-coins.svg", - changeSpell: "systems/ds4/assets/icons/game-icons/delapouite/card-exchange.svg", - climb: "systems/ds4/assets/icons/game-icons/caro-asercion/mountain-climbing.svg", - communicate: "systems/ds4/assets/icons/game-icons/delapouite/discussion.svg", - decipherScript: "systems/ds4/assets/icons/game-icons/lorc/rune-stone.svg", - defend: "systems/ds4/assets/icons/game-icons/sbed/shield.svg", - defyPoison: "systems/ds4/assets/icons/game-icons/lorc/poison-bottle.svg", - disableTraps: "systems/ds4/assets/icons/game-icons/lorc/wolf-trap.svg", - featOfStrength: "systems/ds4/assets/icons/game-icons/delapouite/biceps.svg", - flirt: "systems/ds4/assets/icons/game-icons/lorc/charm.svg", - haggle: "systems/ds4/assets/icons/game-icons/lorc/cash.svg", - hide: "systems/ds4/assets/icons/game-icons/lorc/hidden.svg", - identifyMagic: "systems/ds4/assets/icons/game-icons/lorc/uncertainty.svg", - jump: "systems/ds4/assets/icons/game-icons/delapouite/jump-across.svg", - knowledge: "systems/ds4/assets/icons/game-icons/delapouite/bookshelf.svg", - openLock: "systems/ds4/assets/icons/game-icons/delapouite/padlock-open.svg", - perception: "systems/ds4/assets/icons/game-icons/lorc/awareness.svg", - pickPocket: "systems/ds4/assets/icons/game-icons/darkzaitev/robber-hand.svg", - readTracks: "systems/ds4/assets/icons/game-icons/delapouite/deer-track.svg", - resistDisease: "systems/ds4/assets/icons/game-icons/lorc/virus.svg", - ride: "systems/ds4/assets/icons/game-icons/delapouite/cavalry.svg", - search: "systems/ds4/assets/icons/game-icons/lorc/magnifying-glass.svg", - senseMagic: "systems/ds4/assets/icons/game-icons/delapouite/sparkles.svg", - sneak: "systems/ds4/assets/icons/game-icons/delapouite/mute.svg", - startFire: "systems/ds4/assets/icons/game-icons/lorc/campfire.svg", - swim: "systems/ds4/assets/icons/game-icons/delapouite/pool-dive.svg", - wakeUp: "systems/ds4/assets/icons/game-icons/delapouite/alarm-clock.svg", - workMechanism: "systems/ds4/assets/icons/game-icons/lorc/lever.svg", - }, - }, - - /** - * Profile info types for handlebars of a character - */ - characterProfileDTypes: { - biography: "String", - gender: "String", - birthday: "String", - birthplace: "String", - age: "Number", - height: "Number", - hairColor: "String", - weight: "Number", - eyeColor: "String", - specialCharacteristics: "String", - }, - - /** - * Standard check modifiers - */ - checkModifiers: { - routine: 8, - veryEasy: 4, - easy: 2, - normal: 0, - difficult: -2, - veryDifficult: -4, - extremelyDifficult: -8, - }, -}; diff --git a/src/dice/check-evaluation.ts b/src/dice/check-evaluation.ts deleted file mode 100644 index 4b007160..00000000 --- a/src/dice/check-evaluation.ts +++ /dev/null @@ -1,136 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../utils/utils"; - -export function evaluateCheck( - dice: number[], - checkTargetNumber: number, - { - maximumCoupResult = 1, - minimumFumbleResult = 20, - canFumble = true, - }: { maximumCoupResult?: number; minimumFumbleResult?: number; canFumble?: boolean } = {}, -): SubCheckResult[] { - const diceWithSubChecks = assignSubChecksToDice(dice, checkTargetNumber, { - maximumCoupResult: maximumCoupResult, - }); - return evaluateDiceWithSubChecks(diceWithSubChecks, { - maximumCoupResult: maximumCoupResult, - minimumFumbleResult: minimumFumbleResult, - canFumble: canFumble, - }); -} - -interface DieWithSubCheck { - result: number; - checkTargetNumber: number; -} - -function assignSubChecksToDice( - dice: number[], - checkTargetNumber: number, - { - maximumCoupResult = 1, - }: { - maximumCoupResult?: number; - } = {}, -): DieWithSubCheck[] { - const requiredNumberOfDice = getRequiredNumberOfDice(checkTargetNumber); - - if (dice.length !== requiredNumberOfDice || requiredNumberOfDice < 1) { - throw new Error(getGame().i18n.localize("DS4.ErrorInvalidNumberOfDice")); - } - - const checkTargetNumberForLastSubCheck = checkTargetNumber - 20 * (requiredNumberOfDice - 1); - - const indexOfSmallestNonCoup = findIndexOfSmallestNonCoup(dice, maximumCoupResult); - const indexOfFirstCoup = dice.findIndex((die) => die <= maximumCoupResult); - const indexForLastSubCheck = shouldUseCoupForLastSubCheck( - indexOfSmallestNonCoup, - indexOfFirstCoup, - dice, - checkTargetNumberForLastSubCheck, - ) - ? indexOfFirstCoup - : indexOfSmallestNonCoup; - - return dice.map((die, index) => ({ - result: die, - checkTargetNumber: index === indexForLastSubCheck ? checkTargetNumberForLastSubCheck : 20, - })); -} - -function findIndexOfSmallestNonCoup(dice: number[], maximumCoupResult: number): number { - return dice - .map((die, index): [number, number] => [die, index]) - .filter((indexedDie) => indexedDie[0] > maximumCoupResult) - .reduce( - (smallestIndexedDie, indexedDie) => (indexedDie[0] < smallestIndexedDie[0] ? indexedDie : smallestIndexedDie), - [Infinity, -1], - )[1]; -} - -function shouldUseCoupForLastSubCheck( - indexOfSmallestNonCoup: number, - indexOfFirstCoup: number, - dice: readonly number[], - checkTargetNumberForLastSubCheck: number, -) { - if (indexOfFirstCoup !== -1 && indexOfSmallestNonCoup === -1) { - return true; - } - const smallestNonCoup = dice[indexOfSmallestNonCoup]; - if ( - !Number.isInteger(indexOfFirstCoup) || - indexOfFirstCoup < -1 || - !Number.isInteger(indexOfSmallestNonCoup) || - smallestNonCoup === undefined - ) { - throw new Error("Received an invalid value for the parameter indexOfSmallestNonCoup or indexOfFirstCoup,"); - } - return ( - indexOfFirstCoup !== -1 && - smallestNonCoup > checkTargetNumberForLastSubCheck && - smallestNonCoup + checkTargetNumberForLastSubCheck > 20 - ); -} - -interface SubCheckResult extends DieWithSubCheck { - active?: boolean; - discarded?: boolean; - success?: boolean; - failure?: boolean; - count?: number; -} - -function evaluateDiceWithSubChecks( - results: DieWithSubCheck[], - { - maximumCoupResult, - minimumFumbleResult, - canFumble, - }: { maximumCoupResult: number; minimumFumbleResult: number; canFumble: boolean }, -): SubCheckResult[] { - return results.map((dieWithSubCheck, index) => { - const result: SubCheckResult = { - ...dieWithSubCheck, - active: dieWithSubCheck.result <= dieWithSubCheck.checkTargetNumber, - discarded: dieWithSubCheck.result > dieWithSubCheck.checkTargetNumber, - }; - if (result.result <= maximumCoupResult) { - result.success = true; - result.count = result.checkTargetNumber; - result.active = true; - result.discarded = false; - } - if (index === 0 && canFumble && result.result >= minimumFumbleResult) result.failure = true; - return result; - }); -} - -export function getRequiredNumberOfDice(checkTargetNumber: number): number { - return Math.max(Math.ceil(checkTargetNumber / 20), 1); -} diff --git a/src/dice/check-factory.js b/src/dice/check-factory.js deleted file mode 100644 index 6063ca98..00000000 --- a/src/dice/check-factory.js +++ /dev/null @@ -1,300 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { DialogWithListeners } from "../apps/dialog-with-listeners"; -import { DS4 } from "../config"; -import { getGame } from "../utils/utils"; - -/** @typedef {"publicroll" | "gmroll" | "gmroll" | "selfroll"} RollModes */ - -/** - * Most basic class responsible for generating the chat formula and passing it to the chat as roll. - */ -class CheckFactory { - /** - * @param {number} checkTargetNumber The check target number for this check factory - * @param {number} checkModifier The check modifier for this check factory - * @param {Partial} [options] Options for this check factory - */ - constructor(checkTargetNumber, checkModifier, options = {}) { - this.#checkTargetNumber = checkTargetNumber; - this.#checkModifier = checkModifier; - this.#options = foundry.utils.mergeObject(this.constructor.defaultOptions, options); - } - - /** - * The check target number for this check factory. - * @type {number} - */ - #checkTargetNumber; - - /** - * The check modifier for this check factory. - * @type {number} - */ - #checkModifier; - - /** - * The options for this check factory. - * @type {DS4CheckFactoryOptions} - */ - #options; - - /** - * The default options of thos CheckFactory class. Upon instantiation, they are merged with the explicitly provided options. - * @type {DS4CheckFactoryOptions} - */ - static get defaultOptions() { - return { - maximumCoupResult: 1, - minimumFumbleResult: 20, - useSlayingDice: false, - rollMode: "publicroll", - }; - } - - /** - * Execute this check factory. - * @returns {Promise} A promise that resolves to the created chat message for the roll */ - async execute() { - const innerFormula = ["ds", this.createCheckTargetNumberModifier(), this.createCoupFumbleModifier()].filterJoin(""); - const formula = this.#options.useSlayingDice ? `{${innerFormula}}x` : innerFormula; - const roll = Roll.create(formula); - const speaker = this.#options.speaker ?? ChatMessage.getSpeaker(); - - return roll.toMessage( - { - speaker, - flavor: this.#options.flavor, - flags: this.#options.flavorData ? { ds4: { flavorData: this.#options.flavorData } } : undefined, - }, - { rollMode: this.#options.rollMode, create: true }, - ); - } - - /** - * Create the check target number modifier for this roll. - * @returns string - */ - createCheckTargetNumberModifier() { - const totalCheckTargetNumber = this.#checkTargetNumber + this.#checkModifier; - return totalCheckTargetNumber >= 0 ? `v${this.#checkTargetNumber + this.#checkModifier}` : "v0"; - } - - /** - * Create the coup fumble modifier for this roll. - * @returns {string | null} - */ - createCoupFumbleModifier() { - const isMinimumFumbleResultRequired = - this.#options.minimumFumbleResult !== this.constructor.defaultOptions.minimumFumbleResult; - const isMaximumCoupResultRequired = - this.#options.maximumCoupResult !== this.constructor.defaultOptions.maximumCoupResult; - - if (isMinimumFumbleResultRequired || isMaximumCoupResultRequired) { - return `c${this.#options.maximumCoupResult ?? ""}:${this.#options.minimumFumbleResult ?? ""}`; - } else { - return null; - } - } -} - -/** - * Asks the user for all unknown/necessary information and passes them on to perform a roll. - * @param {number} checkTargetNumber The Check Target Number ("CTN") - * @param {Partial} [options={}] Options changing the behavior of the roll and message. - * @returns {Promise} A promise that resolves to the chat message created by the roll - */ -export async function createCheckRoll(checkTargetNumber, options = {}) { - // Ask for additional required data; - const interactiveRollData = await askForInteractiveRollData(checkTargetNumber, options); - - const newTargetValue = interactiveRollData.checkTargetNumber ?? checkTargetNumber; - const checkModifier = interactiveRollData.checkModifier ?? 0; - /** @type {Partial} */ - const newOptions = { - maximumCoupResult: interactiveRollData.maximumCoupResult ?? options.maximumCoupResult, - minimumFumbleResult: interactiveRollData.minimumFumbleResult ?? options.minimumFumbleResult, - useSlayingDice: getGame().settings.get("ds4", "useSlayingDiceForAutomatedChecks"), - rollMode: interactiveRollData.rollMode ?? options.rollMode, - flavor: options.flavor, - flavorData: options.flavorData, - speaker: options.speaker, - }; - - // Create Factory - const cf = new CheckFactory(newTargetValue, checkModifier, newOptions); - - // Possibly additional processing - - // Execute roll - return cf.execute(); -} - -/** - * Responsible for rendering the modal interface asking for the check modifier and (currently) additional - * data. - * - * @notes - * At the moment, this asks for more data than it will do after some iterations. - * - * @param {number} checkTargetNumber The check target number - * @param {Partial} [options={}] Predefined roll options - * @param {template?: string | undefined; title?: string | undefined} [additionalOptions={}] Additional options to use for the dialog - * @returns {Promise>} A promise that resolves to the data given by the user. - */ -async function askForInteractiveRollData(checkTargetNumber, options = {}, { template, title } = {}) { - const usedTemplate = template ?? "systems/ds4/templates/dialogs/roll-options.hbs"; - const usedTitle = title ?? getGame().i18n.localize("DS4.DialogRollOptionsDefaultTitle"); - const id = foundry.utils.randomID(); - const templateData = { - title: usedTitle, - checkTargetNumber: checkTargetNumber, - maximumCoupResult: options.maximumCoupResult ?? this.constructor.defaultOptions.maximumCoupResult, - minimumFumbleResult: options.minimumFumbleResult ?? this.constructor.defaultOptions.minimumFumbleResult, - rollMode: options.rollMode ?? getGame().settings.get("core", "rollMode"), - rollModes: CONFIG.Dice.rollModes, - checkModifiers: Object.entries(DS4.i18n.checkModifiers).map(([key, translation]) => { - if (key in DS4.checkModifiers) { - const value = DS4.checkModifiers[key]; - const label = `${translation} (${value >= 0 ? `+${value}` : value})`; - return { value, label }; - } - return { value: key, label: translation }; - }), - id, - }; - const renderedHtml = await renderTemplate(usedTemplate, templateData); - - const dialogPromise = new Promise((resolve) => { - new DialogWithListeners( - { - title: usedTitle, - content: renderedHtml, - buttons: { - ok: { - icon: '', - label: getGame().i18n.localize("DS4.GenericOkButton"), - callback: (html) => { - if (!("jquery" in html)) { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedHtmlType", { - exType: "JQuery", - realType: "HTMLElement", - }), - ); - } else { - const innerForm = html[0]?.querySelector("form"); - if (!innerForm) { - throw new Error( - getGame().i18n.format("DS4.ErrorCouldNotFindHtmlElement", { - htmlElement: "form", - }), - ); - } - resolve(innerForm); - } - }, - }, - cancel: { - icon: '', - label: getGame().i18n.localize("DS4.GenericCancelButton"), - }, - }, - default: "ok", - }, - { - activateAdditionalListeners: (html, app) => { - const checkModifierCustomFormGroup = html.find(`#check-modifier-custom-${id}`).parent(".form-group"); - html.find(`#check-modifier-${id}`).on("change", (event) => { - if (event.currentTarget.value === "custom" && checkModifierCustomFormGroup.hasClass("ds4-hidden")) { - checkModifierCustomFormGroup.removeClass("ds4-hidden"); - app.setPosition({ height: "auto" }); - } else if (!checkModifierCustomFormGroup.hasClass("ds4-hidden")) { - checkModifierCustomFormGroup.addClass("ds4-hidden"); - app.setPosition({ height: "auto" }); - } - }); - }, - id, - }, - ).render(true); - }); - const dialogForm = await dialogPromise; - return parseDialogFormData(dialogForm); -} - -/** - * Extracts Dialog data from the returned DOM element. - * @param {HTMLFormElement} formData The filed dialog - * @returns {Partial} - */ -function parseDialogFormData(formData) { - const chosenCheckTargetNumber = parseInt(formData["check-target-number"]?.value); - const chosenCheckModifier = formData["check-modifier"]?.value; - - const chosenCheckModifierValue = - chosenCheckModifier === "custom" - ? parseInt(formData["check-modifier-custom"]?.value) - : parseInt(chosenCheckModifier); - - const chosenMaximumCoupResult = parseInt(formData["maximum-coup-result"]?.value); - const chosenMinimumFumbleResult = parseInt(formData["minimum-fumble-result"]?.value); - const chosenRollMode = formData["roll-mode"]?.value; - - return { - checkTargetNumber: Number.isSafeInteger(chosenCheckTargetNumber) ? chosenCheckTargetNumber : undefined, - checkModifier: Number.isSafeInteger(chosenCheckModifierValue) ? chosenCheckModifierValue : undefined, - maximumCoupResult: Number.isSafeInteger(chosenMaximumCoupResult) ? chosenMaximumCoupResult : undefined, - minimumFumbleResult: Number.isSafeInteger(chosenMinimumFumbleResult) ? chosenMinimumFumbleResult : undefined, - rollMode: Object.keys(CONFIG.Dice.rollModes).includes(chosenRollMode) ? chosenRollMode : undefined, - }; -} - -/** - * Contains data that needs retrieval from an interactive Dialog. - * @typedef {object} InteractiveRollData - * @property {number} checkModifier - * @property {RollModes} rollMode - */ - -/** - * Contains *CURRENTLY* necessary Data for drafting a roll. - * - * @deprecated - * Quite a lot of this information is requested due to a lack of automation: - * - maximumCoupResult - * - minimumFumbleResult - * - checkTargetNumber - * - * They will and should be removed once effects and data retrieval is in place. - * If a "raw" roll dialog is necessary, create another pre-processing Dialog - * class asking for the required information. - * This interface should then be replaced with the {@link InteractiveRollData}. - * @typedef {object} IntermediateInteractiveRollData - * @property {number} checkTargetNumber - * @property {number} maximumCoupResult - * @property {number} minimumFumbleResult - */ - -/** - * The minimum behavioral options that need to be passed to the factory. - * @typedef {object} DS4CheckFactoryOptions - * @property {number} maximumCoupResult - * @property {number} minimumFumbleResult - * @property {boolean} useSlayingDice - * @property {RollModes} rollMode - * @property {string} [flavor] - * @property {Record} [flavorData] - * @property {ChatSpeakerData} [speaker] - */ - -/** - * @typedef {object} ChatSpeakerData - * @property {string | null} [scene] - * @property {string | null} [actor] - * @property {string | null} [token] - * @property {string | null} [alias] - */ diff --git a/src/dice/check.js b/src/dice/check.js deleted file mode 100644 index 38bd9383..00000000 --- a/src/dice/check.js +++ /dev/null @@ -1,143 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../utils/utils"; -import { evaluateCheck, getRequiredNumberOfDice } from "./check-evaluation"; - -/** - * Implements DS4 Checks as an emulated "dice throw". - * - * @example - * - Roll a check against a Check Target Number (CTN) of 18: `/r dsv18` - * - Roll a check with multiple dice against a CTN of 34: `/r dsv34` - * - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2:19` - * - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5` - */ -export class DS4Check extends foundry.dice.terms.DiceTerm { - constructor({ modifiers = [], results = [], options } = {}) { - super({ - faces: 20, - results, - modifiers, - options, - }); - - // Parse and store check target number - const checkTargetNumberModifier = this.modifiers.filter((m) => m[0] === "v")[0]; - const ctnRgx = new RegExp("v([0-9]+)?"); - const ctnMatch = checkTargetNumberModifier?.match(ctnRgx); - if (ctnMatch) { - const [parseCheckTargetNumber] = ctnMatch.slice(1); - this.checkTargetNumber = parseCheckTargetNumber - ? parseInt(parseCheckTargetNumber) - : DS4Check.DEFAULT_CHECK_TARGET_NUMBER; - } - - this.number = getRequiredNumberOfDice(this.checkTargetNumber); - - // Parse and store maximumCoupResult and minimumFumbleResult - const coupFumbleModifier = this.modifiers.filter((m) => m[0] === "c")[0]; - const cfmRgx = new RegExp("c([0-9]+)?(:([0-9]+))?"); - const cfmMatch = coupFumbleModifier?.match(cfmRgx); - if (cfmMatch) { - const parseMaximumCoupResult = cfmMatch[1]; - const parseMinimumFumbleResult = cfmMatch[3]; - this.maximumCoupResult = parseMaximumCoupResult - ? parseInt(parseMaximumCoupResult) - : DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; - this.minimumFumbleResult = parseMinimumFumbleResult - ? parseInt(parseMinimumFumbleResult) - : DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; - if (this.minimumFumbleResult <= this.maximumCoupResult) - throw new SyntaxError(getGame().i18n.localize("DS4.ErrorDiceCoupFumbleOverlap")); - } - - // Parse and store no fumble - const noFumbleModifier = this.modifiers.filter((m) => m[0] === "n")[0]; - if (noFumbleModifier) { - this.canFumble = false; - } - - if (this.results.length > 0) { - this.evaluateResults(); - } - } - - /** @type {boolean | null} */ - coup = null; - /** @type {boolean | null} */ - fumble = null; - canFumble = true; - checkTargetNumber = DS4Check.DEFAULT_CHECK_TARGET_NUMBER; - minimumFumbleResult = DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; - maximumCoupResult = DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; - - /** @override */ - get expression() { - return `ds${this.modifiers.join("")}`; - } - - /** @override */ - get total() { - if (this.fumble) return 0; - return super.total; - } - - /** @override */ - _evaluateSync(options = {}) { - super._evaluateSync(options); - this.evaluateResults(); - return this; - } - - /** @override */ - async _evaluateAsync(options = {}) { - await super._evaluateAsync(options); - this.evaluateResults(); - return this; - } - - /** @override */ - roll({ minimize = false, maximize = false } = {}) { - // Swap minimize / maximize because in DS4, the best possible roll is a 1 and the worst possible roll is a 20 - return super.roll({ minimize: maximize, maximize: minimize }); - } - - /** - * Perform additional evaluation after the individual results have been evaluated. - * @protected - */ - evaluateResults() { - const dice = this.results.map((die) => die.result); - const results = evaluateCheck(dice, this.checkTargetNumber, { - maximumCoupResult: this.maximumCoupResult, - minimumFumbleResult: this.minimumFumbleResult, - canFumble: this.canFumble, - }); - this.results = results; - this.coup = results[0]?.success ?? false; - this.fumble = results[0]?.failure ?? false; - } - - /** - * @remarks "min" and "max" are filtered out because they are irrelevant for - * {@link DS4Check}s and only result in some dice rolls being highlighted - * incorrectly. - * @override - */ - getResultCSS(result) { - return super.getResultCSS(result).filter((cssClass) => cssClass !== "min" && cssClass !== "max"); - } - - static DEFAULT_CHECK_TARGET_NUMBER = 10; - static DEFAULT_MAXIMUM_COUP_RESULT = 1; - static DEFAULT_MINIMUM_FUMBLE_RESULT = 20; - static DENOMINATION = "s"; - static MODIFIERS = { - c: () => undefined, // Modifier is consumed in constructor for maximumCoupResult / minimumFumbleResult - v: () => undefined, // Modifier is consumed in constructor for checkTargetNumber - n: () => undefined, // Modifier is consumed in constructor for canFumble - }; -} diff --git a/src/dice/roll.js b/src/dice/roll.js deleted file mode 100644 index bc632a07..00000000 --- a/src/dice/roll.js +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../utils/utils"; -import { DS4Check } from "./check"; - -export class DS4Roll extends Roll { - /** @override */ - static CHAT_TEMPLATE = "systems/ds4/templates/dice/roll.hbs"; - - /** - * @override - * @remarks - * This only differs from {@link Roll#render} in that it provides `isCoup` and `isFumble` properties to the roll - * template if the first dice term is a ds4 check. - */ - async render({ flavor, template = this.constructor.CHAT_TEMPLATE, isPrivate = false } = {}) { - if (!this._evaluated) await this.evaluate({ async: true }); - const firstDiceTerm = this.dice[0]; - const isCoup = firstDiceTerm instanceof DS4Check && firstDiceTerm.coup; - const isFumble = firstDiceTerm instanceof DS4Check && firstDiceTerm.fumble; - const chatData = { - formula: isPrivate ? "???" : this._formula, - flavor: isPrivate ? null : flavor, - user: getGame().user?.id, - tooltip: isPrivate ? "" : await this.getTooltip(), - total: isPrivate ? "?" : Math.round((this.total ?? 0) * 100) / 100, - isCoup: isPrivate ? null : isCoup, - isFumble: isPrivate ? null : isFumble, - }; - return renderTemplate(template, chatData); - } -} diff --git a/src/dice/slaying-dice-modifier.js b/src/dice/slaying-dice-modifier.js deleted file mode 100644 index 5f50aec0..00000000 --- a/src/dice/slaying-dice-modifier.js +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../utils/utils"; -import { DS4Check } from "./check"; - -export function registerSlayingDiceModifier() { - foundry.dice.terms.PoolTerm.MODIFIERS.x = slay; -} - -/** - * @this {PoolTerm} - * @param {string} modifier - */ -async function slay(modifier) { - const rgx = /[xX]/; - const match = modifier.match(rgx); - if (!match || !this.rolls) return; - - let checked = 0; - while (checked < (this.dice.length ?? 0)) { - const diceTerm = this.dice[checked]; - checked++; - if (diceTerm instanceof DS4Check && diceTerm.coup) { - const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`; - const additionalRoll = await Roll.create(formula).evaluate(); - - this.rolls.push(additionalRoll); - this.results.push({ result: additionalRoll.total ?? 0, active: true }); - this.terms.push(formula); - } - if (checked > 1000) throw new Error(getGame().i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded")); - } -} diff --git a/src/documents/active-effect.js b/src/documents/active-effect.js deleted file mode 100644 index f7c4afc1..00000000 --- a/src/documents/active-effect.js +++ /dev/null @@ -1,176 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { mathEvaluator } from "../expression-evaluation/evaluator"; -import { getGame } from "../utils/utils"; - -/** - * @typedef {object} ItemEffectConfig - * @property {boolean} [applyToItems] Whether or not to apply this effect to owned items instead of the actor - * @property {string} [itemName] Only apply this effect to items with this name - * @property {string} [condition] Only apply this effect to items where this condition is fullfilled - */ - -/** - * @typedef {object} DS4ActiveEffectFlags - * @property {ItemEffectConfig} [itemEffectConfig] Configuration for applying this effect to owned items - */ - -/** - * @typedef {Record} ActiveEffectFlags - * @property {DS4ActiveEffectFlags} [ds4] Flags for DS4 - */ - -export class DS4ActiveEffect extends ActiveEffect { - /** - * A fallback icon that can be used if no icon is defined for the effect. - */ - static FALLBACK_ICON = "icons/svg/aura.svg"; - - /** - * A cached reference to the source document to avoid recurring database lookups - * @type {foundry.abstract.Document | undefined | null} - * @protected - */ - source = undefined; - - /** @override */ - get isSuppressed() { - const originatingItem = this.originatingItem; - if (!originatingItem) { - return false; - } - return originatingItem.isNonEquippedEuipable(); - } - - /** - * The item which this effect originates from if it has been transferred from an item to an actor. - * @return {import("./item/item").DS4Item | undefined} - */ - get originatingItem() { - if (this.parent instanceof Item) { - return this.parent; - } - return undefined; - } - - /** - * The number of times this effect should be applied. - * @type {number} - */ - get factor() { - return this.originatingItem?.activeEffectFactor ?? 1; - } - - /** @override */ - apply(document, change) { - change.value = Roll.replaceFormulaData(change.value, document); - try { - change.value = DS4ActiveEffect.safeEval(change.value).toString(); - } catch { - // this is a valid case, e.g., if the effect change simply is a string - } - return super.apply(document, change); - } - - /** - * Create a new {@link DS4ActiveEffect} using default values. - * - * @param {import("./item/item").DS4Item | import("./actor/actor").DS4Actor} parent The parent of the effect. - * @returns {Promise} A promise that resolved to the created effect or udifined of the - * creation was prevented. - */ - static async createDefault(parent) { - const createData = { - name: getGame().i18n.localize(`DS4.NewEffectName`), - icon: this.FALLBACK_ICON, - }; - - return this.create(createData, { parent }); - } - - /** - * Safely evaluate a mathematical expression. - * @param {string} expression The expression to evaluate - * @returns {number | `${number | boolean}`} The numeric result of the expression - * @throws If the expression could not be evaluated or did not produce a numeric resilt - */ - static safeEval(expression) { - const result = mathEvaluator.evaluate(expression); - if (!Number.isNumeric(result)) { - throw new Error(`mathEvaluator.evaluate produced a non-numeric result from expression "${expression}"`); - } - return result; - } - - /** - * Apply the given effects to the gicen Actor or item. - * @param {import("./item/item").DS4Item | import("./actor/actor").DS4Actor} document The Actor or Item to which to apply the effects - * @param {DS4ActiveEffect[]} effetcs The effects to apply - * @param {(change: EffectChangeData) => boolean} [predicate=() => true] Apply only changes that fullfill this predicate - * @returns {Set} The statuses that are applied by this effect - */ - static applyEffetcs(document, effetcs, predicate = () => true) { - /** @type {Record} */ - const overrides = {}; - - /** @type {Set} */ - const statuses = new Set(); - - // Organize active effect changes by their application priority - const changesWithEffect = effetcs.flatMap((e) => { - if (!e.active) { - return []; - } - for (const statusId of e.statuses) { - statuses.add(statusId); - } - return e.getFactoredChangesWithEffect(predicate); - }); - changesWithEffect.sort((a, b) => (a.change.priority ?? 0) - (b.change.priority ?? 0)); - - // Apply all changes - for (const changeWithEffect of changesWithEffect) { - if (!changeWithEffect.change.key) continue; - const changes = changeWithEffect.effect.apply(document, changeWithEffect.change); - Object.assign(overrides, changes); - } - - // Expand the set of final overrides - document.overrides = foundry.utils.expandObject({ - ...foundry.utils.flattenObject(document.overrides), - ...overrides, - }); - - return statuses; - } - - /** - * Get the array of changes for this effect, considering the {@link DS4ActiveEffect#factor}. - * @param {(change: EffectChangeData) => boolean} [predicate=() => true] An optional predicate to filter which changes should be considered - * @returns {EffectChangeDataWithEffect[]} The array of changes from this effect, considering the factor. - * @protected - */ - getFactoredChangesWithEffect(predicate = () => true) { - return this.changes.filter(predicate).flatMap((change) => { - const c = foundry.utils.deepClone(change); - c.priority = c.priority ?? c.mode * 10; - return Array(this.factor).fill({ effect: this, change: c }); - }); - } -} - -/** - * @typedef {object} EffectChangeDataWithEffect - * @property {DS4ActiveEffect} effect - * @property {EffectChangeData} change - */ - -/** - * @typedef {object} EffectChangeData - * @property {string} key The attribute path in the Actor or Item data which the change modifies - * @property {string} value The value of the change effect - * @property {number} mode The modification mode with which the change is applied - * @property {number} priority The priority level with which this change is applied - */ diff --git a/src/documents/actor/actor-data-properties-base.ts b/src/documents/actor/actor-data-properties-base.ts deleted file mode 100644 index 57144f1b..00000000 --- a/src/documents/actor/actor-data-properties-base.ts +++ /dev/null @@ -1,46 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../../config"; - -import type { ModifiableDataBaseTotal, ResourceDataBaseTotalMax } from "../common/common-data"; - -export interface DS4ActorDataPropertiesDataBase { - attributes: DS4ActorDataPropertiesDataAttributes; - traits: DS4ActorDataPropertiesDataTraits; - combatValues: DS4ActorDataPropertiesDataCombatValues; - rolling: DS4ActorDataPropertiesDataRolling; - checks: DS4ActorDataPropertiesDataChecks; - armorValueSpellMalus: number; -} - -type DS4ActorDataPropertiesDataAttributes = { - [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBaseTotal; -}; - -type DS4ActorDataPropertiesDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBaseTotal }; - -type DS4ActorDataPropertiesDataCombatValues = { - [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" - ? ResourceDataBaseTotalMax - : ModifiableDataBaseTotal; -}; - -interface DS4ActorDataPropertiesDataRolling { - maximumCoupResult: number; - minimumFumbleResult: number; -} - -type DS4ActorDataPropertiesDataChecks = { - [key in Check]: number; -}; - -export type Check = keyof typeof DS4.i18n.checks; - -export function isCheck(value: string): value is Check { - return Object.keys(DS4.i18n.checks).includes(value); -} diff --git a/src/documents/actor/actor-data-properties.ts b/src/documents/actor/actor-data-properties.ts deleted file mode 100644 index ff366af9..00000000 --- a/src/documents/actor/actor-data-properties.ts +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4CharacterDataProperties } from "./character/character-data-properties"; -import type { DS4CreatureDataProperties } from "./creature/creature-data-properties"; - -declare global { - interface DataConfig { - Actor: DS4ActorDataProperties; - } -} - -export type DS4ActorDataProperties = DS4CharacterDataProperties | DS4CreatureDataProperties; diff --git a/src/documents/actor/actor-data-source-base.ts b/src/documents/actor/actor-data-source-base.ts deleted file mode 100644 index c1a91e55..00000000 --- a/src/documents/actor/actor-data-source-base.ts +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../../config"; - -import type { ModifiableData, ModifiableDataBase, ResourceData } from "../common/common-data"; - -export interface DS4ActorDataSourceDataBase { - attributes: DS4ActorDataSourceDataAttributes; - traits: DS4ActorDataSourceDataTraits; - combatValues: DS4ActorDataSourceDataCombatValues; -} - -type DS4ActorDataSourceDataAttributes = { [Key in keyof typeof DS4.i18n.attributes]: ModifiableDataBase }; - -type Attribute = keyof DS4ActorDataSourceDataAttributes; - -export function isAttribute(value: unknown): value is Attribute { - return (Object.keys(DS4.i18n.attributes) as Array).includes(value); -} - -type DS4ActorDataSourceDataTraits = { [Key in keyof typeof DS4.i18n.traits]: ModifiableDataBase }; - -type Trait = keyof DS4ActorDataSourceDataTraits; - -export function isTrait(value: unknown): value is Trait { - return (Object.keys(DS4.i18n.traits) as Array).includes(value); -} - -type DS4ActorDataSourceDataCombatValues = { - [Key in keyof typeof DS4.i18n.combatValues]: Key extends "hitPoints" ? ResourceData : ModifiableData; -}; - -type CombatValue = keyof DS4ActorDataSourceDataCombatValues; - -export function isCombatValue(value: string): value is CombatValue { - return (Object.keys(DS4.i18n.combatValues) as Array).includes(value); -} diff --git a/src/documents/actor/actor-data-source.ts b/src/documents/actor/actor-data-source.ts deleted file mode 100644 index f491ad6d..00000000 --- a/src/documents/actor/actor-data-source.ts +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4CharacterDataSource } from "./character/character-data-source"; -import type { DS4CreatureDataSource } from "./creature/creature-data-source"; - -declare global { - interface SourceConfig { - Actor: DS4ActorDataSource; - } -} - -export type DS4ActorDataSource = DS4CharacterDataSource | DS4CreatureDataSource; diff --git a/src/documents/actor/actor.js b/src/documents/actor/actor.js deleted file mode 100644 index c1f4d256..00000000 --- a/src/documents/actor/actor.js +++ /dev/null @@ -1,536 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver RÜmpelein -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../../config"; -import { createCheckRoll } from "../../dice/check-factory"; -import { Evaluator } from "../../expression-evaluation/evaluator"; -import { Validator } from "../../expression-evaluation/validator"; -import { logger } from "../../utils/logger"; -import { getGame } from "../../utils/utils"; -import { DS4ActiveEffect } from "../active-effect"; -import { isAttribute, isTrait } from "./actor-data-source-base"; - -/** - * The Actor class for DS4 - */ -export class DS4Actor extends Actor { - /** @type {Set} */ - newStatuses = new Set(); - - /** @override */ - prepareData() { - this.prepareBaseData(); - this.prepareEmbeddedDocuments(); - this.prepareIntermediateData(); - this.applyActiveEffectsToBaseData(); - this.prepareDerivedData(); - this.applyActiveEffectsToDerivedData(); - this.handleStatusChanges(); - this.prepareFinalDerivedData(); - } - - /** @override */ - prepareBaseData() { - this.newStatuses = new Set(); - - this.system.rolling = { - minimumFumbleResult: 20, - maximumCoupResult: 1, - }; - - Object.values(this.system.attributes).forEach((attribute) => (attribute.total = attribute.base + attribute.mod)); - - Object.values(this.system.traits).forEach((trait) => (trait.total = trait.base + trait.mod)); - } - - /** @override */ - prepareEmbeddedDocuments() { - super.prepareEmbeddedDocuments(); - this.applyActiveEffectsToItems(); - } - - /** - * Apply transformations to the Actor data after embedded documents have been prepared, but before effects have been - * applied to the Actor. - */ - prepareIntermediateData() { - this.system.armorValueSpellMalus = this.armorValueSpellMalusOfEquippedItems; - } - - /** - * The effects that should be applied to this actor. - * @type {import("../active-effect").DS4ActiveEffect[]} - * @protected - */ - get actorEffects() { - const effects = []; - for (const effect of this.allApplicableEffects()) { - if (!effect.flags.ds4?.itemEffectConfig?.applyToItems) { - effects.push(effect); - } - } - return effects; - } - - /** - * Get the effects of this actor that should be applied to the given item. - * @param {import("../item/item").DS4Item} item The item for which to get effects - * @returns {import("../active-effect").DS4ActiveEffect[]} The array of effects that are candidates to be applied to the item - */ - itemEffects(item) { - /** @type {(effect: DS4ActiveEffect) => boolean} */ - const shouldEffectBeAppliedToItem = (effect, item) => { - const { applyToItems, itemName, condition } = effect.flags.ds4?.itemEffectConfig ?? {}; - - if (!applyToItems || (itemName !== undefined && itemName !== "" && itemName !== item.name)) { - return false; - } - - if (condition !== undefined && condition !== "") { - try { - const replacedCondition = DS4Actor.replaceFormulaData(condition, { item, actor: this, effect }); - return replacedCondition !== undefined ? Boolean(DS4Actor.evaluator.evaluate(replacedCondition)) : false; - } catch (error) { - logger.warn(error); - return false; - } - } - - return true; - }; - - const effects = []; - for (const effect of this.allApplicableEffects()) { - if (shouldEffectBeAppliedToItem(effect, item)) { - effects.push(effect); - } - } - return effects; - } - - /** - * Replace placholders in a formula with data. - * @param {string} formula The formular to enricht with data - * @param {object} data The data to use for enriching - * @returns {string | undefined} The Enriched formula or undefined, if it contains placeholders that cannot be resolved - * @protected - */ - static replaceFormulaData(formula, data) { - const dataRgx = new RegExp(/@([a-z.0-9_-]+)/gi); - try { - return formula.replace(dataRgx, (_, term) => { - const value = foundry.utils.getProperty(data, term); - if (value == null) { - throw new Error(); - } - return String(value).trim(); - }); - } catch { - return undefined; - } - } - - /** - * We override this with an empty implementation because we have our own custom way of applying - * {@link ActiveEffect}s and {@link Actor#prepareEmbeddedDocuments} calls this. - * @override - */ - applyActiveEffects() { - return; - } - - /** - * Apply active effects to items. - * - * @remarks - * Talents are handled before all other item types, because if the total rank of a talent is affected by any - * effects, that affects how many times effects provided by this talent need to be applied. At the moment, there is - * no special ordering among talents. This means that having a talents that provide effects that adjust the total - * rank of talents can lead to nondeterministic behavior and thus must be avoided. - */ - applyActiveEffectsToItems() { - /* Handle talents before all other item types, because their rank might be affected, which in turn affects how - many times effects provided by that talent are applied */ - for (const item of this.itemTypes.talent) { - this.applyActiveEffectsToItem(item); - } - for (const item of this.items) { - if (item.type === "talent") continue; - this.applyActiveEffectsToItem(item); - } - } - - /** - * Apply effects to the given item. - * @param {import("../item/item").DS4Item} item The item to which to apply effects - * @protected - */ - applyActiveEffectsToItem(item) { - item.overrides = {}; - item.reset(); - DS4ActiveEffect.applyEffetcs(item, this.itemEffects(item)).forEach(this.newStatuses.add.bind(this.newStatuses)); - } - - /** - * Apply effects to base data - * @protected - */ - applyActiveEffectsToBaseData() { - this.overrides = {}; - DS4ActiveEffect.applyEffetcs( - this, - this.actorEffects, - (change) => - !this.derivedDataProperties.includes(change.key) && !this.finalDerivedDataProperties.includes(change.key), - ).forEach(this.newStatuses.add.bind(this.newStatuses)); - } - - /** - * Apply effects to derived data - * @protected - */ - applyActiveEffectsToDerivedData() { - DS4ActiveEffect.applyEffetcs(this, this.actorEffects, (change) => - this.derivedDataProperties.includes(change.key), - ).forEach(this.newStatuses.add.bind(this.newStatuses)); - } - - /** - * Apply transformations to the Actor data after effects have been applied to the base data. - * @override - */ - prepareDerivedData() { - this.system.armorValueSpellMalus = Math.max(this.system.armorValueSpellMalus, 0); - this.prepareCombatValues(); - this.prepareChecks(); - } - - /** - * The list of properties that are derived from others, given in dot notation. - * @returns {string[]} The list of derived propertie - */ - get derivedDataProperties() { - const combatValueProperties = Object.keys(DS4.i18n.combatValues).map( - (combatValue) => `system.combatValues.${combatValue}.total`, - ); - const checkProperties = Object.keys(DS4.i18n.checks) - .filter((check) => check !== "defend") - .map((check) => `system.checks.${check}`); - return combatValueProperties.concat(checkProperties); - } - - handleStatusChanges() { - this.statuses ??= new Set(); - - // Identify which special statuses had been active - const specialStatuses = new Map(); - for (const statusId of Object.values(CONFIG.specialStatusEffects)) { - specialStatuses.set(statusId, this.statuses.has(statusId)); - } - this.statuses.clear(); - - // set new statuses - this.newStatuses.forEach(this.statuses.add.bind(this.statuses)); - - // Apply special statuses that changed to active tokens - const tokens = this.getActiveTokens(); - for (const [statusId, wasActive] of specialStatuses) { - const isActive = this.statuses.has(statusId); - if (isActive === wasActive) continue; - for (const token of tokens) { - token._onApplyStatusEffect(statusId, isActive); - } - } - } - - /** - * Apply final transformations to the Actor data after all effects have been applied. - */ - prepareFinalDerivedData() { - Object.values(this.system.attributes).forEach((attribute) => (attribute.total = Math.ceil(attribute.total))); - Object.values(this.system.traits).forEach((trait) => (trait.total = Math.ceil(trait.total))); - Object.entries(this.system.combatValues) - .filter(([key]) => key !== "movement") - .forEach(([, combatValue]) => (combatValue.total = Math.ceil(combatValue.total))); - Object.keys(this.system.checks).forEach((key) => { - this.system.checks[key] = Math.ceil(this.system.checks[key]); - }); - - this.system.combatValues.hitPoints.max = this.system.combatValues.hitPoints.total; - this.system.checks.defend = this.system.combatValues.defense.total; - } - - /** - * The list of properties that are completely derived (i.e. {@link ActiveEffect}s cannot be applied to them), - * given in dot notation. - * @type {string[]} - */ - get finalDerivedDataProperties() { - return ["system.combatValues.hitPoints.max", "system.checks.defend"]; - } - - /** - * The list of item types that can be owned by this actor. - * @type {import("../item/item-data-source").ItemType[]} - */ - get ownableItemTypes() { - return ["weapon", "armor", "shield", "equipment", "loot", "spell"]; - } - - /** - * Checks whether or not the given item type can be owned by the actor. - * @param {import("../item/item-data-source").ItemType} itemType The item type to check - * @returns {boolean} Whether or not this actor can own the given item type - */ - canOwnItemType(itemType) { - return this.ownableItemTypes.includes(itemType); - } - - /** - * Prepares the combat values of the actor. - * @protected - */ - prepareCombatValues() { - const system = this.system; - - system.combatValues.hitPoints.base = system.attributes.body.total + system.traits.constitution.total + 10; - system.combatValues.defense.base = - system.attributes.body.total + system.traits.constitution.total + this.armorValueOfEquippedItems; - system.combatValues.initiative.base = system.attributes.mobility.total + system.traits.agility.total; - system.combatValues.movement.base = system.attributes.mobility.total / 2 + 1; - system.combatValues.meleeAttack.base = system.attributes.body.total + system.traits.strength.total; - system.combatValues.rangedAttack.base = system.attributes.mobility.total + system.traits.dexterity.total; - system.combatValues.spellcasting.base = - system.attributes.mind.total + system.traits.aura.total - system.armorValueSpellMalus; - system.combatValues.targetedSpellcasting.base = - system.attributes.mind.total + system.traits.dexterity.total - system.armorValueSpellMalus; - - Object.values(system.combatValues).forEach( - (combatValue) => (combatValue.total = combatValue.base + combatValue.mod), - ); - } - - /** - * The total armor value of the equipped items. - * @type {number} - * @protected - */ - get armorValueOfEquippedItems() { - return this.equippedItemsWithArmor.map((item) => item.system.armorValue).reduce((a, b) => a + b, 0); - } - - /** - * The armor value spell malus from equipped items. - * @type {number} - * @protected - */ - get armorValueSpellMalusOfEquippedItems() { - return this.equippedItemsWithArmor - .filter((item) => !(item.type === "armor" && ["cloth", "natural"].includes(item.system.armorMaterialType))) - .reduce((sum, item) => sum + item.system.armorValue, 0); - } - - /** - * The equipped items of this actor that provide armor. - * @type {(import("../item/armor/armor").DS4Armor | import("../item/shield/shield").DS4Shield)[]} - * @protected - */ - get equippedItemsWithArmor() { - return this.items.filter((item) => (item.type === "armor" || item.type === "shield") && item.system.equipped); - } - - /** - * Prepares the check target numbers of checks for the actor. - * @protected - */ - prepareChecks() { - const system = this.system; - system.checks = { - appraise: system.attributes.mind.total + system.traits.intellect.total, - changeSpell: system.attributes.mind.total + system.traits.intellect.total, - climb: system.attributes.mobility.total + system.traits.strength.total, - communicate: system.attributes.mind.total + system.traits.dexterity.total + this.itemTypes.language.length, - decipherScript: system.attributes.mind.total + system.traits.intellect.total, - defend: 0, // assigned in prepareFinalDerivedData as it must always match data.combatValues.defense.total and is not changeable by effects - defyPoison: system.attributes.body.total + system.traits.constitution.total, - disableTraps: system.attributes.mind.total + system.traits.dexterity.total, - featOfStrength: system.attributes.body.total + system.traits.strength.total, - flirt: system.attributes.mind.total + system.traits.aura.total, - haggle: system.attributes.mind.total + Math.max(system.traits.intellect.total, system.traits.intellect.total), - hide: system.attributes.mobility.total + system.traits.agility.total, - identifyMagic: system.attributes.mind.total + system.traits.intellect.total, - jump: system.attributes.mobility.total + system.traits.agility.total, - knowledge: system.attributes.mind.total + system.traits.intellect.total, - openLock: system.attributes.mind.total + system.traits.dexterity.total, - perception: Math.max(system.attributes.mind.total + system.traits.intellect.total, 8), - pickPocket: system.attributes.mobility.total + system.traits.dexterity.total, - readTracks: system.attributes.mind.total + system.traits.intellect.total, - resistDisease: system.attributes.body.total + system.traits.constitution.total, - ride: system.attributes.mobility.total + Math.max(system.traits.agility.total, system.traits.aura.total), - search: Math.max(system.attributes.mind.total + system.traits.intellect.total, 8), - senseMagic: system.attributes.mind.total + system.traits.aura.total, - sneak: system.attributes.mobility.total + system.traits.agility.total, - startFire: system.attributes.mind.total + system.traits.dexterity.total, - swim: system.attributes.mobility.total + system.traits.strength.total, - wakeUp: system.attributes.mind.total + system.traits.intellect.total, - workMechanism: - system.attributes.mind.total + Math.max(system.traits.dexterity.total, system.traits.intellect.total), - }; - } - - /** - * Handle how changes to a Token attribute bar are applied to the Actor. - * This only differs from the base implementation by also allowing negative values. - * @param {string} attribute The attribute path - * @param {number} value The target attribute value - * @param {boolean} [isDelta=false] Whether the number represents a relative change (true) or an absolute change (false) - * @param {boolean} [isBar=true] Whether the new value is part of an attribute bar, or just a direct value - * @returns {Promise} The updated Actor document - * @override - */ - async modifyTokenAttribute(attribute, value, isDelta = false, isBar = true) { - const current = foundry.utils.getProperty(this.system, attribute); - - // Determine the updates to make to the actor data - /** @type {Record} */ - let updates; - if (isBar) { - if (isDelta) value = Math.min(Number(current.value) + value, current.max); - updates = { [`system.${attribute}.value`]: value }; - } else { - if (isDelta) value = Number(current) + value; - updates = { [`system.${attribute}`]: value }; - } - - // Call a hook to handle token resource bar updates - const allowed = Hooks.call("modifyTokenAttribute", { attribute, value, isDelta, isBar }, updates); - return allowed !== false ? this.update(updates) : this; - } - - /** - * Roll for a given check. - * @param {import("./actor-data-properties-base").Check} check The check to perform - * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll - * @returns {Promise} A promise that resolves once the roll has been performed - */ - async rollCheck(check, options = {}) { - const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); - await createCheckRoll(this.system.checks[check], { - rollMode: getGame().settings.get("core", "rollMode"), - maximumCoupResult: this.system.rolling.maximumCoupResult, - minimumFumbleResult: this.system.rolling.minimumFumbleResult, - flavor: "DS4.ActorCheckFlavor", - flavorData: { actor: speaker.alias ?? this.name, check: DS4.i18nKeys.checks[check] }, - speaker, - }); - } - - /** - * Roll a generic check. A dialog is presented to select the combination of - * Attribute and Trait to perform the check against. - * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll - * @returns {Promise} A promise that resolves once the roll has been performed - */ - async rollGenericCheck(options = {}) { - const attributeAndTrait = await this.selectAttributeAndTrait(); - if (!attributeAndTrait) { - return; - } - const { attribute, trait } = attributeAndTrait; - const checkTargetNumber = this.system.attributes[attribute].total + this.system.traits[trait].total; - const speaker = ChatMessage.getSpeaker({ actor: this, ...options.speaker }); - await createCheckRoll(checkTargetNumber, { - rollMode: getGame().settings.get("core", "rollMode"), - maximumCoupResult: this.system.rolling.maximumCoupResult, - minimumFumbleResult: this.system.rolling.minimumFumbleResult, - flavor: "DS4.ActorGenericCheckFlavor", - flavorData: { - actor: speaker.alias ?? this.name, - attribute: DS4.i18n.attributes[attribute], - trait: DS4.i18n.traits[trait], - }, - speaker, - }); - } - - /** - * Prompt the use to select an attribute and a trait. - * @returns {Promise} - * @protected - */ - async selectAttributeAndTrait() { - const attributeIdentifier = "attribute-trait-selection-attribute"; - const traitIdentifier = "attribute-trait-selection-trait"; - return Dialog.prompt({ - title: getGame().i18n.localize("DS4.DialogAttributeTraitSelection"), - content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { - selects: [ - { - label: getGame().i18n.localize("DS4.Attribute"), - identifier: attributeIdentifier, - options: Object.fromEntries( - Object.entries(DS4.i18n.attributes).map(([attribute, translation]) => [ - attribute, - `${translation} (${this.system.attributes[attribute].total})`, - ]), - ), - }, - { - label: getGame().i18n.localize("DS4.Trait"), - identifier: traitIdentifier, - options: Object.fromEntries( - Object.entries(DS4.i18n.traits).map(([trait, translation]) => [ - trait, - `${translation} (${this.system.traits[trait].total})`, - ]), - ), - }, - ], - }), - label: getGame().i18n.localize("DS4.GenericOkButton"), - callback: (html) => { - const selectedAttribute = html.find(`#${attributeIdentifier}`).val(); - if (!isAttribute(selectedAttribute)) { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedAttribute", { - actualAttribute: selectedAttribute, - expectedTypes: Object.keys(DS4.i18n.attributes) - .map((attribute) => `'${attribute}'`) - .join(", "), - }), - ); - } - const selectedTrait = html.find(`#${traitIdentifier}`).val(); - if (!isTrait(selectedTrait)) { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedTrait", { - actualTrait: selectedTrait, - expectedTypes: Object.keys(DS4.i18n.traits) - .map((attribute) => `'${attribute}'`) - .join(", "), - }), - ); - } - return { - attribute: selectedAttribute, - trait: selectedTrait, - }; - }, - rejectClose: false, - }); - } - - static evaluator = new Evaluator({ - context: Math, - predicate: (identifier) => - Validator.defaultPredicate(identifier) || ["includes", "toLowerCase", "toUpperCase"].includes(identifier), - }); -} - -/** - * @typedef {object} AttributeAndTrait - * @property {keyof typeof DS4.i18n.attributes} attribute - * @property {keyof typeof DS4.i18n.traits} trait - */ diff --git a/src/documents/actor/character/character-data-properties.ts b/src/documents/actor/character/character-data-properties.ts deleted file mode 100644 index 10b87795..00000000 --- a/src/documents/actor/character/character-data-properties.ts +++ /dev/null @@ -1,29 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ActorDataPropertiesDataBase } from "../actor-data-properties-base"; -import type { - DS4CharacterDataSourceDataBaseInfo, - DS4CharacterDataSourceDataCurrency, - DS4CharacterDataSourceDataProfile, - DS4CharacterDataSourceDataProgression, - DS4CharacterDataSourceDataSlayerPoints, -} from "./character-data-source"; - -export interface DS4CharacterDataProperties { - type: "character"; - data: DS4CharacterDataPropertiesData; -} - -interface DS4CharacterDataPropertiesData extends DS4ActorDataPropertiesDataBase { - baseInfo: DS4CharacterDataSourceDataBaseInfo; - progression: DS4CharacterDataSourceDataProgression; - profile: DS4CharacterDataSourceDataProfile; - currency: DS4CharacterDataSourceDataCurrency; - slayerPoints: DS4CharacterDataPropertiesDataSlayerPoints; -} - -export interface DS4CharacterDataPropertiesDataSlayerPoints extends DS4CharacterDataSourceDataSlayerPoints { - max: number; -} diff --git a/src/documents/actor/character/character-data-source.ts b/src/documents/actor/character/character-data-source.ts deleted file mode 100644 index f9d27feb..00000000 --- a/src/documents/actor/character/character-data-source.ts +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { UsableResource } from "../../common/common-data"; -import type { DS4ActorDataSourceDataBase } from "../actor-data-source-base"; - -export interface DS4CharacterDataSource { - type: "character"; - data: DS4CharacterDataSourceData; -} - -interface DS4CharacterDataSourceData extends DS4ActorDataSourceDataBase { - baseInfo: DS4CharacterDataSourceDataBaseInfo; - progression: DS4CharacterDataSourceDataProgression; - profile: DS4CharacterDataSourceDataProfile; - currency: DS4CharacterDataSourceDataCurrency; - slayerPoints: DS4CharacterDataSourceDataSlayerPoints; -} - -export interface DS4CharacterDataSourceDataBaseInfo { - race: string; - class: string; - heroClass: string; - culture: string; -} - -export interface DS4CharacterDataSourceDataProgression { - level: number; - experiencePoints: number; - talentPoints: UsableResource; - progressPoints: UsableResource; -} - -export interface DS4CharacterDataSourceDataProfile { - biography: string; - gender: string; - birthday: string; - birthplace: string; - age: number; - height: number; - hairColor: string; - weight: number; - eyeColor: string; - specialCharacteristics: string; -} - -export interface DS4CharacterDataSourceDataCurrency { - gold: number; - silver: number; - copper: number; -} - -export interface DS4CharacterDataSourceDataSlayerPoints { - value: number; -} diff --git a/src/documents/actor/character/character.js b/src/documents/actor/character/character.js deleted file mode 100644 index b5ddff1a..00000000 --- a/src/documents/actor/character/character.js +++ /dev/null @@ -1,23 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Actor } from "../actor"; - -export class DS4Character extends DS4Actor { - /** @override */ - prepareFinalDerivedData() { - super.prepareFinalDerivedData(); - this.system.slayerPoints.max = 3; - } - - /** @override */ - get finalDerivedDataProperties() { - return [...super.finalDerivedDataProperties, "system.slayerPoints.max"]; - } - - /** @override */ - get ownableItemTypes() { - return [...super.ownableItemTypes, "talent", "racialAbility", "language", "alphabet"]; - } -} diff --git a/src/documents/actor/creature/creature-data-properties.ts b/src/documents/actor/creature/creature-data-properties.ts deleted file mode 100644 index d7d6f539..00000000 --- a/src/documents/actor/creature/creature-data-properties.ts +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ActorDataPropertiesDataBase } from "../actor-data-properties-base"; -import type { DS4CreatureDataSourceDataBaseInfo } from "./creature-data-source"; - -export interface DS4CreatureDataProperties { - type: "creature"; - data: DS4CreatureDataPropertiesData; -} - -interface DS4CreatureDataPropertiesData extends DS4ActorDataPropertiesDataBase { - baseInfo: DS4CreatureDataSourceDataBaseInfo; -} diff --git a/src/documents/actor/creature/creature-data-source.ts b/src/documents/actor/creature/creature-data-source.ts deleted file mode 100644 index 8d1105ab..00000000 --- a/src/documents/actor/creature/creature-data-source.ts +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4 } from "../../../config"; -import type { DS4ActorDataSourceDataBase } from "../actor-data-source-base"; - -export interface DS4CreatureDataSource { - type: "creature"; - data: DS4CreatureDataSourceData; -} - -interface DS4CreatureDataSourceData extends DS4ActorDataSourceDataBase { - baseInfo: DS4CreatureDataSourceDataBaseInfo; -} - -export interface DS4CreatureDataSourceDataBaseInfo { - loot: string; - foeFactor: number; - creatureType: CreatureType; - sizeCategory: SizeCategory; - experiencePoints: number; - description: string; -} - -type CreatureType = keyof typeof DS4.i18n.creatureTypes; - -type SizeCategory = keyof typeof DS4.i18n.creatureSizeCategories; diff --git a/src/documents/actor/creature/creature.ts b/src/documents/actor/creature/creature.ts deleted file mode 100644 index 983c2b44..00000000 --- a/src/documents/actor/creature/creature.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Actor } from "../actor"; - -import type { ItemType } from "../../item/item-data-source"; - -export class DS4Creature extends DS4Actor { - override get ownableItemTypes(): Array { - return [...super.ownableItemTypes, "specialCreatureAbility"]; - } -} diff --git a/src/documents/actor/proxy.js b/src/documents/actor/proxy.js deleted file mode 100644 index 5b48b12d..00000000 --- a/src/documents/actor/proxy.js +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../../utils/utils"; -import { DS4Actor } from "./actor"; -import { DS4Character } from "./character/character"; -import { DS4Creature } from "./creature/creature"; - -const handler = { - /** - * @param {typeof import("./actor").DS4Actor} - * @param {unknown[]} args - */ - construct(_, args) { - switch (args[0]?.type) { - case "character": - return new DS4Character(...args); - case "creature": - return new DS4Creature(...args); - default: - throw new Error(getGame().i18n.format("DS4.ErrorInvalidActorType", { type: args[0]?.type })); - } - }, -}; - -/** @type {typeof import("./actor").DS4Actor} */ -export const DS4ActorProxy = new Proxy(DS4Actor, handler); diff --git a/src/documents/chat-message.js b/src/documents/chat-message.js deleted file mode 100644 index d32abbff..00000000 --- a/src/documents/chat-message.js +++ /dev/null @@ -1,31 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../utils/utils"; - -/** - * @typedef {object} DS4ChatMessageFlags - * @property {Record} [flavorData] Data to use for localizing the flavor of the chat message - */ - -/** - * @typedef {Record} ChatMessageFlags - * @property {DS4ChatMessageFlags} [ds4] Flags for DS4 - */ - -export class DS4ChatMessage extends ChatMessage { - prepareData() { - super.prepareData(); - if (this.flavor) { - const game = getGame(); - const flavorData = Object.fromEntries( - Object.entries(this.flags.ds4?.flavorData ?? {}).map(([key, value]) => [ - key, - typeof value === "string" ? game.i18n.localize(value) : value, - ]), - ); - this.flavor = game.i18n.format(this.flavor, flavorData); - } - } -} diff --git a/src/documents/common/roll-options.js b/src/documents/common/roll-options.js deleted file mode 100644 index 89a813ea..00000000 --- a/src/documents/common/roll-options.js +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -/** - * @typedef {object} RollOptions - * @property {Speaker} speaker - */ - -/** - * @typedef {object} Speaker - * @property {TokenDocument} [token] - * @property {string} [alias] - */ - -export {} diff --git a/src/documents/item/alphabet/alphabet-data-properties.ts b/src/documents/item/alphabet/alphabet-data-properties.ts deleted file mode 100644 index 7b357598..00000000 --- a/src/documents/item/alphabet/alphabet-data-properties.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4AlphabetDataSourceData } from "./alphabet-data-source"; - -export interface DS4AlphabetDataProperties { - type: "alphabet"; - data: DS4AlphabetDataPropertiesData; -} - -interface DS4AlphabetDataPropertiesData extends DS4AlphabetDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/alphabet/alphabet-data-source.ts b/src/documents/item/alphabet/alphabet-data-source.ts deleted file mode 100644 index c1b7dff6..00000000 --- a/src/documents/item/alphabet/alphabet-data-source.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; - -export interface DS4AlphabetDataSource { - type: "alphabet"; - data: DS4AlphabetDataSourceData; -} - -export type DS4AlphabetDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/alphabet/alphabet.ts b/src/documents/item/alphabet/alphabet.ts deleted file mode 100644 index be6e5301..00000000 --- a/src/documents/item/alphabet/alphabet.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4Alphabet extends DS4Item {} diff --git a/src/documents/item/armor/armor-data-properties.ts b/src/documents/item/armor/armor-data-properties.ts deleted file mode 100644 index 36f8dcd3..00000000 --- a/src/documents/item/armor/armor-data-properties.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4ArmorDataSourceData } from "./armor-data-source"; - -export interface DS4ArmorDataProperties { - type: "armor"; - data: DS4ArmorDataPropertiesData; -} - -interface DS4ArmorDataPropertiesData extends DS4ArmorDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/armor/armor-data-source.ts b/src/documents/item/armor/armor-data-source.ts deleted file mode 100644 index 412b12e3..00000000 --- a/src/documents/item/armor/armor-data-source.ts +++ /dev/null @@ -1,25 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4 } from "../../../config"; -import type { - DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataProtective, -} from "../item-data-source-base"; - -export interface DS4ArmorDataSource { - type: "armor"; - data: DS4ArmorDataSourceData; -} - -export interface DS4ArmorDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataProtective { - armorMaterialType: keyof typeof DS4.i18n.armorMaterialTypes; - armorType: keyof typeof DS4.i18n.armorTypes; -} diff --git a/src/documents/item/armor/armor.ts b/src/documents/item/armor/armor.ts deleted file mode 100644 index 531d0d7c..00000000 --- a/src/documents/item/armor/armor.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4Armor extends DS4Item {} diff --git a/src/documents/item/equipment/equipment-data-properties.ts b/src/documents/item/equipment/equipment-data-properties.ts deleted file mode 100644 index 1263f723..00000000 --- a/src/documents/item/equipment/equipment-data-properties.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4EquipmentDataSourceData } from "./equipment-data-source"; - -export interface DS4EquipmentDataProperties { - type: "equipment"; - data: DS4EquipmentDataPropertiesData; -} - -interface DS4EquipmentDataPropertiesData extends DS4EquipmentDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/equipment/equipment-data-source.ts b/src/documents/item/equipment/equipment-data-source.ts deleted file mode 100644 index 15b2c986..00000000 --- a/src/documents/item/equipment/equipment-data-source.ts +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { - DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataPhysical, -} from "../item-data-source-base"; - -export interface DS4EquipmentDataSource { - type: "equipment"; - data: DS4EquipmentDataSourceData; -} - -export interface DS4EquipmentDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable {} diff --git a/src/documents/item/equipment/equipment.ts b/src/documents/item/equipment/equipment.ts deleted file mode 100644 index 748177d5..00000000 --- a/src/documents/item/equipment/equipment.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4Equipment extends DS4Item {} diff --git a/src/documents/item/item-data-properties-base.ts b/src/documents/item/item-data-properties-base.ts deleted file mode 100644 index 750f5605..00000000 --- a/src/documents/item/item-data-properties-base.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export interface DS4ItemDataPropertiesDataRollable { - rollable: boolean; -} diff --git a/src/documents/item/item-data-properties.ts b/src/documents/item/item-data-properties.ts deleted file mode 100644 index 003593d5..00000000 --- a/src/documents/item/item-data-properties.ts +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4AlphabetDataProperties } from "./alphabet/alphabet-data-properties"; -import type { DS4ArmorDataProperties } from "./armor/armor-data-properties"; -import type { DS4EquipmentDataProperties } from "./equipment/equipment-data-properties"; -import type { DS4LanguageDataProperties } from "./language/language-data-properties"; -import type { DS4LootDataProperties } from "./loot/loot-data-properties"; -import type { DS4RacialAbilityDataProperties } from "./racial-ability/racial-ability-data-properties"; -import type { DS4ShieldDataProperties } from "./shield/shield-data-properties"; -import type { DS4SpecialCreatureAbilityDataProperties } from "./special-creature-ability/special-creature-ability-data-properties"; -import type { DS4SpellDataProperties } from "./spell/spell-data-properties"; -import type { DS4TalentDataProperties } from "./talent/talent-data-properties"; -import type { DS4WeaponDataProperties } from "./weapon/weapon-data-properties"; - -declare global { - interface DataConfig { - Item: DS4ItemDataProperties; - } -} - -export type DS4ItemDataProperties = - | DS4AlphabetDataProperties - | DS4ArmorDataProperties - | DS4EquipmentDataProperties - | DS4LanguageDataProperties - | DS4LootDataProperties - | DS4RacialAbilityDataProperties - | DS4ShieldDataProperties - | DS4SpecialCreatureAbilityDataProperties - | DS4SpellDataProperties - | DS4TalentDataProperties - | DS4WeaponDataProperties; diff --git a/src/documents/item/item-data-source-base.ts b/src/documents/item/item-data-source-base.ts deleted file mode 100644 index 4cf2b290..00000000 --- a/src/documents/item/item-data-source-base.ts +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import type { DS4 } from "../../config"; - -export interface DS4ItemDataSourceDataBase { - description: string; -} - -export interface DS4ItemDataSourceDataPhysical { - quantity: number; - price: number; - availability: keyof typeof DS4.i18n.itemAvailabilities; - storageLocation: string; -} - -export interface DS4ItemDataSourceDataEquipable { - equipped: boolean; -} - -export interface DS4ItemDataSourceDataProtective { - armorValue: number; -} diff --git a/src/documents/item/item-data-source.ts b/src/documents/item/item-data-source.ts deleted file mode 100644 index 418d1acc..00000000 --- a/src/documents/item/item-data-source.ts +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4 } from "../../config"; -import type { DS4AlphabetDataSource } from "./alphabet/alphabet-data-source"; -import type { DS4ArmorDataSource } from "./armor/armor-data-source"; -import type { DS4EquipmentDataSource } from "./equipment/equipment-data-source"; -import type { DS4LanguageDataSource } from "./language/language-data-source"; -import type { DS4LootDataSource } from "./loot/loot-data-source"; -import type { DS4RacialAbilityDataSource } from "./racial-ability/racial-ability-data-source"; -import type { DS4ShieldDataSource } from "./shield/shield-data-source"; -import type { DS4SpecialCreatureAbilityDataSource } from "./special-creature-ability/special-creature-ability-data-source"; -import type { DS4SpellDataSource } from "./spell/spell-data-source"; -import type { DS4TalentDataSource } from "./talent/talent-data-source"; -import type { DS4WeaponDataSource } from "./weapon/weapon-data-source"; - -declare global { - interface SourceConfig { - Item: DS4ItemDataSource; - } -} - -export type ItemType = keyof typeof DS4.i18n.itemTypes; - -export type DS4ItemDataSource = - | DS4AlphabetDataSource - | DS4ArmorDataSource - | DS4EquipmentDataSource - | DS4LanguageDataSource - | DS4LootDataSource - | DS4RacialAbilityDataSource - | DS4ShieldDataSource - | DS4SpecialCreatureAbilityDataSource - | DS4SpellDataSource - | DS4TalentDataSource - | DS4WeaponDataSource; diff --git a/src/documents/item/item.js b/src/documents/item/item.js deleted file mode 100644 index 9d3d1ebb..00000000 --- a/src/documents/item/item.js +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../../utils/utils"; - -/** - * The Item class for DS4 - */ -export class DS4Item extends Item { - /** - * An object that tracks the changes to the data model which were applied by active effects - * @type {Record} - */ - overrides = {}; - - /** @override */ - prepareDerivedData() { - this.system.rollable = false; - } - - /** - * Is this item a non-equipped equipable? - * @returns {boolean} Whether the item is a non-equpped equibale or not - */ - isNonEquippedEuipable() { - return "equipped" in this.system && !this.system.equipped; - } - - /** - * The number of times that active effect changes originating from this item should be applied. - * @returns {number | undefined} The number of times the effect should be applied - */ - get activeEffectFactor() { - return 1; - } - - /** - * The list of item types that are rollable. - * @returns {import("../item/item-data-source").ItemType[]} The rollable item types - */ - static get rollableItemTypes() { - return ["weapon", "spell"]; - } - - /** - * Roll a check for an action with this item. - * @param {import("../common/roll-options").RollOptions} [options={}] Additional options to customize the roll - * @returns {Promise} A promise that resolves once the roll has been performed - * @abstract - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars - async roll(options = {}) { - throw new Error(getGame().i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.type })); - } -} diff --git a/src/documents/item/language/language-data-properties.ts b/src/documents/item/language/language-data-properties.ts deleted file mode 100644 index 91a9dab0..00000000 --- a/src/documents/item/language/language-data-properties.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4LanguageDataSourceData } from "./language-data-source"; - -export interface DS4LanguageDataProperties { - type: "language"; - data: DS4LanguageDataPropertiesData; -} - -interface DS4LanguageDataPropertiesData extends DS4LanguageDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/language/language-data-source.ts b/src/documents/item/language/language-data-source.ts deleted file mode 100644 index 48a3875c..00000000 --- a/src/documents/item/language/language-data-source.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; - -export interface DS4LanguageDataSource { - type: "language"; - data: DS4LanguageDataSourceData; -} - -export type DS4LanguageDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/language/language.ts b/src/documents/item/language/language.ts deleted file mode 100644 index 2d8d45ec..00000000 --- a/src/documents/item/language/language.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4Language extends DS4Item {} diff --git a/src/documents/item/loot/loot-data-properties.ts b/src/documents/item/loot/loot-data-properties.ts deleted file mode 100644 index 900840f9..00000000 --- a/src/documents/item/loot/loot-data-properties.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4LootDataSourceData } from "./loot-data-source"; - -export interface DS4LootDataProperties { - type: "loot"; - data: DS4LootDataPropertiesData; -} - -interface DS4LootDataPropertiesData extends DS4LootDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/loot/loot-data-source.ts b/src/documents/item/loot/loot-data-source.ts deleted file mode 100644 index c09311c5..00000000 --- a/src/documents/item/loot/loot-data-source.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical } from "../item-data-source-base"; - -export interface DS4LootDataSource { - type: "loot"; - data: DS4LootDataSourceData; -} - -export interface DS4LootDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataPhysical {} diff --git a/src/documents/item/loot/loot.ts b/src/documents/item/loot/loot.ts deleted file mode 100644 index ba90a2fd..00000000 --- a/src/documents/item/loot/loot.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4Loot extends DS4Item {} diff --git a/src/documents/item/proxy.js b/src/documents/item/proxy.js deleted file mode 100644 index 73e3f4a0..00000000 --- a/src/documents/item/proxy.js +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../../utils/utils"; -import { DS4Alphabet } from "./alphabet/alphabet"; -import { DS4Armor } from "./armor/armor"; -import { DS4Equipment } from "./equipment/equipment"; -import { DS4Item } from "./item"; -import { DS4Language } from "./language/language"; -import { DS4Loot } from "./loot/loot"; -import { DS4RacialAbility } from "./racial-ability/racial-ability"; -import { DS4Shield } from "./shield/shield"; -import { DS4SpecialCreatureAbility } from "./special-creature-ability/special-creature-ability"; -import { DS4Spell } from "./spell/spell"; -import { DS4Talent } from "./talent/talent"; -import { DS4Weapon } from "./weapon/weapon"; - -const handler = { - /** - * @param {typeof import("./item").DS4Item} - * @param {unknown[]} args - */ - construct(_, args) { - switch (args[0]?.type) { - case "alphabet": - return new DS4Alphabet(...args); - case "armor": - return new DS4Armor(...args); - case "equipment": - return new DS4Equipment(...args); - case "language": - return new DS4Language(...args); - case "loot": - return new DS4Loot(...args); - case "racialAbility": - return new DS4RacialAbility(...args); - case "shield": - return new DS4Shield(...args); - case "specialCreatureAbility": - return new DS4SpecialCreatureAbility(...args); - case "spell": - return new DS4Spell(...args); - case "talent": - return new DS4Talent(...args); - case "weapon": - return new DS4Weapon(...args); - default: - throw new Error(getGame().i18n.format("DS4.ErrorInvalidItemType", { type: args[0]?.type })); - } - }, -}; - -/** @type {typeof import("./item").DS4Item} */ -export const DS4ItemProxy = new Proxy(DS4Item, handler); diff --git a/src/documents/item/racial-ability/racial-ability-data-properties.ts b/src/documents/item/racial-ability/racial-ability-data-properties.ts deleted file mode 100644 index 89821df6..00000000 --- a/src/documents/item/racial-ability/racial-ability-data-properties.ts +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4RacialAbilityDataSourceData } from "./racial-ability-data-source"; - -export interface DS4RacialAbilityDataProperties { - type: "racialAbility"; - data: DS4RacialAbilityDataPropertiesData; -} - -interface DS4RacialAbilityDataPropertiesData - extends DS4RacialAbilityDataSourceData, - DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/racial-ability/racial-ability-data-source.ts b/src/documents/item/racial-ability/racial-ability-data-source.ts deleted file mode 100644 index 930cf5cd..00000000 --- a/src/documents/item/racial-ability/racial-ability-data-source.ts +++ /dev/null @@ -1,12 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; - -export interface DS4RacialAbilityDataSource { - type: "racialAbility"; - data: DS4RacialAbilityDataSourceData; -} - -export type DS4RacialAbilityDataSourceData = DS4ItemDataSourceDataBase; diff --git a/src/documents/item/racial-ability/racial-ability.ts b/src/documents/item/racial-ability/racial-ability.ts deleted file mode 100644 index b3b360d9..00000000 --- a/src/documents/item/racial-ability/racial-ability.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4RacialAbility extends DS4Item {} diff --git a/src/documents/item/shield/shield-data-properties.ts b/src/documents/item/shield/shield-data-properties.ts deleted file mode 100644 index a9040994..00000000 --- a/src/documents/item/shield/shield-data-properties.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4ShieldDataSourceData } from "./shield-data-source"; - -export interface DS4ShieldDataProperties { - type: "shield"; - data: DS4ShieldDataPropertiesData; -} - -interface DS4ShieldDataPropertiesData extends DS4ShieldDataSourceData, DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/shield/shield-data-source.ts b/src/documents/item/shield/shield-data-source.ts deleted file mode 100644 index 42547a70..00000000 --- a/src/documents/item/shield/shield-data-source.ts +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { - DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataProtective, -} from "../item-data-source-base"; - -export interface DS4ShieldDataSource { - type: "shield"; - data: DS4ShieldDataSourceData; -} - -export interface DS4ShieldDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataProtective {} diff --git a/src/documents/item/shield/shield.ts b/src/documents/item/shield/shield.ts deleted file mode 100644 index 0da6a219..00000000 --- a/src/documents/item/shield/shield.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4Shield extends DS4Item {} diff --git a/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts b/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts deleted file mode 100644 index 6891e739..00000000 --- a/src/documents/item/special-creature-ability/special-creature-ability-data-properties.ts +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4SpecialCreatureAbilityDataSourceData } from "./special-creature-ability-data-source"; - -export interface DS4SpecialCreatureAbilityDataProperties { - type: "specialCreatureAbility"; - data: DS4SpecialCreatureAbilityDataPropertiesData; -} - -interface DS4SpecialCreatureAbilityDataPropertiesData - extends DS4SpecialCreatureAbilityDataSourceData, - DS4ItemDataPropertiesDataRollable {} diff --git a/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts b/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts deleted file mode 100644 index 0a132b39..00000000 --- a/src/documents/item/special-creature-ability/special-creature-ability-data-source.ts +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; - -export interface DS4SpecialCreatureAbilityDataSource { - type: "specialCreatureAbility"; - data: DS4SpecialCreatureAbilityDataSourceData; -} - -export interface DS4SpecialCreatureAbilityDataSourceData extends DS4ItemDataSourceDataBase { - experiencePoints: number; -} diff --git a/src/documents/item/special-creature-ability/special-creature-ability.ts b/src/documents/item/special-creature-ability/special-creature-ability.ts deleted file mode 100644 index 57e90988..00000000 --- a/src/documents/item/special-creature-ability/special-creature-ability.ts +++ /dev/null @@ -1,7 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4SpecialCreatureAbility extends DS4Item {} diff --git a/src/documents/item/spell/calculate-spell-price.ts b/src/documents/item/spell/calculate-spell-price.ts deleted file mode 100644 index 019d3f84..00000000 --- a/src/documents/item/spell/calculate-spell-price.ts +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { CooldownDuration, DS4SpellDataSourceData } from "./spell-data-source"; - -export function calculateSpellPrice(data: DS4SpellDataSourceData): number | null { - const spellPriceFactor = calculateSpellPriceFactor(data.cooldownDuration); - const baseSpellPrices = [ - data.minimumLevels.healer !== null ? 10 + (data.minimumLevels.healer - 1) * 35 : null, - data.minimumLevels.wizard !== null ? 10 + (data.minimumLevels.wizard - 1) * 50 : null, - data.minimumLevels.sorcerer !== null ? 10 + (data.minimumLevels.sorcerer - 1) * 65 : null, - ].filter((baseSpellPrice: number | null): baseSpellPrice is number => baseSpellPrice !== null); - const baseSpellPrice = Math.min(...baseSpellPrices); - return baseSpellPrice === Infinity ? null : baseSpellPrice * spellPriceFactor; -} - -function calculateSpellPriceFactor(cooldownDuration: CooldownDuration): number { - switch (cooldownDuration) { - case "0r": - case "1r": - case "2r": - case "5r": - case "10r": - case "100r": - return 1; - case "1d": - return 2; - case "d20d": - return 3; - } -} diff --git a/src/documents/item/spell/spell-data-properties.ts b/src/documents/item/spell/spell-data-properties.ts deleted file mode 100644 index 2c807608..00000000 --- a/src/documents/item/spell/spell-data-properties.ts +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4SpellDataSourceData } from "./spell-data-source"; - -export interface DS4SpellDataProperties { - type: "spell"; - data: DS4SpellDataPropertiesData; -} - -interface DS4SpellDataPropertiesData extends DS4SpellDataSourceData, DS4ItemDataPropertiesDataRollable { - price: number | null; - opponentDefense?: number; -} diff --git a/src/documents/item/spell/spell-data-source.ts b/src/documents/item/spell/spell-data-source.ts deleted file mode 100644 index 1b88c78f..00000000 --- a/src/documents/item/spell/spell-data-source.ts +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4 } from "../../../config"; -import type { DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable } from "../item-data-source-base"; - -export interface DS4SpellDataSource { - type: "spell"; - data: DS4SpellDataSourceData; -} - -export interface DS4SpellDataSourceData extends DS4ItemDataSourceDataBase, DS4ItemDataSourceDataEquipable { - spellType: keyof typeof DS4.i18n.spellTypes; - spellModifier: { - numerical: number; - complex: string; - }; - allowsDefense: boolean; - spellGroups: Record; - maxDistance: UnitData; - effectRadius: UnitData; - duration: UnitData; - cooldownDuration: CooldownDuration; - minimumLevels: { - healer: number | null; - wizard: number | null; - sorcerer: number | null; - }; -} - -export interface UnitData { - value: string; - unit: UnitType; -} - -type DistanceUnit = keyof typeof DS4.i18n.distanceUnits; -type TemporalUnit = keyof typeof DS4.i18n.temporalUnits; -export type CooldownDuration = keyof typeof DS4.i18n.cooldownDurations; diff --git a/src/documents/item/spell/spell.js b/src/documents/item/spell/spell.js deleted file mode 100644 index c94d8ba3..00000000 --- a/src/documents/item/spell/spell.js +++ /dev/null @@ -1,84 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { createCheckRoll } from "../../../dice/check-factory"; -import { notifications } from "../../../ui/notifications"; -import { getGame } from "../../../utils/utils"; -import { DS4Item } from "../item"; -import { calculateSpellPrice } from "./calculate-spell-price"; - -export class DS4Spell extends DS4Item { - /** @override */ - prepareDerivedData() { - this.system.rollable = this.system.equipped; - this.system.price = calculateSpellPrice(this.system); - if (this.system.allowsDefense) { - this.system.opponentDefense = 0; - } - } - - /** @override */ - async roll(options = {}) { - const game = getGame(); - - if (!this.system.equipped) { - return notifications.warn( - game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { - name: this.name, - id: this.id, - type: this.type, - }), - ); - } - - if (!this.actor) { - throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); - } - - const ownerSystemData = this.actor.system; - const hasComplexModifier = this.system.spellModifier.complex !== ""; - if (hasComplexModifier === undefined) { - notifications.info( - game.i18n.format("DS4.InfoManuallyEnterSpellModifier", { - name: this.name, - spellModifier: this.system.spellModifier.complex, - }), - ); - } - const spellType = this.system.spellType; - const opponentDefense = this.system.opponentDefense; - const checkTargetNumber = - ownerSystemData.combatValues[spellType].total + (hasComplexModifier ? 0 : this.system.spellModifier.numerical); - const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); - const flavor = - opponentDefense !== undefined && opponentDefense !== 0 - ? "DS4.ItemSpellCheckFlavorWithOpponentDefense" - : "DS4.ItemSpellCheckFlavor"; - /** @type {import("../../../dice/check-factory").DS4CheckFactoryOptions["flavorData"]} */ - const flavorData = { - actor: speaker.alias ?? this.actor.name, - spell: this.name, - }; - if (opponentDefense !== undefined && opponentDefense !== 0) { - flavorData.opponentDefense = (opponentDefense < 0 ? "" : "+") + opponentDefense; - } - - await createCheckRoll(checkTargetNumber, { - rollMode: game.settings.get("core", "rollMode"), - maximumCoupResult: ownerSystemData.rolling.maximumCoupResult, - minimumFumbleResult: ownerSystemData.rolling.minimumFumbleResult, - flavor: flavor, - flavorData: flavorData, - speaker, - }); - - /** - * A hook event that fires after an item is rolled. - * @function ds4.rollItem - * @memberof hookEvents - * @param {DS4Item} item Item being rolled. - */ - Hooks.callAll("ds4.rollItem", this); - } -} diff --git a/src/documents/item/talent/talent-data-properties.ts b/src/documents/item/talent/talent-data-properties.ts deleted file mode 100644 index a2449957..00000000 --- a/src/documents/item/talent/talent-data-properties.ts +++ /dev/null @@ -1,16 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { ModifiableDataBaseTotalMax } from "../../common/common-data"; -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4TalentDataSourceData } from "./talent-data-source"; - -export interface DS4TalentDataProperties { - type: "talent"; - data: DS4TalentDataPropertiesData; -} - -interface DS4TalentDataPropertiesData extends DS4TalentDataSourceData, DS4ItemDataPropertiesDataRollable { - rank: ModifiableDataBaseTotalMax; -} diff --git a/src/documents/item/talent/talent-data-source.ts b/src/documents/item/talent/talent-data-source.ts deleted file mode 100644 index 65e34d36..00000000 --- a/src/documents/item/talent/talent-data-source.ts +++ /dev/null @@ -1,15 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { ModifiableDataBaseMax } from "../../common/common-data"; -import type { DS4ItemDataSourceDataBase } from "../item-data-source-base"; - -export interface DS4TalentDataSource { - type: "talent"; - data: DS4TalentDataSourceData; -} - -export interface DS4TalentDataSourceData extends DS4ItemDataSourceDataBase { - rank: ModifiableDataBaseMax; -} diff --git a/src/documents/item/talent/talent.js b/src/documents/item/talent/talent.js deleted file mode 100644 index 9f7a5acc..00000000 --- a/src/documents/item/talent/talent.js +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../item"; - -export class DS4Talent extends DS4Item { - /** @override */ - prepareDerivedData() { - super.prepareDerivedData(); - this.system.rank.total = this.system.rank.base + this.system.rank.mod; - } - - /** @override */ - get activeEffectFactor() { - return this.system.rank.total; - } -} diff --git a/src/documents/item/weapon/weapon-data-properties.ts b/src/documents/item/weapon/weapon-data-properties.ts deleted file mode 100644 index 6847b7e4..00000000 --- a/src/documents/item/weapon/weapon-data-properties.ts +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4ItemDataPropertiesDataRollable } from "../item-data-properties-base"; -import type { DS4WeaponDataSourceData } from "./weapon-data-source"; - -interface DS4WeaponDataPropertiesData extends DS4WeaponDataSourceData, DS4ItemDataPropertiesDataRollable { - opponentDefenseForAttackType: { - melee?: number; - ranged?: number; - }; -} - -export interface DS4WeaponDataProperties { - type: "weapon"; - data: DS4WeaponDataPropertiesData; -} diff --git a/src/documents/item/weapon/weapon-data-source.ts b/src/documents/item/weapon/weapon-data-source.ts deleted file mode 100644 index 33ccf16c..00000000 --- a/src/documents/item/weapon/weapon-data-source.ts +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { DS4 } from "../../../config"; -import type { - DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataEquipable, - DS4ItemDataSourceDataPhysical, -} from "../item-data-source-base"; - -export interface DS4WeaponDataSource { - type: "weapon"; - data: DS4WeaponDataSourceData; -} - -export interface DS4WeaponDataSourceData - extends DS4ItemDataSourceDataBase, - DS4ItemDataSourceDataPhysical, - DS4ItemDataSourceDataEquipable { - attackType: AttackType; - weaponBonus: number; - opponentDefense: number; -} - -export type AttackType = keyof typeof DS4.i18n.attackTypes; diff --git a/src/documents/item/weapon/weapon.js b/src/documents/item/weapon/weapon.js deleted file mode 100644 index 09a734d0..00000000 --- a/src/documents/item/weapon/weapon.js +++ /dev/null @@ -1,112 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../../../config"; -import { createCheckRoll } from "../../../dice/check-factory"; -import { notifications } from "../../../ui/notifications"; -import { getGame } from "../../../utils/utils"; -import { DS4Item } from "../item"; - -export class DS4Weapon extends DS4Item { - /** @override */ - prepareDerivedData() { - const system = this.system; - system.rollable = system.equipped; - system.opponentDefenseForAttackType = {}; - if (system.attackType === "melee" || system.attackType === "meleeRanged") { - system.opponentDefenseForAttackType.melee = system.opponentDefense; - } - if (system.attackType === "ranged" || system.attackType === "meleeRanged") { - system.opponentDefenseForAttackType.ranged = system.opponentDefense; - } - } - - /** @override */ - async roll(options = {}) { - const game = getGame(); - if (!this.system.equipped) { - return notifications.warn( - game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { - name: this.name, - id: this.id, - type: this.type, - }), - ); - } - - if (!this.actor) { - throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); - } - - const ownerSystemData = this.actor.system; - const weaponBonus = this.system.weaponBonus; - const attackType = await this.getPerformedAttackType(); - const opponentDefense = this.system.opponentDefenseForAttackType[attackType]; - const combatValue = `${attackType}Attack`; - const checkTargetNumber = ownerSystemData.combatValues[combatValue].total + weaponBonus; - const speaker = ChatMessage.getSpeaker({ actor: this.actor, ...options.speaker }); - const flavor = - opponentDefense !== undefined && opponentDefense !== 0 - ? "DS4.ItemWeaponCheckFlavorWithOpponentDefense" - : "DS4.ItemWeaponCheckFlavor"; - /** @type {import("../../../dice/check-factory").DS4CheckFactoryOptions["flavorData"]} */ - const flavorData = { - actor: speaker.alias ?? this.actor.name, - weapon: this.name, - }; - if (opponentDefense !== undefined && opponentDefense !== 0) { - flavorData.opponentDefense = (opponentDefense < 0 ? "" : "+") + opponentDefense; - } - - await createCheckRoll(checkTargetNumber, { - rollMode: getGame().settings.get("core", "rollMode"), - maximumCoupResult: ownerSystemData.rolling.maximumCoupResult, - minimumFumbleResult: ownerSystemData.rolling.minimumFumbleResult, - speaker, - flavor, - flavorData, - }); - - Hooks.callAll("ds4.rollItem", this); - } - - /** - * Get the attack type to perform with this weapon. If there are multiple options prompt the user for a choice. - * @returns {Promise<"melee" | "ranged">} The attack type to perform - * @protected - */ - async getPerformedAttackType() { - if (this.system.attackType !== "meleeRanged") { - return this.system.attackType; - } - - const { melee, ranged } = { ...DS4.i18n.attackTypes }; - const identifier = `attack-type-selection-${foundry.utils.randomID()}`; - return Dialog.prompt({ - title: getGame().i18n.localize("DS4.DialogAttackTypeSelection"), - content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { - selects: [ - { - label: getGame().i18n.localize("DS4.AttackType"), - identifier, - options: { melee, ranged }, - }, - ], - }), - label: getGame().i18n.localize("DS4.GenericOkButton"), - callback: (html) => { - const selectedAttackType = html.find(`#${identifier}`).val(); - if (selectedAttackType !== "melee" && selectedAttackType !== "ranged") { - throw new Error( - getGame().i18n.format("DS4.ErrorUnexpectedAttackType", { - actualType: selectedAttackType, - expectedTypes: "'melee', 'ranged'", - }), - ); - } - return selectedAttackType; - }, - }); - } -} diff --git a/src/documents/token-document.js b/src/documents/token-document.js deleted file mode 100644 index efa26eb7..00000000 --- a/src/documents/token-document.js +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "../utils/utils"; -import { DS4ActorProxy } from "./actor/proxy"; - -/** @type {object | undefined} */ -let fallbackData = undefined; - -function getFallbackData() { - if (!fallbackData) { - fallbackData = {}; - for (const type of getGame().system.template.Actor?.types ?? []) { - foundry.utils.mergeObject(fallbackData, new DS4ActorProxy({ type, name: "temporary" }).system); - } - } - return fallbackData; -} - -export class DS4TokenDocument extends TokenDocument { - static getTrackedAttributes(data, _path = []) { - if (!data) { - data = getFallbackData(); - } - return super.getTrackedAttributes(data, _path); - } -} diff --git a/src/ds4.ts b/src/ds4.ts deleted file mode 100644 index 25364a54..00000000 --- a/src/ds4.ts +++ /dev/null @@ -1,9 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import "../scss/ds4.scss"; - -import { registerForHooks } from "./hooks/hooks"; - -registerForHooks(); diff --git a/src/expression-evaluation/evaluator.ts b/src/expression-evaluation/evaluator.ts deleted file mode 100644 index 2cc9409a..00000000 --- a/src/expression-evaluation/evaluator.ts +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { Validator } from "./validator"; - -export class Evaluator { - context?: Context; - validator: Validator; - - constructor({ - context, - predicate = Validator.defaultPredicate, - }: { context?: Context; predicate?: (identifier: string) => boolean } = {}) { - let actualPredicate = predicate; - if (context) { - this.context = new Proxy(context, { - has: () => true, - get: (t, k) => (k === Symbol.unscopables ? undefined : t[k as keyof typeof t]), - }); - actualPredicate = (identifier: string) => - predicate(identifier) || Object.getOwnPropertyNames(context).includes(identifier); - } - this.validator = new Validator(actualPredicate); - } - - evaluate(expression: string): unknown { - this.validator.validate(expression); - - const body = `with (sandbox) { return ${expression}; }`; - const evaluate = new Function("sandbox", body); - return evaluate(this.context ?? {}); - } -} - -export const defaultEvaluator = new Evaluator(); - -export const mathEvaluator = new Evaluator({ context: Math }); diff --git a/src/expression-evaluation/grammar.ts b/src/expression-evaluation/grammar.ts deleted file mode 100644 index 65d5cd4c..00000000 --- a/src/expression-evaluation/grammar.ts +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export type Token = TokenWithSymbol | TokenWithoutSymbol; - -export interface TokenWithSymbol { - type: TypeWithSymbol; - symbol: string; - pos: number; -} - -interface TokenWithoutSymbol { - type: TypeWithoutSymbol; - pos: number; -} - -type TypeWithSymbol = "iden" | "number" | "string"; - -type TypeWithoutSymbol = - | "+" - | "-" - | "*" - | "**" - | "/" - | "%" - | "===" - | "!==" - | "==" - | "!=" - | "<" - | "<=" - | ">" - | ">=" - | "&&" - | "||" - | "&" - | "|" - | "~" - | "^" - | "<<" - | ">>" - | ">>>" - | "." - | "?." - | "??" - | "!" - | "?" - | ":" - | "(" - | ")" - | "[" - | "]" - | "," - | "{" - | "}" - | "invalid" - | "eof"; - -export const literals = ["true", "false", "null", "undefined"]; -export const safeOperators = ["in", "instanceof", "typeof", "void"]; diff --git a/src/expression-evaluation/lexer.ts b/src/expression-evaluation/lexer.ts deleted file mode 100644 index d3476c6f..00000000 --- a/src/expression-evaluation/lexer.ts +++ /dev/null @@ -1,261 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import type { Token } from "./grammar"; - -export class Lexer { - constructor(private readonly input: string) {} - - *[Symbol.iterator](): Generator { - let pos = 0; - while (true) { - if (this.isWhiteSpace(this.input[pos])) { - pos += 1; - continue; - } - const [token, newPos] = this.getNextToken(pos); - pos = newPos; - yield token; - if (token.type === "eof" || token.type === "invalid") { - break; - } - } - } - - private getNextToken(pos: number): [Token, number] { - const current = this.input[pos]; - - if (current === undefined) { - return [{ type: "eof", pos }, pos]; - } - if (this.isOperatorStart(current)) { - return this.getOperator(pos); - } - if (this.isDigit(current)) { - return this.getNumber(pos); - } - if (current === "'" || current === '"' || current === "`") { - return this.getString(pos); - } - if (current === ".") { - const next = this.input[pos + 1]; - if (this.isDigit(next)) { - return this.getNumber(pos); - } - return this.getOperator(pos); - } - if (this.isIdentifierStart(current)) { - return this.getIdentifier(pos); - } - return [{ type: "invalid", pos }, pos]; - } - - private isOperatorStart(char: string) { - const operatorStartChars: (string | undefined)[] = [ - "+", - "-", - "*", - "/", - "%", - "=", - "!", - ">", - "<", - "&", - "|", - "~", - "^", - "?", - ":", - "!", - ",", - "(", - ")", - "[", - "]", - "{", - "}", - ]; - return operatorStartChars.includes(char[0]); - } - - private getOperator(pos: number): [Token, number] { - const current = this.input[pos]; - const next = this.input[pos + 1]; - const nextButOne = this.input[pos + 2]; - switch (current) { - case "+": - case "-": - case "/": - case "%": - case "~": - case "^": - case ".": - case ":": - case ",": - case "(": - case ")": - case "[": - case "]": - case "{": - case "}": { - return [{ type: current, pos }, pos + 1]; - } - case "*": { - if (next === "*") { - return [{ type: "**", pos }, pos + 2]; - } - return [{ type: "*", pos }, pos + 1]; - } - case "=": { - if (next === "=") { - if (nextButOne === "=") { - return [{ type: "===", pos }, pos + 3]; - } - return [{ type: "==", pos }, pos + 2]; - } - return [{ type: "invalid", pos }, pos]; - } - case "!": { - if (next === "=") { - if (nextButOne === "=") { - return [{ type: "!==", pos }, pos + 3]; - } - return [{ type: "!=", pos }, pos + 2]; - } - return [{ type: "!", pos }, pos + 1]; - } - case ">": { - switch (next) { - case ">": { - if (nextButOne === ">") { - return [{ type: ">>>", pos }, pos + 3]; - } - return [{ type: ">>", pos }, pos + 2]; - } - case "=": { - return [{ type: ">=", pos }, pos + 2]; - } - default: { - return [{ type: ">", pos }, pos + 1]; - } - } - } - case "<": { - switch (next) { - case "=": { - return [{ type: "<=", pos }, pos + 2]; - } - case "<": { - return [{ type: "<<", pos }, pos + 2]; - } - default: { - return [{ type: "<", pos }, pos + 1]; - } - } - } - case "&": { - if (next === "&") { - return [{ type: "&&", pos }, pos + 2]; - } - return [{ type: "&", pos }, pos + 1]; - } - case "|": { - if (next === "|") { - return [{ type: "||", pos }, pos + 2]; - } - return [{ type: "|", pos }, pos + 1]; - } - case "?": { - switch (next) { - case ".": { - return [{ type: "?.", pos }, pos + 2]; - } - case "?": { - return [{ type: "??", pos }, pos + 2]; - } - default: { - return [{ type: "?", pos }, pos + 1]; - } - } - } - } - return [{ type: "invalid", pos }, pos]; - } - - private isDigit(char: string | undefined): char is `${number}` { - return /\d/.test(char?.[0] ?? ""); - } - - private getNumber(pos: number): [Token, number] { - let endPos = pos; - let foundDot = false; - let only0s = false; - while ( - this.isDigit(this.input[endPos]) || - this.input[endPos] === "." || - (this.input[endPos] === "_" && endPos > pos) - ) { - if (this.input[endPos] === ".") { - if (foundDot) { - return [{ type: "invalid", pos }, pos]; - } - foundDot = true; - } - if (this.input[endPos] === "0") { - only0s = endPos === pos ? true : only0s; - } - - if (this.input[endPos] === "_" && (this.input[endPos - 1] === "_" || this.input[endPos - 1] === "." || only0s)) { - return [{ type: "invalid", pos }, pos]; - } - - endPos += 1; - } - if (pos === endPos) { - return [{ type: "invalid", pos }, pos]; - } - if (this.input[endPos - 1] === "_") { - return [{ type: "invalid", pos }, pos]; - } - return [{ type: "number", symbol: this.input.slice(pos, endPos), pos }, endPos]; - } - - private isIdentifierStart(char: string | undefined) { - return /[$_\p{ID_Start}]/u.test(char?.[0] ?? ""); - } - - private isIdentifier(char: string | undefined) { - return /[$\u200c\u200d\p{ID_Continue}]/u.test(char?.[0] ?? ""); - } - - private getIdentifier(pos: number): [Token, number] { - let endPos = pos; - while (endPos < this.input.length && this.isIdentifier(this.input[endPos])) { - endPos += 1; - } - if (endPos === pos) { - return [{ type: "invalid", pos }, pos]; - } - return [{ type: "iden", symbol: this.input.slice(pos, endPos), pos }, endPos]; - } - - private getString(pos: number): [Token, number] { - const quote = this.input[pos]; - let endPos = pos + 1; - let prev = this.input[pos]; - while (endPos < this.input.length && (this.input[endPos] !== quote || prev === "\\")) { - prev = this.input[endPos]; - endPos += 1; - } - if (endPos === pos || this.input[endPos] !== quote) { - return [{ type: "invalid", pos }, pos]; - } - return [{ type: "string", symbol: this.input.slice(pos, endPos + 1), pos }, endPos + 1]; - } - - private isWhiteSpace(char: string | undefined) { - return /\s/.test(char?.[0] ?? ""); - } -} diff --git a/src/expression-evaluation/validator.ts b/src/expression-evaluation/validator.ts deleted file mode 100644 index 89e1064a..00000000 --- a/src/expression-evaluation/validator.ts +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { literals, safeOperators } from "./grammar"; -import { Lexer } from "./lexer"; - -export class Validator { - constructor(private readonly predicate: (identifier: string) => boolean = Validator.defaultPredicate) {} - - static readonly defaultPredicate = (identifier: string) => [...literals, ...safeOperators].includes(identifier); - - public validate(input: string): void { - const lexer = new Lexer(input); - for (const token of lexer) { - if (token.type === "iden" && !this.predicate(token.symbol)) { - throw new ValidationError(token.symbol); - } - if (token.type === "invalid") { - throw new SyntaxError(`Invalid or unexpected token (${token.pos})`); - } - } - } -} - -class ValidationError extends Error { - constructor(identifier: string) { - super(`'${identifier}' is not an allowed identifier.`); - } -} diff --git a/LICENSES/OFL-1.1.txt b/src/fonts/Lora/LICENSE similarity index 60% rename from LICENSES/OFL-1.1.txt rename to src/fonts/Lora/LICENSE index 6fe84ee2..ea469b65 100644 --- a/LICENSES/OFL-1.1.txt +++ b/src/fonts/Lora/LICENSE @@ -1,27 +1,30 @@ -SIL OPEN FONT LICENSE +Copyright (c) 2011-2013, Cyreal (www.cyreal.org a@cyreal.org), with +Reserved Font Name ‘Lora’ -Version 1.1 - 26 February 2007 +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +—————————————————————————————- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +—————————————————————————————- PREAMBLE - The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. DEFINITIONS +“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. -"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. +“Reserved Font Name” refers to any names specified as such after the copyright statement(s). -"Reserved Font Name" refers to any names specified as such after the copyright statement(s). +“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). -"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). +“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. -"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. - -"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. +“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. PERMISSION & CONDITIONS - Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: 1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. @@ -35,9 +38,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of 5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. TERMINATION - This license becomes null and void if any of the above conditions are not met. DISCLAIMER - -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. +THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/fonts/Lora/Lora-Bold.woff b/src/fonts/Lora/Lora-Bold.woff similarity index 100% rename from fonts/Lora/Lora-Bold.woff rename to src/fonts/Lora/Lora-Bold.woff diff --git a/fonts/Lora/Lora-BoldItalic.woff b/src/fonts/Lora/Lora-BoldItalic.woff similarity index 100% rename from fonts/Lora/Lora-BoldItalic.woff rename to src/fonts/Lora/Lora-BoldItalic.woff diff --git a/fonts/Lora/Lora-Italic.woff b/src/fonts/Lora/Lora-Italic.woff similarity index 100% rename from fonts/Lora/Lora-Italic.woff rename to src/fonts/Lora/Lora-Italic.woff diff --git a/fonts/Lora/Lora-Regular.woff b/src/fonts/Lora/Lora-Regular.woff similarity index 100% rename from fonts/Lora/Lora-Regular.woff rename to src/fonts/Lora/Lora-Regular.woff diff --git a/fonts/Lora/Lora.woff b/src/fonts/Lora/Lora.woff similarity index 100% rename from fonts/Lora/Lora.woff rename to src/fonts/Lora/Lora.woff diff --git a/fonts/Woodstamp/Woodstamp.woff b/src/fonts/Woodstamp/Woodstamp.woff similarity index 100% rename from fonts/Woodstamp/Woodstamp.woff rename to src/fonts/Woodstamp/Woodstamp.woff diff --git a/src/handlebars/handlebars-helpers.ts b/src/handlebars/handlebars-helpers.ts deleted file mode 100644 index 015064a4..00000000 --- a/src/handlebars/handlebars-helpers.ts +++ /dev/null @@ -1,70 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export function registerHandlebarsHelpers(): void { - Handlebars.registerHelper(helpers); -} - -const helpers = { - htmlToPlainText: (input: string | null | undefined): string | null | undefined => { - if (!input) return; - return $(input).text(); - }, - - isEmpty: (input: Array | null | undefined): boolean => (input?.length ?? 0) === 0, - - toRomanNumerals, -}; - -function toRomanNumerals(number: number): string { - return [...generateRomanNumerals(number, 0)].join(""); -} - -function* generateRomanNumerals(number: number, numeralIndex: number): Generator { - if (number === 0) return; - const currentNumeral = numerals[numeralIndex]; - if (currentNumeral === undefined) return; - - const quotient = number / currentNumeral; - const remainder = number % currentNumeral; - const numberAsNumerals = numeralLookup[currentNumeral].repeat(quotient); - - yield numberAsNumerals; - yield* generateRomanNumerals(remainder, numeralIndex + 1); -} - -const numeralLookup = { - 1: "I", - 2: "II", - 3: "III", - 4: "IV", - 5: "V", - 6: "VI", - 7: "VII", - 8: "VIII", - 9: "IX", - 10: "X", - 20: "XX", - 30: "XXX", - 40: "XL", - 50: "L", - 60: "LX", - 70: "LXX", - 80: "LXXX", - 90: "XC", - 100: "C", - 200: "CC", - 300: "CCC", - 400: "CD", - 500: "D", - 600: "DC", - 700: "DCC", - 800: "DCCC", - 900: "CM", - 1000: "M", -}; - -const numerals = [ - 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, -] as const; diff --git a/src/handlebars/handlebars-partials.js b/src/handlebars/handlebars-partials.js deleted file mode 100644 index 747c13c4..00000000 --- a/src/handlebars/handlebars-partials.js +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -/** - * Register the Handlebars partials for DS4. - * @returns {Promise} A promise that resolves once all partials have been registered - */ -export async function registerHandlebarsPartials() { - const templatePaths = [ - "systems/ds4/templates/sheets/actor/components/actor-header.hbs", - "systems/ds4/templates/sheets/actor/components/actor-progression.hbs", - "systems/ds4/templates/sheets/actor/components/biography.hbs", - "systems/ds4/templates/sheets/actor/components/character-properties.hbs", - "systems/ds4/templates/sheets/actor/components/check.hbs", - "systems/ds4/templates/sheets/actor/components/checks.hbs", - "systems/ds4/templates/sheets/actor/components/combat-value.hbs", - "systems/ds4/templates/sheets/actor/components/combat-values.hbs", - "systems/ds4/templates/sheets/actor/components/core-value.hbs", - "systems/ds4/templates/sheets/actor/components/core-values.hbs", - "systems/ds4/templates/sheets/actor/components/creature-properties.hbs", - "systems/ds4/templates/sheets/actor/components/currency.hbs", - "systems/ds4/templates/sheets/actor/components/description.hbs", - "systems/ds4/templates/sheets/actor/components/effect-list-entry.hbs", - "systems/ds4/templates/sheets/actor/components/effect-list-header.hbs", - "systems/ds4/templates/sheets/actor/components/item-list-entry.hbs", - "systems/ds4/templates/sheets/actor/components/item-list-header.hbs", - "systems/ds4/templates/sheets/actor/components/items-overview.hbs", - "systems/ds4/templates/sheets/actor/components/profile.hbs", - "systems/ds4/templates/sheets/actor/tabs/biography.hbs", - "systems/ds4/templates/sheets/actor/tabs/character-abilities.hbs", - "systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs", - "systems/ds4/templates/sheets/actor/tabs/creature-abilities.hbs", - "systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs", - "systems/ds4/templates/sheets/actor/tabs/description.hbs", - "systems/ds4/templates/sheets/actor/tabs/effects.hbs", - "systems/ds4/templates/sheets/actor/tabs/spells.hbs", - "systems/ds4/templates/sheets/actor/tabs/values.hbs", - "systems/ds4/templates/sheets/item/components/effect-list-entry.hbs", - "systems/ds4/templates/sheets/item/components/effect-list-header.hbs", - "systems/ds4/templates/sheets/item/components/item-header.hbs", - "systems/ds4/templates/sheets/item/components/properties/armor.hbs", - "systems/ds4/templates/sheets/item/components/properties/equipable.hbs", - "systems/ds4/templates/sheets/item/components/properties/physical.hbs", - "systems/ds4/templates/sheets/item/components/properties/protective.hbs", - "systems/ds4/templates/sheets/item/components/properties/talent.hbs", - "systems/ds4/templates/sheets/item/components/properties/special-creature-ability.hbs", - "systems/ds4/templates/sheets/item/components/properties/spell.hbs", - "systems/ds4/templates/sheets/item/components/properties/weapon.hbs", - "systems/ds4/templates/sheets/item/tabs/description.hbs", - "systems/ds4/templates/sheets/item/tabs/effects.hbs", - "systems/ds4/templates/sheets/item/tabs/properties.hbs", - "systems/ds4/templates/sheets/shared/components/add-button.hbs", - "systems/ds4/templates/sheets/shared/components/control-button-group.hbs", - "systems/ds4/templates/sheets/shared/components/rollable-image.hbs", - ]; - await loadTemplates(templatePaths); -} diff --git a/src/hooks/hooks.ts b/src/hooks/hooks.ts deleted file mode 100644 index b69fbb1f..00000000 --- a/src/hooks/hooks.ts +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { registerForHotbarDropHook } from "./hotbar-drop"; -import { registerForInitHook } from "./init"; -import { registerForPreCreateItemHook } from "./pre-create-item"; -import { registerForReadyHook } from "./ready"; -import { registerForRenderHooks } from "./render"; -import { registerForSetupHook } from "./setup"; - -export function registerForHooks(): void { - registerForHotbarDropHook(); - registerForPreCreateItemHook(); - registerForInitHook(); - registerForReadyHook(); - registerForRenderHooks(); - registerForSetupHook(); -} diff --git a/src/hooks/hotbar-drop.js b/src/hooks/hotbar-drop.js deleted file mode 100644 index 3d6957db..00000000 --- a/src/hooks/hotbar-drop.js +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { createRollCheckMacro } from "../macros/roll-check"; -import { createRollItemMacro } from "../macros/roll-item"; - -export function registerForHotbarDropHook() { - Hooks.on("hotbarDrop", onHotbarDrop); -} - -/** - * @typedef {Record} DropData - * @property {string} type - */ - -/** - * Handle a drop event on the hotbar - * @param {Hotbar} hotbar The hotbar on which something wqas - * @param {DropData} data The drop data associated to the drop event - * @param {string} slot The slot on the hotbar that somethingwas dropped on - * @returns {void | false} - */ -function onHotbarDrop(hotbar, data, slot) { - switch (data.type) { - case "Item": { - createRollItemMacro(data, slot); - return false; - } - case "Check": { - createRollCheckMacro(data, slot); - return false; - } - } -} diff --git a/src/hooks/init.js b/src/hooks/init.js deleted file mode 100644 index 199b32bd..00000000 --- a/src/hooks/init.js +++ /dev/null @@ -1,82 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -import { DS4ActiveEffectConfig } from "../apps/active-effect-config"; -import { DS4CharacterActorSheet } from "../apps/actor/character-sheet"; -import { DS4CreatureActorSheet } from "../apps/actor/creature-sheet"; -import { DS4ItemSheet } from "../apps/item-sheet"; -import { DS4 } from "../config"; -import { DS4Check } from "../dice/check"; -import { createCheckRoll } from "../dice/check-factory"; -import { DS4Roll } from "../dice/roll"; -import { registerSlayingDiceModifier } from "../dice/slaying-dice-modifier"; -import { DS4ActiveEffect } from "../documents/active-effect"; -import { DS4ActorProxy } from "../documents/actor/proxy"; -import { DS4ChatMessage } from "../documents/chat-message"; -import { DS4ItemProxy } from "../documents/item/proxy"; -import { DS4TokenDocument } from "../documents/token-document"; -import { registerHandlebarsHelpers } from "../handlebars/handlebars-helpers"; -import { registerHandlebarsPartials } from "../handlebars/handlebars-partials"; -import { macros } from "../macros/macros"; -import { migration } from "../migration/migration"; -import { registerSystemSettings } from "../settings"; -import { preloadFonts } from "../ui/fonts"; -import { logger } from "../utils/logger"; -import { getGame } from "../utils/utils"; - -export function registerForInitHook() { - Hooks.once("init", init); -} - -async function init() { - logger.info(`Initializing the DS4 Game System\n${DS4.ASCII}`); - - getGame().ds4 = { - DS4Actor: DS4ActorProxy, - DS4Item: DS4ItemProxy, - DS4, - createCheckRoll, - migration, - macros, - }; - - CONFIG.DS4 = DS4; - - CONFIG.Actor.documentClass = DS4ActorProxy; - CONFIG.Item.documentClass = DS4ItemProxy; - CONFIG.ActiveEffect.documentClass = DS4ActiveEffect; - CONFIG.ChatMessage.documentClass = DS4ChatMessage; - CONFIG.Token.documentClass = DS4TokenDocument; - - CONFIG.ActiveEffect.legacyTransferral = false; - - CONFIG.Actor.typeLabels = DS4.i18n.actorTypes; - CONFIG.Item.typeLabels = DS4.i18n.itemTypes; - - CONFIG.Dice.types.push(DS4Check); - CONFIG.Dice.terms.s = DS4Check; - - CONFIG.Dice.rolls.unshift(DS4Roll); - - registerSlayingDiceModifier(); - - registerSystemSettings(); - - DocumentSheetConfig.unregisterSheet(Actor, "core", ActorSheet); - DocumentSheetConfig.registerSheet(Actor, "ds4", DS4CharacterActorSheet, { - types: ["character"], - makeDefault: true, - }); - DocumentSheetConfig.registerSheet(Actor, "ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); - DocumentSheetConfig.unregisterSheet(Item, "core", ItemSheet); - DocumentSheetConfig.registerSheet(Item, "ds4", DS4ItemSheet, { makeDefault: true }); - DocumentSheetConfig.unregisterSheet(ActiveEffect, "core", ActiveEffectConfig); - DocumentSheetConfig.registerSheet(ActiveEffect, "ds4", DS4ActiveEffectConfig, { makeDefault: true }); - - preloadFonts(); - await registerHandlebarsPartials(); - registerHandlebarsHelpers(); -} diff --git a/src/hooks/pre-create-item.js b/src/hooks/pre-create-item.js deleted file mode 100644 index 545bd540..00000000 --- a/src/hooks/pre-create-item.js +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2023 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { notifications } from "../ui/notifications.js"; -import { getGame } from "../utils/utils.js"; - -export function registerForPreCreateItemHook() { - Hooks.on("preCreateItem", preCreateItem); -} - -/** - * @param {import('../documents/item/item.js').DS4Item} item - * @returns {void | false} - */ -function preCreateItem(item) { - if (item.parent instanceof Actor && !item.parent.canOwnItemType(item.type)) { - notifications.warn( - getGame().i18n.format("DS4.WarningActorCannotOwnItem", { - actorName: item.actor.name, - actorType: item.actor.type, - itemName: item.name, - itemType: item.type, - }), - ); - return false; - } -} diff --git a/src/hooks/ready.js b/src/hooks/ready.js deleted file mode 100644 index 50922bf9..00000000 --- a/src/hooks/ready.js +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { migration } from "../migration/migration"; - -export function registerForReadyHook() { - Hooks.once("ready", () => { - migration.migrate(); - }); -} diff --git a/src/hooks/render.js b/src/hooks/render.js deleted file mode 100644 index c8028dbf..00000000 --- a/src/hooks/render.js +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// -// SPDX-License-Identifier: MIT - -/** - * @remarks The render hooks of all classes in the class hierarchy are called, so e.g. for a {@link Dialog}, both the - * "renderDialog" hook and the "renderApplication" hook are called (in this order). - */ -export function registerForRenderHooks() { - ["renderApplication", "renderActorSheet", "renderItemSheet"].forEach((hook) => { - Hooks.on(hook, selectTargetInputOnFocus); - }); -} - -/** - * Select the text of input elements in given application when focused via an on focus listener. - * - * @param {Application} app The application in which to activate the listener. - * @param {JQuery} html The {@link JQuery} representing the HTML of the application. - */ -function selectTargetInputOnFocus(app, html) { - html.find("input").on("focus", (ev) => { - ev.currentTarget.select(); - }); -} diff --git a/src/hooks/setup.js b/src/hooks/setup.js deleted file mode 100644 index bcb7f540..00000000 --- a/src/hooks/setup.js +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// SPDX-FileCopyrightText: 2021 Oliver Rümpelein -// SPDX-FileCopyrightText: 2021 Gesina Schwalbe -// SPDX-FileCopyrightText: 2021 Siegfried Krug -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../config"; -import { getGame } from "../utils/utils"; - -export function registerForSetupHook() { - Hooks.once("setup", () => { - localizeAndSortConfigObjects(); - }); -} - -/** - * Localizes all objects in {@link DS4.i18n} and sorts them unless they are explicitly excluded. - */ -function localizeAndSortConfigObjects() { - const noSort = [ - "attributes", - "combatValues", - "cooldownDurations", - "creatureSizeCategories", - "spellGroups", - "traits", - "checkModifiers", - ]; - - /** - * @template {Record} T - * @param {T} obj The object to localize - * @param {boolean} [sort=true] whether or not to sort the object - * @returns {T} the localized object - */ - const localizeObject = (obj, sort = true) => { - const localized = Object.entries(obj).map(([key, value]) => { - return [key, getGame().i18n.localize(value)]; - }); - if (sort) localized.sort((a, b) => a[1].localeCompare(b[1])); - return Object.fromEntries(localized); - }; - - DS4.i18n = Object.fromEntries( - Object.entries(DS4.i18n).map(([key, value]) => { - return [key, localizeObject(value, !noSort.includes(key))]; - }), - ); -} diff --git a/src/lang/de.json b/src/lang/de.json new file mode 100644 index 00000000..2e988076 --- /dev/null +++ b/src/lang/de.json @@ -0,0 +1,273 @@ +{ + "DS4.UserInteractionAddItem": "Neu", + "DS4.UserInteractionEditItem": "Bearbeiten", + "DS4.UserInteractionDeleteItem": "Löschen", + "DS4.UserInteractionAddEffect": "Neuer Effekt", + "DS4.UserInteractionEditEffect": "Effekt bearbeiten", + "DS4.UserInteractionDeleteEffect": "Effekt löschen", + "DS4.EntityImageAltText": "Bild von {name}", + "DS4.RollableImageRollableTitle": "Für {name} würfeln", + "DS4.DiceOverlayImageAltText": "Bild eines W20", + "DS4.NotOwned": "Nicht besessen", + "DS4.HeadingValues": "Werte", + "DS4.HeadingBiography": "Biografie", + "DS4.HeadingDetails": "Details", + "DS4.HeadingEffects": "Effekte", + "DS4.HeadingInventory": "Inventar", + "DS4.HeadingProfile": "Profil", + "DS4.HeadingTalentsAbilities": "Talente & Fähigkeiten", + "DS4.HeadingSpells": "Zaubersprüche", + "DS4.HeadingDescription": "Beschreibung", + "DS4.HeadingSpecialCreatureAbilities": "Besondere Fähigkeiten", + "DS4.AttackType": "Angriffsart", + "DS4.AttackTypeAbbr": "AA", + "DS4.AttackTypeSelection": "Welche Angriffsart?", + "DS4.WeaponBonus": "Waffenbonus", + "DS4.WeaponBonusAbbr": "WB", + "DS4.OpponentDefense": "Gegnerabwehr", + "DS4.OpponentDefenseAbbr": "GA", + "DS4.AttackTypeMelee": "Schlagen", + "DS4.AttackTypeRanged": "Schießen", + "DS4.AttackTypeMeleeRanged": "Schlagen + Schießen", + "DS4.Description": "Beschreibung", + "DS4.Quantity": "Menge", + "DS4.PriceGold": "Preis (Gold)", + "DS4.StorageLocation": "Wo gelagert", + "DS4.ItemEquipped": "Ausgerüstet", + "DS4.ItemEquippedAbbr": "A", + "DS4.ItemOwner": "Besitzer", + "DS4.ItemAvailability": "Verfügbarkeit", + "DS4.ItemAvailabilityHamlet": "Dorf", + "DS4.ItemAvailabilityVilage": "Kleinstadt", + "DS4.ItemAvailabilityCity": "Großstadt", + "DS4.ItemAvailabilityElves": "Elfen", + "DS4.ItemAvailabilityDwarves": "Zwerge", + "DS4.ItemAvailabilityUnset": "nicht gesetzt", + "DS4.ItemAvailabilityNowhere": "nirgendwo", + "DS4.ItemName": "Name", + "DS4.ItemTypeWeapon": "Waffe", + "DS4.ItemTypeWeaponPlural": "Waffen", + "DS4.ItemTypeArmor": "Panzerung", + "DS4.ItemTypeArmorPlural": "Panzerungen", + "DS4.ItemTypeShield": "Schild", + "DS4.ItemTypeShieldPlural": "Schilde", + "DS4.ItemTypeSpell": "Zauberspruch", + "DS4.ItemTypeSpellPlural": "Zaubersprüche", + "DS4.ItemTypeEquipment": "Ausrüstung", + "DS4.ItemTypeEquipmentPlural": "Ausrüstung", + "DS4.ItemTypeLoot": "Beute", + "DS4.ItemTypeLootPlural": "Beute", + "DS4.ItemTypeTalent": "Talent", + "DS4.ItemTypeTalentPlural": "Talente", + "DS4.ItemTypeRacialAbility": "Volksfähigkeit", + "DS4.ItemTypeRacialAbilityPlural": "Volksfähigkeiten", + "DS4.ItemTypeLanguage": "Sprache", + "DS4.ItemTypeLanguagePlural": "Sprachen", + "DS4.ItemTypeAlphabet": "Schriftzeichen", + "DS4.ItemTypeAlphabetPlural": "Schriftzeichen", + "DS4.ItemTypeSpecialCreatureAbility": "Besondere Kreaturenfähigkeit", + "DS4.ItemTypeSpecialCreatureAbilityPlural": "Besondere Kreaturenfähigkeiten", + "DS4.ItemWeaponCheckFlavor": "{actor} greift mit {weapon} an.", + "DS4.ItemSpellCheckFlavor": "{actor} wirkt {spell}.", + "DS4.ArmorType": "Panzerungstyp", + "DS4.ArmorTypeAbbr": "PAT", + "DS4.ArmorMaterialType": "Materialtyp", + "DS4.ArmorMaterialTypeAbbr": "Mat.", + "DS4.ArmorValue": "Panzerungswert", + "DS4.ArmorValueAbbr": "PA", + "DS4.ArmorTypeBody": "Körper", + "DS4.ArmorTypeBodyAbbr": "Körper", + "DS4.ArmorTypeHelmet": "Helm", + "DS4.ArmorTypeHelmetAbbr": "Helm", + "DS4.ArmorTypeVambrace": "Armschienen", + "DS4.ArmorTypeVambraceAbbr": "Arm", + "DS4.ArmorTypeGreaves": "Beinschienen", + "DS4.ArmorTypeGreavesAbbr": "Bein", + "DS4.ArmorTypeVambraceGreaves": "Armschienen + Beinschienen", + "DS4.ArmorTypeVambraceGreavesAbbr": "A+B", + "DS4.ArmorMaterialTypeCloth": "Stoff", + "DS4.ArmorMaterialTypeClothAbbr": "Stoff", + "DS4.ArmorMaterialTypeLeather": "Leder", + "DS4.ArmorMaterialTypeLeatherAbbr": "Leder", + "DS4.ArmorMaterialTypeChain": "Ketten", + "DS4.ArmorMaterialTypeChainAbbr": "Ketten", + "DS4.ArmorMaterialTypePlate": "Platten", + "DS4.ArmorMaterialTypePlateAbbr": "Platten", + "DS4.SpellType": "Zauberspruchtyp", + "DS4.SpellTypeAbbr": "T", + "DS4.SpellTypeSpellcasting": "Zaubern", + "DS4.SpellTypeTargetedSpellcasting": "Zielzaubern", + "DS4.SpellCategory": "Kategorie", + "DS4.SpellCategoryHealing": "Heilung", + "DS4.SpellCategoryFire": "Feuer", + "DS4.SpellCategoryIce": "Eis", + "DS4.SpellCategoryLight": "Licht", + "DS4.SpellCategoryDarkness": "Schatten", + "DS4.SpellCategoryMindAffecting": "Geistesbeeinflussend", + "DS4.SpellCategoryElectricity": "Elektrizität", + "DS4.SpellCategoryNone": "Keine", + "DS4.SpellCategoryUnset": "Nicht gesetzt", + "DS4.SpellBonus": "Zauberbonus", + "DS4.SpellBonusAbbr": "ZB", + "DS4.SpellMaxDistance": "Reichweite", + "DS4.SpellEffectRadius": "Effektradius", + "DS4.SpellDuration": "Wirkdauer", + "DS4.SpellCooldownDuration": "Abklingzeit", + "DS4.SpellScrollPriceGold": "Schriftrollenpreis (Gold)", + "DS4.ActorTypeCharacter": "Charakter", + "DS4.ActorTypeCreature": "Kreatur", + "DS4.AttributeBody": "Körper", + "DS4.AttributeMobility": "Agilität", + "DS4.AttributeMind": "Geist", + "DS4.TraitStrength": "Stärke", + "DS4.TraitConstitution": "Härte", + "DS4.TraitAgility": "Bewegung", + "DS4.TraitDexterity": "Geschick", + "DS4.TraitIntellect": "Verstand", + "DS4.TraitAura": "Aura", + "DS4.CombatValuesHitPoints": "Lebenskraft", + "DS4.CombatValuesHitPointsCurrent": "Aktuelle Lebenskraft", + "DS4.CombatValuesHitPointsCurrentAbbr": "LK", + "DS4.CombatValuesDefense": "Abwehr", + "DS4.CombatValuesInitiative": "Initiative", + "DS4.CombatValuesMovement": "Laufen", + "DS4.CombatValuesMeleeAttack": "Schlagen", + "DS4.CombatValuesRangedAttack": "Schießen", + "DS4.CombatValuesSpellcasting": "Zaubern", + "DS4.CombatValuesTargetedSpellcasting": "Zielzaubern", + "DS4.CharacterBaseInfoRace": "Volk", + "DS4.CharacterBaseInfoClass": "Klasse", + "DS4.CharacterBaseInfoHeroClass": "Heldenklasse", + "DS4.CharacterBaseInfoCulture": "Kultur", + "DS4.CharacterProgressionLevel": "Stufe", + "DS4.CharacterProgressionLevelAbbr": "Stufe", + "DS4.CharacterProgressionExperiencePoints": "Erfahrungspunkte", + "DS4.CharacterProgressionExperiencePointsAbbr": "EP", + "DS4.CharacterProgressionTalentPoints": "Talentpunkte", + "DS4.CharacterProgressionProgressPoints": "Lernpunkte", + "DS4.TalentRank": "Rang", + "DS4.TalentRankBase": "Erworbener Rang", + "DS4.TalentRankMax": "Maximaler Rang", + "DS4.TalentRankMod": "Zusätzlicher Rang", + "DS4.TalentRankTotal": "Gesamter Rang", + "DS4.TalentRankOf": "von", + "DS4.CharacterLanguageLanguages": "Sprachen", + "DS4.CharacterLanguageAlphabets": "Schriftzeichen", + "DS4.SpecialCreatureAbilityExperiencePoints": "Erfahrungspunkte", + "DS4.CharacterProfileBiography": "Biographie", + "DS4.CharacterProfileGender": "Geschlecht", + "DS4.CharacterProfileBirthday": "Geburtstag", + "DS4.CharacterProfileBirthplace": "Geburtsort", + "DS4.CharacterProfileAge": "Alter", + "DS4.CharacterProfileHeight": "Größe [cm]", + "DS4.CharacterProfileHairColor": "Haarfarbe", + "DS4.CharacterProfileWeight": "Gewicht [kg]", + "DS4.CharacterProfileEyeColor": "Augenfarbe", + "DS4.CharacterProfileSpecialCharacteristics": "Besondere Eigenschaften", + "DS4.CharacterCurrencyGold": "Gold", + "DS4.CharacterCurrencySilver": "Silber", + "DS4.CharacterCurrencyCopper": "Kupfer", + "DS4.CharacterCurrency": "Währung", + "DS4.CreatureTypeAnimal": "Tier", + "DS4.CreatureTypeConstruct": "Konstrukt", + "DS4.CreatureTypeHumanoid": "Humanoid", + "DS4.CreatureTypeMagicalEntity": "Magisches Wesen", + "DS4.CreatureTypePlantBeing": "Pflanzenwesen", + "DS4.CreatureTypeUndead": "Untot", + "DS4.CreatureSizeCategoryTiny": "Winzig", + "DS4.CreatureSizeCategorySmall": "Klein", + "DS4.CreatureSizeCategoryNormal": "Normal", + "DS4.CreatureSizeCategoryLarge": "Groß", + "DS4.CreatureSizeCategoryHuge": "Riesig", + "DS4.CreatureSizeCategoryColossal": "Gewaltig", + "DS4.CreatureBaseInfoLoot": "Beute", + "DS4.CreatureBaseInfoFoeFactor": "Gegnerhärte", + "DS4.CreatureBaseInfoCreatureType": "Kreaturengruppe", + "DS4.CreatureBaseInfoSizeCategory": "Größenkategorie", + "DS4.CreatureBaseInfoExperiencePoints": "Erfahrungspunkte", + "DS4.CreatureBaseInfoDescription": "Beschreibung", + "DS4.WarningManageActiveEffectOnOwnedItem": "Das Verwalten von aktiven Effekten innerhalb eines besessen Items wird derzeit nicht unterstützt und wird in einem nachfolgenden Update hinzugefügt.", + "DS4.WarningActorCannotOwnItem": "Der Aktor '{actorName}' vom Typ '{actorType}' kann das Item '{itemName}' vom Typ '{itemType}' nicht besitzen.", + "DS4.ErrorDiceCoupFumbleOverlap": "Es gibt eine Überlappung zwischen Patzern und Immersiegen.", + "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Die maximale Rekursionstiefe für slayende Würfelwürfe wurde überschritten.", + "DS4.ErrorInvalidNumberOfDice": "Ungültige Anzahl an Würfeln.", + "DS4.ErrorDuringMigration": "Fehler während der Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion}. Der Fehler trat während der Ausführung des Migrationsskripts mit der Version {migrationVersion} auf. Spätere Migrationsskripte wurden nicht ausgeführt. Mehr Details finden Sie in der Entwicklerkonsole (F12).", + "DS4.ErrorCannotRollUnownedItem": "Für das Item '{name}' ({id}) kann nicht gewürfelt werden, da es keinem Aktor gehört.", + "DS4.ErrorRollingForItemTypeNotPossible": "Würfeln ist für Items vom Typ '{type}' nicht möglich.", + "DS4.ErrorWrongItemType": "Ein Item vom Type '{expectedType}' wurde erwartet aber das Item '{name}' ({id}) ist vom Typ '{actualType}'.", + "DS4.ErrorUnexpectedAttackType": "Unerwartete Angriffsart '{actualType}', erwartete Angriffsarten: {expectedTypes}", + "DS4.ErrorCanvasIsNotInitialized": "Canvas ist noch nicht initialisiert.", + "DS4.ErrorCannotDragMissingCheck": "Die Probe '{check}' per Drag & Drop zu ziehen ist nicht möglich, denn sie existiert nicht.", + "DS4.WarningItemMustBeEquippedToBeRolled": "Um für das Item '{name}' ({id}) vom Typ '{type}' zu würfeln, muss es ausgerüstet sein.", + "DS4.WarningMustControlActorToUseRollItemMacro": "Um ein Item-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", + "DS4.WarningMustControlActorToUseRollCheckMacro": "Um ein Proben-Würfel-Makro zu nutzen muss ein Aktor kontrolliert werden.", + "DS4.WarningControlledActorDoesNotHaveItem": "Der kontrollierte Aktor '{actorName}' ({actorId}) hat kein Item mit der ID '{itemId}'.", + "DS4.WarningItemIsNotRollable": "Für das Item '{name}' ({id}) vom Typ '{type}' kann nicht gewürfelt werden.", + "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Makros können nur für besessene Items angelegt werden.", + "DS4.WarningInvalidCheckDropped": "Eine ungültige Probe wurde auf die Hotbar gezogen.", + "DS4.InfoManuallyEnterSpellBonus": "Der korrekte Wert für den Zauberbonus '{spellBonus}' des Zaubers '{name}' muss manuell angegeben werden.", + "DS4.InfoSystemUpdateStart": "Aktualisiere DS4 System von Migrationsversion {currentVersion} auf {targetVersion}. Bitte haben Sie etwas Geduld, schließen Sie nicht das Spiel und fahren Sie nicht den Server herunter.", + "DS4.InfoSystemUpdateCompleted": "Aktualisierung des DS4 Systems von Migrationsversion {currentVersion} auf {targetVersion} erfolgreich!", + "DS4.UnitRounds": "Runden", + "DS4.UnitRoundsAbbr": "Rnd", + "DS4.UnitMinutes": "Minuten", + "DS4.UnitMinutesAbbr": "min", + "DS4.UnitHours": "Stunden", + "DS4.UnitHoursAbbr": "h", + "DS4.UnitDays": "Tage", + "DS4.UnitDaysAbbr": "d", + "DS4.UnitMeters": "Meter", + "DS4.UnitMetersAbbr": "m", + "DS4.UnitKilometers": "Kilometer", + "DS4.UnitKilometersAbbr": "km", + "DS4.UnitCustom": "individuell", + "DS4.UnitCustomAbbr": " ", + "DS4.GenericOkButton": "OK", + "DS4.GenericCancelButton": "Abbrechen", + "DS4.RollDialogDefaultTitle": "Proben-Optionen", + "DS4.ErrorUnexpectedHtmlType": "Typfehler: Erwartet wurde '{exType}', tatsächlich erhalten wurde '{realType}'.", + "DS4.ErrorCouldNotFindForm": "Konnte HTML Element '{htmlElement}' nicht finden.", + "DS4.ErrorActorDoesNotHaveItem": "Der Aktor '{actor}' hat kein Item mit der ID '{id}'.", + "DS4.ErrorUnexpectedError": "Es gab einen unerwarteten Fehler im Dungeonslayers 4 System. Für mehr Details schauen Sie bitte in die Konsole (F12).", + "DS4.ErrorItemDoesNotHaveEffect": "Das Item '{item}' hat keinen Effekt mit der ID '{id}'.", + "DS4.RollDialogCheckTargetNumberLabel": "Probenwert", + "DS4.RollDialogGMModifierLabel": "SL-Modifikator", + "DS4.RollDialogMaximumCoupResultLabel": "Immersieg bis", + "DS4.RollDialogMinimumFumbleResultLabel": "Patzer ab", + "DS4.RollDialogRollModeLabel": "Sichtbarkeit", + "DS4.TooltipBaseValue": "Basiswert", + "DS4.TooltipModifier": "Modifikator", + "DS4.TooltipEffects": "Effekte", + "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slayende Würfel", + "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Benutze Slayende Würfel bei automatisierten Proben.", + "DS4.ChecksAppraise": "Schätzen", + "DS4.ChecksChangeSpell": "Zauber Wechseln", + "DS4.ChecksClimb": "Klettern", + "DS4.ChecksCommunicate": "Verständigen", + "DS4.ChecksDecipherScript": "Inschrift Entziffern", + "DS4.ChecksDefend": "Abwehren", + "DS4.ChecksDefyPoison": "Gift Trotzen", + "DS4.ChecksDisableTraps": "Fallen Entschärfen", + "DS4.ChecksFeatOfStrength": "Kraftakt", + "DS4.ChecksFlirt": "Flirten", + "DS4.ChecksHaggle": "Feilschen", + "DS4.ChecksHide": "Verbergen", + "DS4.ChecksIdentifyMagic": "Magie Erkennen", + "DS4.ChecksJump": "Springen", + "DS4.ChecksKnowledge": "Wissen", + "DS4.ChecksOpenLock": "Schlösser Öffnen", + "DS4.ChecksPerception": "Bemerken", + "DS4.ChecksPickPocket": "Taschendiebstahl", + "DS4.ChecksReadTracks": "Spuren Lesen", + "DS4.ChecksResistDisease": "Krankheit Trotzen", + "DS4.ChecksRide": "Reiten", + "DS4.ChecksSearch": "Suchen", + "DS4.ChecksSenseMagic": "Magie Erspüren", + "DS4.ChecksSneak": "Schleichen", + "DS4.ChecksStartFire": "Feuer Machen", + "DS4.ChecksSwim": "Schwimmen", + "DS4.ChecksWakeUp": "Erwachen", + "DS4.ChecksWorkMechanism": "Mechanismus Öffnen", + "DS4.ActorCheckFlavor": "{actor} würfelt eine {check} Probe.", + "DS4.CheckTooltip": "{check} Probe würfeln" +} diff --git a/src/lang/en.json b/src/lang/en.json new file mode 100644 index 00000000..e19f88e3 --- /dev/null +++ b/src/lang/en.json @@ -0,0 +1,273 @@ +{ + "DS4.UserInteractionAddItem": "Add item", + "DS4.UserInteractionEditItem": "Edit item", + "DS4.UserInteractionDeleteItem": "Delete item", + "DS4.UserInteractionAddEffect": "Add Effect", + "DS4.UserInteractionEditEffect": "Edit Effect", + "DS4.UserInteractionDeleteEffect": "Delete Effect", + "DS4.EntityImageAltText": "Image of {name}", + "DS4.RollableImageRollableTitle": "Roll for {name}", + "DS4.DiceOverlayImageAltText": "Image of a d20", + "DS4.NotOwned": "No owner", + "DS4.HeadingValues": "Values", + "DS4.HeadingBiography": "Biography", + "DS4.HeadingDetails": "Details", + "DS4.HeadingEffects": "Effects", + "DS4.HeadingInventory": "Inventory", + "DS4.HeadingProfile": "Profile", + "DS4.HeadingTalentsAbilities": "Talents & Abilities", + "DS4.HeadingSpells": "Spells", + "DS4.HeadingDescription": "Description", + "DS4.HeadingSpecialCreatureAbilities": "Special Abilities", + "DS4.AttackType": "Attack Type", + "DS4.AttackTypeAbbr": "AT", + "DS4.AttackTypeSelection": "Which Attack Type?", + "DS4.WeaponBonus": "Weapon Bonus", + "DS4.WeaponBonusAbbr": "WB", + "DS4.OpponentDefense": "Opponent Defense", + "DS4.OpponentDefenseAbbr": "OD", + "DS4.AttackTypeMelee": "Melee", + "DS4.AttackTypeRanged": "Ranged", + "DS4.AttackTypeMeleeRanged": "Melee / Ranged", + "DS4.Description": "Description", + "DS4.Quantity": "Quantity", + "DS4.PriceGold": "Price (Gold)", + "DS4.StorageLocation": "Stored at", + "DS4.ItemEquipped": "Equipped", + "DS4.ItemEquippedAbbr": "E", + "DS4.ItemOwner": "Owner", + "DS4.ItemAvailability": "Availability", + "DS4.ItemAvailabilityHamlet": "Hamlet", + "DS4.ItemAvailabilityVilage": "Village", + "DS4.ItemAvailabilityCity": "City", + "DS4.ItemAvailabilityElves": "Elves", + "DS4.ItemAvailabilityDwarves": "Dwarves", + "DS4.ItemAvailabilityUnset": "Unset", + "DS4.ItemAvailabilityNowhere": "Nowhere", + "DS4.ItemName": "Name", + "DS4.ItemTypeWeapon": "Weapon", + "DS4.ItemTypeWeaponPlural": "Weapons", + "DS4.ItemTypeArmor": "Armor", + "DS4.ItemTypeArmorPlural": "Armor", + "DS4.ItemTypeShield": "Shield", + "DS4.ItemTypeShieldPlural": "Shields", + "DS4.ItemTypeSpell": "Spell", + "DS4.ItemTypeSpellPlural": "Spells", + "DS4.ItemTypeEquipment": "Equipment", + "DS4.ItemTypeEquipmentPlural": "Equipment", + "DS4.ItemTypeLoot": "Loot", + "DS4.ItemTypeLootPlural": "Loot", + "DS4.ItemTypeTalent": "Talent", + "DS4.ItemTypeTalentPlural": "Talents", + "DS4.ItemTypeRacialAbility": "Racial Ability", + "DS4.ItemTypeRacialAbilityPlural": "Racial Abilities", + "DS4.ItemTypeLanguage": "Language", + "DS4.ItemTypeLanguagePlural": "Languages", + "DS4.ItemTypeAlphabet": "Alphabet", + "DS4.ItemTypeAlphabetPlural": "Alphabets", + "DS4.ItemTypeSpecialCreatureAbility": "Special Creature Ability", + "DS4.ItemTypeSpecialCreatureAbilityPlural": "Special Creature Abilities", + "DS4.ItemWeaponCheckFlavor": "{actor} attacks with {weapon}.", + "DS4.ItemSpellCheckFlavor": "{actor} casts {spell}.", + "DS4.ArmorType": "Armor Type", + "DS4.ArmorTypeAbbr": "AT", + "DS4.ArmorMaterialType": "Material Type", + "DS4.ArmorMaterialTypeAbbr": "Mat.", + "DS4.ArmorValue": "Armor Value", + "DS4.ArmorValueAbbr": "AV", + "DS4.ArmorTypeBody": "Body", + "DS4.ArmorTypeBodyAbbr": "Body", + "DS4.ArmorTypeHelmet": "Helmet", + "DS4.ArmorTypeHelmetAbbr": "Helm", + "DS4.ArmorTypeVambrace": "Vambrace", + "DS4.ArmorTypeVambraceAbbr": "Vambr", + "DS4.ArmorTypeGreaves": "Greaves", + "DS4.ArmorTypeGreavesAbbr": "Greav", + "DS4.ArmorTypeVambraceGreaves": "Vambrace + Greaves", + "DS4.ArmorTypeVambraceGreavesAbbr": "V+G", + "DS4.ArmorMaterialTypeCloth": "Cloth", + "DS4.ArmorMaterialTypeClothAbbr": "Cloth", + "DS4.ArmorMaterialTypeLeather": "Leather", + "DS4.ArmorMaterialTypeLeatherAbbr": "Leath", + "DS4.ArmorMaterialTypeChain": "Chain", + "DS4.ArmorMaterialTypeChainAbbr": "Chain", + "DS4.ArmorMaterialTypePlate": "Plate", + "DS4.ArmorMaterialTypePlateAbbr": "Plate", + "DS4.SpellType": "Spell Type", + "DS4.SpellTypeAbbr": "T", + "DS4.SpellTypeSpellcasting": "Spellcasting", + "DS4.SpellTypeTargetedSpellcasting": "Targeted Spellcasting", + "DS4.SpellCategory": "Category", + "DS4.SpellCategoryHealing": "Healing", + "DS4.SpellCategoryFire": "Fire", + "DS4.SpellCategoryIce": "Ice", + "DS4.SpellCategoryLight": "Light", + "DS4.SpellCategoryDarkness": "Darkness", + "DS4.SpellCategoryMindAffecting": "Mind Affecting", + "DS4.SpellCategoryElectricity": "Electricity", + "DS4.SpellCategoryNone": "None", + "DS4.SpellCategoryUnset": "Unset", + "DS4.SpellBonus": "Spell Bonus", + "DS4.SpellBonusAbbr": "SB", + "DS4.SpellMaxDistance": "Range", + "DS4.SpellEffectRadius": "Radius", + "DS4.SpellDuration": "Duration", + "DS4.SpellCooldownDuration": "Cooldown", + "DS4.SpellScrollPriceGold": "Scroll Price (Gold)", + "DS4.ActorTypeCharacter": "Character", + "DS4.ActorTypeCreature": "Creature", + "DS4.AttributeBody": "Body", + "DS4.AttributeMobility": "Mobility", + "DS4.AttributeMind": "Mind", + "DS4.TraitStrength": "Strength", + "DS4.TraitConstitution": "Constitution", + "DS4.TraitAgility": "Agility", + "DS4.TraitDexterity": "Dexterity", + "DS4.TraitIntellect": "Intellect", + "DS4.TraitAura": "Aura", + "DS4.CombatValuesHitPoints": "Hit Points", + "DS4.CombatValuesHitPointsCurrent": "Current Hit Points", + "DS4.CombatValuesHitPointsCurrentAbbr": "HP", + "DS4.CombatValuesDefense": "Defense", + "DS4.CombatValuesInitiative": "Initiative", + "DS4.CombatValuesMovement": "Movement", + "DS4.CombatValuesMeleeAttack": "Melee Attack", + "DS4.CombatValuesRangedAttack": "Ranged Attack", + "DS4.CombatValuesSpellcasting": "Spellcasting", + "DS4.CombatValuesTargetedSpellcasting": "Targeted Spellcasting", + "DS4.CharacterBaseInfoRace": "Race", + "DS4.CharacterBaseInfoClass": "Class", + "DS4.CharacterBaseInfoHeroClass": "Hero Class", + "DS4.CharacterBaseInfoCulture": "Culture", + "DS4.CharacterProgressionLevel": "Level", + "DS4.CharacterProgressionLevelAbbr": "Level", + "DS4.CharacterProgressionExperiencePoints": "Experience Points", + "DS4.CharacterProgressionExperiencePointsAbbr": "XP", + "DS4.CharacterProgressionTalentPoints": "Talent Points", + "DS4.CharacterProgressionProgressPoints": "Progress Points", + "DS4.TalentRank": "Rank", + "DS4.TalentRankBase": "Acquired Ranks", + "DS4.TalentRankMax": "Maximum Ranks", + "DS4.TalentRankMod": "Additional Ranks", + "DS4.TalentRankTotal": "Total Ranks", + "DS4.TalentRankOf": "of", + "DS4.CharacterLanguageLanguages": "Languages", + "DS4.CharacterLanguageAlphabets": "Alphabets", + "DS4.SpecialCreatureAbilityExperiencePoints": "Experience Points", + "DS4.CharacterProfileBiography": "Biography", + "DS4.CharacterProfileGender": "Gender", + "DS4.CharacterProfileBirthday": "Birthday", + "DS4.CharacterProfileBirthplace": "Birthplace", + "DS4.CharacterProfileAge": "Age", + "DS4.CharacterProfileHeight": "Height [m]", + "DS4.CharacterProfileHairColor": "Hair Color", + "DS4.CharacterProfileWeight": "Weight [kg]", + "DS4.CharacterProfileEyeColor": "Eye Color", + "DS4.CharacterProfileSpecialCharacteristics": "Special Characteristics", + "DS4.CharacterCurrencyGold": "Gold", + "DS4.CharacterCurrencySilver": "Silver", + "DS4.CharacterCurrencyCopper": "Copper", + "DS4.CharacterCurrency": "Currency", + "DS4.CreatureTypeAnimal": "Animal", + "DS4.CreatureTypeConstruct": "Construct", + "DS4.CreatureTypeHumanoid": "Humanoid", + "DS4.CreatureTypeMagicalEntity": "Magical Entity", + "DS4.CreatureTypePlantBeing": "Plant Being", + "DS4.CreatureTypeUndead": "Undead", + "DS4.CreatureSizeCategoryTiny": "Tiny", + "DS4.CreatureSizeCategorySmall": "Small", + "DS4.CreatureSizeCategoryNormal": "Normal", + "DS4.CreatureSizeCategoryLarge": "Large", + "DS4.CreatureSizeCategoryHuge": "Huge", + "DS4.CreatureSizeCategoryColossal": "Colossal", + "DS4.CreatureBaseInfoLoot": "Loot", + "DS4.CreatureBaseInfoFoeFactor": "Foe Factor", + "DS4.CreatureBaseInfoCreatureType": "Creature Type", + "DS4.CreatureBaseInfoSizeCategory": "Size Category", + "DS4.CreatureBaseInfoExperiencePoints": "Experience Points", + "DS4.CreatureBaseInfoDescription": "Description", + "DS4.WarningManageActiveEffectOnOwnedItem": "Managing Active Effects within an Owned Item is not currently supported and will be added in a subsequent update.", + "DS4.WarningActorCannotOwnItem": "The actor '{actorName}' of type '{actorType}' cannot own the item '{itemName}' of type '{itemType}'.", + "DS4.ErrorDiceCoupFumbleOverlap": "There is an overlap between Fumbles and Coups.", + "DS4.ErrorSlayingDiceRecursionLimitExceeded": "Maximum recursion depth for slaying dice roll exceeded.", + "DS4.ErrorInvalidNumberOfDice": "Invalid number of dice.", + "DS4.ErrorDuringMigration": "Error while migrating DS4 system from migration version {currentVersion} to {targetVersion}. The error occurred during execution of migration script with version {migrationVersion}. Later migrations have not been executed. For more details, please look at the development console (F12).", + "DS4.ErrorCannotRollUnownedItem": "Rolling for item '{name}' ({id})is not possible because it is not owned.", + "DS4.ErrorRollingForItemTypeNotPossible": "Rolling is not possible for items of type '{type}'.", + "DS4.ErrorWrongItemType": "Expected an item of type '{expectedType}' but item '{name}' ({id}) is of type '{actualType}'.", + "DS4.ErrorUnexpectedAttackType": "Unexpected attack type '{actualType}', expected it to be one of: {expectedTypes}", + "DS4.ErrorCanvasIsNotInitialized": "Canvas is not initialized yet.", + "DS4.ErrorCannotDragMissingCheck": "Trying to drag the check '{check}' but no such check exists.", + "DS4.WarningItemMustBeEquippedToBeRolled": "To roll for item '{name}' ({id}) of type '{type}', it needs to be equipped.", + "DS4.WarningMustControlActorToUseRollItemMacro": "You must control an actor to be able to use a roll item macro.", + "DS4.WarningMustControlActorToUseRollCheckMacro": "You must control an actor to be able to use a roll check macro.", + "DS4.WarningControlledActorDoesNotHaveItem": "Your controlled actor '{actorName}' ({actorId}) does not have any item with the id '{itemId}'.", + "DS4.WarningItemIsNotRollable": "Item '{name}' ({id}) of type '{type}' is not rollable.", + "DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems": "Macros can only be created for owned items.", + "DS4.WarningInvalidCheckDropped": "An invalid check was dropped on the Hotbar.", + "DS4.InfoManuallyEnterSpellBonus": "The correct value of the spell bonus '{spellBonus}' of the spell '{name}' needs to be entered by manually.", + "DS4.InfoSystemUpdateStart": "Migrating DS4 system from migration version {currentVersion} to {targetVersion}. Please be patient and do not close your game or shut down your server.", + "DS4.InfoSystemUpdateCompleted": "Migration of DS4 system from migration version {currentVersion} to {targetVersion} successful!", + "DS4.UnitRounds": "Rounds", + "DS4.UnitRoundsAbbr": "rnd", + "DS4.UnitMinutes": "Minutes", + "DS4.UnitMinutesAbbr": "min", + "DS4.UnitHours": "Hours", + "DS4.UnitHoursAbbr": "h", + "DS4.UnitDays": "Days", + "DS4.UnitDaysAbbr": "d", + "DS4.UnitMeters": "Meters", + "DS4.UnitMetersAbbr": "m", + "DS4.UnitKilometers": "Kilometers", + "DS4.UnitKilometersAbbr": "km", + "DS4.UnitCustom": "Custom Unit", + "DS4.UnitCustomAbbr": " ", + "DS4.GenericOkButton": "Ok", + "DS4.GenericCancelButton": "Cancel", + "DS4.RollDialogDefaultTitle": "Roll Options", + "DS4.ErrorUnexpectedHtmlType": "Type Error: Expected '{exType}' but got '{realType}'.", + "DS4.ErrorCouldNotFindForm": "Could not find HTML element '{htmlElement}'.", + "DS4.ErrorActorDoesNotHaveItem": "The actor '{actor}' does not have any item with the id '{id}'.", + "DS4.ErrorUnexpectedError": "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12).", + "DS4.ErrorItemDoesNotHaveEffect": "The item '{item}' does not have any effect with the id '{id}'.", + "DS4.RollDialogCheckTargetNumberLabel": "Check Target Number", + "DS4.RollDialogGMModifierLabel": "Game Master Modifier", + "DS4.RollDialogMaximumCoupResultLabel": "Coup to", + "DS4.RollDialogMinimumFumbleResultLabel": "Fumble from", + "DS4.RollDialogRollModeLabel": "Visibility", + "DS4.TooltipBaseValue": "Base Value", + "DS4.TooltipModifier": "Modifier", + "DS4.TooltipEffects": "Effects", + "DS4.SettingUseSlayingDiceForAutomatedChecksName": "Slaying Dice", + "DS4.SettingUseSlayingDiceForAutomatedChecksHint": "Use Slaying Dice for automated checks.", + "DS4.ChecksAppraise": "Appraise", + "DS4.ChecksChangeSpell": "Change Spell", + "DS4.ChecksClimb": "Climb", + "DS4.ChecksCommunicate": "Communicate", + "DS4.ChecksDecipherScript": "Decipher Script", + "DS4.ChecksDefend": "Defend", + "DS4.ChecksDefyPoison": "Defy Poison", + "DS4.ChecksDisableTraps": "Disable Traps", + "DS4.ChecksFeatOfStrength": "Feat of Strength", + "DS4.ChecksFlirt": "Flirt", + "DS4.ChecksHaggle": "Haggle", + "DS4.ChecksHide": "Hide", + "DS4.ChecksIdentifyMagic": "Identify Magic", + "DS4.ChecksJump": "Jump", + "DS4.ChecksKnowledge": "Knowledge", + "DS4.ChecksOpenLock": "Open Lock", + "DS4.ChecksPerception": "Perception", + "DS4.ChecksPickPocket": "Pick Pocket", + "DS4.ChecksReadTracks": "Read Tracks", + "DS4.ChecksResistDisease": "Resist Disease", + "DS4.ChecksRide": "Ride", + "DS4.ChecksSearch": "Search", + "DS4.ChecksSenseMagic": "Sense Magic", + "DS4.ChecksSneak": "Sneak", + "DS4.ChecksStartFire": "Start Fire", + "DS4.ChecksSwim": "Swim", + "DS4.ChecksWakeUp": "Wake Up", + "DS4.ChecksWorkMechanism": "Work Mechanism", + "DS4.ActorCheckFlavor": "{actor} rolls a {check} check.", + "DS4.CheckTooltip": "Roll a {check} check" +} diff --git a/src/macros/helpers.js b/src/macros/helpers.js deleted file mode 100644 index 5984de49..00000000 --- a/src/macros/helpers.js +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getCanvas, getGame } from "../utils/utils"; - -/** - * Gets the currently active actor and token based on how {@link ChatMessage} - * determines the current speaker. - * @returns {{actor?: import("../documents/actor/actor").DS4Actor, token?: TokenDocument}} The currently active actor and token. - */ -export function getActiveActorAndToken() { - const speaker = ChatMessage.getSpeaker(); - - const speakerToken = speaker.token ? getCanvas().tokens?.get(speaker.token)?.document : undefined; - if (speakerToken) { - return { actor: speakerToken.actor ?? undefined, token: speakerToken }; - } - - const speakerActor = speaker.actor ? getGame().actors?.get(speaker.actor) : undefined; - return { actor: speakerActor }; -} diff --git a/src/macros/macros.ts b/src/macros/macros.ts deleted file mode 100644 index 867edc91..00000000 --- a/src/macros/macros.ts +++ /dev/null @@ -1,13 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { rollCheck } from "./roll-check"; -import { rollGenericCheck } from "./roll-generic-check"; -import { rollItem } from "./roll-item"; - -export const macros = { - rollCheck, - rollGenericCheck, - rollItem, -}; diff --git a/src/macros/roll-check.js b/src/macros/roll-check.js deleted file mode 100644 index 6218ab8e..00000000 --- a/src/macros/roll-check.js +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4 } from "../config"; -import { isCheck } from "../documents/actor/actor-data-properties-base"; -import { notifications } from "../ui/notifications"; -import { getGame } from "../utils/utils"; -import { getActiveActorAndToken } from "./helpers"; - -/** - * Creates a macro from a check drop. - * Get an existing roll check macro if one exists, otherwise create a new one. - * @param {object} data The check drop data - * @param {string} slot The hotbar slot to use - * @returns {Promise} A promise that resolves when the macro has been created. - */ -export async function createRollCheckMacro(data, slot) { - if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) { - return notifications.warn(getGame().i18n.localize("DS4.WarningInvalidCheckDropped")); - } - const macro = await getOrCreateRollCheckMacro(data.data); - await getGame().user?.assignHotbarMacro(macro ?? null, slot); -} - -/** - * @param {import("../documents/actor/actor-data-properties-base").Check} check The name of the check to perform - * @returns {Promise} A promise that resolves to the created macro - */ -async function getOrCreateRollCheckMacro(check) { - const command = `game.ds4.macros.rollCheck("${check}");`; - - const existingMacro = getGame().macros?.find((m) => m.name === DS4.i18n.checks[check] && m.command === command); - if (existingMacro) { - return existingMacro; - } - - return Macro.create( - { - command, - name: DS4.i18n.checks[check], - type: "script", - img: DS4.icons.checks[check], - flags: { "ds4.checkMacro": true }, - }, - { renderSheet: false }, - ); -} - -/** - * Executes the roll check macro for the given check. - * @param {import("../documents/actor/actor-data-properties-base").Check} check The name of the check to perform - * @returns {Promise} A promise that resolves once the check has been performed. - */ -export async function rollCheck(check) { - const { actor, token } = getActiveActorAndToken(); - if (!actor) { - return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); - } - - return actor.rollCheck(check, { speaker: { token } }).catch((e) => notifications.error(e, { log: true })); -} diff --git a/src/macros/roll-generic-check.ts b/src/macros/roll-generic-check.ts deleted file mode 100644 index 4efa9a75..00000000 --- a/src/macros/roll-generic-check.ts +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { notifications } from "../ui/notifications"; -import { getGame } from "../utils/utils"; -import { getActiveActorAndToken } from "./helpers"; - -/** - * Executes the roll generic check macro. - */ -export async function rollGenericCheck(): Promise { - const { actor, token } = getActiveActorAndToken(); - if (!actor) { - return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); - } - - return actor.rollGenericCheck({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); -} diff --git a/src/macros/roll-item.js b/src/macros/roll-item.js deleted file mode 100644 index c63dca90..00000000 --- a/src/macros/roll-item.js +++ /dev/null @@ -1,83 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { DS4Item } from "../documents/item/item"; -import { notifications } from "../ui/notifications"; -import { getGame } from "../utils/utils"; -import { getActiveActorAndToken } from "./helpers"; - -/** - * Create a macro from an item drop. - * Get an existing roll item macro if one exists, otherwise create a new one. - * @param {object} data The item drop data - * @param {string} slot The hotbar slot to use - * @returns {Promise} A promise that resolves once the macro has been created. - */ -export async function createRollItemMacro(data, slot) { - const item = await Item.implementation.fromDropData(data); - if (!item.parent) { - return notifications.warn(getGame().i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems")); - } - if (!DS4Item.rollableItemTypes.includes(item.type)) { - return notifications.warn( - getGame().i18n.format("DS4.WarningItemIsNotRollable", { - name: item.name, - id: item.id, - type: item.type, - }), - ); - } - - const macro = await getOrCreateRollItemMacro(item); - await getGame().user?.assignHotbarMacro(macro ?? null, slot); -} - -/** - * @param {object} item The item - * @returns {Promise} A promise that resolves to the created macro - */ -async function getOrCreateRollItemMacro(item) { - const command = `game.ds4.macros.rollItem("${item.id}");`; - - const existingMacro = getGame().macros?.find((m) => m.name === item.name && m.command === command); - if (existingMacro) { - return existingMacro; - } - - return Macro.create( - { - command, - name: item.name, - type: "script", - img: item.img, - flags: { "ds4.itemMacro": true }, - }, - { renderSheet: false }, - ); -} - -/** - * Executes the roll item macro for the item associated to the given `itemId`. - * @param {string} itemId The id of the item to roll - * @returns {Promise} A promise that resolves once the item has been rolled. - */ -export async function rollItem(itemId) { - const { actor, token } = getActiveActorAndToken(); - if (!actor) { - return notifications.warn(getGame().i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro")); - } - - const item = actor.items.get(itemId); - if (!item) { - return notifications.warn( - getGame().i18n.format("DS4.WarningControlledActorDoesNotHaveItem", { - actorName: actor.name, - actorId: actor.id, - itemId, - }), - ); - } - - return item.roll({ speaker: { token } }).catch((e) => notifications.error(e, { log: true })); -} diff --git a/src/migration/001.js b/src/migration/001.js deleted file mode 100644 index 822dd3d0..00000000 --- a/src/migration/001.js +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getSceneMigrator, migrateCollection, migrateCompendiums, getCompendiumMigrator } from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return actorsResult === "error" || scenesResult === "error" || compendiumsResult === "error" ? "error" : "success"; -} - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateActor(actor) { - await actor.update({ - system: { - combatValues: [ - "hitPoints", - "defense", - "initiative", - "movement", - "meleeAttack", - "rangedAttack", - "spellcasting", - "targetedSpellcasting", - ].reduce((acc, curr) => { - acc[curr] = { "-=base": null }; - return acc; - }, {}), - }, - }); -} - -const migrateScene = getSceneMigrator(migrateActor); - -const migrateCompendium = getCompendiumMigrator({ migrateActor, migrateScene }); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/002.js b/src/migration/002.js deleted file mode 100644 index 41b04128..00000000 --- a/src/migration/002.js +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, -} from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const itemsResult = await migrateCollection(game.items, migrateItem); - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return itemsResult === "error" || - actorsResult === "error" || - scenesResult === "error" || - compendiumsResult === "error" - ? "error" - : "success"; -} - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateItem(item) { - if (item.type === "equipment" || item.type === "trinket") { - await item.update({ type: item.type === "equipment" ? "loot" : "equipment" }); - } -} - -const migrateActor = getActorMigrator(migrateItem); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator( - { migrateItem, migrateActor, migrateScene }, - { migrateToTemplateEarly: false }, -); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/003.js b/src/migration/003.js deleted file mode 100644 index a5ffda16..00000000 --- a/src/migration/003.js +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, -} from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const itemsResult = await migrateCollection(game.items, migrateItem); - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return itemsResult === "error" || - actorsResult === "error" || - scenesResult === "error" || - compendiumsResult === "error" - ? "error" - : "success"; -} - -/** @type {import("./migrationHelpers.js").Migrator} */ -async function migrateItem(item) { - if (item.type === "loot") { - await item.update({ system: { "-=equipped": null } }); - } -} - -const migrateActor = getActorMigrator(migrateItem); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator( - { migrateItem, migrateActor, migrateScene }, - { migrateToTemplateEarly: false }, -); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/004.js b/src/migration/004.js deleted file mode 100644 index 23061527..00000000 --- a/src/migration/004.js +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, -} from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const itemsResult = await migrateCollection(game.items, migrateItem); - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return itemsResult === "error" || - actorsResult === "error" || - scenesResult === "error" || - compendiumsResult === "error" - ? "error" - : "success"; -} - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateItem(item) { - if (item.type === "spell") { - const cooldownDurationUnit = item.system?.cooldownDuration.unit; - await item.update({ - system: { - "-=scrollPrice": null, - minimumLevels: { healer: null, wizard: null, sorcerer: null }, - cooldownDuration: { - unit: cooldownDurationUnit === "custom" ? "rounds" : cooldownDurationUnit, - }, - }, - }); - } -} - -const migrateActor = getActorMigrator(migrateItem); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/005.js b/src/migration/005.js deleted file mode 100644 index fdbbb65b..00000000 --- a/src/migration/005.js +++ /dev/null @@ -1,124 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, -} from "./migrationHelpers.js"; - -const secondsPerRound = 5; -const secondsPerMinute = 60; -const roundsPerMinute = secondsPerMinute / secondsPerRound; -const minutesPerHour = 60; -const roundsPerHour = minutesPerHour / roundsPerMinute; -const hoursPerDay = 24; -const roundsPerDay = hoursPerDay / roundsPerHour; -const secondsPerDay = secondsPerMinute * minutesPerHour * hoursPerDay; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const itemsResult = await migrateCollection(game.items, migrateItem); - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return itemsResult === "error" || - actorsResult === "error" || - scenesResult === "error" || - compendiumsResult === "error" - ? "error" - : "success"; -} - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateItem(item) { - if (item.type === "spell") { - const cooldownDurationUnit = item.system?.cooldownDuration.unit; - const cooldownDurationValue = item.system?.cooldownDuration.value; - const cooldownDuration = migrateCooldownDuration(cooldownDurationValue, cooldownDurationUnit); - await item.update({ system: { cooldownDuration } }); - } -} - -function migrateCooldownDuration(cooldownDurationValue = "", cooldownDurationUnit = "") { - if (Number.isNumeric(cooldownDurationValue)) { - const value = Number.fromString(cooldownDurationValue); - const rounds = getRounds(cooldownDurationUnit, value); - - if (rounds * secondsPerRound > secondsPerDay) { - return "d20d"; - } else if (rounds > 100) { - return "1d"; - } else if (rounds > 10) { - return "100r"; - } else if (rounds > 5) { - return "10r"; - } else if (rounds > 2) { - return "5r"; - } else if (rounds > 1) { - return "2r"; - } else if (rounds > 0) { - return "1r"; - } else { - return "0r"; - } - } else { - // if the value is not numeric, we can only make a best guess - switch (cooldownDurationUnit) { - case "rounds": { - return "10r"; - } - case "minutes": { - return "100r"; - } - case "hours": { - return "1d"; - } - case "days": { - return "d20d"; - } - default: { - return "0r"; - } - } - } -} - -/** - * Given a unit and a value, return the correct number of rounds - * @param {string} unit The unit - * @param {number} value The value - * @returns {number} The number of rounds - */ -function getRounds(unit, value) { - switch (unit) { - case "rounds": { - return value; - } - case "minutes": { - return value * roundsPerMinute; - } - case "hours": { - return value * roundsPerHour; - } - case "days": { - return value * roundsPerDay; - } - default: { - return 0; - } - } -} - -const migrateActor = getActorMigrator(migrateItem); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/006.js b/src/migration/006.js deleted file mode 100644 index 666c5d66..00000000 --- a/src/migration/006.js +++ /dev/null @@ -1,128 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, -} from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const itemsResult = await migrateCollection(game.items, migrateItem); - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return itemsResult === "error" || - actorsResult === "error" || - scenesResult === "error" || - compendiumsResult === "error" - ? "error" - : "success"; -} - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateItem(item) { - if (item.type === "spell") { - const spellCategory = item.system?.spellCategory; - const spellGroups = migrateSpellCategory(spellCategory); - const bonus = item.system?.bonus; - const spellModifier = migrateBonus(bonus); - await item.update({ - system: { - spellGroups, - "-=spellCategory": null, - spellModifier, - "-=bonus": null, - }, - }); - } -} - -/** - * Migrate a spell category to spell groups. - * @param {string | undefined} spellCategory The spell category - * @returns {import("../documents/item/spell/spell-data-source").DS4SpellDataSourceData["spellGroups"]} The spell groups for the given category - */ -function migrateSpellCategory(spellCategory) { - const spellGroups = { - lightning: false, - earth: false, - water: false, - ice: false, - fire: false, - healing: false, - light: false, - air: false, - transport: false, - damage: false, - shadow: false, - protection: false, - mindAffecting: false, - demonology: false, - necromancy: false, - transmutation: false, - area: false, - }; - switch (spellCategory) { - case "healing": { - spellGroups.healing = true; - break; - } - case "fire": { - spellGroups.fire = true; - break; - } - case "ice": { - spellGroups.ice = true; - break; - } - case "light": { - spellGroups.light = true; - break; - } - case "darkness": { - spellGroups.shadow = true; - break; - } - case "mindAffecting": { - spellGroups.mindAffecting = true; - break; - } - case "electricity": { - spellGroups.lightning = true; - break; - } - } - return spellGroups; -} - -/** - * Migrate a spell bonus to a spell modifier. - * @param {string | undefined} bonus The spell bonus - * @returns {import("../documents/item/spell/spell-data-source").DS4SpellDataSourceData["spellModifier"]} The spell modifier - */ -function migrateBonus(bonus) { - const spellModifier = { numerical: 0, complex: "" }; - if (bonus) { - if (Number.isNumeric(bonus)) { - spellModifier.numerical = +bonus; - } else { - spellModifier.complex = bonus; - } - } - return spellModifier; -} - -const migrateActor = getActorMigrator(migrateItem); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/007.js b/src/migration/007.js deleted file mode 100644 index f5d86fad..00000000 --- a/src/migration/007.js +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, -} from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const itemsResult = await migrateCollection(game.items, migrateItem); - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return itemsResult === "error" || - actorsResult === "error" || - scenesResult === "error" || - compendiumsResult === "error" - ? "error" - : "success"; -} - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateItem(item) { - if (item.type === "spell") { - await item.update({ system: { allowsDefense: false } }); - } -} - -const migrateActor = getActorMigrator(migrateItem); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/008.js b/src/migration/008.js deleted file mode 100644 index 4fb67166..00000000 --- a/src/migration/008.js +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, - getItemMigrator, -} from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const itemsResult = await migrateCollection(game.items, migrateItem); - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return itemsResult === "error" || - actorsResult === "error" || - scenesResult === "error" || - compendiumsResult === "error" - ? "error" - : "success"; -} - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateActiveEffect(activeEffect) { - const data = activeEffect.toObject(); - let hasUpdates = false; - - if ("changes" in data) { - for (const change of data.changes) { - const newValue = change.value.replaceAll(/@data\./g, "@system."); - if (newValue !== change.value) { - hasUpdates = true; - change.value = newValue; - } - } - } - - /** @type {string | undefined} */ - const condition = data.flags?.ds4?.itemEffectConfig?.condition; - if (condition !== undefined) { - const newCondition = condition.replaceAll(/(@actor|@item|@effect)\.data/g, "$1.system"); - if (newCondition !== condition) { - hasUpdates = true; - data.flags.ds4.itemEffectConfig.condition = newCondition; - } - } - if (hasUpdates) { - await activeEffect.update(data); - } -} - -const migrateItem = getItemMigrator(migrateActiveEffect); -const migrateActor = getActorMigrator(migrateItem, migrateActiveEffect); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator({ migrateItem, migrateActor, migrateScene }); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/009.js b/src/migration/009.js deleted file mode 100644 index 0c97c67b..00000000 --- a/src/migration/009.js +++ /dev/null @@ -1,41 +0,0 @@ -// SPDX-FileCopyrightText: 2023 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { - getSceneMigrator, - migrateCollection, - migrateCompendiums, - getCompendiumMigrator, - getActorMigrator, -} from "./migrationHelpers.js"; - -/** @type {import("./migration.js").Migration["migrate"]} */ -async function migrate() { - const actorsResult = await migrateCollection(game.actors, migrateActor); - const scenesResult = await migrateCollection(game.scenes, migrateScene); - const compendiumsResult = await migrateCompendiums(migrateCompendium); - return actorsResult === "error" || scenesResult === "error" || compendiumsResult === "error" ? "error" : "success"; -} - -const itemIdRegex = /Item\.([a-zA-Z0-9]+)/; - -/** @type {import('./migrationHelpers.js').Migrator} */ -async function migrateActiveEffect(activeEffect) { - if (activeEffect.parent instanceof Actor) { - const itemId = activeEffect.origin?.match(itemIdRegex)?.[1]; - if (activeEffect.parent.items.has(itemId)) { - await activeEffect.delete(); - } - } -} - -const migrateActor = getActorMigrator(undefined, migrateActiveEffect); -const migrateScene = getSceneMigrator(migrateActor); -const migrateCompendium = getCompendiumMigrator({ migrateActor, migrateScene }); - -/** @type {import("./migration.js").Migration} */ -export const migration = { - migrate, - migrateCompendium, -}; diff --git a/src/migration/migration.js b/src/migration/migration.js deleted file mode 100644 index 797ac457..00000000 --- a/src/migration/migration.js +++ /dev/null @@ -1,215 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { notifications } from "../ui/notifications.js"; -import { logger } from "../utils/logger.js"; -import { getGame } from "../utils/utils.js"; -import { migration as migration001 } from "./001.js"; -import { migration as migration002 } from "./002.js"; -import { migration as migration003 } from "./003.js"; -import { migration as migration004 } from "./004.js"; -import { migration as migration005 } from "./005.js"; -import { migration as migration006 } from "./006.js"; -import { migration as migration007 } from "./007.js"; -import { migration as migration008 } from "./008.js"; -import { migration as migration009 } from "./009.js"; - -/** - * Perform migrations. - * @returns {Promise} A promise that resolves once all migrations have completed - */ -async function migrate() { - if (!getGame().user?.isGM) { - return; - } - - const oldMigrationVersion = getCurrentMigrationVersion(); - - const targetMigrationVersion = migrations.length; - - if (isFirstWorldStart(oldMigrationVersion)) { - getGame().settings.set("ds4", "systemMigrationVersion", targetMigrationVersion); - return; - } - - return migrateFromTo(oldMigrationVersion, targetMigrationVersion); -} - -/** - * Migrate from a given version to another version. - * @param {number} oldMigrationVersion The old migration version - * @param {number} targetMigrationVersion The migration version to migrate to - * @returns {Promise} A promise the resolves once the migration is complete - */ -async function migrateFromTo(oldMigrationVersion, targetMigrationVersion) { - if (!getGame().user?.isGM) { - return; - } - - const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); - - if (migrationsToExecute.length > 0) { - notifications.info( - getGame().i18n.format("DS4.InfoSystemUpdateStart", { - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - }), - { permanent: true }, - ); - - /** @type {Result} */ - let result = "success"; - for (const [i, { migrate }] of migrationsToExecute.entries()) { - const currentMigrationVersion = oldMigrationVersion + i + 1; - logger.info("executing migration script", currentMigrationVersion); - try { - const r = await migrate(); - getGame().settings.set("ds4", "systemMigrationVersion", currentMigrationVersion); - if (r === "error") { - result = "error"; - } - } catch (err) { - notifications.error( - getGame().i18n.format("DS4.ErrorDuringMigration", { - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - migrationVersion: currentMigrationVersion, - }), - { permanent: true }, - ); - logger.error("Failed ds4 system migration:", err); - return; - } - } - - if (result === "success") { - notifications.info( - getGame().i18n.format("DS4.InfoSystemUpdateCompletedSuccessfully", { - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - }), - { permanent: true }, - ); - } else { - notifications.warn( - getGame().i18n.format("DS4.WarningSystemUpdateCompletedWithErrors", { - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - }), - { permanent: true }, - ); - } - } -} - -/** - * Migrate a compendium pack from a given version to another version. - * @param {CompendiumCollection} pack The compendium pack to migrate - * @param {number} oldMigrationVersion The old version number - * @param {number} targetMigrationVersion The target version number - * @returns {Promise} A promise that resolves once the migration is complete - */ -async function migrateCompendiumFromTo(pack, oldMigrationVersion, targetMigrationVersion) { - if (!getGame().user?.isGM) { - return; - } - - const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); - - if (migrationsToExecute.length > 0) { - notifications.info( - getGame().i18n.format("DS4.InfoCompendiumMigrationStart", { - pack: pack.title, - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - }), - { permanent: true }, - ); - - for (const [i, { migrateCompendium }] of migrationsToExecute.entries()) { - const currentMigrationVersion = oldMigrationVersion + i + 1; - logger.info("executing compendium migration ", currentMigrationVersion); - try { - await migrateCompendium(pack); - } catch (err) { - notifications.error( - getGame().i18n.format("DS4.ErrorDuringCompendiumMigration", { - pack: pack.title, - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - migrationVersion: currentMigrationVersion, - }), - { permanent: true }, - ); - logger.error("Failed ds4 compendium migration:", err); - return; - } - } - - notifications.info( - getGame().i18n.format("DS4.InfoCompendiumMigrationCompleted", { - pack: pack.title, - currentVersion: oldMigrationVersion, - targetVersion: targetMigrationVersion, - }), - { permanent: true }, - ); - } -} - -/** - * Get the current migration version. - * @returns {number} The current migration version - */ -function getCurrentMigrationVersion() { - return getGame().settings.get("ds4", "systemMigrationVersion"); -} - -/** - * Get the target migration version. - * @returns {number} The target migration version - */ -function getTargetMigrationVersion() { - return migrations.length; -} - -/** @typedef {"success" | "error"} Result */ - -/** - * @typedef {object} Migration - * @property {() => Promise} migrate - * @property {import("./migrationHelpers").CompendiumMigrator} migrateCompendium - */ - -/** - * @type {Migration[]} - */ -const migrations = [ - migration001, - migration002, - migration003, - migration004, - migration005, - migration006, - migration007, - migration008, - migration009, -]; - -/** - * DOes the migration version indicate the world is being started for the first time? - * @param {number} migrationVersion A migration version - * @returns {boolean} Whether the migration version indicates it is the first start of the world - */ -function isFirstWorldStart(migrationVersion) { - return migrationVersion < 0; -} - -export const migration = { - migrate, - migrateFromTo, - getCurrentMigrationVersion, - getTargetMigrationVersion, - migrateCompendiumFromTo, -}; diff --git a/src/migration/migrationHelpers.js b/src/migration/migrationHelpers.js deleted file mode 100644 index 48399db1..00000000 --- a/src/migration/migrationHelpers.js +++ /dev/null @@ -1,177 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { logger } from "../utils/logger.js"; -import { getGame } from "../utils/utils.js"; - -/** - * @template T - * @typedef {(document: T) => Promise} Migrator - */ - -/** - * Migrate a collection. - * @template T - * @param {WorldCollection} collection - * @param {Migrator} migrateDocument - * @returns {Promise} A promise that resolves once the migration is complete - */ -export async function migrateCollection(collection, migrateDocument) { - /** @type {import("./migration.js").Result} */ - let result = "success"; - const { documentName } = collection.constructor; - for (const document of collection) { - logger.info(`Migrating ${documentName} document ${document.name} (${document.id})`); - try { - await migrateDocument(document); - } catch (err) { - logger.error( - `Error during migration of ${documentName} document ${document.name} (${document.id}), continuing anyways.`, - err, - ); - result = "error"; - } - } - return result; -} - -/** - * @param {Migrator} [migrateActiveEffect] - * @returns {Migrator} - */ -export function getItemMigrator(migrateActiveEffect) { - /** - * @param {Item} item - */ - return async (item) => { - if (migrateActiveEffect) { - for (const effect of item.effects) { - await migrateActiveEffect(effect); - } - } - }; -} - -/** - * @param {Migrator} [migrateItem] - * @param {Migrator} [migrateActiveEffect] - * @returns {Migrator} - */ -export function getActorMigrator(migrateItem, migrateActiveEffect) { - /** - * @param {Actor} actor - */ - return async (actor) => { - if (migrateItem) { - for (const item of actor.items) { - await migrateItem(item); - } - } - if (migrateActiveEffect) { - for (const effect of actor.effects) { - await migrateActiveEffect(effect); - } - } - }; -} - -/** - * @param {Migrator} [migrateActor] - * @returns {Migrator} - */ -export function getSceneMigrator(migrateActor) { - /** - * @param {Scene} scene - */ - return async (scene) => { - if (migrateActor) { - for (const token of scene.tokens) { - if (!token.actorLink && token.actor) { - await migrateActor(token.actor); - } - } - } - }; -} - -/** @typedef {(pack: CompendiumCollection) => Promise} CompendiumMigrator */ - -/** - * Migrate world compendium packs. - * @param {CompendiumMigrator} migrateCompendium A function for migrating a single compendium pack - * @returns {Promise} A promise that resolves once the migration is complete - */ -export async function migrateCompendiums(migrateCompendium) { - /** @type {import("./migration.js").Result} */ - let result = "success"; - for (const compendium of getGame().packs ?? []) { - if (compendium.metadata.package !== "world") continue; - if (!["Actor", "Item", "Scene"].includes(compendium.metadata.type)) continue; - const r = await migrateCompendium(compendium); - if (r === "error") { - result = "error"; - } - } - return result; -} - -/** - * @typedef {object} Migrators - * @property {Migrator} [migrateItem] - * @property {Migrator} [migrateActor] - * @property {Migrator} [migrateScene] - */ - -/** - * Get a compendium migrator for the given migrators. - * @param {Migrators} [migrators={}] The functions to use for getting update data - * @param {{migrateToTemplateEarly?: boolean}} [options={}] Additional options for the compendium migrator - * @returns {CompendiumMigrator} The resulting compendium migrator - */ -export function getCompendiumMigrator( - { migrateItem, migrateActor, migrateScene } = {}, - { migrateToTemplateEarly = true } = {}, -) { - return async (pack) => { - /** @type {import("./migration.js").Result} */ - let result = "success"; - - const type = pack.metadata.type; - const migrateDocument = { - Item: migrateItem, - Actor: migrateActor, - Scene: migrateScene, - }[type]; - - if (migrateDocument) { - const wasLocked = pack.locked; - await pack.configure({ locked: false }); - if (migrateToTemplateEarly) { - await pack.migrate(); - } - - const documents = await pack.getDocuments(); - - for (const doc of documents) { - try { - logger.info(`Migrating document ${doc.name} (${doc.id}) in compendium ${pack.collection}`); - await migrateDocument(doc); - } catch (err) { - logger.error( - `Error during migration of document ${doc.name} (${doc.id}) in compendium ${pack.collection}, continuing anyways.`, - err, - ); - result = "error"; - } - } - - if (!migrateToTemplateEarly) { - await pack.migrate(); - } - await pack.configure({ locked: wasLocked }); - } - - return result; - }; -} diff --git a/src/module/actor/actor-data.ts b/src/module/actor/actor-data.ts new file mode 100644 index 00000000..dffd84d9 --- /dev/null +++ b/src/module/actor/actor-data.ts @@ -0,0 +1,111 @@ +import { ModifiableData, ModifiableDataBase, ResourceData, UsableResource } from "../common/common-data"; +import { DS4 } from "../config"; +import { DS4ItemData } from "../item/item-data"; + +export type DS4ActorData = DS4CharacterData | DS4CreatureData; + +type ActorType = keyof typeof DS4.i18n.actorTypes; + +export interface DS4ActorDataHelper extends Actor.Data { + type: U; +} + +type DS4CharacterData = DS4ActorDataHelper; +type DS4CreatureData = DS4ActorDataHelper; + +// templates + +interface DS4ActorDataDataBase { + attributes: DS4ActorDataDataAttributes; + traits: DS4ActorDataDataTraits; + combatValues: DS4ActorDataDataCombatValues; +} + +interface DS4ActorDataDataAttributes { + body: ModifiableDataBase; + mobility: ModifiableDataBase; + mind: ModifiableDataBase; +} + +interface DS4ActorDataDataTraits { + strength: ModifiableDataBase; + constitution: ModifiableDataBase; + agility: ModifiableDataBase; + dexterity: ModifiableDataBase; + intellect: ModifiableDataBase; + aura: ModifiableDataBase; +} + +interface DS4ActorDataDataCombatValues { + hitPoints: ResourceData; + defense: ModifiableData; + initiative: ModifiableData; + movement: ModifiableData; + meleeAttack: ModifiableData; + rangedAttack: ModifiableData; + spellcasting: ModifiableData; + targetedSpellcasting: ModifiableData; +} + +// types + +interface DS4CharacterDataData extends DS4ActorDataDataBase { + baseInfo: DS4CharacterDataDataBaseInfo; + progression: DS4CharacterDataDataProgression; + language: DS4CharacterDataDataLanguage; + profile: DS4CharacterDataDataProfile; + currency: DS4CharacterDataDataCurrency; +} +export interface DS4CharacterDataDataBaseInfo { + race: string; + class: string; + heroClass: string; + culture: string; +} +export interface DS4CharacterDataDataProgression { + level: number; + experiencePoints: number; + talentPoints: UsableResource; + progressPoints: UsableResource; +} + +export interface DS4CharacterDataDataLanguage { + languages: string; + alphabets: string; +} + +export interface DS4CharacterDataDataProfile { + biography: string; + gender: string; + birthday: string; + birthplace: string; + age: number; + height: number; + hairColor: string; + weight: number; + eyeColor: string; + specialCharacteristics: string; +} + +export interface DS4CharacterDataDataCurrency { + gold: number; + silver: number; + copper: number; +} + +interface DS4CreatureDataData extends DS4ActorDataDataBase { + baseInfo: DS4CreatureDataDataBaseInfo; +} + +export interface DS4CreatureDataDataBaseInfo { + loot: string; + foeFactor: number; + creatureType: CreatureType; + sizeCategory: SizeCategory; + experiencePoints: number; + description: string; +} + +type CreatureType = "animal" | "construct" | "humanoid" | "magicalEntity" | "plantBeing" | "undead"; + +type SizeCategory = "tiny" | "small" | "normal" | "large" | "huge" | "colossal"; diff --git a/src/module/actor/actor-prepared-data.ts b/src/module/actor/actor-prepared-data.ts new file mode 100644 index 00000000..5dd3ec59 --- /dev/null +++ b/src/module/actor/actor-prepared-data.ts @@ -0,0 +1,84 @@ +import { ModifiableDataBaseTotal, ResourceDataBaseTotalMax } from "../common/common-data"; +import { DS4 } from "../config"; +import { + DS4ActorDataHelper, + DS4CharacterDataDataBaseInfo, + DS4CharacterDataDataCurrency, + DS4CharacterDataDataLanguage, + DS4CharacterDataDataProfile, + DS4CharacterDataDataProgression, + DS4CreatureDataDataBaseInfo, +} from "./actor-data"; + +export type DS4ActorPreparedData = DS4CharacterPreparedData | DS4CreaturePreparedData; + +type DS4CharacterPreparedData = DS4ActorDataHelper; +type DS4CreaturePreparedData = DS4ActorDataHelper; + +// templates + +interface DS4ActorPreparedDataDataBase { + attributes: DS4ActorPreparedDataDataAttributes; + traits: DS4ActorPreparedDataDataTraits; + combatValues: DS4ActorPreparedDataDataCombatValues; + rolling: DS4ActorPreparedDataDataRolling; + checks: DS4ActorPreparedDataDataChecks; + customChecks: DS4ActorPreparedDataDataCustomChecks; +} + +interface DS4ActorPreparedDataDataAttributes { + body: ModifiableDataBaseTotal; + mobility: ModifiableDataBaseTotal; + mind: ModifiableDataBaseTotal; +} + +interface DS4ActorPreparedDataDataTraits { + strength: ModifiableDataBaseTotal; + constitution: ModifiableDataBaseTotal; + agility: ModifiableDataBaseTotal; + dexterity: ModifiableDataBaseTotal; + intellect: ModifiableDataBaseTotal; + aura: ModifiableDataBaseTotal; +} + +interface DS4ActorPreparedDataDataCombatValues { + hitPoints: ResourceDataBaseTotalMax; + defense: ModifiableDataBaseTotal; + initiative: ModifiableDataBaseTotal; + movement: ModifiableDataBaseTotal; + meleeAttack: ModifiableDataBaseTotal; + rangedAttack: ModifiableDataBaseTotal; + spellcasting: ModifiableDataBaseTotal; + targetedSpellcasting: ModifiableDataBaseTotal; +} + +interface DS4ActorPreparedDataDataRolling { + maximumCoupResult: number; + minimumFumbleResult: number; +} + +export type Check = keyof typeof DS4.i18n.checks; + +export function isCheck(value: string): value is Check { + return Object.keys(DS4.i18n.checks).includes(value); +} + +type DS4ActorPreparedDataDataChecks = { + [key in Check]: number; +}; + +type DS4ActorPreparedDataDataCustomChecks = Record; + +// types + +interface DS4CharacterPreparedDataData extends DS4ActorPreparedDataDataBase { + baseInfo: DS4CharacterDataDataBaseInfo; + progression: DS4CharacterDataDataProgression; + language: DS4CharacterDataDataLanguage; + profile: DS4CharacterDataDataProfile; + currency: DS4CharacterDataDataCurrency; +} + +interface DS4CreaturePreparedDataData extends DS4ActorPreparedDataDataBase { + baseInfo: DS4CreatureDataDataBaseInfo; +} diff --git a/src/module/actor/actor.ts b/src/module/actor/actor.ts new file mode 100644 index 00000000..3aea5317 --- /dev/null +++ b/src/module/actor/actor.ts @@ -0,0 +1,312 @@ +import { ModifiableDataBaseTotal } from "../common/common-data"; +import { DS4 } from "../config"; +import { DS4Item } from "../item/item"; +import { ItemType } from "../item/item-data"; +import { createCheckRoll } from "../rolls/check-factory"; +import { DS4ActorData } from "./actor-data"; +import { Check, DS4ActorPreparedData } from "./actor-prepared-data"; + +/** + * The Actor class for DS4 + */ +export class DS4Actor extends Actor { + /** @override */ + prepareData(): void { + this.data = duplicate(this._data) as DS4ActorPreparedData; + if (!this.data.img) this.data.img = CONST.DEFAULT_TOKEN; + if (!this.data.name) this.data.name = "New " + this.entity; + this.prepareBaseData(); + this.prepareEmbeddedEntities(); + this.applyActiveEffectsToBaseData(); + this.prepareDerivedData(); + this.applyActiveEffectsToDerivedData(); + this.prepareFinalDerivedData(); + } + + /** @override */ + prepareBaseData(): void { + const data = this.data; + + data.data.rolling = { + minimumFumbleResult: 20, + maximumCoupResult: 1, + }; + + const attributes = data.data.attributes; + Object.values(attributes).forEach( + (attribute: ModifiableDataBaseTotal) => (attribute.total = attribute.base + attribute.mod), + ); + + const traits = data.data.traits; + Object.values(traits).forEach( + (trait: ModifiableDataBaseTotal) => (trait.total = trait.base + trait.mod), + ); + } + + applyActiveEffectsToBaseData(): void { + // reset overrides because our variant of applying active effects does not set them, it only adds overrides + this.overrides = {}; + this.applyActiveEffectsFiltered( + (change) => + !this.derivedDataProperties.includes(change.key) && + !this.finalDerivedDataProperties.includes(change.key), + ); + } + + applyActiveEffectsToDerivedData(): void { + this.applyActiveEffectsFiltered((change) => this.derivedDataProperties.includes(change.key)); + } + + /** + * Apply ActiveEffectChanges to the Actor data which are caused by ActiveEffects and satisfy the given predicate. + * + * @param predicate - The predicate that ActiveEffectChanges need to satisfy in order to be applied + */ + applyActiveEffectsFiltered(predicate: (change: ActiveEffectChange) => boolean): void { + const overrides: Record = {}; + + // Organize non-disabled effects by their application priority + const changes = this.effects.reduce( + (changes: Array }>, e) => { + if (e.data.disabled) return changes; + const item = this._getOriginatingItemOfActiveEffect(e); + if (item?.isNonEquippedEuipable()) return changes; + + const factor = item?.activeEffectFactor ?? 1; + + return changes.concat( + e.data.changes.filter(predicate).flatMap((c) => { + const duplicatedChange = duplicate(c); + duplicatedChange.priority = duplicatedChange.priority ?? duplicatedChange.mode * 10; + return Array(factor).fill({ + ...duplicatedChange, + effect: e, + }); + }), + ); + }, + [], + ); + changes.sort((a, b) => a.priority - b.priority); + + // Apply all changes + for (const change of changes) { + const result = change.effect.apply(this, change); + if (result !== null) overrides[change.key] = result; + } + + // Expand the set of final overrides + this.overrides = expandObject({ ...flattenObject(this.overrides), ...overrides }); + } + + protected _getOriginatingItemOfActiveEffect(effect: ActiveEffect): DS4Item | undefined { + return this.items.find((item) => item.uuid === effect.data.origin) ?? undefined; + } + + /** + * Apply transformations to the Actor data after effects have been applied to the base data. + * @override + */ + prepareDerivedData(): void { + this._prepareCombatValues(); + this._prepareChecks(); + this._prepareCustomChecks(); + } + + /** + * The list of properties that are derived from others, given in dot notation. + */ + get derivedDataProperties(): Array { + const combatValueProperties = Object.keys(DS4.i18n.combatValues).map( + (combatValue) => `data.combatValues.${combatValue}.total`, + ); + const checkProperties = Object.keys(DS4.i18n.checks) + .filter((check) => check !== "defend") + .map((check) => `data.checks.${check}`); + const customCheckProperties = Object.keys(game.settings.get("ds4", "customChecks")).map( + (check) => `data.customChecks.${check}`, + ); + return combatValueProperties.concat(checkProperties).concat(customCheckProperties); + } + + /** + * Apply final transformations to the Actor data after all effects have been applied. + */ + prepareFinalDerivedData(): void { + this.data.data.combatValues.hitPoints.max = this.data.data.combatValues.hitPoints.total; + this.data.data.checks.defend = this.data.data.combatValues.defense.total; + } + + /** + * The list of properties that are completely derived (i.e. {@link ActiveEffect}s cannot be applied to them), + * given in dot notation. + */ + get finalDerivedDataProperties(): string[] { + return ["data.combatValues.hitPoints.max", "data.checks.defend"]; + } + + /** + * The list of item types that can be owned by this actor. + */ + get ownableItemTypes(): Array { + switch (this.data.type) { + case "character": + return [ + "weapon", + "armor", + "shield", + "equipment", + "loot", + "spell", + "talent", + "racialAbility", + "language", + "alphabet", + ]; + case "creature": + return ["weapon", "armor", "shield", "equipment", "loot", "spell", "specialCreatureAbility"]; + default: + return []; + } + } + + /** + * Checks whether or not the given item type can be owned by the actor. + * @param itemType - The item type to check + */ + canOwnItemType(itemType: ItemType): boolean { + return this.ownableItemTypes.includes(itemType); + } + + /** + * Prepares the combat values of the actor. + */ + protected _prepareCombatValues(): void { + const data = this.data.data; + const armorValueOfEquippedItems = this._calculateArmorValueOfEquippedItems(); + + data.combatValues.hitPoints.base = data.attributes.body.total + data.traits.constitution.total + 10; + data.combatValues.defense.base = + data.attributes.body.total + data.traits.constitution.total + armorValueOfEquippedItems; + data.combatValues.initiative.base = data.attributes.mobility.total + data.traits.agility.total; + data.combatValues.movement.base = data.attributes.mobility.total / 2 + 1; + data.combatValues.meleeAttack.base = data.attributes.body.total + data.traits.strength.total; + data.combatValues.rangedAttack.base = data.attributes.mobility.total + data.traits.dexterity.total; + data.combatValues.spellcasting.base = + data.attributes.mind.total + data.traits.aura.total - armorValueOfEquippedItems; + data.combatValues.targetedSpellcasting.base = + data.attributes.mind.total + data.traits.dexterity.total - armorValueOfEquippedItems; + + Object.values(data.combatValues).forEach( + (combatValue: ModifiableDataBaseTotal) => (combatValue.total = combatValue.base + combatValue.mod), + ); + } + + /** + * Calculates the total armor value of all equipped items. + */ + protected _calculateArmorValueOfEquippedItems(): number { + return this.items + .map((item) => { + if (item.data.type === "armor" || item.data.type === "shield") { + return item.data.data.equipped ? item.data.data.armorValue : 0; + } else { + return 0; + } + }) + .reduce((a, b) => a + b, 0); + } + + /** + * Prepares the check target numbers of checks for the actor. + */ + protected _prepareChecks(): void { + const data = this.data.data; + data.checks = { + appraise: data.attributes.mind.total + data.traits.intellect.total, + changeSpell: data.attributes.mind.total + data.traits.intellect.total, + climb: data.attributes.mobility.total + data.traits.strength.total, + communicate: data.attributes.mind.total + data.traits.dexterity.total, + decipherScript: data.attributes.mind.total + data.traits.intellect.total, + defend: 0, // assigned in prepareFinalDerivedData as it must always match data.combatValues.defense.total and is not changeable by effects + defyPoison: data.attributes.body.total + data.traits.constitution.total, + disableTraps: data.attributes.mind.total + data.traits.dexterity.total, + featOfStrength: data.attributes.body.total + data.traits.strength.total, + flirt: data.attributes.mind.total + data.traits.aura.total, + haggle: data.attributes.mind.total + Math.max(data.traits.intellect.total, data.traits.intellect.total), + hide: data.attributes.mobility.total + data.traits.agility.total, + identifyMagic: data.attributes.mind.total + data.traits.intellect.total, + jump: data.attributes.mobility.total + data.traits.agility.total, + knowledge: data.attributes.mind.total + data.traits.intellect.total, + openLock: data.attributes.mind.total + data.traits.dexterity.total, + perception: Math.max(data.attributes.mind.total + data.traits.intellect.total, 8), + pickPocket: data.attributes.mobility.total + data.traits.dexterity.total, + readTracks: data.attributes.mind.total + data.traits.intellect.total, + resistDisease: data.attributes.body.total + data.traits.constitution.total, + ride: data.attributes.mobility.total + Math.max(data.traits.agility.total, data.traits.aura.total), + search: Math.max(data.attributes.mind.total + data.traits.intellect.total, 8), + senseMagic: data.attributes.mind.total + data.traits.aura.total, + sneak: data.attributes.mobility.total + data.traits.agility.total, + startFire: data.attributes.mind.total + data.traits.dexterity.total, + swim: data.attributes.mobility.total + data.traits.strength.total, + wakeUp: data.attributes.mind.total + data.traits.intellect.total, + workMechanism: + data.attributes.mind.total + Math.max(data.traits.dexterity.total, data.traits.intellect.total), + }; + } + + protected _prepareCustomChecks(): void { + const customChecksSettings = game.settings.get("ds4", "customChecks"); + const data = this.data.data; + data.customChecks = {}; + Object.entries(customChecksSettings).forEach(([identifier, check]) => { + const replacedFormula = this._replaceFormulaData(check.formula); + console.log(replacedFormula); + data.customChecks[identifier] = Roll.MATH_PROXY.safeEval(replacedFormula); + }); + } + + protected _replaceFormulaData(formula: string): string { + const dataRgx = new RegExp(/@([a-z.0-9_\-]+)/gi); + return formula.replace(dataRgx, (match, term) => { + const value = getProperty(this.data, term); + return value !== undefined ? String(value).trim() : match; + }); + } + + /** + * Handle how changes to a Token attribute bar are applied to the Actor. + * This only differs from the base implementation by also allowing negative values. + * @override + */ + async modifyTokenAttribute(attribute: string, value: number, isDelta = false, isBar = true): Promise { + const current = getProperty(this.data.data, attribute); + + // Determine the updates to make to the actor data + let updates: Record; + if (isBar) { + if (isDelta) value = Math.min(Number(current.value) + value, current.max); + updates = { [`data.${attribute}.value`]: value }; + } else { + if (isDelta) value = Number(current) + value; + updates = { [`data.${attribute}`]: value }; + } + + // Call a hook to handle token resource bar updates + const allowed = Hooks.call("modifyTokenAttribute", { attribute, value, isDelta, isBar }, updates); + return allowed !== false ? this.update(updates) : this; + } + + /** + * Roll for a given check. + * @param check - The check to perform + */ + async rollCheck(check: Check): Promise { + await createCheckRoll(this.data.data.checks[check], { + rollMode: game.settings.get("core", "rollMode") as Const.DiceRollMode, // TODO(types): Type this setting in upstream + maximumCoupResult: this.data.data.rolling.maximumCoupResult, + minimumFumbleResult: this.data.data.rolling.minimumFumbleResult, + flavor: game.i18n.format("DS4.ActorCheckFlavor", { actor: this.name, check: DS4.i18n.checks[check] }), + }); + } +} diff --git a/src/module/actor/sheets/actor-sheet.ts b/src/module/actor/sheets/actor-sheet.ts new file mode 100644 index 00000000..34a8d777 --- /dev/null +++ b/src/module/actor/sheets/actor-sheet.ts @@ -0,0 +1,293 @@ +import { ModifiableDataBaseTotal } from "../../common/common-data"; +import { DS4 } from "../../config"; +import { getCanvas } from "../../helpers"; +import { DS4Item } from "../../item/item"; +import { DS4ItemData } from "../../item/item-data"; +import notifications from "../../ui/notifications"; +import { DS4Actor } from "../actor"; +import { isCheck } from "../actor-prepared-data"; + +/** + * The base Sheet class for all DS4 Actors + */ +export class DS4ActorSheet extends ActorSheet> { + // TODO(types): Improve mergeObject in upstream so that it isn't necessary to provide all parameters (see https://github.com/League-of-Foundry-Developers/foundry-vtt-types/issues/272) + /** @override */ + static get defaultOptions(): BaseEntitySheet.Options { + const superDefaultOptions = super.defaultOptions; + return mergeObject(superDefaultOptions, { + ...superDefaultOptions, + classes: ["ds4", "sheet", "actor"], + height: 620, + scrollY: [ + ".values", + ".inventory", + ".spells", + ".talents-abilities", + ".profile", + ".biography", + ".special-creature-abilities", + ], + tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "values" }], + dragDrop: [ + { dragSelector: ".item-list .item", dropSelector: null }, + { dragSelector: ".ds4-check", dropSelector: null }, + ], + width: 650, + }); + } + + /** @override */ + get template(): string { + const basePath = "systems/ds4/templates/sheets/actor"; + return `${basePath}/${this.actor.data.type}-sheet.hbs`; + } + + /** + * This method returns the data for the template of the actor sheet. + * It explicitly adds the items of the object sorted by type in the + * object itemsByType. + * @returns The data fed to the template of the actor sheet + */ + async getData(): Promise> { + const itemsByType = Object.fromEntries( + Object.entries(this.actor.itemTypes).map(([itemType, items]) => { + return [itemType, items.map((item) => item.data).sort((a, b) => (a.sort || 0) - (b.sort || 0))]; + }), + ); + const data = { + ...this._addTooltipsToData(await super.getData()), + // Add the localization config to the data: + config: DS4, + // Add the items explicitly sorted by type to the data: + itemsByType, + }; + return data; + } + + protected _addTooltipsToData(data: ActorSheet.Data): ActorSheet.Data { + const valueGroups = [data.data.attributes, data.data.traits, data.data.combatValues]; + + valueGroups.forEach((valueGroup) => { + Object.values(valueGroup).forEach((attribute: ModifiableDataBaseTotal & { tooltip?: string }) => { + attribute.tooltip = this._getTooltipForValue(attribute); + }); + }); + return data; + } + + protected _getTooltipForValue(value: ModifiableDataBaseTotal): string { + return `${value.base} (${game.i18n.localize("DS4.TooltipBaseValue")}) + ${value.mod} (${game.i18n.localize( + "DS4.TooltipModifier", + )}) ➞ ${game.i18n.localize("DS4.TooltipEffects")} ➞ ${value.total}`; + } + + /** @override */ + activateListeners(html: JQuery): void { + super.activateListeners(html); + + // Everything below here is only needed if the sheet is editable + if (!this.options.editable) return; + + // Add Inventory Item + html.find(".item-create").on("click", this._onItemCreate.bind(this)); + + // Update Inventory Item + html.find(".item-edit").on("click", (ev) => { + const li = $(ev.currentTarget).parents(".item"); + const id = li.data("itemId"); + const item = this.actor.getOwnedItem(id); + if (!item) { + throw new Error(game.i18n.format("DS4.ErrorActorDoesNotHaveItem", { id, actor: this.actor.name })); + } + if (!item.sheet) { + throw new Error(game.i18n.localize("DS4.ErrorUnexpectedError")); + } + item.sheet.render(true); + }); + + // Delete Inventory Item + html.find(".item-delete").on("click", (ev) => { + const li = $(ev.currentTarget).parents(".item"); + this.actor.deleteOwnedItem(li.data("itemId")); + li.slideUp(200, () => this.render(false)); + }); + + html.find(".item-change").on("change", this._onItemChange.bind(this)); + + html.find(".rollable-item").on("click", this._onRollItem.bind(this)); + + html.find(".rollable-check").on("click", this._onRollCheck.bind(this)); + } + + /** + * Handle creating a new Owned Item for the actor using initial data defined in the HTML dataset + * @param event - The originating click event + */ + protected _onItemCreate(event: JQuery.ClickEvent): Promise { + event.preventDefault(); + const header = event.currentTarget; + // Get the type of item to create. + // Grab any data associated with this control. + const { type, ...data } = duplicate(header.dataset); + // Initialize a default name. + const name = `New ${type.capitalize()}`; + // Prepare the item object. + const itemData = { + name: name, + type: type, + data: data, + }; + + // Finally, create the item! + return this.actor.createOwnedItem(itemData); + } + + /** + * Handle changes to properties of an Owned Item from within character sheet. + * Can currently properly bind: see getValue(). + * Assumes the item property is given as the value of the HTML element property 'data-property'. + * @param ev - The originating change event + */ + protected _onItemChange(ev: JQuery.ChangeEvent): void { + ev.preventDefault(); + const el: HTMLFormElement = $(ev.currentTarget).get(0); + const id = $(ev.currentTarget).parents(".item").data("itemId"); + const item = duplicate(this.actor.getOwnedItem(id)); + const property: string | undefined = $(ev.currentTarget).data("property"); + + // Early return: + // Disabled => do nothing + if (el.disabled || el.getAttribute("disabled")) return; + // name not given => raise + if (property === undefined) { + throw TypeError("HTML element does not provide 'data-property' attribute"); + } + + // Set new value + const newValue = this.getValue(el); + setProperty(item, property, newValue); + this.actor.updateOwnedItem(item); + } + + /** + * Collect the value of a form element depending on the element's type + * The value is parsed to: + * - Checkbox: boolean + * - Text input: string + * - Number: number + * @param el - The input element to collect the value of + */ + private getValue(el: HTMLFormElement): boolean | string | number { + // One needs to differentiate between e.g. checkboxes (value="on") and select boxes etc. + // Checkbox: + if (el.type === "checkbox") { + const value: boolean = el.checked; + return value; + } + + // Text input: + else if (el.type === "text") { + const value: string = el.value; + return value; + } + + // Numbers: + else if (el.type === "number") { + const value = Number(el.value.trim()); + return value; + } + + // // Ranges: + // else if (el.type === "range") { + // const value: string = el.value.trim(); + // return value; + // } + + // // Radio Checkboxes (untested, cf. FormDataExtended.process) + // else if (el.type === "radio") { + // const chosen: HTMLFormElement = el.find((r: HTMLFormElement) => r["checked"]); + // const value: string = chosen ? chosen.value : null; + // return value; + // } + + // // Multi-Select (untested, cf. FormDataExtended.process) + // else if (el.type === "select-multiple") { + // const value: Array = []; + // el.options.array.forEach((opt: HTMLOptionElement) => { + // if (opt.selected) value.push(opt.value); + // }); + // return value; + + // unsupported: + else { + throw new TypeError("Binding of item property to this type of HTML element not supported; given: " + el); + } + } + + /** + * Handle clickable item rolls. + * @param event - The originating click event + */ + protected _onRollItem(event: JQuery.ClickEvent): void { + event.preventDefault(); + const id = $(event.currentTarget).parents(".item").data("itemId"); + const item = this.actor.getOwnedItem(id); + item.roll(); + } + + /** + * Handle clickable check rolls. + * @param event - The originating click event + */ + protected _onRollCheck(event: JQuery.ClickEvent): void { + event.preventDefault(); + const check = event.currentTarget.dataset["check"]; + this.actor.rollCheck(check); + } + + /** @override */ + _onDragStart(event: DragEvent): void { + const target = event.currentTarget as HTMLElement; + if (!(target instanceof HTMLElement)) return super._onDragStart(event); + + const check = target.dataset.check; + if (!check) return super._onDragStart(event); + + if (!isCheck(check)) throw new Error(game.i18n.format("DS4.ErrorCannotDragMissingCheck", { check })); + + const dragData = { + actorId: this.actor.id, + sceneId: this.actor.isToken ? getCanvas().scene?.id : null, + tokenId: this.actor.isToken ? this.actor.token?.id : null, + type: "Check", + data: check, + }; + + event.dataTransfer?.setData("text/plain", JSON.stringify(dragData)); + } + + /** @override */ + protected async _onDropItem( + event: DragEvent, + data: { type: "Item" } & ( + | { data: DeepPartial> } + | { pack: string } + | { id: string } + ), + ): Promise> { + const item = await DS4Item.fromDropData(data); + if (item && !this.actor.canOwnItemType(item.data.type)) { + notifications.warn( + game.i18n.format("DS4.WarningActorCannotOwnItem", { + actorName: this.actor.name, + actorType: this.actor.data.type, + itemName: item.name, + itemType: item.data.type, + }), + ); + return false; + } + return super._onDropItem(event, data); + } +} diff --git a/src/module/actor/sheets/character-sheet.ts b/src/module/actor/sheets/character-sheet.ts new file mode 100644 index 00000000..437de822 --- /dev/null +++ b/src/module/actor/sheets/character-sheet.ts @@ -0,0 +1,15 @@ +import { DS4ActorSheet } from "./actor-sheet"; + +/** + * The Sheet class for DS4 Character Actors + */ +export class DS4CharacterActorSheet extends DS4ActorSheet { + /** @override */ + static get defaultOptions(): BaseEntitySheet.Options { + const superDefaultOptions = super.defaultOptions; + return mergeObject(superDefaultOptions, { + ...superDefaultOptions, + classes: ["ds4", "sheet", "actor", "character"], + }); + } +} diff --git a/src/module/actor/sheets/creature-sheet.ts b/src/module/actor/sheets/creature-sheet.ts new file mode 100644 index 00000000..8e032e86 --- /dev/null +++ b/src/module/actor/sheets/creature-sheet.ts @@ -0,0 +1,15 @@ +import { DS4ActorSheet } from "./actor-sheet"; + +/** + * The Sheet class for DS4 Creature Actors + */ +export class DS4CreatureActorSheet extends DS4ActorSheet { + /** @override */ + static get defaultOptions(): BaseEntitySheet.Options { + const superDefaultOptions = super.defaultOptions; + return mergeObject(superDefaultOptions, { + ...superDefaultOptions, + classes: ["ds4", "sheet", "actor", "creature"], + }); + } +} diff --git a/src/documents/common/common-data.ts b/src/module/common/common-data.ts similarity index 69% rename from src/documents/common/common-data.ts rename to src/module/common/common-data.ts index c2c1a527..8850062f 100644 --- a/src/documents/common/common-data.ts +++ b/src/module/common/common-data.ts @@ -1,7 +1,3 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - export interface ModifiableData { mod: T; } @@ -15,6 +11,8 @@ export interface HasTotal { total: T; } +export interface ModifiableDataTotal extends ModifiableData, HasTotal {} + export interface ModifiableDataBaseTotal extends ModifiableDataBase, HasTotal {} export interface ResourceData extends ModifiableData { @@ -25,10 +23,6 @@ export interface HasMax { max: T; } -export interface ModifiableDataBaseMax extends ModifiableDataBase, HasMax {} - -export interface ModifiableDataBaseTotalMax extends ModifiableDataBaseMax, HasTotal {} - export interface ResourceDataBaseTotalMax extends ResourceData, HasBase, HasTotal, HasMax {} export interface UsableResource { diff --git a/src/module/config.ts b/src/module/config.ts new file mode 100644 index 00000000..8b21668c --- /dev/null +++ b/src/module/config.ts @@ -0,0 +1,388 @@ +export const DS4 = { + // ASCII Artwork + ASCII: String.raw`_____________________________________________________________________________________________ + ____ _ _ _ _ ____ _____ ___ _ _ ____ _ _ __ _______ ____ ____ _ _ +| _ \| | | | \ | |/ ___| ____/ _ \| \ | / ___|| | / \\ \ / / ____| _ \/ ___| | || | +| | | | | | | \| | | _| _|| | | | \| \___ \| | / _ \\ V /| _| | |_) \___ \ | || |_ +| |_| | |_| | |\ | |_| | |__| |_| | |\ |___) | |___ / ___ \| | | |___| _ < ___) | |__ _| +|____/ \___/|_| \_|\____|_____\___/|_| \_|____/|_____/_/ \_\_| |_____|_| \_\____/ |_| +=============================================================================================`, + + /** + * A dictionary of dictionaries each mapping keys to localized strings + * resp. their localization keys. + * The localization is assumed to take place on each reload. + */ + i18n: { + /** + * Define the set of acttack types that can be performed with weapon items + */ + attackTypes: { + melee: "DS4.AttackTypeMelee", + ranged: "DS4.AttackTypeRanged", + meleeRanged: "DS4.AttackTypeMeleeRanged", + }, + + /** + * Define the set of item availabilties + */ + itemAvailabilities: { + unset: "DS4.ItemAvailabilityUnset", + hamlet: "DS4.ItemAvailabilityHamlet", + village: "DS4.ItemAvailabilityVilage", + city: "DS4.ItemAvailabilityCity", + elves: "DS4.ItemAvailabilityElves", + dwarves: "DS4.ItemAvailabilityDwarves", + nowhere: "DS4.ItemAvailabilityNowhere", + }, + + /** + * Define the set of item types + */ + itemTypes: { + weapon: "DS4.ItemTypeWeapon", + armor: "DS4.ItemTypeArmor", + shield: "DS4.ItemTypeShield", + spell: "DS4.ItemTypeSpell", + equipment: "DS4.ItemTypeEquipment", + loot: "DS4.ItemTypeLoot", + talent: "DS4.ItemTypeTalent", + racialAbility: "DS4.ItemTypeRacialAbility", + language: "DS4.ItemTypeLanguage", + alphabet: "DS4.ItemTypeAlphabet", + specialCreatureAbility: "DS4.ItemTypeSpecialCreatureAbility", + }, + + /** + * Define the set of armor types, a character may only wear one item of each at any given time + */ + armorTypes: { + body: "DS4.ArmorTypeBody", + helmet: "DS4.ArmorTypeHelmet", + vambrace: "DS4.ArmorTypeVambrace", + greaves: "DS4.ArmorTypeGreaves", + vambraceGreaves: "DS4.ArmorTypeVambraceGreaves", + }, + + /** + * Define abbreviations for the armor types + */ + armorTypesAbbr: { + body: "DS4.ArmorTypeBodyAbbr", + helmet: "DS4.ArmorTypeHelmetAbbr", + vambrace: "DS4.ArmorTypeVambraceAbbr", + greaves: "DS4.ArmorTypeGreavesAbbr", + vambraceGreaves: "DS4.ArmorTypeVambraceGreavesAbbr", + }, + + /** + * Define the set of armor materials, used to determine if a character may wear the armor without additional penalties + */ + armorMaterialTypes: { + cloth: "DS4.ArmorMaterialTypeCloth", + leather: "DS4.ArmorMaterialTypeLeather", + chain: "DS4.ArmorMaterialTypeChain", + plate: "DS4.ArmorMaterialTypePlate", + }, + + /** + * Define the abbreviations of armor materials + */ + armorMaterialTypesAbbr: { + cloth: "DS4.ArmorMaterialTypeClothAbbr", + leather: "DS4.ArmorMaterialTypeLeatherAbbr", + chain: "DS4.ArmorMaterialTypeChainAbbr", + plate: "DS4.ArmorMaterialTypePlateAbbr", + }, + + spellTypes: { + spellcasting: "DS4.SpellTypeSpellcasting", + targetedSpellcasting: "DS4.SpellTypeTargetedSpellcasting", + }, + + spellCategories: { + healing: "DS4.SpellCategoryHealing", + fire: "DS4.SpellCategoryFire", + ice: "DS4.SpellCategoryIce", + light: "DS4.SpellCategoryLight", + darkness: "DS4.SpellCategoryDarkness", + mindAffecting: "DS4.SpellCategoryMindAffecting", + electricity: "DS4.SpellCategoryElectricity", + none: "DS4.SpellCategoryNone", + unset: "DS4.SpellCategoryUnset", + }, + + /** + * Define the set of actor types + */ + actorTypes: { + character: "DS4.ActorTypeCharacter", + creature: "DS4.ActorTypeCreature", + }, + + /** + * Define the set of attributes an actor has + */ + attributes: { + body: "DS4.AttributeBody", + mobility: "DS4.AttributeMobility", + mind: "DS4.AttributeMind", + }, + + /** + * Define the set of traits an actor has + */ + traits: { + strength: "DS4.TraitStrength", + agility: "DS4.TraitAgility", + intellect: "DS4.TraitIntellect", + constitution: "DS4.TraitConstitution", + dexterity: "DS4.TraitDexterity", + aura: "DS4.TraitAura", + }, + + /** + * Define the set of combat values an actor has + */ + combatValues: { + hitPoints: "DS4.CombatValuesHitPoints", + defense: "DS4.CombatValuesDefense", + initiative: "DS4.CombatValuesInitiative", + movement: "DS4.CombatValuesMovement", + meleeAttack: "DS4.CombatValuesMeleeAttack", + rangedAttack: "DS4.CombatValuesRangedAttack", + spellcasting: "DS4.CombatValuesSpellcasting", + targetedSpellcasting: "DS4.CombatValuesTargetedSpellcasting", + }, + + /** + * Define the base info of a character + */ + characterBaseInfo: { + race: "DS4.CharacterBaseInfoRace", + class: "DS4.CharacterBaseInfoClass", + heroClass: "DS4.CharacterBaseInfoHeroClass", + culture: "DS4.CharacterBaseInfoCulture", + }, + + /** + * Define the progression info of a character + */ + characterProgression: { + level: "DS4.CharacterProgressionLevel", + experiencePoints: "DS4.CharacterProgressionExperiencePoints", + talentPoints: "DS4.CharacterProgressionTalentPoints", + progressPoints: "DS4.CharacterProgressionProgressPoints", + }, + + /** + * Define the language info of a character + */ + characterLanguage: { + languages: "DS4.CharacterLanguageLanguages", + alphabets: "DS4.CharacterLanguageAlphabets", + }, + + /** + * Define the profile info of a character + */ + characterProfile: { + biography: "DS4.CharacterProfileBiography", + gender: "DS4.CharacterProfileGender", + birthday: "DS4.CharacterProfileBirthday", + birthplace: "DS4.CharacterProfileBirthplace", + age: "DS4.CharacterProfileAge", + height: "DS4.CharacterProfileHeight", + hairColor: "DS4.CharacterProfileHairColor", + weight: "DS4.CharacterProfileWeight", + eyeColor: "DS4.CharacterProfileEyeColor", + specialCharacteristics: "DS4.CharacterProfileSpecialCharacteristics", + }, + /** + * Define currency elements of a character + */ + characterCurrency: { + gold: "DS4.CharacterCurrencyGold", + silver: "DS4.CharacterCurrencySilver", + copper: "DS4.CharacterCurrencyCopper", + }, + + /** + * Define the different creature types a creature can be + */ + creatureTypes: { + animal: "DS4.CreatureTypeAnimal", + construct: "DS4.CreatureTypeConstruct", + humanoid: "DS4.CreatureTypeHumanoid", + magicalEntity: "DS4.CreatureTypeMagicalEntity", + plantBeing: "DS4.CreatureTypePlantBeing", + undead: "DS4.CreatureTypeUndead", + }, + + /** + * Define the different size categories creatures fall into + */ + creatureSizeCategories: { + tiny: "DS4.CreatureSizeCategoryTiny", + small: "DS4.CreatureSizeCategorySmall", + normal: "DS4.CreatureSizeCategoryNormal", + large: "DS4.CreatureSizeCategoryLarge", + huge: "DS4.CreatureSizeCategoryHuge", + colossal: "DS4.CreatureSizeCategoryColossal", + }, + + /** + * Define the base info of a creature + */ + creatureBaseInfo: { + loot: "DS4.CreatureBaseInfoLoot", + foeFactor: "DS4.CreatureBaseInfoFoeFactor", + creatureType: "DS4.CreatureBaseInfoCreatureType", + sizeCategory: "DS4.CreatureBaseInfoSizeCategory", + experiencePoints: "DS4.CreatureBaseInfoExperiencePoints", + description: "DS4.CreatureBaseInfoDescription", + }, + + /** + * Define translations for available distance units + */ + distanceUnits: { + meter: "DS4.UnitMeters", + kilometer: "DS4.UnitKilometers", + custom: "DS4.UnitCustom", + }, + /** + * Define abbreviations for available distance units + */ + distanceUnitsAbbr: { + meter: "DS4.UnitMetersAbbr", + kilometer: "DS4.UnitKilometersAbbr", + custom: "DS4.UnitCustomAbbr", + }, + + /** + * Define translations for available distance units + */ + temporalUnits: { + rounds: "DS4.UnitRounds", + minutes: "DS4.UnitMinutes", + hours: "DS4.UnitHours", + days: "DS4.UnitDays", + custom: "DS4.UnitCustom", + }, + + /** + * Define abbreviations for available units + */ + temporalUnitsAbbr: { + rounds: "DS4.UnitRoundsAbbr", + minutes: "DS4.UnitMinutesAbbr", + hours: "DS4.UnitHoursAbbr", + days: "DS4.UnitDaysAbbr", + custom: "DS4.UnitCustomAbbr", + }, + + checks: { + appraise: "DS4.ChecksAppraise", + changeSpell: "DS4.ChecksChangeSpell", + climb: "DS4.ChecksClimb", + communicate: "DS4.ChecksCommunicate", + decipherScript: "DS4.ChecksDecipherScript", + defend: "DS4.ChecksDefend", + defyPoison: "DS4.ChecksDefyPoison", + disableTraps: "DS4.ChecksDisableTraps", + featOfStrength: "DS4.ChecksFeatOfStrength", + flirt: "DS4.ChecksFlirt", + haggle: "DS4.ChecksHaggle", + hide: "DS4.ChecksHide", + identifyMagic: "DS4.ChecksIdentifyMagic", + jump: "DS4.ChecksJump", + knowledge: "DS4.ChecksKnowledge", + openLock: "DS4.ChecksOpenLock", + perception: "DS4.ChecksPerception", + pickPocket: "DS4.ChecksPickPocket", + readTracks: "DS4.ChecksReadTracks", + resistDisease: "DS4.ChecksResistDisease", + ride: "DS4.ChecksRide", + search: "DS4.ChecksSearch", + senseMagic: "DS4.ChecksSenseMagic", + sneak: "DS4.ChecksSneak", + startFire: "DS4.ChecksStartFire", + swim: "DS4.ChecksSwim", + wakeUp: "DS4.ChecksWakeUp", + workMechanism: "DS4.ChecksWorkMechanism", + }, + }, + + /** + * A dictionary of dictionaries mapping keys to icon file paths. + */ + icons: { + /** + * Define the file paths to icon images + */ + attackTypes: { + melee: "systems/ds4/assets/icons/official/combat-values/melee-attack.png", + meleeRanged: "systems/ds4/assets/icons/official/combat-values/melee-ranged-attack.png", + ranged: "systems/ds4/assets/icons/official/combat-values/ranged-attack.png", + }, + + /** + * Define the file paths to icon images + */ + spellTypes: { + spellcasting: "systems/ds4/assets/icons/official/combat-values/spellcasting.png", + targetedSpellcasting: "systems/ds4/assets/icons/official/combat-values/targeted-spellcasting.png", + }, + + /** + * Define the file paths to check images + */ + checks: { + appraise: "systems/ds4/assets/icons/game-icons/two-coins.svg", + changeSpell: "systems/ds4/assets/icons/game-icons/card-exchange.svg", + climb: "systems/ds4/assets/icons/game-icons/mountain-climbing.svg", + communicate: "systems/ds4/assets/icons/game-icons/discussion.svg", + decipherScript: "systems/ds4/assets/icons/game-icons/rune-stone.svg", + defend: "systems/ds4/assets/icons/game-icons/shield.svg", + defyPoison: "systems/ds4/assets/icons/game-icons/poison-bottle.svg", + disableTraps: "systems/ds4/assets/icons/game-icons/wolf-trap.svg", + featOfStrength: "systems/ds4/assets/icons/game-icons/biceps.svg", + flirt: "systems/ds4/assets/icons/game-icons/charm.svg", + haggle: "systems/ds4/assets/icons/game-icons/cash.svg", + hide: "systems/ds4/assets/icons/game-icons/hidden.svg", + identifyMagic: "systems/ds4/assets/icons/game-icons/uncertainty.svg", + jump: "systems/ds4/assets/icons/game-icons/jump-across.svg", + knowledge: "systems/ds4/assets/icons/game-icons/bookshelf.svg", + openLock: "systems/ds4/assets/icons/game-icons/padlock-open.svg", + perception: "systems/ds4/assets/icons/game-icons/awareness.svg", + pickPocket: "systems/ds4/assets/icons/game-icons/robber-hand.svg", + readTracks: "systems/ds4/assets/icons/game-icons/deer-track.svg", + resistDisease: "systems/ds4/assets/icons/game-icons/virus.svg", + ride: "systems/ds4/assets/icons/game-icons/cavalry.svg", + search: "systems/ds4/assets/icons/game-icons/magnifying-glass.svg", + senseMagic: "systems/ds4/assets/icons/game-icons/sparkles.svg", + sneak: "systems/ds4/assets/icons/game-icons/mute.svg", + startFire: "systems/ds4/assets/icons/game-icons/campfire.svg", + swim: "systems/ds4/assets/icons/game-icons/pool-dive.svg", + wakeUp: "systems/ds4/assets/icons/game-icons/alarm-clock.svg", + workMechanism: "systems/ds4/assets/icons/game-icons/lever.svg", + }, + }, + + /** + * Define the profile info types for handlebars of a character + */ + characterProfileDTypes: { + biography: "String", + gender: "String", + birthday: "String", + birthplace: "String", + age: "Number", + height: "Number", + hairColor: "String", + weight: "Number", + eyeColor: "String", + specialCharacteristics: "String", + }, +}; diff --git a/src/module/ds4.ts b/src/module/ds4.ts new file mode 100644 index 00000000..337bb604 --- /dev/null +++ b/src/module/ds4.ts @@ -0,0 +1,3 @@ +import registerForHooks from "./hooks/hooks"; + +registerForHooks(); diff --git a/src/module/global.d.ts b/src/module/global.d.ts new file mode 100644 index 00000000..4a81cb10 --- /dev/null +++ b/src/module/global.d.ts @@ -0,0 +1,7 @@ +declare namespace ClientSettings { + interface Values { + "ds4.systemMigrationVersion": number; + "ds4.useSlayingDiceForAutomatedChecks": boolean; + "ds4.customChecks": Record; + } +} diff --git a/src/module/handlebars/handlebars-helpers.ts b/src/module/handlebars/handlebars-helpers.ts new file mode 100644 index 00000000..fef92681 --- /dev/null +++ b/src/module/handlebars/handlebars-helpers.ts @@ -0,0 +1,12 @@ +export default function registerHandlebarsHelpers(): void { + Object.entries(helpers).forEach(([key, helper]) => Handlebars.registerHelper(key, helper)); +} + +const helpers = { + htmlToPlainText: (input: string | null | undefined): string | null | undefined => { + if (!input) return; + return $(input).text(); + }, + + isEmpty: (input: Array | null | undefined): boolean => (input?.length ?? 0) === 0, +}; diff --git a/src/module/handlebars/handlebars-partials.ts b/src/module/handlebars/handlebars-partials.ts new file mode 100644 index 00000000..64a5f5a8 --- /dev/null +++ b/src/module/handlebars/handlebars-partials.ts @@ -0,0 +1,34 @@ +export default async function registerHandlebarsPartials(): Promise { + const templatePaths = [ + "systems/ds4/templates/sheets/actor/components/character-progression.hbs", + "systems/ds4/templates/sheets/actor/components/check.hbs", + "systems/ds4/templates/sheets/actor/components/checks.hbs", + "systems/ds4/templates/sheets/actor/components/combat-value.hbs", + "systems/ds4/templates/sheets/actor/components/combat-values.hbs", + "systems/ds4/templates/sheets/actor/components/core-value.hbs", + "systems/ds4/templates/sheets/actor/components/core-values.hbs", + "systems/ds4/templates/sheets/actor/components/currency.hbs", + "systems/ds4/templates/sheets/actor/components/item-list-entry.hbs", + "systems/ds4/templates/sheets/actor/components/item-list-header.hbs", + "systems/ds4/templates/sheets/actor/components/items-overview.hbs", + "systems/ds4/templates/sheets/actor/components/overview-add-button.hbs", + "systems/ds4/templates/sheets/actor/components/overview-control-buttons.hbs", + "systems/ds4/templates/sheets/actor/components/rollable-image.hbs", + "systems/ds4/templates/sheets/actor/components/talent-rank-equation.hbs", + "systems/ds4/templates/sheets/actor/tabs/biography.hbs", + "systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs", + "systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs", + "systems/ds4/templates/sheets/actor/tabs/description.hbs", + "systems/ds4/templates/sheets/actor/tabs/profile.hbs", + "systems/ds4/templates/sheets/actor/tabs/special-creature-abilities.hbs", + "systems/ds4/templates/sheets/actor/tabs/spells.hbs", + "systems/ds4/templates/sheets/actor/tabs/talents-abilities.hbs", + "systems/ds4/templates/sheets/actor/tabs/values.hbs", + "systems/ds4/templates/sheets/item/components/body.hbs", + "systems/ds4/templates/sheets/item/components/sheet-header.hbs", + "systems/ds4/templates/sheets/item/tabs/description.hbs", + "systems/ds4/templates/sheets/item/tabs/details.hbs", + "systems/ds4/templates/sheets/item/tabs/effects.hbs", + ]; + await loadTemplates(templatePaths); +} diff --git a/src/module/helpers.ts b/src/module/helpers.ts new file mode 100644 index 00000000..21a8c7db --- /dev/null +++ b/src/module/helpers.ts @@ -0,0 +1,6 @@ +export function getCanvas(): Canvas { + if (!(canvas instanceof Canvas) || !canvas.ready) { + throw new Error(game.i18n.localize("DS4.ErrorCanvasIsNotInitialized")); + } + return canvas; +} diff --git a/src/module/hooks/hooks.ts b/src/module/hooks/hooks.ts new file mode 100644 index 00000000..72509895 --- /dev/null +++ b/src/module/hooks/hooks.ts @@ -0,0 +1,13 @@ +import registerForHotbarDropHook from "./hotbar-drop"; +import registerForInitHook from "./init"; +import registerForReadyHook from "./ready"; +import registerForRenderHooks from "./render"; +import registerForSetupHook from "./setup"; + +export default function registerForHooks(): void { + registerForHotbarDropHook(); + registerForInitHook(); + registerForReadyHook(); + registerForRenderHooks(); + registerForSetupHook(); +} diff --git a/src/module/hooks/hotbar-drop.ts b/src/module/hooks/hotbar-drop.ts new file mode 100644 index 00000000..725b870d --- /dev/null +++ b/src/module/hooks/hotbar-drop.ts @@ -0,0 +1,36 @@ +import { isCheck } from "../actor/actor-prepared-data"; +import { DS4Item } from "../item/item"; +import { DS4ItemData } from "../item/item-data"; +import { createRollCheckMacro } from "../macros/roll-check"; +import { createRollItemMacro } from "../macros/roll-item"; +import notifications from "../ui/notifications"; + +export default function registerForHotbarDropHook(): void { + Hooks.on("hotbarDrop", async (hotbar: Hotbar, data: { type: string } & Record, slot: string) => { + switch (data.type) { + case "Item": { + if (!("data" in data)) { + return notifications.warn(game.i18n.localize("DS4.WarningMacrosCanOnlyBeCreatedForOwnedItems")); + } + const itemData = data.data as DS4ItemData; + + if (!DS4Item.rollableItemTypes.includes(itemData.type)) { + return notifications.warn( + game.i18n.format("DS4.WarningItemIsNotRollable", { + name: itemData.name, + id: itemData._id, + type: itemData.type, + }), + ); + } + return createRollItemMacro(itemData, slot); + } + case "Check": { + if (!("data" in data) || typeof data.data !== "string" || !isCheck(data.data)) { + return notifications.warn(game.i18n.localize("DS4.WarningInvalidCheckDropped")); + } + return createRollCheckMacro(data.data, slot); + } + } + }); +} diff --git a/src/module/hooks/init.ts b/src/module/hooks/init.ts new file mode 100644 index 00000000..4722da94 --- /dev/null +++ b/src/module/hooks/init.ts @@ -0,0 +1,58 @@ +import { DS4Actor } from "../actor/actor"; +import { DS4CharacterActorSheet } from "../actor/sheets/character-sheet"; +import { DS4CreatureActorSheet } from "../actor/sheets/creature-sheet"; +import { DS4 } from "../config"; +import registerHandlebarsHelpers from "../handlebars/handlebars-helpers"; +import registerHandlebarsPartials from "../handlebars/handlebars-partials"; +import { DS4Item } from "../item/item"; +import { DS4ItemSheet } from "../item/item-sheet"; +import { macros } from "../macros/macros"; +import { migration } from "../migrations"; +import { DS4Check } from "../rolls/check"; +import { createCheckRoll } from "../rolls/check-factory"; +import { DS4Roll } from "../rolls/roll"; +import registerSlayingDiceModifier from "../rolls/slaying-dice-modifier"; +import { registerSystemSettings } from "../settings"; + +export default function registerForInitHook(): void { + Hooks.once("init", init); +} + +async function init() { + console.log(`DS4 | Initializing the DS4 Game System\n${DS4.ASCII}`); + + game.ds4 = { + DS4Actor, + DS4Item, + DS4, + createCheckRoll, + migration, + macros, + }; + + CONFIG.DS4 = DS4; + + CONFIG.Actor.entityClass = DS4Actor; + CONFIG.Item.entityClass = DS4Item; + + CONFIG.Actor.typeLabels = DS4.i18n.actorTypes; + CONFIG.Item.typeLabels = DS4.i18n.itemTypes; + + CONFIG.Dice.types.push(DS4Check); + CONFIG.Dice.terms.s = DS4Check; + + CONFIG.Dice.rolls.unshift(DS4Roll); + + registerSlayingDiceModifier(); + + registerSystemSettings(); + + Actors.unregisterSheet("core", ActorSheet); + Actors.registerSheet("ds4", DS4CharacterActorSheet, { types: ["character"], makeDefault: true }); + Actors.registerSheet("ds4", DS4CreatureActorSheet, { types: ["creature"], makeDefault: true }); + Items.unregisterSheet("core", ItemSheet); + Items.registerSheet("ds4", DS4ItemSheet, { makeDefault: true }); + + await registerHandlebarsPartials(); + registerHandlebarsHelpers(); +} diff --git a/src/module/hooks/ready.ts b/src/module/hooks/ready.ts new file mode 100644 index 00000000..07cbb899 --- /dev/null +++ b/src/module/hooks/ready.ts @@ -0,0 +1,7 @@ +import { migration } from "../migrations"; + +export default function registerForReadyHook(): void { + Hooks.once("ready", () => { + migration.migrate(); + }); +} diff --git a/src/module/hooks/render.ts b/src/module/hooks/render.ts new file mode 100644 index 00000000..b1e0fc2e --- /dev/null +++ b/src/module/hooks/render.ts @@ -0,0 +1,23 @@ +/** + * @remarks The render hooks of all classes in the class hierarchy are called, so e.g. for a {@link Dialog}, both the + * "renderDialog" hook and the "renderApplication" hook are called (in this order). + */ +export default function registerForRenderHooks(): void { + ["renderApplication", "renderActorSheet", "renderItemSheet"].forEach((hook) => { + Hooks.on(hook, selectTargetInputOnFocus); + }); +} + +/** + * Select the text of input elements in given application when focused via an on focus listener. + * + * @param app - The application in which to activate the listener. + * @param html - The {@link JQuery} representing the HTML of the application. + */ +function selectTargetInputOnFocus(app: Application, html: JQuery) { + $(html) + .find("input") + .on("focus", (ev: JQuery.FocusEvent) => { + ev.currentTarget.select(); + }); +} diff --git a/src/module/hooks/setup.ts b/src/module/hooks/setup.ts new file mode 100644 index 00000000..e87272ca --- /dev/null +++ b/src/module/hooks/setup.ts @@ -0,0 +1,28 @@ +import { DS4 } from "../config"; + +export default function registerForSetupHooks(): void { + Hooks.once("setup", () => { + localizeAndSortConfigObjects(); + }); +} + +/** + * Localizes all objects in {@link DS4.i18n} and sorts them unless they are explicitly excluded. + */ +function localizeAndSortConfigObjects() { + const noSort = ["attributes", "traits", "combatValues", "creatureSizeCategories"]; + + const localizeObject = (obj: T, sort = true): T => { + const localized = Object.entries(obj).map(([key, value]) => { + return [key, game.i18n.localize(value)]; + }); + if (sort) localized.sort((a, b) => a[1].localeCompare(b[1])); + return Object.fromEntries(localized); + }; + + DS4.i18n = Object.fromEntries( + Object.entries(DS4.i18n).map(([key, value]) => { + return [key, localizeObject(value, !noSort.includes(key))]; + }), + ) as typeof DS4.i18n; +} diff --git a/src/module/item/item-data.ts b/src/module/item/item-data.ts new file mode 100644 index 00000000..7fa85fab --- /dev/null +++ b/src/module/item/item-data.ts @@ -0,0 +1,131 @@ +import { ModifiableDataBase } from "../common/common-data"; +import { DS4 } from "../config"; + +export type ItemType = keyof typeof DS4.i18n.itemTypes; + +export type DS4ItemData = + | DS4WeaponData + | DS4ArmorData + | DS4ShieldData + | DS4SpellData + | DS4EquipmentData + | DS4LootData + | DS4TalentData + | DS4RacialAbilityData + | DS4LanguageData + | DS4AlphabetData + | DS4SpecialCreatureAbilityData; + +export interface DS4ItemDataHelper extends Item.Data { + type: U; +} + +type DS4WeaponData = DS4ItemDataHelper; +type DS4ArmorData = DS4ItemDataHelper; +type DS4ShieldData = DS4ItemDataHelper; +type DS4SpellData = DS4ItemDataHelper; +type DS4EquipmentData = DS4ItemDataHelper; +type DS4LootData = DS4ItemDataHelper; +type DS4TalentData = DS4ItemDataHelper; +type DS4RacialAbilityData = DS4ItemDataHelper; +type DS4LanguageData = DS4ItemDataHelper; +type DS4AlphabetData = DS4ItemDataHelper; +type DS4SpecialCreatureAbilityData = DS4ItemDataHelper; + +// templates + +interface DS4ItemDataDataBase { + description: string; +} +interface DS4ItemDataDataPhysical { + quantity: number; + price: number; + availability: "hamlet" | "village" | "city" | "elves" | "dwarves" | "nowhere" | "unset"; + storageLocation: string; +} + +export function isDS4ItemDataTypePhysical(input: DS4ItemData["data"]): boolean { + return "quantity" in input && "price" in input && "availability" in input && "storageLocation" in input; +} + +interface DS4ItemDataDataEquipable { + equipped: boolean; +} + +interface DS4ItemDataDataProtective { + armorValue: number; +} + +interface UnitData { + value: string; + unit: UnitType; +} +type TemporalUnit = "rounds" | "minutes" | "hours" | "days" | "custom"; +type DistanceUnit = "meter" | "kilometer" | "custom"; + +// types + +export interface DS4WeaponDataData extends DS4ItemDataDataBase, DS4ItemDataDataPhysical, DS4ItemDataDataEquipable { + attackType: AttackType; + weaponBonus: number; + opponentDefense: number; +} + +export type AttackType = keyof typeof DS4["i18n"]["attackTypes"]; + +export interface DS4ArmorDataData + extends DS4ItemDataDataBase, + DS4ItemDataDataPhysical, + DS4ItemDataDataEquipable, + DS4ItemDataDataProtective { + armorMaterialType: "cloth" | "leather" | "chain" | "plate"; + armorType: "body" | "helmet" | "vambrace" | "greaves" | "vambraceGreaves"; +} + +export interface DS4TalentDataData extends DS4ItemDataDataBase { + rank: DS4TalentRank; +} + +export interface DS4TalentRank extends ModifiableDataBase { + max: number; +} + +export interface DS4SpellDataData extends DS4ItemDataDataBase, DS4ItemDataDataEquipable { + spellType: "spellcasting" | "targetedSpellcasting"; + bonus: string; + spellCategory: + | "healing" + | "fire" + | "ice" + | "light" + | "darkness" + | "mindAffecting" + | "electricity" + | "none" + | "unset"; + maxDistance: UnitData; + effectRadius: UnitData; + duration: UnitData; + cooldownDuration: UnitData; + scrollPrice: number; +} + +export interface DS4ShieldDataData + extends DS4ItemDataDataBase, + DS4ItemDataDataPhysical, + DS4ItemDataDataEquipable, + DS4ItemDataDataProtective {} + +export interface DS4EquipmentDataData extends DS4ItemDataDataBase, DS4ItemDataDataPhysical, DS4ItemDataDataEquipable {} + +export interface DS4LootDataData extends DS4ItemDataDataBase, DS4ItemDataDataPhysical {} + +export type DS4RacialAbilityDataData = DS4ItemDataDataBase; + +export type DS4LanguageDataData = DS4ItemDataDataBase; + +export type DS4AlphabetDataData = DS4ItemDataDataBase; + +export interface DS4SpecialCreatureAbilityDataData extends DS4ItemDataDataBase { + experiencePoints: number; +} diff --git a/src/module/item/item-prepared-data.ts b/src/module/item/item-prepared-data.ts new file mode 100644 index 00000000..4dede57f --- /dev/null +++ b/src/module/item/item-prepared-data.ts @@ -0,0 +1,80 @@ +import { HasTotal } from "../common/common-data"; +import { + DS4AlphabetDataData, + DS4ArmorDataData, + DS4EquipmentDataData, + DS4ItemDataHelper, + DS4LanguageDataData, + DS4LootDataData, + DS4RacialAbilityDataData, + DS4ShieldDataData, + DS4SpecialCreatureAbilityDataData, + DS4SpellDataData, + DS4TalentDataData, + DS4TalentRank, + DS4WeaponDataData, +} from "./item-data"; + +export type DS4ItemPreparedData = + | DS4WeaponPreparedData + | DS4ArmorPreparedData + | DS4ShieldPreparedData + | DS4SpellPreparedData + | DS4EquipmentPreparedData + | DS4LootPreparedData + | DS4TalentPreparedData + | DS4RacialAbilityPreparedData + | DS4LanguagePreparedData + | DS4AlphabetPreparedData + | DS4SpecialCreatureAbilityPreparedData; + +type DS4WeaponPreparedData = DS4ItemDataHelper; +type DS4ArmorPreparedData = DS4ItemDataHelper; +type DS4ShieldPreparedData = DS4ItemDataHelper; +type DS4SpellPreparedData = DS4ItemDataHelper; +type DS4EquipmentPreparedData = DS4ItemDataHelper; +type DS4LootPreparedData = DS4ItemDataHelper; +type DS4TalentPreparedData = DS4ItemDataHelper; +type DS4RacialAbilityPreparedData = DS4ItemDataHelper; +type DS4LanguagePreparedData = DS4ItemDataHelper; +type DS4AlphabetPreparedData = DS4ItemDataHelper; +type DS4SpecialCreatureAbilityPreparedData = DS4ItemDataHelper< + DS4SpecialCreatureAbilityPreparedDataData, + "specialCreatureAbility" +>; + +// templates + +interface DS4ItemPreparedDataDataRollable { + rollable: boolean; +} + +//types + +interface DS4WeaponPreparedDataData extends DS4WeaponDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4ArmorPreparedDataData extends DS4ArmorDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4ShieldPreparedDataData extends DS4ShieldDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4SpellPreparedDataData extends DS4SpellDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4EquipmentPreparedDataData extends DS4EquipmentDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4LootPreparedDataData extends DS4LootDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4TalentPreparedDataData extends DS4TalentDataData, DS4ItemPreparedDataDataRollable { + rank: DS4TalentPreparedRank; +} + +interface DS4TalentPreparedRank extends DS4TalentRank, HasTotal {} + +interface DS4RacialAbilityPreparedDataData extends DS4RacialAbilityDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4LanguagePreparedDataData extends DS4LanguageDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4AlphabetPreparedDataData extends DS4AlphabetDataData, DS4ItemPreparedDataDataRollable {} + +interface DS4SpecialCreatureAbilityPreparedDataData + extends DS4SpecialCreatureAbilityDataData, + DS4ItemPreparedDataDataRollable {} diff --git a/src/module/item/item-sheet.ts b/src/module/item/item-sheet.ts new file mode 100644 index 00000000..2906e9d4 --- /dev/null +++ b/src/module/item/item-sheet.ts @@ -0,0 +1,123 @@ +import { DS4 } from "../config"; +import notifications from "../ui/notifications"; +import { DS4Item } from "./item"; +import { isDS4ItemDataTypePhysical } from "./item-data"; + +/** + * The Sheet class for DS4 Items + */ +export class DS4ItemSheet extends ItemSheet> { + /** @override */ + static get defaultOptions(): BaseEntitySheet.Options { + const superDefaultOptions = super.defaultOptions; + return mergeObject(superDefaultOptions, { + width: 540, + height: 400, + classes: ["ds4", "sheet", "item"], + tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }], + scrollY: [".sheet-body"], + template: superDefaultOptions.template, + viewPermission: superDefaultOptions.viewPermission, + closeOnSubmit: superDefaultOptions.closeOnSubmit, + submitOnChange: superDefaultOptions.submitOnChange, + submitOnClose: superDefaultOptions.submitOnClose, + editable: superDefaultOptions.editable, + baseApplication: superDefaultOptions.baseApplication, + top: superDefaultOptions.top, + left: superDefaultOptions.left, + popOut: superDefaultOptions.popOut, + minimizable: superDefaultOptions.minimizable, + resizable: superDefaultOptions.resizable, + id: superDefaultOptions.id, + dragDrop: superDefaultOptions.dragDrop, + filters: superDefaultOptions.filters, + title: superDefaultOptions.title, + }); + } + + /** @override */ + get template(): string { + const basePath = "systems/ds4/templates/sheets/item"; + return `${basePath}/${this.item.data.type}-sheet.hbs`; + } + + /** @override */ + async getData(): Promise> { + const data = { + ...(await super.getData()), + config: DS4, + isOwned: this.item.isOwned, + actor: this.item.actor, + isPhysical: isDS4ItemDataTypePhysical(this.item.data.data), + }; + return data; + } + + /** @override */ + setPosition(options: Partial = {}): Application.Position & { height: number } { + const position = super.setPosition(options); + if ("find" in this.element) { + const sheetBody = this.element.find(".sheet-body"); + const bodyHeight = position.height - 192; + sheetBody.css("height", bodyHeight); + } else { + console.log("Failure setting position."); + } + return position; + } + + /** @override */ + activateListeners(html: JQuery): void { + super.activateListeners(html); + + if (!this.options.editable) return; + + html.find(".effect-control").on("click", this._onManageActiveEffect.bind(this)); + } + + /** + * Handle management of ActiveEffects. + * @param event - he originating click event + */ + protected async _onManageActiveEffect(event: JQuery.ClickEvent): Promise { + event.preventDefault(); + + if (this.item.isOwned) { + return notifications.warn(game.i18n.localize("DS4.WarningManageActiveEffectOnOwnedItem")); + } + const a = event.currentTarget; + const li = $(a).parents(".effect"); + + switch (a.dataset["action"]) { + case "create": + return this._createActiveEffect(); + case "edit": + const id = li.data("effectId"); + const effect = this.item.effects.get(id); + if (!effect) { + throw new Error(game.i18n.format("DS4.ErrorItemDoesNotHaveEffect", { id, item: this.item.name })); + } + return effect.sheet.render(true); + case "delete": { + return this.item.deleteEmbeddedEntity("ActiveEffect", li.data("effectId")); + } + } + } + + /** + * Create a new ActiveEffect for the item using default data. + */ + protected async _createActiveEffect(): Promise { + const label = `New Effect`; + + const createData = { + label: label, + changes: [], + duration: {}, + transfer: true, + }; + + const effect = ActiveEffect.create(createData, this.item); + return effect.create({}); + } +} diff --git a/src/module/item/item.ts b/src/module/item/item.ts new file mode 100644 index 00000000..00816b7c --- /dev/null +++ b/src/module/item/item.ts @@ -0,0 +1,190 @@ +import { DS4Actor } from "../actor/actor"; +import { DS4 } from "../config"; +import { createCheckRoll } from "../rolls/check-factory"; +import notifications from "../ui/notifications"; +import { AttackType, DS4ItemData, ItemType } from "./item-data"; +import { DS4ItemPreparedData } from "./item-prepared-data"; + +/** + * The Item class for DS4 + */ +export class DS4Item extends Item { + /** + * @override + */ + prepareData(): void { + super.prepareData(); + this.prepareDerivedData(); + } + + prepareDerivedData(): void { + if (this.data.type === "talent") { + const data = this.data.data; + data.rank.total = data.rank.base + data.rank.mod; + } + if (this.data.type === "weapon" || this.data.type === "spell") { + this.data.data.rollable = this.data.data.equipped; + } else { + this.data.data.rollable = false; + } + } + + isNonEquippedEuipable(): boolean { + return "equipped" in this.data.data && !this.data.data.equipped; + } + + /** + * The number of times that active effect changes originating from this item should be applied. + */ + get activeEffectFactor(): number | undefined { + if (this.data.type === "talent") { + return this.data.data.rank.total; + } + return 1; + } + + /** + * The list of item types that are rollable. + */ + static get rollableItemTypes(): ItemType[] { + return ["weapon", "spell"]; + } + + /** + * Roll a check for an action with this item. + */ + async roll(): Promise { + if (!this.isOwnedItem()) { + throw new Error(game.i18n.format("DS4.ErrorCannotRollUnownedItem", { name: this.name, id: this.id })); + } + + switch (this.data.type) { + case "weapon": + return this.rollWeapon(); + case "spell": + return this.rollSpell(); + default: + throw new Error(game.i18n.format("DS4.ErrorRollingForItemTypeNotPossible", { type: this.data.type })); + } + } + + protected async rollWeapon(this: this & { readonly isOwned: true }): Promise { + if (!(this.data.type === "weapon")) { + throw new Error( + game.i18n.format("DS4.ErrorWrongItemType", { + actualType: this.data.type, + expectedType: "weapon", + id: this.id, + name: this.name, + }), + ); + } + + if (!this.data.data.equipped) { + return notifications.warn( + game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + name: this.name, + id: this.id, + type: this.data.type, + }), + ); + } + + const actor = (this.actor as unknown) as DS4Actor; // TODO(types): Improve so that the concrete Actor type is known here + const ownerDataData = actor.data.data; + const weaponBonus = this.data.data.weaponBonus; + const combatValue = await this.getCombatValueKeyForAttackType(this.data.data.attackType); + const checkTargetNumber = ownerDataData.combatValues[combatValue].total + weaponBonus; + + await createCheckRoll(checkTargetNumber, { + rollMode: game.settings.get("core", "rollMode") as Const.DiceRollMode, // TODO(types): Type this setting in upstream + maximumCoupResult: ownerDataData.rolling.maximumCoupResult, + minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult, + flavor: game.i18n.format("DS4.ItemWeaponCheckFlavor", { actor: actor.name, weapon: this.name }), + }); + } + + protected async rollSpell(): Promise { + if (!(this.data.type === "spell")) { + throw new Error( + game.i18n.format("DS4.ErrorWrongItemType", { + actualType: this.data.type, + expectedType: "spell", + id: this.id, + name: this.name, + }), + ); + } + + if (!this.data.data.equipped) { + return notifications.warn( + game.i18n.format("DS4.WarningItemMustBeEquippedToBeRolled", { + name: this.name, + id: this.id, + type: this.data.type, + }), + ); + } + + const actor = (this.actor as unknown) as DS4Actor; // TODO(types): Improve so that the concrete Actor type is known here + const ownerDataData = actor.data.data; + const spellBonus = Number.isNumeric(this.data.data.bonus) ? parseInt(this.data.data.bonus) : undefined; + if (spellBonus === undefined) { + notifications.info( + game.i18n.format("DS4.InfoManuallyEnterSpellBonus", { + name: this.name, + spellBonus: this.data.data.bonus, + }), + ); + } + const spellType = this.data.data.spellType; + const checkTargetNumber = ownerDataData.combatValues[spellType].total + (spellBonus ?? 0); + + await createCheckRoll(checkTargetNumber, { + rollMode: game.settings.get("core", "rollMode") as Const.DiceRollMode, // TODO(types): Type this setting in upstream + maximumCoupResult: ownerDataData.rolling.maximumCoupResult, + minimumFumbleResult: ownerDataData.rolling.minimumFumbleResult, + flavor: game.i18n.format("DS4.ItemSpellCheckFlavor", { actor: actor.name, spell: this.name }), + }); + } + + protected async getCombatValueKeyForAttackType(attackType: AttackType): Promise<"meleeAttack" | "rangedAttack"> { + if (attackType === "meleeRanged") { + const { melee, ranged } = { ...DS4.i18n.attackTypes }; + const identifier = "attack-type-selection"; + const label = game.i18n.localize("DS4.AttackType"); + const answer = Dialog.prompt({ + title: game.i18n.localize("DS4.AttackTypeSelection"), + content: await renderTemplate("systems/ds4/templates/dialogs/simple-select-form.hbs", { + label, + identifier, + options: { melee, ranged }, + }), + label: game.i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + const selectedAttackType = html.find(`#${identifier}`).val(); + if (selectedAttackType !== "melee" && selectedAttackType !== "ranged") { + throw new Error( + game.i18n.format("DS4.ErrorUnexpectedAttackType", { + actualType: selectedAttackType, + expectedTypes: "'melee', 'ranged'", + }), + ); + } + return `${selectedAttackType}Attack` as const; + }, + options: { jQuery: true }, + }); + return answer; + } else { + return `${attackType}Attack` as const; + } + } + + /** + * Type-guarding variant to check if the item is owned. + */ + isOwnedItem(): this is this & { readonly isOwned: true } { + return this.isOwned; + } +} diff --git a/src/module/macros/helpers.ts b/src/module/macros/helpers.ts new file mode 100644 index 00000000..73ee8092 --- /dev/null +++ b/src/module/macros/helpers.ts @@ -0,0 +1,21 @@ +import { DS4Actor } from "../actor/actor"; +import { getCanvas } from "../helpers"; + +/** + * Gets the currently active actor based on how {@link ChatMessage} determines + * the current speaker. + * @returns The currently active {@link DS4Actor} if any, and `undefined` otherwise. + */ +export function getActiveActor(): DS4Actor | undefined { + const speaker = ChatMessage.getSpeaker(); + + const speakerToken = speaker.token ? getCanvas().tokens.get(speaker.token) : undefined; + if (speakerToken) { + return speakerToken.actor as DS4Actor; + } + + const speakerActor = speaker.actor ? game.actors?.get(speaker.actor) : undefined; + if (speakerActor) { + return speakerActor as DS4Actor; + } +} diff --git a/src/module/macros/macros.ts b/src/module/macros/macros.ts new file mode 100644 index 00000000..e2a43e9b --- /dev/null +++ b/src/module/macros/macros.ts @@ -0,0 +1,7 @@ +import { rollCheck } from "./roll-check"; +import { rollItem } from "./roll-item"; + +export const macros = { + rollCheck, + rollItem, +}; diff --git a/src/module/macros/roll-check.ts b/src/module/macros/roll-check.ts new file mode 100644 index 00000000..f40ad75b --- /dev/null +++ b/src/module/macros/roll-check.ts @@ -0,0 +1,49 @@ +import { Check } from "../actor/actor-prepared-data"; +import { DS4 } from "../config"; +import notifications from "../ui/notifications"; +import { getActiveActor } from "./helpers"; + +/** + * Creates a macro from a check drop. + * Get an existing roll check macro if one exists, otherwise create a new one. + * @param check - The name of the check to perform. + * @param slot - The hotbar slot to use. + */ +export async function createRollCheckMacro(check: Check, slot: string): Promise { + const macro = await getOrCreateRollCheckMacro(check); + game.user?.assignHotbarMacro(macro, slot); +} + +async function getOrCreateRollCheckMacro(check: Check): Promise { + const command = `game.ds4.macros.rollCheck("${check}");`; + + const existingMacro = game.macros?.entities.find( + (m) => m.name === DS4.i18n.checks[check] && m.data.command === command, + ); + if (existingMacro) { + return existingMacro; + } + + return Macro.create( + { + command, + name: DS4.i18n.checks[check], + type: "script", + img: DS4.icons.checks[check], + flags: { "ds4.checkMacro": true }, + }, + { displaySheet: false }, + ); +} + +/** + * Executes the roll check macro for the given check. + */ +export async function rollCheck(check: Check): Promise { + const actor = getActiveActor(); + if (!actor) { + return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollCheckMacro")); + } + + return actor.rollCheck(check); +} diff --git a/src/module/macros/roll-item.ts b/src/module/macros/roll-item.ts new file mode 100644 index 00000000..ec85fdde --- /dev/null +++ b/src/module/macros/roll-item.ts @@ -0,0 +1,57 @@ +import { DS4ItemData } from "../item/item-data"; +import notifications from "../ui/notifications"; +import { getActiveActor } from "./helpers"; + +/** + * Creates a macro from an item drop. + * Get an existing roll item macro if one exists, otherwise create a new one. + * @param itemData - The item data + * @param slot - The hotbar slot to use + */ +export async function createRollItemMacro(itemData: DS4ItemData, slot: string): Promise { + const macro = await getOrCreateRollItemMacro(itemData); + game.user?.assignHotbarMacro(macro, slot); +} + +async function getOrCreateRollItemMacro(itemData: DS4ItemData): Promise { + const command = `game.ds4.macros.rollItem("${itemData._id}");`; + + const existingMacro = game.macros?.entities.find((m) => m.name === itemData.name && m.data.command === command); + if (existingMacro) { + return existingMacro; + } + + return Macro.create( + { + command, + name: itemData.name, + type: "script", + img: itemData.img, + flags: { "ds4.itemMacro": true }, + }, + { displaySheet: false }, + ); +} + +/** + * Executes the roll item macro for the given itemId. + */ +export async function rollItem(itemId: string): Promise { + const actor = getActiveActor(); + if (!actor) { + return notifications.warn(game.i18n.localize("DS4.WarningMustControlActorToUseRollItemMacro")); + } + + const item = actor.items?.get(itemId); + if (!item) { + return notifications.warn( + game.i18n.format("DS4.WarningControlledActorDoesNotHaveItem", { + actorName: actor.name, + actorId: actor.id, + itemId, + }), + ); + } + + return item.roll(); +} diff --git a/src/module/migrations.ts b/src/module/migrations.ts new file mode 100644 index 00000000..525400c5 --- /dev/null +++ b/src/module/migrations.ts @@ -0,0 +1,85 @@ +import { migrate as migrate001 } from "./migrations/001"; +import { migrate as migrate002 } from "./migrations/002"; +import { migrate as migrate003 } from "./migrations/003"; + +import notifications from "./ui/notifications"; + +async function migrate(): Promise { + if (!game.user?.isGM) { + return; + } + + const oldMigrationVersion = game.settings.get("ds4", "systemMigrationVersion"); + + const targetMigrationVersion = migrations.length; + + if (isFirstWorldStart(oldMigrationVersion)) { + game.settings.set("ds4", "systemMigrationVersion", targetMigrationVersion); + return; + } + + return migrateFromTo(oldMigrationVersion, targetMigrationVersion); +} + +async function migrateFromTo(oldMigrationVersion: number, targetMigrationVersion: number): Promise { + if (!game.user?.isGM) { + return; + } + + const migrationsToExecute = migrations.slice(oldMigrationVersion, targetMigrationVersion); + + if (migrationsToExecute.length > 0) { + notifications.info( + game.i18n.format("DS4.InfoSystemUpdateStart", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + + for (const [i, migration] of migrationsToExecute.entries()) { + const currentMigrationVersion = oldMigrationVersion + i + 1; + console.log("executing migration script ", currentMigrationVersion); + try { + await migration(); + game.settings.set("ds4", "systemMigrationVersion", currentMigrationVersion); + } catch (err) { + notifications.error( + game.i18n.format("DS4.ErrorDuringMigration", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + migrationVersion: currentMigrationVersion, + }), + { permanent: true }, + ); + err.message = `Failed ds4 system migration: ${err.message}`; + console.error(err); + return; + } + } + + notifications.info( + game.i18n.format("DS4.InfoSystemUpdateCompleted", { + currentVersion: oldMigrationVersion, + targetVersion: targetMigrationVersion, + }), + { permanent: true }, + ); + } +} + +function getTargetMigrationVersion(): number { + return migrations.length; +} + +const migrations: Array<() => Promise> = [migrate001, migrate002, migrate003]; + +function isFirstWorldStart(migrationVersion: number): boolean { + return migrationVersion < 0; +} + +export const migration = { + migrate: migrate, + migrateFromTo: migrateFromTo, + getTargetMigrationVersion: getTargetMigrationVersion, +}; diff --git a/src/module/migrations/001.ts b/src/module/migrations/001.ts new file mode 100644 index 00000000..943aecc9 --- /dev/null +++ b/src/module/migrations/001.ts @@ -0,0 +1,28 @@ +export async function migrate(): Promise { + for (const a of game.actors?.entities ?? []) { + const updateData = getActorUpdateData(); + console.log(`Migrating actor ${a.name}`); + await a.update(updateData, { enforceTypes: false }); + } +} + +function getActorUpdateData(): Record { + const updateData = { + data: { + combatValues: [ + "hitPoints", + "defense", + "initiative", + "movement", + "meleeAttack", + "rangedAttack", + "spellcasting", + "targetedSpellcasting", + ].reduce((acc: Partial>, curr) => { + acc[curr] = { "-=base": null }; + return acc; + }, {}), + }, + }; + return updateData; +} diff --git a/src/module/migrations/002.ts b/src/module/migrations/002.ts new file mode 100644 index 00000000..1b1806a7 --- /dev/null +++ b/src/module/migrations/002.ts @@ -0,0 +1,137 @@ +export async function migrate(): Promise { + await migrateItems(); + await migrateActors(); + await migrateScenes(); + await migrateCompendiums(); +} + +async function migrateItems() { + for (const item of game.items?.entities ?? []) { + try { + const updateData = getItemUpdateData(item._data); + if (updateData) { + console.log(`Migrating Item entity ${item.name} (${item.id})`); + await item.update(updateData), { enforceTypes: false }; + } + } catch (err) { + err.message = `Error during migration of Item entity ${item.name} (${item.id}), continuing anyways.`; + console.error(err); + } + } +} + +function getItemUpdateData(itemData: DeepPartial) { + if (!["equipment", "trinket"].includes(itemData.type ?? "")) return undefined; + return { type: itemData.type === "equipment" ? "loot" : "equipment" }; +} + +async function migrateActors() { + for (const actor of game.actors?.entities ?? []) { + try { + const updateData = getActorUpdateData(actor._data); + if (updateData) { + console.log(`Migrating Actor entity ${actor.name} (${actor.id})`); + await actor.update(updateData, { enforceTypes: false }); + } + } catch (err) { + err.message = `Error during migration of Actor entity ${actor.name} (${actor.id}), continuing anyways.`; + console.error(err); + } + } +} + +function getActorUpdateData(actorData: DeepPartial) { + let hasItemUpdates = false; + const items = actorData.items?.map((itemData) => { + const update = itemData ? getItemUpdateData(itemData) : undefined; + if (update) { + hasItemUpdates = true; + return { ...itemData, ...update }; + } else { + return itemData; + } + }); + return hasItemUpdates ? { items } : undefined; +} + +async function migrateScenes() { + for (const scene of game.scenes?.entities ?? []) { + try { + const updateData = getSceneUpdateData(scene._data); + if (updateData) { + console.log(`Migrating Scene entity ${scene.name} (${scene.id})`); + await scene.update(updateData, { enforceTypes: false }); + } + } catch (err) { + err.message = `Error during migration of Scene entity ${scene.name} (${scene.id}), continuing anyways.`; + console.error(err); + } + } +} + +function getSceneUpdateData(sceneData: Scene.Data) { + let hasTokenUpdates = false; + const tokens = sceneData.tokens.map((tokenData) => { + if (!tokenData.actorId || tokenData.actorLink || tokenData.actorData.data) { + tokenData.actorData = {}; + hasTokenUpdates = true; + return tokenData; + } + const token = new Token(tokenData); + if (!token.actor) { + tokenData.actorId = (null as unknown) as string; + tokenData.actorData = {}; + hasTokenUpdates = true; + } else if (!tokenData.actorLink) { + const actorUpdateData = getActorUpdateData(token.data.actorData); + tokenData.actorData = mergeObject(token.data.actorData, actorUpdateData); + hasTokenUpdates = true; + } + return tokenData; + }); + if (!hasTokenUpdates) return undefined; + return hasTokenUpdates ? { tokens } : undefined; +} + +async function migrateCompendiums() { + for (const compendium of game.packs ?? []) { + if (compendium.metadata.package !== "world") continue; + if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue; + await migrateCompendium(compendium); + } +} + +async function migrateCompendium(compendium: Compendium) { + const entityName = compendium.metadata.entity; + if (!["Actor", "Item", "Scene"].includes(entityName)) return; + const wasLocked = compendium.locked; + await compendium.configure({ locked: false }); + + const content = await compendium.getContent(); + + for (const entity of content) { + try { + const getUpdateData = (entity: Entity) => { + switch (entityName) { + case "Item": + return getItemUpdateData(entity._data); + case "Actor": + return getActorUpdateData(entity._data); + case "Scene": + return getSceneUpdateData(entity._data as Scene.Data); + } + }; + const updateData = getUpdateData(entity); + if (updateData) { + console.log(`Migrating entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}`); + await compendium.updateEntity({ ...updateData, _id: entity._id }); + } + } catch (err) { + err.message = `Error during migration of entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}, continuing anyways.`; + console.error(err); + } + } + + await compendium.migrate({}); + await compendium.configure({ locked: wasLocked }); +} diff --git a/src/module/migrations/003.ts b/src/module/migrations/003.ts new file mode 100644 index 00000000..5801923e --- /dev/null +++ b/src/module/migrations/003.ts @@ -0,0 +1,141 @@ +export async function migrate(): Promise { + await migrateItems(); + await migrateActors(); + await migrateScenes(); + await migrateCompendiums(); +} + +async function migrateItems() { + for (const item of game.items?.entities ?? []) { + try { + const updateData = getItemUpdateData(item._data); + if (updateData) { + console.log(`Migrating Item entity ${item.name} (${item.id})`); + await item.update(updateData), { enforceTypes: false }; + } + } catch (err) { + err.message = `Error during migration of Item entity ${item.name} (${item.id}), continuing anyways.`; + console.error(err); + } + } +} + +function getItemUpdateData(itemData: DeepPartial) { + if (!["loot"].includes(itemData.type ?? "")) return undefined; + return { + data: { + "-=equipped": null, + }, + }; +} + +async function migrateActors() { + for (const actor of game.actors?.entities ?? []) { + try { + const updateData = getActorUpdateData(actor._data); + if (updateData) { + console.log(`Migrating Actor entity ${actor.name} (${actor.id})`); + await actor.update(updateData, { enforceTypes: false }); + } + } catch (err) { + err.message = `Error during migration of Actor entity ${actor.name} (${actor.id}), continuing anyways.`; + console.error(err); + } + } +} + +function getActorUpdateData(actorData: DeepPartial) { + let hasItemUpdates = false; + const items = actorData.items?.map((itemData) => { + const update = itemData ? getItemUpdateData(itemData) : undefined; + if (update) { + hasItemUpdates = true; + return mergeObject(itemData, update, { enforceTypes: false, inplace: false }); + } else { + return itemData; + } + }); + return hasItemUpdates ? { items } : undefined; +} + +async function migrateScenes() { + for (const scene of game.scenes?.entities ?? []) { + try { + const updateData = getSceneUpdateData(scene._data); + if (updateData) { + console.log(`Migrating Scene entity ${scene.name} (${scene.id})`); + await scene.update(updateData, { enforceTypes: false }); + } + } catch (err) { + err.message = `Error during migration of Scene entity ${scene.name} (${scene.id}), continuing anyways.`; + console.error(err); + } + } +} + +function getSceneUpdateData(sceneData: Scene.Data) { + let hasTokenUpdates = false; + const tokens = sceneData.tokens.map((tokenData) => { + if (!tokenData.actorId || tokenData.actorLink || tokenData.actorData.data) { + tokenData.actorData = {}; + hasTokenUpdates = true; + return tokenData; + } + const token = new Token(tokenData); + if (!token.actor) { + tokenData.actorId = (null as unknown) as string; + tokenData.actorData = {}; + hasTokenUpdates = true; + } else if (!tokenData.actorLink) { + const actorUpdateData = getActorUpdateData(token.data.actorData); + tokenData.actorData = mergeObject(token.data.actorData, actorUpdateData); + hasTokenUpdates = true; + } + return tokenData; + }); + if (!hasTokenUpdates) return undefined; + return hasTokenUpdates ? { tokens } : undefined; +} + +async function migrateCompendiums() { + for (const compendium of game.packs ?? []) { + if (compendium.metadata.package !== "world") continue; + if (!["Actor", "Item", "Scene"].includes(compendium.metadata.entity)) continue; + await migrateCompendium(compendium); + } +} + +async function migrateCompendium(compendium: Compendium) { + const entityName = compendium.metadata.entity; + if (!["Actor", "Item", "Scene"].includes(entityName)) return; + const wasLocked = compendium.locked; + await compendium.configure({ locked: false }); + + const content = await compendium.getContent(); + + for (const entity of content) { + try { + const getUpdateData = (entity: Entity) => { + switch (entityName) { + case "Item": + return getItemUpdateData(entity._data); + case "Actor": + return getActorUpdateData(entity._data); + case "Scene": + return getSceneUpdateData(entity._data as Scene.Data); + } + }; + const updateData = getUpdateData(entity); + if (updateData) { + console.log(`Migrating entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}`); + await compendium.updateEntity({ ...updateData, _id: entity._id }); + } + } catch (err) { + err.message = `Error during migration of entity ${entity.name} (${entity.id}) in compendium ${compendium.collection}, continuing anyways.`; + console.error(err); + } + } + + await compendium.migrate({}); + await compendium.configure({ locked: wasLocked }); +} diff --git a/src/module/rolls/check-evaluation.ts b/src/module/rolls/check-evaluation.ts new file mode 100644 index 00000000..442ecf3d --- /dev/null +++ b/src/module/rolls/check-evaluation.ts @@ -0,0 +1,117 @@ +export default function evaluateCheck( + dice: number[], + checkTargetNumber: number, + { + maximumCoupResult = 1, + minimumFumbleResult = 20, + canFumble = true, + }: { maximumCoupResult?: number; minimumFumbleResult?: number; canFumble?: boolean } = {}, +): SubCheckResult[] { + const diceWithSubChecks = assignSubChecksToDice(dice, checkTargetNumber, { + maximumCoupResult: maximumCoupResult, + }); + return evaluateDiceWithSubChecks(diceWithSubChecks, { + maximumCoupResult: maximumCoupResult, + minimumFumbleResult: minimumFumbleResult, + canFumble: canFumble, + }); +} + +interface DieWithSubCheck { + result: number; + checkTargetNumber: number; +} + +function assignSubChecksToDice( + dice: number[], + checkTargetNumber: number, + { + maximumCoupResult = 1, + }: { + maximumCoupResult?: number; + } = {}, +): DieWithSubCheck[] { + const requiredNumberOfDice = getRequiredNumberOfDice(checkTargetNumber); + + if (dice.length !== requiredNumberOfDice || requiredNumberOfDice < 1) { + throw new Error(game.i18n.localize("DS4.ErrorInvalidNumberOfDice")); + } + + const checkTargetNumberForLastSubCheck = checkTargetNumber - 20 * (requiredNumberOfDice - 1); + + const indexOfSmallestNonCoup = findIndexOfSmallestNonCoup(dice, maximumCoupResult); + const indexOfFirstCoup = dice.findIndex((die) => die <= maximumCoupResult); + const indexForLastSubCheck = shouldUseCoupForLastSubCheck( + indexOfSmallestNonCoup, + indexOfFirstCoup, + dice, + checkTargetNumberForLastSubCheck, + ) + ? indexOfFirstCoup + : indexOfSmallestNonCoup; + + return dice.map((die, index) => ({ + result: die, + checkTargetNumber: index === indexForLastSubCheck ? checkTargetNumberForLastSubCheck : 20, + })); +} + +function findIndexOfSmallestNonCoup(dice: number[], maximumCoupResult: number): number { + return dice + .map((die, index) => [die, index]) + .filter((indexedDie) => indexedDie[0] > maximumCoupResult) + .reduce( + (smallestIndexedDie, indexedDie) => + indexedDie[0] < smallestIndexedDie[0] ? indexedDie : smallestIndexedDie, + [Infinity, -1], + )[1]; +} + +function shouldUseCoupForLastSubCheck( + indexOfSmallestNonCoup: number, + indexOfFirstCoup: number, + dice: number[], + checkTargetNumberForLastSubCheck: number, +) { + return ( + indexOfFirstCoup !== -1 && + (indexOfSmallestNonCoup === -1 || + (dice[indexOfSmallestNonCoup] > checkTargetNumberForLastSubCheck && + dice[indexOfSmallestNonCoup] + checkTargetNumberForLastSubCheck > 20)) + ); +} + +interface SubCheckResult extends DieWithSubCheck, DiceTerm.Result { + success?: boolean; + failure?: boolean; + count?: number; +} + +function evaluateDiceWithSubChecks( + results: DieWithSubCheck[], + { + maximumCoupResult, + minimumFumbleResult, + canFumble, + }: { maximumCoupResult: number; minimumFumbleResult: number; canFumble: boolean }, +): SubCheckResult[] { + return results.map((dieWithSubCheck, index) => { + const result: SubCheckResult = { + ...dieWithSubCheck, + active: dieWithSubCheck.result <= dieWithSubCheck.checkTargetNumber, + discarded: dieWithSubCheck.result > dieWithSubCheck.checkTargetNumber, + }; + if (result.result <= maximumCoupResult) { + result.success = true; + result.count = result.checkTargetNumber; + result.active = true; + result.discarded = false; + } + if (index === 0 && canFumble && result.result >= minimumFumbleResult) result.failure = true; + return result; + }); +} + +export function getRequiredNumberOfDice(checkTargetNumber: number): number { + return Math.ceil(checkTargetNumber / 20); +} diff --git a/src/module/rolls/check-factory.ts b/src/module/rolls/check-factory.ts new file mode 100644 index 00000000..86b29776 --- /dev/null +++ b/src/module/rolls/check-factory.ts @@ -0,0 +1,215 @@ +/** + * Provides default values for all arguments the `CheckFactory` expects. + */ +class DefaultCheckOptions implements DS4CheckFactoryOptions { + readonly maximumCoupResult = 1; + readonly minimumFumbleResult = 20; + readonly useSlayingDice = false; + readonly rollMode: Const.DiceRollMode = "roll"; + readonly flavor: undefined; + + mergeWith(other: Partial): DS4CheckFactoryOptions { + return { ...this, ...other }; + } +} + +/** + * Singleton reference for default value extraction. + */ +const defaultCheckOptions = new DefaultCheckOptions(); + +/** + * Most basic class responsible for generating the chat formula and passing it to the chat as roll. + */ +class CheckFactory { + constructor( + private checkTargetNumber: number, + private gmModifier: number, + options: Partial = {}, + ) { + this.options = defaultCheckOptions.mergeWith(options); + } + + private options: DS4CheckFactoryOptions; + + async execute(): Promise { + const innerFormula = ["ds", this.createCheckTargetNumberModifier(), this.createCoupFumbleModifier()].filterJoin( + "", + ); + const formula = this.options.useSlayingDice ? `{${innerFormula}}x` : innerFormula; + const roll = Roll.create(formula); + + return roll.toMessage( + { speaker: ChatMessage.getSpeaker(), flavor: this.options.flavor }, + { rollMode: this.options.rollMode, create: true }, + ); + } + + createCheckTargetNumberModifier(): string | null { + return "v" + (this.checkTargetNumber + this.gmModifier); + } + + createCoupFumbleModifier(): string | null { + const isMinimumFumbleResultRequired = + this.options.minimumFumbleResult !== defaultCheckOptions.minimumFumbleResult; + const isMaximumCoupResultRequired = this.options.maximumCoupResult !== defaultCheckOptions.maximumCoupResult; + + if (isMinimumFumbleResultRequired || isMaximumCoupResultRequired) { + return "c" + (this.options.maximumCoupResult ?? "") + ":" + (this.options.minimumFumbleResult ?? ""); + } else { + return null; + } + } +} + +/** + * Asks the user for all unknown/necessary information and passes them on to perform a roll. + * @param checkTargetNumber - The Check Target Number ("CTN") + * @param options - Options changing the behavior of the roll and message. + */ +export async function createCheckRoll( + checkTargetNumber: number, + options: Partial = {}, +): Promise { + // Ask for additional required data; + const gmModifierData = await askGmModifier(checkTargetNumber, options); + + const newTargetValue = gmModifierData.checkTargetNumber ?? checkTargetNumber; + const gmModifier = gmModifierData.gmModifier ?? 0; + const newOptions: Partial = { + maximumCoupResult: gmModifierData.maximumCoupResult ?? options.maximumCoupResult, + minimumFumbleResult: gmModifierData.minimumFumbleResult ?? options.minimumFumbleResult, + useSlayingDice: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"), + rollMode: gmModifierData.rollMode ?? options.rollMode, + flavor: options.flavor, + }; + + // Create Factory + const cf = new CheckFactory(newTargetValue, gmModifier, newOptions); + + // Possibly additional processing + + // Execute roll + return cf.execute(); +} + +/** + * Responsible for rendering the modal interface asking for the modifier specified by GM and (currently) additional data. + * + * @notes + * At the moment, this asks for more data than it will do after some iterations. + * + * @returns The data given by the user. + */ +async function askGmModifier( + checkTargetNumber: number, + options: Partial = {}, + { template, title }: { template?: string; title?: string } = {}, +): Promise> { + const usedTemplate = template ?? "systems/ds4/templates/dialogs/roll-options.hbs"; + const usedTitle = title ?? game.i18n.localize("DS4.RollDialogDefaultTitle"); + const templateData = { + title: usedTitle, + checkTargetNumber: checkTargetNumber, + maximumCoupResult: options.maximumCoupResult ?? defaultCheckOptions.maximumCoupResult, + minimumFumbleResult: options.minimumFumbleResult ?? defaultCheckOptions.minimumFumbleResult, + rollMode: options.rollMode ?? game.settings.get("core", "rollMode"), + rollModes: CONFIG.Dice.rollModes, + }; + const renderedHtml = await renderTemplate(usedTemplate, templateData); + + const dialogPromise = new Promise((resolve) => { + new Dialog( + { + title: usedTitle, + content: renderedHtml, + buttons: { + ok: { + icon: '', + label: game.i18n.localize("DS4.GenericOkButton"), + callback: (html) => { + if (!("jquery" in html)) { + throw new Error( + game.i18n.format("DS4.ErrorUnexpectedHtmlType", { + exType: "JQuery", + realType: "HTMLElement", + }), + ); + } else { + const innerForm = html[0].querySelector("form"); + if (!innerForm) { + throw new Error( + game.i18n.format("DS4.ErrorCouldNotFindHtmlElement", { htmlElement: "form" }), + ); + } + resolve(innerForm); + } + }, + }, + cancel: { + icon: '', + label: game.i18n.localize("DS4.GenericCancelButton"), + }, + }, + default: "ok", + }, + { jQuery: true }, + ).render(true); + }); + const dialogForm = await dialogPromise; + return parseDialogFormData(dialogForm); +} + +/** + * Extracts Dialog data from the returned DOM element. + * @param formData - The filed dialog + */ +function parseDialogFormData(formData: HTMLFormElement): Partial { + return { + checkTargetNumber: parseInt(formData["check-target-number"]?.value), + gmModifier: parseInt(formData["gm-modifier"]?.value), + maximumCoupResult: parseInt(formData["maximum-coup-result"]?.value), + minimumFumbleResult: parseInt(formData["minimum-fumble-result"]?.value), + rollMode: formData["roll-mode"]?.value, + }; +} + +/** + * Contains data that needs retrieval from an interactive Dialog. + */ +interface GmModifierData { + gmModifier: number; + rollMode: Const.DiceRollMode; +} + +/** + * Contains *CURRENTLY* necessary Data for drafting a roll. + * + * @deprecated + * Quite a lot of this information is requested due to a lack of automation: + * - maximumCoupResult + * - minimumFumbleResult + * - useSlayingDice + * - checkTargetNumber + * + * They will and should be removed once effects and data retrieval is in place. + * If a "raw" roll dialog is necessary, create another pre-processing Dialog + * class asking for the required information. + * This interface should then be replaced with the `GmModifierData`. + */ +interface IntermediateGmModifierData extends GmModifierData { + checkTargetNumber: number; + maximumCoupResult: number; + minimumFumbleResult: number; +} + +/** + * The minimum behavioral options that need to be passed to the factory. + */ +export interface DS4CheckFactoryOptions { + maximumCoupResult: number; + minimumFumbleResult: number; + useSlayingDice: boolean; + rollMode: Const.DiceRollMode; + flavor?: string; +} diff --git a/src/module/rolls/check.ts b/src/module/rolls/check.ts new file mode 100644 index 00000000..f1ab678a --- /dev/null +++ b/src/module/rolls/check.ts @@ -0,0 +1,122 @@ +import evaluateCheck, { getRequiredNumberOfDice } from "./check-evaluation"; + +/** + * Implements DS4 Checks as an emulated "dice throw". + * + * @example + * - Roll a check against a Check Target Number (CTN) of 18: `/r dsv18` + * - Roll a check with multiple dice against a CTN of 34: `/r dsv34` + * - Roll a check with a racial ability that makes `2` a coup and `19` a fumble: `/r dsv19c2:19` + * - Roll a check with a racial ability that makes `5` a coup and default fumble: `/r dsv19c5` + */ +export class DS4Check extends DiceTerm { + constructor({ modifiers = [], options }: Partial = {}) { + super({ + faces: 20, + modifiers: modifiers, + options: options, + }); + + // Parse and store check target number + const checkTargetNumberModifier = this.modifiers.filter((m) => m[0] === "v")[0]; + const ctnRgx = new RegExp("v([0-9]+)?"); + const ctnMatch = checkTargetNumberModifier?.match(ctnRgx); + if (ctnMatch) { + const [parseCheckTargetNumber] = ctnMatch.slice(1); + this.checkTargetNumber = parseCheckTargetNumber + ? parseInt(parseCheckTargetNumber) + : DS4Check.DEFAULT_CHECK_TARGET_NUMBER; + } + + this.number = getRequiredNumberOfDice(this.checkTargetNumber); + + // Parse and store maximumCoupResult and minimumFumbleResult + const coupFumbleModifier = this.modifiers.filter((m) => m[0] === "c")[0]; + const cfmRgx = new RegExp("c([0-9]+)?(:([0-9]+))?"); + const cfmMatch = coupFumbleModifier?.match(cfmRgx); + if (cfmMatch) { + const parseMaximumCoupResult = cfmMatch[1]; + const parseMinimumFumbleResult = cfmMatch[3]; + this.maximumCoupResult = parseMaximumCoupResult + ? parseInt(parseMaximumCoupResult) + : DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; + this.minimumFumbleResult = parseMinimumFumbleResult + ? parseInt(parseMinimumFumbleResult) + : DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; + if (this.minimumFumbleResult <= this.maximumCoupResult) + throw new SyntaxError(game.i18n.localize("DS4.ErrorDiceCoupFumbleOverlap")); + } + + // Parse and store no fumble + const noFumbleModifier = this.modifiers.filter((m) => m[0] === "n")[0]; + if (noFumbleModifier) { + this.canFumble = false; + } + } + + coup: boolean | null = null; + fumble: boolean | null = null; + canFumble = true; + checkTargetNumber = DS4Check.DEFAULT_CHECK_TARGET_NUMBER; + minimumFumbleResult = DS4Check.DEFAULT_MINIMUM_FUMBLE_RESULT; + maximumCoupResult = DS4Check.DEFAULT_MAXIMUM_COUP_RESULT; + + /** @override */ + get expression(): string { + return `ds${this.modifiers.join("")}`; + } + + /** @override */ + get total(): number | null { + if (this.fumble) return 0; + return super.total; + } + + /** @override */ + evaluate({ minimize = false, maximize = false } = {}): this { + super.evaluate({ minimize, maximize }); + this.evaluateResults(); + return this; + } + + /** @override */ + roll({ minimize = false, maximize = false } = {}): DiceTerm.Result { + // Swap minimize / maximize because in DS4, the best possible roll is a 1 and the worst possible roll is a 20 + return super.roll({ minimize: maximize, maximize: minimize }); + } + + evaluateResults(): void { + const dice = this.results.map((die) => die.result); + const results = evaluateCheck(dice, this.checkTargetNumber, { + maximumCoupResult: this.maximumCoupResult, + minimumFumbleResult: this.minimumFumbleResult, + canFumble: this.canFumble, + }); + this.results = results; + this.coup = results[0].success ?? false; + this.fumble = results[0].failure ?? false; + } + + /** @override */ + static fromResults( + this: ConstructorOf, + options: Partial, + results: DiceTerm.Result[], + ): T { + const term = new this(options); + term.results = results; + term.evaluateResults(); + term._evaluated = true; + return term; + } + + static readonly DEFAULT_CHECK_TARGET_NUMBER = 10; + static readonly DEFAULT_MAXIMUM_COUP_RESULT = 1; + static readonly DEFAULT_MINIMUM_FUMBLE_RESULT = 20; + static DENOMINATION = "s"; + static MODIFIERS = { + c: (): void => undefined, // Modifier is consumed in constructor for maximumCoupResult / minimumFumbleResult + v: (): void => undefined, // Modifier is consumed in constructor for checkTargetNumber + n: (): void => undefined, // Modifier is consumed in constructor for canFumble + }; +} diff --git a/src/module/rolls/roll.ts b/src/module/rolls/roll.ts new file mode 100644 index 00000000..8a4c6292 --- /dev/null +++ b/src/module/rolls/roll.ts @@ -0,0 +1,44 @@ +import { DS4Check } from "./check"; + +export class DS4Roll = Record> extends Roll { + static CHAT_TEMPLATE = "systems/ds4/templates/dice/roll.hbs"; + + /** + * This only differs from {@link Roll.render} in that it provides `isCoup` and `isFumble` properties to the roll + * template if the first dice term is a ds4 check. + * @override + */ + async render(chatOptions: Roll.ChatOptions = {}): Promise { + chatOptions = mergeObject( + { + user: game.user?._id, + flavor: null, + template: DS4Roll.CHAT_TEMPLATE, + blind: false, + }, + chatOptions, + ); + const isPrivate = chatOptions.isPrivate; + + // Execute the roll, if needed + if (!this._rolled) this.roll(); + + // Define chat data + const firstDiceTerm = this.dice[0]; + const isCoup = firstDiceTerm instanceof DS4Check && firstDiceTerm.coup; + const isFumble = firstDiceTerm instanceof DS4Check && firstDiceTerm.fumble; + + const chatData = { + formula: isPrivate ? "???" : this._formula, + flavor: isPrivate ? null : chatOptions.flavor, + user: chatOptions.user, + tooltip: isPrivate ? "" : await this.getTooltip(), + total: isPrivate ? "?" : Math.round((this.total ?? 0) * 100) / 100, + isCoup: isPrivate ? null : isCoup, + isFumble: isPrivate ? null : isFumble, + }; + + // Render the roll display template + return renderTemplate(chatOptions.template ?? "", chatData); + } +} diff --git a/src/module/rolls/slaying-dice-modifier.ts b/src/module/rolls/slaying-dice-modifier.ts new file mode 100644 index 00000000..0af9d6b9 --- /dev/null +++ b/src/module/rolls/slaying-dice-modifier.ts @@ -0,0 +1,26 @@ +import { DS4Check } from "./check"; + +export default function registerSlayingDiceModifier(): void { + DicePool.MODIFIERS.x = slay; + DicePool.POOL_REGEX = /^{([^}]+)}([A-z]([A-z0-9<=>]+)?)?$/; +} + +function slay(this: DicePool, modifier: string): void { + const rgx = /[xX]/; + const match = modifier.match(rgx); + if (!match || !this.rolls) return; + + let checked = 0; + while (checked < (this.dice.length ?? 0)) { + const diceTerm = this.dice[checked]; + checked++; + if (diceTerm instanceof DS4Check && diceTerm.coup) { + const formula = `dsv${diceTerm.checkTargetNumber}c${diceTerm.maximumCoupResult}:${diceTerm.minimumFumbleResult}n`; + const additionalRoll = Roll.create(formula).evaluate(); + + this.rolls.push(additionalRoll); + this.results.push({ result: additionalRoll.total ?? 0, active: true }); + } + if (checked > 1000) throw new Error(game.i18n.localize("DS4.ErrorSlayingDiceRecursionLimitExceeded")); + } +} diff --git a/src/module/settings.ts b/src/module/settings.ts new file mode 100644 index 00000000..954baa9a --- /dev/null +++ b/src/module/settings.ts @@ -0,0 +1,31 @@ +export function registerSystemSettings(): void { + /** + * Track the migrations version of the latest migration that has been applied + */ + game.settings.register("ds4", "systemMigrationVersion", { + name: "System Migration Version", + scope: "world", + config: false, + type: Number, + default: -1, + }); + + game.settings.register("ds4", "useSlayingDiceForAutomatedChecks", { + name: "DS4.SettingUseSlayingDiceForAutomatedChecksName", + hint: "DS4.SettingUseSlayingDiceForAutomatedChecksHint", + scope: "world", + config: true, + type: Boolean, + default: false, + }); + + game.settings.register("ds4", "customChecks", { + name: "DS4.SettingsCustomChecks", + scope: "world", + config: false, + // eslint-disable-next-line + //@ts-ignore + type: Object, + default: {}, + }); +} diff --git a/src/module/ui/notifications.ts b/src/module/ui/notifications.ts new file mode 100644 index 00000000..cb6a301f --- /dev/null +++ b/src/module/ui/notifications.ts @@ -0,0 +1,37 @@ +const notifications = { + info: (message: string, { permanent = false }: { permanent?: boolean } = {}): void => { + if (ui.notifications) { + ui.notifications.info(message, { permanent }); + } else { + console.info(message); + } + }, + warn: (message: string, { permanent = false }: { permanent?: boolean } = {}): void => { + if (ui.notifications) { + ui.notifications.warn(message, { permanent }); + } else { + console.log(message); + } + }, + error: (message: string, { permanent = false }: { permanent?: boolean } = {}): void => { + if (ui.notifications) { + ui.notifications.error(message, { permanent }); + } else { + console.warn(message); + } + }, + notify: ( + message: string, + type: "info" | "warning" | "error" = "info", + { permanent = false }: { permanent?: boolean } = {}, + ): void => { + if (ui.notifications) { + ui.notifications.notify(message, type, { permanent }); + } else { + const log = { info: console.info, warning: console.warn, error: console.error }[type]; + log(message); + } + }, +}; + +export default notifications; diff --git a/src/packs/LICENSE b/src/packs/LICENSE new file mode 100644 index 00000000..46c81916 --- /dev/null +++ b/src/packs/LICENSE @@ -0,0 +1,361 @@ +Creative Commons Legal Code + +Attribution-NonCommercial-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(g) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined above) for the purposes of this + License. + c. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + d. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, Noncommercial, ShareAlike. + e. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + f. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + g. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + h. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + i. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + j. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved, including but not limited to the +rights described in Section 4(e). + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(d), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(d), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under: (i) + the terms of this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). + You must include a copy of, or the URI, for Applicable License with + every copy of each Adaptation You Distribute or Publicly Perform. You + may not offer or impose any terms on the Adaptation that restrict the + terms of the Applicable License or the ability of the recipient of the + Adaptation to exercise the rights granted to that recipient under the + terms of the Applicable License. You must keep intact all notices that + refer to the Applicable License and to the disclaimer of warranties + with every copy of the Work as included in the Adaptation You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Adaptation, You may not impose any effective technological + measures on the Adaptation that restrict the ability of a recipient of + the Adaptation from You to exercise the rights granted to that + recipient under the terms of the Applicable License. This Section 4(b) + applies to the Adaptation as incorporated in a Collection, but this + does not require the Collection apart from the Adaptation itself to be + made subject to the terms of the Applicable License. + c. You may not exercise any of the rights granted to You in Section 3 + above in any manner that is primarily intended for or directed toward + commercial advantage or private monetary compensation. The exchange of + the Work for other copyrighted works by means of digital file-sharing + or otherwise shall not be considered to be intended for or directed + toward commercial advantage or private monetary compensation, provided + there is no payment of any monetary compensation in con-nection with + the exchange of copyrighted works. + d. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and, (iv) consistent with Section 3(b), in the case of an Adaptation, + a credit identifying the use of the Work in the Adaptation (e.g., + "French translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). The credit required by + this Section 4(d) may be implemented in any reasonable manner; + provided, however, that in the case of a Adaptation or Collection, at + a minimum such credit will appear, if a credit for all contributing + authors of the Adaptation or Collection appears, then as part of these + credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only + use the credit required by this Section for the purpose of attribution + in the manner set out above and, by exercising Your rights under this + License, You may not implicitly or explicitly assert or imply any + connection with, sponsorship or endorsement by the Original Author, + Licensor and/or Attribution Parties, as appropriate, of You or Your + use of the Work, without the separate, express prior written + permission of the Original Author, Licensor and/or Attribution + Parties. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor reserves + the exclusive right to collect such royalties for any exercise by + You of the rights granted under this License if Your exercise of + such rights is for a purpose or use which is otherwise than + noncommercial as permitted under Section 4(c) and otherwise waives + the right to collect royalties through any statutory or compulsory + licensing scheme; and, + iii. Voluntary License Schemes. The Licensor reserves the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License that is for a + purpose or use which is otherwise than noncommercial as permitted + under Section 4(c). + f. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE +FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS +AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE +WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT +LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, +ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT +DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED +WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of this License. + + Creative Commons may be contacted at https://creativecommons.org/. + diff --git a/src/packs/items.db b/src/packs/items.db new file mode 100644 index 00000000..c80536fa --- /dev/null +++ b/src/packs/items.db @@ -0,0 +1,325 @@ +{"_id":"03wnfxowhzvSJPSj","name":"Plattenpanzer +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":5300,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-steel.webp","effects":[{"_id":"uOEN4xXL3IcebbJO","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"09Hp2c2jgoXx7cV0","name":"Kettenpanzer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Laufen -0,5m

","quantity":1,"price":10,"availability":"village","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-grey.webp","effects":[{"_id":"EkJB0kpYFHRMYSgl","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true}]} +{"name":"Zauberköcher","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Jeder Pfeil, der aus diesem Köcher gezogen wird, hat für die Dauer einer Kampfrunde einen magischen Waffenbonus von +1.

","quantity":1,"price":750.1,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/containers/ammunition/arrows-quiver-blue.webp","effects":[],"_id":"0C9YNorSbYM5eyBj"} +{"_id":"0EwYRuQCBmE3LIm2","name":"Krummschwert","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":7,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":0},"flags":{},"img":"icons/weapons/swords/scimitar-broad.webp","effects":[]} +{"_id":"0P2wJM5qG1VupfXq","name":"Streitaxt +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":3257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":6,"opponentDefense":-3},"flags":{},"img":"icons/weapons/axes/axe-double-blue.webp","effects":[{"_id":"DPS3CaNXapsBzzsj","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"aNtjz1DteptmA3ce","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"0SrSqLjQ5CMNbwXV","name":"Holzschild +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":3251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/round-wooden-reinforced-boss-steel.webp","effects":[{"_id":"eu80ImNhR1gsT7jg","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"0UDiL2xAlGCEeckL","name":"Schlachtbeil","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":20,"availability":"city","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-4},"flags":{},"img":"icons/weapons/axes/axe-battle-black.webp","effects":[{"_id":"atmWPMxgNoeole7n","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-6,"mode":2}],"duration":{},"label":"Initiative -6","transfer":true}]} +{"name":"Gürtel der Trollstärke","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Dieser mit kleinen Eisenplatten beschlagene Gürtel erhöht die Stärke seines Trägers um 3.

","quantity":1,"price":3250.05,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/waist/belt-armored-studded-steel.webp","effects":[{"_id":"43bRMhcEqMvQvRQU","flags":{},"changes":[{"key":"data.traits.strength.total","value":3,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Stärke +3 (magisch)","tint":"","transfer":true}],"_id":"0Vd79Orsle4PUqs2"} +{"_id":"0cAWFZtQfLF7q1ZX","name":"Elfenbogen +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":2325,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":4,"opponentDefense":-1},"flags":{},"img":"icons/weapons/bows/longbow-recurve-leather-brown.webp","effects":[{"_id":"QScLkDv6gysh119m","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"UPsfGYjye47se1Gw","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"0e8GeSHxVf72FXvT","name":"Turmschild","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":"

Laufen -1m

","quantity":1,"price":15,"availability":"village","storageLocation":"-","equipped":false,"armorValue":2},"flags":{},"img":"icons/equipment/shield/heater-steel-boss-red.webp","effects":[{"_id":"ScAKi1eiWow9Y1ZZ","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -1m","tint":"","transfer":true}]} +{"_id":"0f8ivq3Mveb3s3Fs","name":"Zwergenaxt","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -1

","quantity":1,"price":60,"availability":"dwarves","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/axes/axe-double-engraved.webp","effects":[{"_id":"Ytio5tOcCUO91MQ0","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-1,"mode":2}],"duration":{},"label":"Initiative -1","transfer":true}]} +{"_id":"0vIgZkHBeEPut73w","name":"Elfenbogen +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":3325,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":6,"opponentDefense":-3},"flags":{},"img":"icons/weapons/bows/longbow-recurve.webp","effects":[{"_id":"QScLkDv6gysh119m","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"azjxgNJkYNvxg622","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"0wgXMtaVpVJabEun","name":"Dolch +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative +1

","quantity":1,"price":1752,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/daggers/dagger-double-engraved-black.webp","effects":[{"_id":"9jtH6ER0s0I8SPyi","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"JLc9UYdHy4aAeqA2","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"12WbnUt5h84JQxMp","name":"Kettenpanzer +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":4260,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-grey.webp","effects":[{"_id":"gPN9UcowmdjdyGyn","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"name":"Heiltrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieses oftmals rote Getränk heilt W20 Lebenskraft.

","quantity":1,"price":10,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"19bmt5UJrT3T36wE"} +{"name":"Unverwundbartrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Der Charakter erhält für W20 Runden +20 auf seine Abwehr durch diesen meist roten, flockigen Trank. Dieser Bonus gilt auch bei Schaden, gegen den normalerweise keine Abwehr zulässig ist.

","quantity":1,"price":1000,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"1HjmUAR5mf59yXlw"} +{"_id":"1IWsAaMSnz1Q9ZWd","name":"Schleuder +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":1250.1,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/slings/slingshot-wood.webp","effects":[{"_id":"aKfE4S2oocgJMro8","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"1hmprC7XVhIPemy5","name":"Kurzbogen +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1

","quantity":1,"price":1756,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/bows/shortbow-recurve.webp","effects":[{"_id":"zgiIGlRMVCgAzrn7","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"VkuGm7hES83WX4HD","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"name":"Teleporttrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieser rauchige, wirbelnde Trank wirkt den Zauber Teleport auf den Trinker (keine Probe notwendig), nicht jedoch auf weitere Charaktere.

","quantity":1,"price":1000,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"1uHuQJcCjjxzvP4C"} +{"name":"Rüstung des Löwen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Eine Plattenrüstung +2 mit verzierten Löwenköpfen, die Laufen +1,5m gewährt.

","quantity":1,"price":6800,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-gold.webp","effects":[{"_id":"uOEN4xXL3IcebbJO","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true},{"_id":"iIT1kOsyMJn0mIte","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":1.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen +1,5 (magisch)","tint":"","transfer":true}],"_id":"1uYooTtDWgzB9FI9"} +{"name":"Wechselring","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Mittels Wechsler +V verleiht dieser Ring +10 auf Proben, um die eigenen Zauber zu wechseln.

","quantity":1,"price":1502,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/finger/ring-cabochon-white-blue.webp","effects":[],"_id":"1vrVO2sqFqC4AA1k"} +{"_id":"2BNzuiU6wc3r9ByF","name":"Plattenarmschienen +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":4257,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"vambrace"},"flags":{},"img":"icons/equipment/wrist/bracer-armored-steel-blue.webp","effects":[{"_id":"PIRBFfHOrmdREhnH","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"2C0GH1sYXj8QtRTK","name":"Krummsäbel +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1756,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/swords/scimitar-guard-brown.webp","effects":[{"_id":"xjUL1B0P5jhze3vQ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"2JQowFF6ZjF90OFI","name":"Hellebarde","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2, Zerbricht bei Schlagen-Patzer

","quantity":1,"price":1754,"availability":"village","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":0},"flags":{},"img":"icons/weapons/polearms/halberd-engraved-black.webp","effects":[{"_id":"APXje5Ppu0d75HNw","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true}]} +{"name":"Abklingring","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Dieser einfache Abklingring senkt die Abklingzeit sämtlicher Zauber seines Trägers um 1.

","quantity":1,"price":5252,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/finger/ring-band-engraved-scrolls-silver.webp","effects":[],"_id":"2XfoxOYNOTar9OAt"} +{"name":"Atemfreitrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Der Trinker dieses sprudelnden Trankes braucht für KÖR in Stunden nicht zu atmen.

","quantity":1,"price":200,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"2jgIyVHZYJroSUFY"} +{"_id":"2le5COwoh45Pc4oD","name":"Flegel +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -2

","quantity":1,"price":1758,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-1},"flags":{},"img":"icons/weapons/maces/flail-cube-grey.webp","effects":[{"_id":"yXvt3CT4FbXYjIfc","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"rUye8ORwMGGtWPrr","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"2ydkhz5gDjxAiaYy","name":"Bihänder +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":2260,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-5},"flags":{},"img":"icons/weapons/swords/greatsword-crossguard-engraved-green.webp","effects":[{"_id":"DaKTtdhRO45QZuDJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true},{"_id":"qdSiJ4l0AuTd68CB","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"34fD45Yzi3s2cSgy","name":"Lederpanzer (Für Reittiere) +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":4262,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/commodities/leather/leather-leaf-tan.webp","effects":[{"_id":"DY0fXwaK8RHbyo75","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"3ZCLI6UN4i0zTeuv","name":"Krummschwert +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-2},"flags":{},"img":"icons/weapons/swords/scimitar-bone.webp","effects":[{"_id":"MUERgL0DjjZR3sv0","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"3pdw4CN8Wc9oCKX5","name":"Schloss: Einfach (SW: 0)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/chest/chest-reinforced-steel-oak-tan.webp","effects":[]} +{"_id":"3zqSBuiQWIsIov4h","name":"Kletterausrüstung","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/survival/rope-wrapped-loops-grey.webp","effects":[]} +{"_id":"4E9WdEs1JaWrCYim","name":"Wagen (4 Räder)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":35,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/commodities/wood/wood-wheel-brown.webp","effects":[]} +{"name":"Rüstung des Kriegers","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese aufwendig verzierte Plattenrüstung +2 gewährt ihrem Träger +1 auf Körper.

","quantity":1,"price":7300,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-metal-white-02.webp","effects":[{"_id":"uOEN4xXL3IcebbJO","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true},{"_id":"TZoEpatdi8z1nreX","flags":{},"changes":[{"key":"data.attributes.body.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Körper +1 (magisch)","tint":"","transfer":true}],"_id":"55AkLjiaIn0SWO9k"} +{"_id":"5DY52CR03xXJHG6m","name":"Plattenpanzer +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":6300,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-metal-pieced-grey-02.webp","effects":[{"_id":"wz2krJzwVba18XvV","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"5KxdKllRXuau0Uhm","name":"Breitschwert","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":8,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":-2},"flags":{},"img":"icons/weapons/swords/sword-broad-worn.webp","effects":[]} +{"_id":"5MrsKOS4sAxpMv2U","name":"Lanze +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Nur im Trab (WB +1) oder Galopp (WB +4)

","quantity":1,"price":1752,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/polearms/spear-flared-blue.webp","effects":[{"_id":"iLA1AQrTlmA0BFnC","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"name":"Immertreff","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Ein tödlicher Langbogen +2 mit Fieser Schuss +II und Scharfschütze +II.

\n

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":10660,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":4,"opponentDefense":-2},"flags":{},"img":"icons/weapons/bows/longbow-gold-pink.webp","effects":[{"_id":"XsqzwEX1AvYJyczG","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"iUXn0CQKZw6Rr1yH","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}],"_id":"5cqP2SvMe5j0BD3t"} +{"_id":"60MhQmXh0c2cT5nx","name":"Lederpanzer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":4,"availability":"hamlet","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-banded-leather-brown.webp","effects":[]} +{"_id":"6QehiJpVqqA9bW3P","name":"Hammer +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/hammers/shorthammer-double-steel-embossed.webp","effects":[{"_id":"xQlGUPOpB6Me9OgF","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"name":"Gewänder des Adlers","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese hellbeige, mit Adlerfedern verzierte Lederrüstung +1 gewährt +1 auf Geist.

","quantity":1,"price":4254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-banded-simple-leather-brown.webp","effects":[{"_id":"CUa4rA1A1cwWac46","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true},{"_id":"cl2PqWeAtDsBjz8k","flags":{},"changes":[{"key":"data.attributes.mind.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Geist +1 (magisch)","tint":"","transfer":true}],"_id":"6UBvjMJd6n5P5YWv"} +{"_id":"6WqPqjMQMMPjV99U","name":"Kurzbogen +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1

","quantity":1,"price":1256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/bows/shortbow-recurve-leather.webp","effects":[{"_id":"zgiIGlRMVCgAzrn7","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"8iny3Tt6i6g5EcYh","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Trank der Lebenskraft","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Diese meist blutroten Tränke erhöhen die Lebenskraft um W20 für W20 Stunden.

","quantity":1,"price":500,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"74iFRkzvOwLxOxOq"} +{"_id":"7CCoTap4GzN1uSNw","name":"Krummschwert +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-1},"flags":{},"img":"icons/weapons/swords/scimitar-guard-wood.webp","effects":[{"_id":"Vg3Q9A7QIXHrABFk","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"7JCc96rbTbTSASbT","name":"Metallbesteck","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":4,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/cooking/fork-steel-grey.webp","effects":[]} +{"_id":"7g4vNrJOoX0v4Byu","name":"Keule +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":2250.2,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/clubs/club-banded-brown.webp","effects":[{"_id":"8y8e8BsFQZZkwUXk","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"830D1zHS3v0Gx4nB","name":"Schlagring +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Wie waffenlos, Gegner aber kein Abwehr-Bonus

","quantity":1,"price":1251,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/fist/fist-knuckles-spiked-stone.webp","effects":[{"_id":"iQZLQlcUQgnYg0Hs","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"name":"Wehrpanzer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese massive, mit Metallverzierungen verstärkte Plattenrüstung +3 verfügt sogar über einen Halspanzer und gewährt ihrem Träger zusätzlich +2 auf Abwehr.

","quantity":1,"price":7300,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-cuirass-steel-grey.webp","effects":[{"_id":"wz2krJzwVba18XvV","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true},{"_id":"TuRxuZf6QZL2OvRk","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Abwehr +2 (magisch)","tint":"","transfer":true}],"_id":"83CJm0YUiYxIpcQx"} +{"_id":"89ZunLlXp1Lm6Wzd","name":"Holzschild +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":2251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/round-wooden-boss-steel-red.webp","effects":[{"_id":"1M6yYhufFsvYsske","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"8B4biRyQ6SN0fYtl","name":"Krummsäbel +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/swords/scimitar-guard-red.webp","effects":[{"_id":"muxy8RtkuaOsrY2H","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"8CYWepouh43ffkZ0","name":"Rauchkraut (5 Pfeifenköpfe)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/commodities/flowers/flower-green.webp","effects":[]} +{"_id":"8YpZMXq9RhMCJOst","name":"Angelhaken und Schnur","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.2,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/fishing/hook-barbed-steel-brown.webp","effects":[]} +{"_id":"8la7FJ8kpGNUWrCg","name":"Kurzschwert +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":1256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/swords/shortsword-green.webp","effects":[{"_id":"CElngj6OWPpIw37j","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"99xGE9jkmXEXyf4U","name":"Plattenpanzer (Für Reittiere) +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Laufen -0,5m

","quantity":1,"price":4400,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/commodities/metal/mail-plate-steel.webp","effects":[{"_id":"pAxAXam5JBN6Acz9","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true},{"_id":"Jkhqmke6gzWU8vPZ","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"9H3CBGOLUJ5JCHGJ","name":"Plattenbeinschienen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Laufen -0,5m

","quantity":1,"price":8,"availability":"village","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"greaves"},"flags":{},"img":"icons/equipment/leg/pants-armored-tasset-steel.webp","effects":[{"_id":"sIbiQW6tSjZyfCzk","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true}]} +{"_id":"9MsBlnMhvAMe4zTk","name":"Leichte Armbrust +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":1758,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":3,"opponentDefense":-1},"flags":{},"img":"icons/weapons/crossbows/crossbow-simple-brown.webp","effects":[{"_id":"gMm2PnBADqXBrCi1","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true},{"_id":"sACwF2e5qLRs6c1a","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Andauernder Heiltrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieses oft purpurne Getränk heilt 2W20 Runden lang 1 Lebenskraft/Runde.

","quantity":1,"price":20,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"9NUM3H7oTfrHhFpD"} +{"_id":"9PdQv9CRy4ckaF0j","name":"Metallhelm +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":3256,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"helmet"},"flags":{},"img":"icons/equipment/head/helm-barbute-engraved.webp","effects":[{"_id":"9IOcWr1CbRpF3lya","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"9aY1zWfD5RwZlAUH","name":"Tee (10 Tassen)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.05,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/commodities/flowers/buds-red-green.webp","effects":[]} +{"name":"Smaragd-Schlüssel","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"loot","data":{"description":"

Einmal alle 24h kann man damit den Zauber Öffnen auf ein Schloss wirken.

","quantity":1,"price":null,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/sundries/misc/key-jeweled-gold-purple.webp","effects":[],"_id":"9xQRXWUYj3giHVRC"} +{"name":"Mantel der Augen","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Dieser mit Augenmustern bestickte Mantel gewährt seinem Träger Wahrnehmung +III.

","quantity":1,"price":376,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/back/cloak-collared-red.webp","effects":[],"_id":"9xjica2DVZso8NIU"} +{"_id":"A109X3ZiGGGiWCze","name":"Metallhelm +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":4256,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"helmet"},"flags":{},"img":"icons/equipment/head/helm-barbute-engraved-steel.webp","effects":[{"_id":"vhwepr5mHZHWDkCf","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"A6hSQX9cPpoWHiOh","name":"Lederpanzer +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":4254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-leather-studded.webp","effects":[{"_id":"pYb7mMRhc5KBnUJT","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"name":"Robe des Denkers","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese graue Robe +2 verleiht +1 auf Verstand.

","quantity":1,"price":3251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-white.webp","effects":[{"_id":"0GJ943ZfeGKcsb2l","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true},{"_id":"Fyl7VFU1QhIbh2ul","flags":{},"changes":[{"key":"data.traits.intellect.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"+1 Verstand (magisch)","tint":"","transfer":true}],"_id":"A9QnXaonGzuUBktX"} +{"_id":"ABxdFjBvQWavQsEk","name":"Plattenpanzer +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Laufen -0,5m

","quantity":1,"price":4300,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-steel-green.webp","effects":[{"_id":"pAxAXam5JBN6Acz9","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true},{"_id":"CXouU4P0kZYU6oXR","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"name":"Rüstung des Spähers","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese mit braunen Lederpolstern verstärkte Kettenrüstung +1 gewährt ihrem Träger +1 auf Agilität.

","quantity":1,"price":5260,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-grey.webp","effects":[{"_id":"C7jqj8julpambLpm","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true},{"_id":"1swDTN9Kj7othjdB","flags":{},"changes":[{"key":"data.attributes.mobility.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Agilität +1 (magisch)","tint":"","transfer":true}],"_id":"Akhijp2Wayupy1qw"} +{"name":"Fliegender Teppich","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"loot","data":{"description":"

Ein legendärer Gegenstand aus den heißen Wüstenlanden, in den die Zauber Fliegen und Spurt eingebettet sind. Die Zauber wirken permanent auf denjenigen, der in der Mitte des Teppichs sitzt. Proben auf Zaubern sind nicht erforderlich.

","quantity":1,"price":4340,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/commodities/cloth/cloth-patterned-orange.webp","effects":[],"_id":"AlmkanwZXY9UxMUD"} +{"_id":"Aw9aoumlI69gYv75","name":"Lederschienen +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

An Arm & Bein

","quantity":1,"price":4254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"vambraceGreaves"},"flags":{},"img":"icons/equipment/wrist/bracer-banded-leather-black.webp","effects":[{"_id":"LE8TRjZF13O6kDB8","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"BeXHrv1TQzgfV6Mc","name":"Umhängetasche","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/bags/pack-leather-embossed-brown.webp","effects":[]} +{"_id":"BrsnuGuOEfolt9VV","name":"Flegel +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -2

","quantity":1,"price":2758,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-3},"flags":{},"img":"icons/weapons/maces/flail-studded-grey.webp","effects":[{"_id":"yXvt3CT4FbXYjIfc","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"98YoU1PGqcSm47Zw","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"C2ggZE3ifOXlonkj","name":"Laternenöl (brennt 4h)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.05,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/kitchenware/vase-009.webp","effects":[]} +{"_id":"CHRqMQxkgz3jad9J","name":"Schlagring +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Wie waffenlos, Gegner aber kein Abwehr-Bonus

","quantity":1,"price":1751,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/fist/fist-knuckles-brass.webp","effects":[{"_id":"K3m0tLhoW9vT6e19","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Blutrüstung","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

In diese rotgefärbte Plattenrüstung +1 ist das Talent Verletzen +I eingebettet.

\n

Laufen -0,5m

","quantity":1,"price":5300,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-rivited-red.webp","effects":[{"_id":"pAxAXam5JBN6Acz9","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true},{"_id":"CXouU4P0kZYU6oXR","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}],"_id":"CQZtlL8zUdOVUVrU"} +{"_id":"CsUnbnytOapKsjuW","name":"Kartenspiel","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/sundries/gaming/playing-cards-black.webp","effects":[]} +{"_id":"D4aCfCqniMSQ43hL","name":"Plattenpanzer (Für Reittiere)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Laufen -1m

","quantity":1,"price":150,"availability":"village","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/commodities/metal/mail-plate-steel.webp","effects":[{"_id":"pAxAXam5JBN6Acz9","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -1m","tint":"","transfer":true}]} +{"name":"Wolfsmantel","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese Lederrüstung aus Wolfspelz verleiht ihrem Träger +3 auf sämtliche Bemerken-Proben. Ein ausgenommener Wolfskopf bildet die Kapuze.

","quantity":1,"price":1004,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/shirt-simple-grey.webp","effects":[],"_id":"D7MaTfapKAeO5TRs"} +{"_id":"DRClmtZNGGYtritZ","name":"Kettenpanzer +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":5260,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-grey.webp","effects":[{"_id":"BKpvNVwaSovtKyRB","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"DS11ssHOcZTdZiLK","name":"Lanze","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Nur im Trab (WB +1) oder Galopp (WB +4), Zerbricht bei Schlagen-Patzer

","quantity":1,"price":2,"availability":"village","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":null,"opponentDefense":0},"flags":{},"img":"icons/weapons/polearms/spear-simple-engraved.webp","effects":[]} +{"_id":"Dg8qq9n5FFxZG68k","name":"Langschwert +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-3},"flags":{},"img":"icons/weapons/swords/sword-guard-engraved.webp","effects":[{"_id":"DSf5BV955w2hKZuf","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"ETpbN0Q39eKPmWK0","name":"Schleuder","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":0.1,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":0,"opponentDefense":0},"flags":{},"img":"icons/weapons/slings/slingshot-wood.webp","effects":[]} +{"name":"Schwebenamulett","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Der Zauber Schweben wurde in dieses Amulett gebettet.

","quantity":1,"price":1515,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/neck/amulet-moth-gold-green.webp","effects":[],"_id":"ElUWNqUWZB4dH3QS"} +{"_id":"EwjFWRaLhR33wP92","name":"Langbogen +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":10,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":3,"opponentDefense":-1},"flags":{},"img":"icons/weapons/bows/bow-ornamental-silver-black.webp","effects":[{"_id":"XsqzwEX1AvYJyczG","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"zQsujP8ZT0cwdtqk","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"F1XnlA28XCnT7Y0V","name":"Kurzschwert +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":2256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/swords/shortsword-guard-gold-red.webp","effects":[{"_id":"FZMhm4De8EXj7dBZ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"FFCSMuHlDKiT0MxR","name":"Robe +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":1251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-white.webp","effects":[{"_id":"JjEEDD1H1NvKF1Vr","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"FKg3YI1EtiNfDcYO","name":"Metallschild +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":4258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/heater-steel-spiral.webp","effects":[{"_id":"KZBNNdOmSqFkXC0X","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"FPriMnCQK7DQHzJa","name":"Karren (2 Räder)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":15,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/commodities/wood/wood-wheel-brown.webp","effects":[]} +{"_id":"FVnS20q8S7LrAdFj","name":"Plattenbeinschienen +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":3258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"greaves"},"flags":{},"img":"icons/equipment/leg/cuisses-reticulated-black.webp","effects":[{"_id":"Zw9tFdr75QWyt8lO","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"name":"Söldnertreu","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese mit blauen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +1 auf Schlagen.

","quantity":1,"price":3760,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-grey.webp","effects":[{"_id":"C7jqj8julpambLpm","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true},{"_id":"qTM84JzHmlfYXGCb","flags":{},"changes":[{"key":"data.combatValues.meleeAttack.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Schlagen +1 (magisch)","tint":"","transfer":true}],"_id":"FVrbrxqVURPP3Yee"} +{"_id":"FbfsU0H1E7wCxm0q","name":"Krummsäbel","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":6,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/weapons/swords/scimitar-worn-blue.webp","effects":[]} +{"_id":"FfVzLWtmCVRwFI4n","name":"Hammer +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1.257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/hammers/shorthammer-double-steel.webp","effects":[{"_id":"rqEqNTsSgoto2la8","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"Fl2OHl2zMi281SbE","name":"Dolch","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative +1

","quantity":1,"price":2,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":0,"opponentDefense":0},"flags":{},"img":"icons/weapons/daggers/dagger-black.webp","effects":[{"_id":"9jtH6ER0s0I8SPyi","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true}]} +{"_id":"FoK7Tc7IePUpnDkL","name":"Dicke Reisedecke","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/survival/bedroll-tan.webp","effects":[]} +{"_id":"GEBWsHBuyh9KbIbb","name":"Schleuder +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":750.1,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/slings/slingshot-wood.webp","effects":[{"_id":"YCgrTPMCggWZOFdJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"GG7o5XbvBmmauzIw","name":"Keule +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":1750.2,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/clubs/club-barbed-engraved-brown.webp","effects":[{"_id":"a8zW4tAcGbak3nno","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"GJdez2VgLxwzlZAQ","name":"Schwere Armbrust","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":15,"availability":"village","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/crossbows/crossbow-heavy-black.webp","effects":[{"_id":"N4vxVFNLW9Q9QsIp","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -4","tint":"","transfer":true}]} +{"_id":"GgWdEi4yyPb1wqYn","name":"Lederschienen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

An Arm & Bein

","quantity":1,"price":4,"availability":"hamlet","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"vambraceGreaves"},"flags":{},"img":"icons/equipment/wrist/bracer-simple-leather.webp","effects":[]} +{"_id":"GgYd2UCD2Juq7EUF","name":"Lederpanzer +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":2254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-collared-leather-brown.webp","effects":[{"_id":"CUa4rA1A1cwWac46","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"HIfMiFd0ZbqE3VKt","name":"Verbandszeug","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Verschnaufen +1 oder natürliches Heilergebnis +1

","quantity":1,"price":0.1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/commodities/cloth/cloth-roll-worn-tan.webp","effects":[]} +{"_id":"HNHMmE4wNi0iXIjO","name":"Speer +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":2251,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/polearms/spear-hooked-double-jeweled.webp","effects":[{"_id":"YUzHa2B8n4yYyWyY","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"HcN322i9KLPzp1d4","name":"Kampfstab +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Zielzaubern +1

","quantity":1,"price":1750.5,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/staves/staff-simple-carved.webp","effects":[{"_id":"1aNTAQBai6qAcWGM","flags":{},"changes":[{"key":"data.combatValues.targetedSpellcasting.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Zielzaubern +1","tint":"","transfer":true},{"_id":"7AIeGsBF1gYX7cSX","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"Hna91ve4yx84u7zJ","name":"Lederschienen +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

An Arm & Bein

","quantity":1,"price":2254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"vambraceGreaves"},"flags":{},"img":"icons/equipment/wrist/bracer-simple-leather-steel.webp","effects":[{"_id":"KL8cnKi5NITkDENS","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"HzqK6sd3ovgEZdWz","name":"Rucksack","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":2,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/bags/pack-leather-white-tan.webp","effects":[]} +{"name":"Aderschlitz","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Ein magischer Dolch +2 mit Aderschlitzer +III.

\n

Initiative +1

","quantity":1,"price":7252,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/daggers/dagger-bone-barbed.webp","effects":[{"_id":"9jtH6ER0s0I8SPyi","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"oxrYsZM08ENZAhge","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}],"_id":"IHKj37AVchphOWGZ"} +{"_id":"Idj6BxduoI3v4u9A","name":"Streitaxt +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":2757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-2},"flags":{},"img":"icons/weapons/axes/axe-double-black.webp","effects":[{"_id":"DPS3CaNXapsBzzsj","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"iImvUwfo7IRqnmVv","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"IfvOtBwOEYLPPvJK","name":"Speer +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":1751,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/polearms/spear-hooked-double-engraved.webp","effects":[{"_id":"Kk9b3biK0mISYf75","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"J7d2zx4kqKEdMR1j","name":"Holzschild","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":"

Zerbricht bei einem Abwehr-Patzer

","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/round-wooden-boss-steel-brown.webp","effects":[]} +{"_id":"JG18wEtysl2m6sWq","name":"Kampfstab +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Zielzaubern +1

","quantity":1,"price":2250.5,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/staves/staff-ornate.webp","effects":[{"_id":"1aNTAQBai6qAcWGM","flags":{},"changes":[{"key":"data.combatValues.targetedSpellcasting.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Zielzaubern +1","tint":"","transfer":true},{"_id":"jMu0Mqf6qy2Df8vI","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"JUTPfEGHEEwpeLvv","name":"Lederpanzer +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":3254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-leather-studded-black.webp","effects":[{"_id":"5vJF9ck6rDsBPnKl","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"JZDsSUkQGVf0aOjH","name":"Flegel +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -2

","quantity":1,"price":2258,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-2},"flags":{},"img":"icons/weapons/maces/flail-spiked-grey.webp","effects":[{"_id":"yXvt3CT4FbXYjIfc","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"PD6vgViNBP4QaxMK","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"JZkzRagRS8TKZplw","name":"Zwergenaxt +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -1

","quantity":1,"price":2310,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/axes/axe-double-engraved-runes.webp","effects":[{"_id":"Ytio5tOcCUO91MQ0","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-1,"mode":2}],"duration":{},"label":"Initiative -1","transfer":true},{"_id":"armx56Psy1qosJib","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"JjM6nTZzV28ioIFq","name":"Feuerstein & Zunder","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.05,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/commodities/stone/geode-raw-white.webp","effects":[]} +{"name":"Stärketrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieser nach Schweiß riechende Trank verdoppelt ST für ST in Runden.

","quantity":1,"price":150,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"JlcYB53S1wQRfmUG"} +{"name":"Skrupelloser Bogen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Ein Kurzbogen +1 mit Kleiner Terror, der Feinde angeblich immer in den Rücken trifft.

\n

Zweihändig, Initiative +1

","quantity":1,"price":2006,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/bows/shortbow-recurve-red.webp","effects":[{"_id":"zgiIGlRMVCgAzrn7","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"8iny3Tt6i6g5EcYh","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}],"_id":"K4fd3AlpMoK1EZeg"} +{"name":"Robe der Macht","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese violette Robe +3 verleiht ihrem Träger +1 auf Geist.

","quantity":1,"price":5251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-collared-pink.webp","effects":[{"_id":"Qpy3XcHOokbU7ZaS","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true},{"_id":"tGAxxMZu2cj0Pzs2","flags":{},"changes":[{"key":"data.attributes.mind.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Geist +1 (magisch)","tint":"","transfer":true}],"_id":"KGk7UFwLwrsdPuQe"} +{"_id":"KJsCiqvtPqjyu65Y","name":"Plattenbeinschienen +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":2258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"greaves"},"flags":{},"img":"icons/equipment/leg/cuisses-reticulated-steel.webp","effects":[{"_id":"I32OnPe7rgPEHtEk","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"KOdzXkLHuNkCciAa","name":"Bihänder","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":10,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-4},"flags":{},"img":"icons/weapons/swords/greatsword-guard.webp","effects":[{"_id":"DaKTtdhRO45QZuDJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true}]} +{"_id":"KefO4lxHxwddpFFu","name":"Holzschild +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":4251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/round-wooden-boss-gold-brown.webp","effects":[{"_id":"AkDi2TNzgpT2ZfrH","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"KyhMB9Jn8Vaxs4eF","name":"Axt +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/axes/shortaxe-yellow.webp","effects":[{"_id":"yaR4SKssj8gYJB91","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"L2ZE2l98snBZw5DZ","name":"Federkiel","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/scribal/ink-quill-pink.webp","effects":[]} +{"name":"Verkleinerungstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Verkleinert den Trinkenden auf ein Zehntel seiner normalen Größe für W20 Minuten. KÖR, ST und HÄ werden solange halbiert und die Kampfwerte entsprechend angepasst.

","quantity":1,"price":100,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"LAI81qZlbkr7MlGY"} +{"_id":"Li5rC0lvytKRAc31","name":"Turmschild +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":4265,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2},"flags":{},"img":"icons/equipment/shield/heater-steel-gold.webp","effects":[{"_id":"yfHGGfxxGvmHG6b9","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"name":"Zaubertrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Erhöht die Werte von Zaubern und Zielzauber für die Dauer eines Kampfes um +1.

","quantity":1,"price":25,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"LoY2CnEEWfxbvjEt"} +{"_id":"MO1ga2aLjjkBZRzt","name":"Kurzschwert +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":1756,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/swords/shortsword-guard-silver.webp","effects":[{"_id":"qkDy1MWD6Fkk97e6","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"N3RcggWJuKGtKZyP","name":"Schlachtbeil +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":2770,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-5},"flags":{},"img":"icons/weapons/axes/axe-battle-blackened.webp","effects":[{"_id":"atmWPMxgNoeole7n","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-6,"mode":2}],"duration":{},"label":"Initiative -6","transfer":true},{"_id":"aHr33jsfG78BJ7m2","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"NHV9ho8tGutv0mrS","name":"Zwergenaxt +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -1

","quantity":1,"price":2810,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-4},"flags":{},"img":"icons/weapons/axes/axe-double-engraved-black.webp","effects":[{"_id":"Ytio5tOcCUO91MQ0","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-1,"mode":2}],"duration":{},"label":"Initiative -1","transfer":true},{"_id":"WsibIQWwcjabH8QS","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"NMmZ3Uu9uwAHc5IP","name":"Schwere Armbrust +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":2765,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":5,"opponentDefense":-4},"flags":{},"img":"icons/weapons/crossbows/crossbow-blue.webp","effects":[{"_id":"N4vxVFNLW9Q9QsIp","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -4","tint":"","transfer":true},{"_id":"sOBnfFviucXKykt1","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"NSg4SdEHDuCfwXji","name":"Robe +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":2251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-red.webp","effects":[{"_id":"0GJ943ZfeGKcsb2l","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"name":"Abklingtrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Diese meist hellblauen Tränke halbieren (abrunden) die Abklingzeit aller Zauber für die Dauer eines Kampfes.

","quantity":1,"price":50,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"NZPp8EGEg1JmXdNd"} +{"_id":"Nb65CmtFiiWPpnNZ","name":"Schlachtbeil +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":3770,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":7,"opponentDefense":-7},"flags":{},"img":"icons/weapons/axes/axe-battle-heavy-black.webp","effects":[{"_id":"atmWPMxgNoeole7n","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-6,"mode":2}],"duration":{},"label":"Initiative -6","transfer":true},{"_id":"DJQ1hHJRJuraxIym","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"Nz6gFGSHzHVO3QxA","name":"Breitschwert +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1258,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-3},"flags":{},"img":"icons/weapons/swords/sword-broad-red.webp","effects":[{"_id":"M7zvcLqDr9HuzqTV","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Schwebentrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieses meist grünliche Getränk wirkt den Zauber Schweben (Probenwert 20; Patzer ausgeschlossen).

","quantity":1,"price":25,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"OZU7ietSpnivKPVt"} +{"name":"Elfenstiefel","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Diese bequemen Stiefel erhöhen den Laufen-Wert um 1.

","quantity":1,"price":1251.5,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/feet/boots-leather-green.webp","effects":[{"_id":"mdjigDqsRTZyFNmC","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen +1 (magisch)","tint":"","transfer":true}],"_id":"OaG6IhVfS6EmHRux"} +{"_id":"OvxWaEJrElas3EUL","name":"Waffenlos","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":0,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":0,"opponentDefense":5},"flags":{},"img":"icons/equipment/hand/gauntlet-tooled-leather-brown.webp","effects":[]} +{"name":"Elfischer Tarnumhang","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Dieser Umhang, in den Feengarn eingewebt wurde, verleiht zusätzlich zu seiner eingebetteten Heimlichkeit +III auf Verbergen-Proben +3.

","quantity":1,"price":875.5,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/back/cloak-collared-leaves-green.webp","effects":[],"_id":"PE3eWmsGcd5dVVh4"} +{"name":"Stahlflamme","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Dieses Langschwert +1 mit Flammenklinge kam schon in vielen Kriegen zum Einsatz.

","quantity":1,"price":1757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-1},"flags":{},"img":"icons/weapons/swords/sword-guard-red.webp","effects":[{"_id":"l7qeGLLyuz7VXAAd","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}],"_id":"PPNAghq5SEhO1zNM"} +{"name":"Kristallkugel","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"loot","data":{"description":"

Der Zauber Spionage ist in diese äußerst zerbrechliche Kugel eingebettet.

","quantity":1,"price":1485,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/tools/laboratory/alembic-glass-ball-blue.webp","effects":[],"_id":"PQfSHYKxPqia6nG3"} +{"_id":"PTiDNLKc0l9rD7Kb","name":"Axt +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1756,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-2},"flags":{},"img":"icons/weapons/axes/shortaxe-hammer-steel.webp","effects":[{"_id":"8wzWUlPPd92HiwJs","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"PihP9eVyE4UEi1jj","name":"Leichte Armbrust +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":2258,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":4,"opponentDefense":-2},"flags":{},"img":"icons/weapons/crossbows/crossbow-simple-black.webp","effects":[{"_id":"gMm2PnBADqXBrCi1","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true},{"_id":"63yxBIQ4ZvuvtVsV","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"Q61SvqiQUoVfU99X","name":"Fackel","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Brennt 2h

","quantity":1,"price":0.01,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/sundries/lights/torch-black.webp","effects":[]} +{"_id":"QNDLfvjiv9szUTYT","name":"Morgenstern","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":7,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/maces/mace-flanged-steel.webp","effects":[]} +{"_id":"QNJVRtALi17otgDU","name":"Lederpanzer (Für Reittiere) +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":3262,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/commodities/leather/leather-leaf-tan.webp","effects":[{"_id":"9qPThLRf5cwflety","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"name":"Feindfeger","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Unscheinbar aussehender Bihänder +2 mit Rundumschlag +II.

\n

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":9760,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-6},"flags":{},"img":"icons/weapons/swords/greatsword-crossguard-steel.webp","effects":[{"_id":"DaKTtdhRO45QZuDJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true},{"_id":"0GrRl4XU2UrvbDxs","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}],"_id":"QhJllncFlQu7BGDw"} +{"_id":"QmyAtIDJfnBZvZFg","name":"Bihänder +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":2760,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-6},"flags":{},"img":"icons/weapons/swords/greatsword-guard-jewel-green.webp","effects":[{"_id":"DaKTtdhRO45QZuDJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true},{"_id":"0GrRl4XU2UrvbDxs","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"Qncx0jbmnD2KJAfG","name":"Schlachtbeil +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -6, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":3270,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":6,"opponentDefense":-6},"flags":{},"img":"icons/weapons/axes/axe-battle-engraved-purple.webp","effects":[{"_id":"atmWPMxgNoeole7n","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-6,"mode":2}],"duration":{},"label":"Initiative -6","transfer":true},{"_id":"Qdjy0578meoXi49p","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"QrGtd0N6cChddyG2","name":"Brennholz (Bündel)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.01,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/commodities/wood/kindling-sticks-brown.webp","effects":[]} +{"_id":"QsnvAep80sSVJToD","name":"Kurzbogen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1

","quantity":1,"price":6,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/weapons/bows/shortbow-leather.webp","effects":[{"_id":"zgiIGlRMVCgAzrn7","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true}]} +{"_id":"R1cxU1hzcLopZwhA","name":"Krummsäbel +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/swords/scimitar-guard.webp","effects":[{"_id":"uYIt59oaCKobgftJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"R2LeIutCjDzwGwUx","name":"Sanduhr","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":10,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/tools/navigation/hourglass-grey.webp","effects":[]} +{"_id":"RD0HKxmbhfluw73R","name":"Sack","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.8,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/bags/sack-simple-brown.webp","effects":[]} +{"name":"Orkspalter","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Eine alte, legendäre Zwergenaxt +1 mit Brutaler Hieb +II.

\n

Zweihändig, Initiative -1

","quantity":1,"price":4310,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/axes/axe-double-engraved-runes.webp","effects":[{"_id":"Ytio5tOcCUO91MQ0","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-1,"mode":2}],"duration":{},"label":"Initiative -1","transfer":true},{"_id":"armx56Psy1qosJib","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}],"_id":"RGyfv3y0LxHORAzA"} +{"_id":"RKKhoedvylYWFBN3","name":"Kurzbogen +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1

","quantity":1,"price":2256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/bows/shortbow-recurve-blue.webp","effects":[{"_id":"zgiIGlRMVCgAzrn7","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"OQr5POyJ0Azklftu","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"RWSRxi9np1UrEi7N","name":"Schwere Armbrust +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":3265,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":6,"opponentDefense":-5},"flags":{},"img":"icons/weapons/crossbows/crossbow-ornamental-black.webp","effects":[{"_id":"N4vxVFNLW9Q9QsIp","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -4","tint":"","transfer":true},{"_id":"SlJV88ZHTV0VORzk","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Verjüngungstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Der Trinkende wird augenblicklich W20 Jahre jünger.

","quantity":1,"price":5000,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"RlA4PIa9hnsqoqFi"} +{"_id":"RoXGTPdisjn6AdYK","name":"Weihwasser (1/2 Liter)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":null,"quantity":1,"price":0.1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/kitchenware/vase-005.webp","effects":[]} +{"_id":"RsKimH7snoPFlg4L","name":"Plattenarmschienen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Laufen -0,5m

","quantity":1,"price":7,"availability":"village","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"vambrace"},"flags":{},"img":"icons/equipment/wrist/bracer-armored-steel.webp","effects":[{"_id":"DxcTuYT1mUpj9RdQ","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true}]} +{"name":"Großer Schutztrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Erhöht für W20 Runden die Abwehr um +3.

","quantity":1,"price":100,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Ryv745YriIZNKXG5"} +{"_id":"S0EV25lf5TbN6COJ","name":"Schwere Armbrust +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":2265,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":4,"opponentDefense":-3},"flags":{},"img":"icons/weapons/crossbows/crossbow-loaded-black.webp","effects":[{"_id":"N4vxVFNLW9Q9QsIp","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -4","tint":"","transfer":true},{"_id":"ZBJldrSO6rRHmgnI","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"S204KfhmoRdMDVpZ","name":"Wachskerze (brennt 10h)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.02,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/lights/candle-unlit-tan.webp","effects":[]} +{"_id":"S4pc70BxmRU0DCsW","name":"Schleuder +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":1750.1,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/slings/slingshot-wood.webp","effects":[{"_id":"kM7ZknhuQS8uIJbu","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"SIE4g3gjSkqVIT6W","name":"Streitkolben +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/maces/mace-spiked-wood-grey.webp","effects":[{"_id":"Qg9niqX5oimvg2Fv","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"SLmQz2B4JvywROCv","name":"Flegel","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -2

","quantity":1,"price":8,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":0},"flags":{},"img":"icons/weapons/maces/flail-ball-grey.webp","effects":[{"_id":"yXvt3CT4FbXYjIfc","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true}]} +{"_id":"Sj1iVgklsdFtLq8M","name":"Kurzschwert","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":6,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/weapons/swords/shortsword-guard-brass.webp","effects":[]} +{"_id":"Sks4O3NpwOWQIrIa","name":"Schloss: Meisterartbeit (SW: 8)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":50,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/containers/chest/chest-reinforced-steel-oak-tan.webp","effects":[]} +{"_id":"TBrsx86DgKfq9Qat","name":"Plattenpanzer (Für Reittiere) +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":6400,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/commodities/metal/mail-plate-steel.webp","effects":[{"_id":"ioazIqWWKawYuPBQ","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"TQhwV1dNYfy50y6k","name":"Breitschwert +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1758,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-4},"flags":{},"img":"icons/weapons/swords/shortsword-broad-blue.webp","effects":[{"_id":"g8ZgARGCbMxsnFJe","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"TSoSy8ck9XCUa1SM","name":"Morgenstern +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/maces/mace-round-spiked-grey.webp","effects":[{"_id":"fZ3VByauGosUUN3D","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"TcyE0faEebPLoLOD","name":"Kettenpanzer +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":3260,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-grey.webp","effects":[{"_id":"C7jqj8julpambLpm","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"TjB6AWIwGY5Q8xln","name":"Dietrich","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/tools/hand/lockpicks-steel-grey.webp","effects":[]} +{"name":"Schnelligkeitstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Für W20 Runden erhöht sich der Laufen- Wert des Trinkenden um 100%.

","quantity":1,"price":200,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Tlfjrxlm9NpmVR0L"} +{"_id":"Trl2ljtHi1kRYHTX","name":"Streitkolben +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/maces/mace-studded-steel.webp","effects":[{"_id":"PeyncDD5OoPJkkTO","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"Tu0Mf3Qib68wxpRs","name":"Zwergenaxt +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -1

","quantity":1,"price":3310,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":6,"opponentDefense":-5},"flags":{},"img":"icons/weapons/axes/axe-double-engraved-blue.webp","effects":[{"_id":"Ytio5tOcCUO91MQ0","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-1,"mode":2}],"duration":{},"label":"Initiative -1","transfer":true},{"_id":"ulhp9EsUM5Tf0iCd","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"U89qHZqIfVM8xvaJ","name":"Tagesration (3 Mahlzeiten)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/cooking/can.webp","effects":[]} +{"_id":"U8iwfv7oJNl8CsKK","name":"Runenbestickte Robe +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Aura +1

","quantity":1,"price":3258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-collared-pink.webp","effects":[{"_id":"vgJWV95OeyzrjyFw","flags":{},"changes":[{"key":"data.traits.aura.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Aura +1","tint":"","transfer":true},{"_id":"CFyX5reV96JVL2Cg","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"name":"Schlafstaub","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"loot","data":{"description":"

Wirkt auf ein beworfenes Ziel den Zauber Einschläfern.

","quantity":1,"price":151,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/tools/laboratory/bowl-powder-purple.webp","effects":[],"_id":"UBH03jh91dP6KMtL"} +{"_id":"UNd96UN0NQo8I0SI","name":"Turmschild +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":5265,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2},"flags":{},"img":"icons/equipment/shield/heater-embossed-gold.webp","effects":[{"_id":"ZXSBIh1UotdZuHbj","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"name":"Satteltasche","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"loot","data":{"description":"","quantity":1,"price":4,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/bags/pouch-simple-leather-tan.webp","effects":[],"_id":"UpkQTtuxNS1eOIRu"} +{"name":"Elfischer Sattel","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

In diesen äußerst fein gearbeiteten Sattel ist Reiten +I eingebettet.

","quantity":1,"price":505,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/commodities/leather/leather-studded-tan.webp","effects":[],"_id":"V3D7u9LDumvBwJQI"} +{"name":"Fliegentrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieser oft gelbe Trank wirkt auf den Trinker den Zauber Fliegen (Probenwert 20; Patzer ausgeschlossen).

","quantity":1,"price":200,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"V6ywiDBc1Son1XrQ"} +{"name":"Armreif des Bogners","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Verleiht auf Schießen-Proben mit Bögen einen Bonus von +2.

","quantity":1,"price":1260,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/wrist/bracer-belted-leather-brown.webp","effects":[],"_id":"VJftG703v7db0Cqf"} +{"_id":"VQtcpPYhzifN9Lqr","name":"Plattenarmschienen +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":3257,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"vambrace"},"flags":{},"img":"icons/equipment/wrist/bracer-armored-steel-worn.webp","effects":[{"_id":"pPtRJMUFA3gbNZXx","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"Van6Sze8TZl8Y88o","name":"Zelt (2 Mann)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":4,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/environment/settlement/tent.webp","effects":[]} +{"name":"Kette der Regeneration","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Diese schlichte Silberkette heilt in jeder Kamfprunde 1 LK.

","quantity":1,"price":null,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/neck/choker-chain-thick-silver.webp","effects":[],"_id":"VfjAtfQv5Ga8hoHu"} +{"_id":"VxyrCBfVdbRD5nj8","name":"Wurfmesser +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":1752,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/thrown/dagger-ringed-blue.webp","effects":[{"_id":"hQfQjfXJhE4yDXQU","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Konzentrationstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieser oft graue Trank verdoppelt GEI für GEI in Runden.

","quantity":1,"price":200,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"W2dHT0OENc5kNwnZ"} +{"_id":"WP62N2sjGz3eIN18","name":"Robe","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-teal.webp","effects":[]} +{"_id":"WiW9Sad1D2HjkNMz","name":"Langbogen +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":2760,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":5,"opponentDefense":-3},"flags":{},"img":"icons/weapons/bows/bow-recurve-black.webp","effects":[{"_id":"XsqzwEX1AvYJyczG","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"B6tNz4B208qZf3JU","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Vergrößerungstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Vergrößert den Trinkenden auf das Doppelte seiner normalen Größe für W20/2 Minuten. KÖR, ST und HÄ werden verdoppelt und die Kampfwerte entsprechend angepasst.

","quantity":1,"price":1000,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"Wjcv3WZW3j4jg9XY"} +{"_id":"XBCdDIpdR1weOhiy","name":"Plattenarmschienen +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":2257,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"vambrace"},"flags":{},"img":"icons/equipment/wrist/bracer-armored-steel-white.webp","effects":[{"_id":"IwrLITAgM3vLzkwA","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"XSXEDiMN27cuEoOx","name":"Leichte Armbrust +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":2758,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":5,"opponentDefense":-3},"flags":{},"img":"icons/weapons/crossbows/crossbow-purple.webp","effects":[{"_id":"gMm2PnBADqXBrCi1","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true},{"_id":"z2uPOzDQ47VbWmt5","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Schutztrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Erhöht für W20 Runden die Abwehr um +2.

","quantity":1,"price":50,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"XiW3k793840i0rdo"} +{"_id":"XyDt7MThnLkDCldV","name":"Metallschild +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":3258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/heater-steel-sword-yellow-black.webp","effects":[{"_id":"MidC9f4kBbIz7Z7S","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"YSl6qdVC6fDYVkFQ","name":"Schlachtgeißel +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

","quantity":1,"price":2766,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-6},"flags":{},"img":"icons/weapons/maces/flail-triple-grey.webp","effects":[{"_id":"BdejYg7Bq6tM2ROu","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true},{"_id":"OF7IAa9tUBoz23TD","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"name":"Kundschafterpanzer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese mit braunen Fellschulterpolstern verzierte Kettenrüstung gewährt ihrem Träger +1 auf Bewegung.

\n

Laufen -0,5m

","quantity":1,"price":1260,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-leather.webp","effects":[{"_id":"EkJB0kpYFHRMYSgl","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true},{"_id":"mq2ViimrfXr7sGC7","flags":{},"changes":[{"key":"data.traits.agility.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Bewegung +1 (magisch)","tint":"","transfer":true}],"_id":"ZLDJNdtwxbdiJOP2"} +{"_id":"Zl8ZkPrwHibRYWPh","name":"Allsichttrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Für W20 Minuten kann der Trinker Magie, Unsichtbares und Verborgenes (Fallen, Geheimtüren usw.) automatisch erkennen.

","quantity":1,"price":200,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[]} +{"_id":"ZyML0QPctIXK8A4c","name":"Laterne","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/lights/lantern-iron-yellow.webp","effects":[]} +{"_id":"aJ9xkECmqeBUhING","name":"Schlagring","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Wie waffenlos, Gegner aber kein Abwehr-Bonus

","quantity":1,"price":1,"availability":"village","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":0,"opponentDefense":0},"flags":{},"img":"icons/weapons/fist/fist-knuckles-spiked-grey.webp","effects":[]} +{"_id":"aNGn2tplXGSikyV7","name":"Lederpanzer (Für Reittiere)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":12,"availability":"hamlet","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/commodities/leather/leather-leaf-tan.webp","effects":[]} +{"_id":"aUKnYWOr7Fjy9sVX","name":"Seil (10m)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/survival/rope-wrapped-brown.webp","effects":[]} +{"name":"Feuerballzepter","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Ein Zepter, in das der Zauber Feuerball eingebettet wurde, dessen Aklingzeit man 2x / Tag ignorieren kann.

","quantity":1,"price":7630,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/weapons/wands/wand-carved-fire.webp","effects":[],"_id":"abxhFbHx3dzRUPt8"} +{"_id":"ajO71RuOPNlINZID","name":"Dolch +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative +1

","quantity":1,"price":1252,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/daggers/dagger-straight-green.webp","effects":[{"_id":"9jtH6ER0s0I8SPyi","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"oxrYsZM08ENZAhge","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"an96cOOwr3YujKpe","name":"Ruderboot (2 Mann)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":25,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/nautical/steering-wheel.webp","effects":[]} +{"_id":"bVeWMNBKPWRqrFGj","name":"Lanze +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Nur im Trab (WB +1) oder Galopp (WB +4)

","quantity":1,"price":2252,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/polearms/spear-flared-purple.webp","effects":[{"_id":"5CFUcYAipdyZHdde","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Kriegshorn","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Der Klang des Horns feuert die Kampfgefährten mit seinem eingebetteten Schlachtruf +I an.

","quantity":1,"price":2750.05,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/commodities/treasure/horn-carved-banded.webp","effects":[],"_id":"c3YlvFbZJD6LbhVi"} +{"_id":"c6N4vskeYthnydo3","name":"Plattenpanzer (Für Reittiere) +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":5400,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/commodities/metal/mail-plate-steel.webp","effects":[{"_id":"n0pBAhNqTJbvqDWx","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"cDIVsXpVltyRnhqM","name":"Topf","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/cooking/cauldron-empty.webp","effects":[]} +{"_id":"cFMcSg7PFIcQvf0B","name":"Robe +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":3251,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-purple.webp","effects":[{"_id":"Qpy3XcHOokbU7ZaS","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"name":"Schutzring +2","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Erhöht die Abwehr um 2, ohne dabei Panzerungsmalus zu verursachen.

","quantity":1,"price":1252,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/finger/ring-band-engraved-scrolls-bronze.webp","effects":[{"_id":"yH3Ujo3jKNCYI4n9","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Abwehr +2 (magisch)","tint":"","transfer":true}],"_id":"cg1y2GTJRGhE9Fpy"} +{"name":"Königsblut","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Durch diesen magischen Dolch +3 mit Schattenklinge, Unsichtbarkeit (Abklingzeit 1x täglich ignorierbar) sollen angeblich schon Könige gestorben sein

\n

Initiative +1

","quantity":1,"price":17352,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-3},"flags":{},"img":"icons/weapons/daggers/dagger-bone-engraved-black.webp","effects":[{"_id":"9jtH6ER0s0I8SPyi","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"JLc9UYdHy4aAeqA2","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}],"_id":"cqVt9s7u46u0925o"} +{"_id":"czxph9BZaC6Cj7kM","name":"Morgenstern +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-4},"flags":{},"img":"icons/weapons/maces/mace-round-spiked-black.webp","effects":[{"_id":"JzKt4gdYSSlA6hSo","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"d3ixiQ3FrQndjz46","name":"Blendlaterne","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":8,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/lights/lantern-bullseye-signal-copper.webp","effects":[]} +{"_id":"d4OegxLYAGpzMFsc","name":"Lederbecher","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/kitchenware/mug-stein-grey.webp","effects":[]} +{"_id":"dDhfIuRomMfy2kkP","name":"Anhänger mit heiligem Symbol","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"equipment","data":{"description":"","quantity":1,"price":1,"availability":"village","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/neck/amulet-carved-stone-spiral.webp","effects":[]} +{"_id":"dIA53f3kvU9JgGvg","name":"Bihänder +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":3260,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":6,"opponentDefense":-7},"flags":{},"img":"icons/weapons/swords/greatsword-guard-gem-blue.webp","effects":[{"_id":"DaKTtdhRO45QZuDJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true},{"_id":"n4mZBHWKSQLQcHHD","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"dMbjx675yI2F4rUg","name":"Langschwert +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-1},"flags":{},"img":"icons/weapons/swords/sword-guard-embossed-green.webp","effects":[{"_id":"l7qeGLLyuz7VXAAd","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Trank der Gasgestalt","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieser meist rauchige Trank wirkt auf den Trinker den Zauber Gasgestalt (Probenwert 20; Patzer ausgeschlossen).

","quantity":1,"price":500,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"dUQPe5X6ka3HJLuF"} +{"_id":"dW8OETKY21O3GNHf","name":"Schloss: Solide (SW: 4)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":10,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/containers/chest/chest-reinforced-steel-oak-tan.webp","effects":[]} +{"_id":"dq4wK5bmMvOfwoWH","name":"Kampfstab +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Zielzaubern +1

","quantity":1,"price":1250.5,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/staves/staff-simple-gold.webp","effects":[{"_id":"1aNTAQBai6qAcWGM","flags":{},"changes":[{"key":"data.combatValues.targetedSpellcasting.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Zielzaubern +1","tint":"","transfer":true},{"_id":"ve7iQmkxC6l5WmTE","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Fäustlinge der Verstümmelung","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Diese blutverschmutzten Wildlederhandschuhe gewähren ihrem Träger Brutaler Hieb +I und Verletzen +I.

","quantity":1,"price":3050.1,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/hand/glove-tooled-leather-brown.webp","effects":[],"_id":"dvVhgqCv9VDpFW0l"} +{"_id":"e65AAjglKeU1txL6","name":"Breitschwert +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2258,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-5},"flags":{},"img":"icons/weapons/swords/shortsword-broad-engraved.webp","effects":[{"_id":"BVnmaiguzsq6nSwF","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Bärenpanzer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese mit Bärenfellen und -klauen verzierte Plattenrüstung +2 gewährt ihrem Träger Raserei +I sowie +1 auf Stärke.

","quantity":1,"price":8800,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-steel.webp","effects":[{"_id":"uOEN4xXL3IcebbJO","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true},{"_id":"dxmfRAe4ljoKdi0M","flags":{},"changes":[{"key":"data.traits.strength.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Stärke +1 (magisch)","tint":"","transfer":true}],"_id":"e6LetXJHUY4ndz7B"} +{"_id":"eAd86Ylh42nHoCsx","name":"Axt","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":6,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/weapons/axes/shortaxe-worn-black.webp","effects":[]} +{"_id":"eIXRfSsAL5ECi1uq","name":"Wurfmesser +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":1252,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/thrown/dagger-ringed-engraved-green.webp","effects":[{"_id":"XPV4jbYeNcFVFvZr","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"eLTOIKuFGf3M9HYt","name":"Decke","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/survival/bedroll-worn-beige.webp","effects":[]} +{"_id":"eMeS2JSyiRJ5xO48","name":"Streithammer +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":2756,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-2},"flags":{},"img":"icons/weapons/hammers/hammer-war-rounding.webp","effects":[{"_id":"dcGiLPK2AIDA7NHH","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true},{"_id":"1I5R9xQlug0aSVTZ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"eMyZ5EJ9SsiXaeKK","name":"Streithammer +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":2256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-1},"flags":{},"img":"icons/weapons/hammers/hammer-war-spiked-simple.webp","effects":[{"_id":"dcGiLPK2AIDA7NHH","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true},{"_id":"bPdVsWIS1AC54ZA8","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Allheilungstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Von milchiger Färbung, wirkt dieser Trank den Zauber Allheilung auf den Trinkenden (keine Probe nötig).

","quantity":1,"price":1000,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"eRQ9LUNWbnAuuVX6"} +{"_id":"ec2Aft0epeFhdg9B","name":"Bärenfalle","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Schlagen 30

","quantity":1,"price":10,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/environment/traps/trap-jaw-green.webp","effects":[]} +{"_id":"egleYygLWn8IfeuF","name":"Metallkrug","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/kitchenware/mug-steel-wood-brown.webp","effects":[]} +{"_id":"eqGo6VKETI1UTxP1","name":"Schlachtgeißel +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

","quantity":1,"price":3266,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":6,"opponentDefense":-7},"flags":{},"img":"icons/weapons/maces/flail-triple-grey.webp","effects":[{"_id":"BdejYg7Bq6tM2ROu","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true},{"_id":"uhpIAR3T0P3bJw1C","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"esfwvMs1ffgSXjbS","name":"Metallhelm +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":2256,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"helmet"},"flags":{},"img":"icons/equipment/head/helm-barbute-rounded-steel.webp","effects":[{"_id":"uo5922qyPvi35mhm","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"fB8GyT0S38fomHsg","name":"Tinte (reicht für 50 Seiten)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":2,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/scribal/ink-quill-red.webp","effects":[]} +{"_id":"fKhTsMO4YXDYY8GX","name":"Metallhelm","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Initiative -1

","quantity":1,"price":6,"availability":"hamlet","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"helmet"},"flags":{},"img":"icons/equipment/head/helm-barbute-reinforced.webp","effects":[{"_id":"wlQWjU1kXovR5G1J","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -1","tint":"","transfer":true}]} +{"_id":"fmFM71TpvBxYqmu2","name":"Streithammer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":6,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":0},"flags":{},"img":"icons/weapons/hammers/hammer-simple-iron.webp","effects":[{"_id":"dcGiLPK2AIDA7NHH","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true}]} +{"_id":"fmunGPk80ObkIzUl","name":"Langbogen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":1760,"availability":"city","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":2,"opponentDefense":0},"flags":{},"img":"icons/weapons/bows/longbow-leather-green.webp","effects":[{"_id":"XsqzwEX1AvYJyczG","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true}]} +{"_id":"fnq4WOljIoYdbsUT","name":"Leichte Armbrust","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":8,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":2,"opponentDefense":0,"name":" +1"},"flags":{},"img":"icons/weapons/crossbows/crossbow-simple-purple.webp","effects":[{"_id":"gMm2PnBADqXBrCi1","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative -2","tint":"","transfer":true}]} +{"_id":"fziU7tEIQPowqBJj","name":"Schlagring +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Wie waffenlos, Gegner aber kein Abwehr-Bonus

","quantity":1,"price":751,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/fist/fist-knuckles-spiked-blue.webp","effects":[{"_id":"ph5sqT08zd8lSi7s","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Runenbestickte Feurrobe","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Eine feuerrote Robe +3 mit aufgestickten Flammenrunen und Feuermagier +V.

","quantity":1,"price":4501,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-red.webp","effects":[{"_id":"Qpy3XcHOokbU7ZaS","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}],"_id":"gK76RPRhQF7T4AQC"} +{"_id":"gVwoOpuHkmwvcUow","name":"Langbogen +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":2260,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":4,"opponentDefense":-2},"flags":{},"img":"icons/weapons/bows/bow-ornamental-gold-blue.webp","effects":[{"_id":"XsqzwEX1AvYJyczG","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"iUXn0CQKZw6Rr1yH","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"name":"Wachsamkeitstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieses meist klare Getränk gewährt für W20 Stunden auf alle Bemerken-Proben einen Bonus von +5.

","quantity":1,"price":15,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"gXr3lLQmlHeDMuv5"} +{"_id":"grAnIWqeXTAIGXmN","name":"Wurfmesser","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":2,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":0,"opponentDefense":0},"flags":{},"img":"icons/weapons/thrown/dagger-simple.webp","effects":[]} +{"_id":"gyfU78OLQj8qH3Zh","name":"Metallschild","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":"

Laufen -0,5m

","quantity":1,"price":8,"availability":"hamlet","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/heater-steel-worn.webp","effects":[{"_id":"kDcyXkLx75K2YRCl","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true}]} +{"_id":"hBemmfRcQLFU7PSt","name":"Schlachtgeißel +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

","quantity":1,"price":2266,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-5},"flags":{},"img":"icons/weapons/maces/flail-triple-grey.webp","effects":[{"_id":"BdejYg7Bq6tM2ROu","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true},{"_id":"oOQJt7Ub0PGGjdzW","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"hGiaAJyEUHbPl5pf","name":"Holzbesteck","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.2,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/cooking/fork-steel-tan.webp","effects":[]} +{"_id":"hfxblADLXdGaRMAA","name":"Wurfmesser +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Distanzmalus -1 pro 2m

","quantity":1,"price":752,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/thrown/dagger-ringed-steel.webp","effects":[{"_id":"c2P4Qt8b6GonPFv7","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Glückstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Der Trinkende kann für W20 Stunden alle Patzer ignorieren.

","quantity":1,"price":200,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"hrAyguSjO6JhTE5m"} +{"_id":"htmQWmMCQN620KrE","name":"Langschwert","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":7,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":0},"flags":{},"img":"icons/weapons/swords/sword-guard-blue.webp","effects":[]} +{"_id":"i1ZcbKzviqz0nxjV","name":"Langschwert +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-2},"flags":{},"img":"icons/weapons/swords/sword-guard-purple.webp","effects":[{"_id":"5JZ001rLJuZMJSrD","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"iGiZU77IGQQqlYFr","name":"Metallschild +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":null,"quantity":1,"price":2258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1},"flags":{},"img":"icons/equipment/shield/heater-steel-grey.webp","effects":[{"_id":"9xMdH6XQxlulL7wv","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"iMX7YuWPHnCnbeh8","name":"Talgkerze (brennt 6h)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.01,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/lights/candle-unlit-grey.webp","effects":[]} +{"_id":"iOAmrK7t7ZyrtGy1","name":"Pfeife","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/misc/pipe-wooden-02.webp","effects":[]} +{"_id":"iORLpplub64kuxb4","name":"Streithammer +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -4

","quantity":1,"price":3256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":6,"opponentDefense":-3},"flags":{},"img":"icons/weapons/hammers/hammer-war-spiked.webp","effects":[{"_id":"dcGiLPK2AIDA7NHH","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true},{"_id":"RWRk7pwQf2vs1Aqv","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"iWOrlMcGVAXTvFEg","name":"Holzwürfel (sechsseitig)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.02,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/gaming/dice-runed-tan.webp","effects":[]} +{"_id":"ibiHqm4rH8meeu9m","name":"Turmschild +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"shield","data":{"description":"

Laufen -0,5m

","quantity":1,"price":3265,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2},"flags":{},"img":"icons/equipment/shield/heater-steel-engraved-lance-rest.webp","effects":[{"_id":"ScAKi1eiWow9Y1ZZ","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-0.5,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -0,5m","tint":"","transfer":true},{"_id":"TeyRcwja5lQWHICW","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"j3wcDmBNiDx7sK0n","name":"Runenbestickte Robe +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Aura +1

","quantity":1,"price":2258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-blue.webp","effects":[{"_id":"vgJWV95OeyzrjyFw","flags":{},"changes":[{"key":"data.traits.aura.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Aura +1","tint":"","transfer":true},{"_id":"a2GXKNKHJWdyKb7h","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"_id":"jRzgvvygxk5IjXYB","name":"Speer +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":1251,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/polearms/spear-hooked-red.webp","effects":[{"_id":"r0XGSAypTjvBmHHC","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"jsANSjzxRPKO3AyG","name":"Axt +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/axes/shortaxe-black.webp","effects":[{"_id":"wh12XwprBMtY3BTB","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Schutzring +1","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Erhöht die Abwehr um 1, ohne dabei Panzerungsmalus zu verursachen.

","quantity":1,"price":752,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/finger/ring-band-engraved-lines-bronze.webp","effects":[{"_id":"yH3Ujo3jKNCYI4n9","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Abwehr +1 (magisch)","tint":"","transfer":true}],"_id":"kGTB9f2zPrmedHq4"} +{"name":"Kampftrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Meist von oranger Farbe erhöht solch ein Trank Schlagen und Abwehr für die Dauer eines Kampfes um +1.

","quantity":1,"price":25,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"kIiDbrtAPno14O85"} +{"name":"Robe des Heilers","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Eine weiße Robe, die ihrem Träger +1 auf Heilzauber gewährt.

","quantity":1,"price":751,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-white.webp","effects":[],"_id":"kVRybb0knZkoJLlj"} +{"name":"Unsichtbarkeitsring","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Böse Zungen behaupten, dass dieser Ring, in den Unsichtbarkeit eingebettet ist, seinen Träger zu seinem abhängigen Sklaven macht.

","quantity":1,"price":6972,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/finger/ring-band-rounded-gold.webp","effects":[],"_id":"kurEYTP9rqk8YnND"} +{"name":"Grausame Axt","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Antike Axt +1 mit Verletzen +III

","quantity":1,"price":4256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/axes/shortaxe-simple-black.webp","effects":[{"_id":"wh12XwprBMtY3BTB","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}],"_id":"lHlwYWlgC2iKjDFM"} +{"name":"Waffenweih","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Über eine Waffe geschüttet, verleiht dieser meist silberne Trank dieser für die Dauer eines Kampfes den Effekt des Zaubers Magische Waffe.

","quantity":1,"price":25,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"luYRwVP5oR6cdDMQ"} +{"_id":"mjBwhnK5gf9MIdlm","name":"Streitkolben","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":7,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/maces/mace-spiked-steel-wood.webp","effects":[]} +{"name":"Berserkertrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieses von verrückten Orkschamanen entwickelte, dampfende Getränk heilt drei Kampfrunden jeweils W20 Lebenskraft. In der vierten Runde explodiert der Trinker und verursacht in 2m Radius Schaden in Höhe der erwürfelten Heilung (Abwehr gilt).

","quantity":1,"price":100,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"nH1Vfhhx2jlGoQ6i"} +{"name":"Karten des Schummlers","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"loot","data":{"description":"

In dieses wunderschöne Spielkarten-Set ist der Zauber Zeitstop eingebettet.

","quantity":1,"price":13031,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/sundries/gaming/playing-cards-grey.webp","effects":[],"_id":"nff3XieL5dvOZga9"} +{"name":"Trank der Zwergensicht","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieses meist schwarze Getränk gewährt für W20 Stunden dem Trinker die zwergische Volksfähigkeit Dunkelsicht (siehe GRW Seite 83).

","quantity":1,"price":15,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"nixhgFSQ7jaZrvxD"} +{"name":"Sattel","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"","quantity":1,"price":5,"availability":"hamlet","storageLocation":"-","equipped":false},"flags":{},"img":"icons/commodities/leather/leather-scrap-brown.webp","effects":[],"_id":"nslQfc441x1GG0SL"} +{"name":"Spruchspeicherring","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Einmal pro Tag kann der Träger des Ringes zu einem vorher festgelegten Zauber aktionsfrei wechseln, ohne dafür würfeln zu müssen, da in den Ring Wechselzauber eingebettet wurde.

","quantity":1,"price":4992,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/finger/ring-cabochon-engraved-gold-pink.webp","effects":[],"_id":"oJbpYZlvfJ6kpudj"} +{"name":"Giftbanntrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Wirkt den Zauber Giftbann auf den Trinkenden (keine Probe nötig).

","quantity":1,"price":150,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"oPUlB9rz5rvRKrq8"} +{"_id":"oWvJfxEBr83QxO9Q","name":"Speer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zerbricht bei Schießen-Patzer

","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"meleeRanged","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/weapons/polearms/spear-hooked-simple.webp","effects":[]} +{"name":"Alterungstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Der Trinkende wird augenblicklich W20 Jahre älter, Haare und Nägel wachsen entsprechend.

","quantity":1,"price":500,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"oeyhSfAQQPUbm10p"} +{"_id":"opq2AakrpM9gLSa0","name":"Krummschwert +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2757,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-3},"flags":{},"img":"icons/weapons/swords/scimitar-blue.webp","effects":[{"_id":"RGYzuIow1nDLd681","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"oqnI982dhCya94Tu","name":"Elfenbogen +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":2825,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":5,"opponentDefense":-2},"flags":{},"img":"icons/weapons/bows/longbow-recurve-leather-red.webp","effects":[{"_id":"QScLkDv6gysh119m","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"l9ZRRSrd6yBhQUJL","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"ozPRhUPx9Y9u3GNE","name":"Seife (1 Stück)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/survival/soap.webp","effects":[]} +{"name":"Zornhammer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Ein schwerer, schlichter Streithammer +3, der einst einem Zwergenhelden gehörte.

\n

Zweihändig, Initiative -4

","quantity":1,"price":3256,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":6,"opponentDefense":-3},"flags":{},"img":"icons/weapons/hammers/hammer-double-steel-embossed.webp","effects":[{"_id":"dcGiLPK2AIDA7NHH","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true},{"_id":"RWRk7pwQf2vs1Aqv","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}],"_id":"pQqbXD5ELmjcu4Dd"} +{"_id":"pYP26CskxKade3GF","name":"Pfanne","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":1,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/cooking/pot-camping-iron-black.webp","effects":[]} +{"name":"Talenttrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Metallisch riechend, erhöht dieser Trank für W20 Runden ein vom Trinkenden bereits beherrschtes Talent um +I.

","quantity":1,"price":100,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"pljOii88ltzuQNsu"} +{"_id":"pzD6fcJa1Hk4Duwu","name":"Keule +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":null,"quantity":1,"price":1250.2,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/clubs/club-simple-barbed.webp","effects":[{"_id":"9ZyXiW0n9WJ5WQOv","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"pzjZv0HhCA15wy1i","name":"Holzbecher","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.2,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/kitchenware/mug-simple-wooden-brown.webp","effects":[]} +{"name":"Schutzring +3","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"equipment","data":{"description":"

Erhöht die Abwehr um 3, ohne dabei Panzerungsmalus zu verursachen.

","quantity":1,"price":1752,"availability":"unset","storageLocation":"-","equipped":false},"flags":{},"img":"icons/equipment/finger/ring-band-engraved-scrolls-gold.webp","effects":[{"_id":"yH3Ujo3jKNCYI4n9","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Abwehr +3 (magisch)","tint":"","transfer":true}],"_id":"qlBIUI00RTYZzclX"} +{"_id":"qwXiwcxaDDCzmLLM","name":"Hellebarde +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":2254,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-2},"flags":{},"img":"icons/weapons/polearms/halberd-crescent-steel.webp","effects":[{"_id":"APXje5Ppu0d75HNw","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"cEFYfp6VrhRcwEKz","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":2,"mode":2}],"duration":{},"label":"Initiative +2 (magisch)","transfer":true}]} +{"_id":"rdOU1FmBq1nqQKW5","name":"Streitkolben +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-4},"flags":{},"img":"icons/weapons/maces/mace-spiked-steel-grey.webp","effects":[{"_id":"dgH1Fyz2pVFcmhFL","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Fellmantel des Heilers","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese aus weißem Fell geschneiderte Lederrüstung gewährt +2 auf alle Heilzauber.

","quantity":1,"price":4254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/vest-leather-tattered-white.webp","effects":[{"_id":"5vJF9ck6rDsBPnKl","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}],"_id":"rvDTHq5UoRK6acm6"} +{"_id":"s1xaEPPKJGMImZ9m","name":"Streitaxt +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":2257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-1},"flags":{},"img":"icons/weapons/axes/axe-double-chopping-black.webp","effects":[{"_id":"DPS3CaNXapsBzzsj","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"fQgMSANHWdQrzmlJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Wasserwandeltrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieser oft braune Trank wirkt auf den Trinker den Zauber Wasserwandeln (Probenwert 20; Patzer ausgeschlossen).

","quantity":1,"price":100,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"s47J9CEdTELiRlPT"} +{"_id":"sMJw9EQtd2pYsgYE","name":"Hammer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":7,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/hammers/shorthammer-simple-iron-black.webp","effects":[]} +{"_id":"sUHJSIG8aTs0do67","name":"Runenbestickte Robe +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Aura +1

","quantity":1,"price":1258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-collared-blue.webp","effects":[{"_id":"vgJWV95OeyzrjyFw","flags":{},"changes":[{"key":"data.traits.aura.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Aura +1","tint":"","transfer":true},{"_id":"6NLQSkPxsA3H8Gc8","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"siJAzGmpHVegUKBF","name":"Keule","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zerbricht bei Schlagen-Patzer

","quantity":1,"price":0.2,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/weapons/clubs/club-simple-black.webp","effects":[]} +{"_id":"t13RJoXrsS0HAyIQ","name":"Plattenpanzer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Laufen -1m

","quantity":1,"price":50,"availability":"village","storageLocation":"-","equipped":false,"armorValue":3,"armorMaterialType":"plate","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-steel-grey.webp","effects":[{"_id":"pAxAXam5JBN6Acz9","flags":{},"changes":[{"key":"data.combatValues.movement.total","value":-1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Laufen -1m","tint":"","transfer":true}]} +{"_id":"tAdNTxSRq9hARm1p","name":"Hammer +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":2257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":4,"opponentDefense":-4},"flags":{},"img":"icons/weapons/hammers/shorthammer-embossed-white.webp","effects":[{"_id":"aLeVPvqVvSHnDTsp","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"_id":"tPlXSWQ4mP0dqnOa","name":"Schloss: Zwergenarbeit (SW: 12)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":250,"availability":"city","storageLocation":"-"},"flags":{},"img":"icons/containers/chest/chest-reinforced-steel-oak-tan.webp","effects":[]} +{"name":"Rüstung des Schützen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese mit dunkelgrünen Stoffrändern gesäumte Kettenrüstung +1 gewährt ihrem Träger +3 auf Schießen.

","quantity":1,"price":4760,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":2,"armorMaterialType":"chain","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-scale-grey.webp","effects":[{"_id":"C7jqj8julpambLpm","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true},{"_id":"fwNP4w1u7JP3OFEb","flags":{},"changes":[{"key":"data.combatValues.rangedAttack.total","value":3,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Schießen +3 (magisch)","tint":"","transfer":true}],"_id":"tQ1LUX7in4xuuR12"} +{"name":"Großer Heiltrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Diese meist weinroten Tränke heilen 2W20 Lebenskraft.

","quantity":1,"price":25,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"tW53rAmCXx6rqKMP"} +{"_id":"trop6WmDZEhv3gRA","name":"Dolch +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative +1

","quantity":1,"price":752,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/daggers/dagger-curved-blue.webp","effects":[{"_id":"9jtH6ER0s0I8SPyi","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true},{"_id":"aDUESIHIetT9xLbD","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"u1ycDWee8nHPfZHA","name":"Morgenstern +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1257,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-2},"flags":{},"img":"icons/weapons/maces/mace-round-studded.webp","effects":[{"_id":"nTOl8E9qA6stLcEJ","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"_id":"uDdLTyyNqeXzCssp","name":"Elfenbogen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative +1, Für Zwerge auf Grund der Größe zu unhandlich

","quantity":1,"price":75,"availability":"elves","storageLocation":"-","equipped":false,"attackType":"ranged","weaponBonus":3,"opponentDefense":0},"flags":{},"img":"icons/weapons/bows/longbow-recurve-brown.webp","effects":[{"_id":"QScLkDv6gysh119m","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Initiative +1","tint":"","transfer":true}]} +{"_id":"uVYJY3A8kLne2ZkQ","name":"Parfüm (50 x benutzbar)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Gibt 4 Stunden lang +1 auf Proben sozialer Interaktion mit anderem Geschlecht

","quantity":1,"price":5,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/tools/laboratory/vial-orange.webp","effects":[]} +{"name":"Unsichtbarkeitstrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Dieser oft klare, farblose Trank wirkt auf den Trinker den Zauber Unsichtbarkeit (Probenwert 20; Patzer ausgeschlossen).

","quantity":1,"price":500,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"uYcNgFz5PkaOmK6b"} +{"name":"Stab des Magus","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Ein Kampfstab +1 mit Zielzaubern +3 (insgesamt also mit dem normalen Bonus Zielzaubern +4).

\n

Zweihändig, Zielzaubern +1

","quantity":1,"price":2750.5,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":2,"opponentDefense":-1},"flags":{},"img":"icons/weapons/staves/staff-ornate-purple.webp","effects":[{"_id":"1aNTAQBai6qAcWGM","flags":{},"changes":[{"key":"data.combatValues.targetedSpellcasting.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Zielzaubern +1","tint":"","transfer":true},{"_id":"ve7iQmkxC6l5WmTE","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true},{"_id":"XD3tGbvi1S03diuz","flags":{},"changes":[{"key":"data.combatValues.targetedSpellcasting.total","value":3,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Zielzaubern +3 (magisch)","tint":"","transfer":true}],"_id":"uafOWinH9nnRO3lr"} +{"name":"Klettertrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Der Charakter kann für W20 Runden mit seinem normalen Laufen-Wert wie eine Spinne klettern, selbst kopfüber an der Decke.

","quantity":1,"price":50,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"udsNOh5h0TQmOYBl"} +{"_id":"upLe2iticb6YKsIR","name":"Brechstange","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"","quantity":1,"price":1.5,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/tools/hand/wrench-iron-grey.webp","effects":[]} +{"_id":"upkDR02zMILTPib6","name":"Lanze +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Nur im Trab (WB +1) oder Galopp (WB +4)

","quantity":1,"price":1252,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":-1},"flags":{},"img":"icons/weapons/polearms/spear-flared-green.webp","effects":[{"_id":"d8N240qBKaRGqkcf","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Zauberwechseltrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Diese meist blauen Tränke gewähren für die Dauer eines Kampfes +10 auf Zauber wechseln.

","quantity":1,"price":10,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"uqIQjhDGgbEuHYmd"} +{"name":"Geisterbote","permission":{"default":0,"TAIf4a1vtFG928pw":3},"type":"loot","data":{"description":"

Jeder dieser mit Rauch gefüllten Behälter enthält eine Ladung des Zaubers Botschaft.

","quantity":1,"price":454,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/commodities/materials/glass-orb-blue.webp","effects":[],"_id":"v7WiMqH1XylGqNOy"} +{"_id":"vqKLn65gjoced8jV","name":"Streitaxt","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":7,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":0},"flags":{},"img":"icons/weapons/axes/axe-double-brown.webp","effects":[{"_id":"DPS3CaNXapsBzzsj","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true}]} +{"_id":"w1bZ2431gdOQumWK","name":"Runenbestickte Robe","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Aura +1

","quantity":1,"price":8,"availability":"village","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/coat-leather-blue.webp","effects":[{"_id":"vgJWV95OeyzrjyFw","flags":{},"changes":[{"key":"data.traits.aura.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Aura +1","tint":"","transfer":true}]} +{"_id":"wy8GXE1zjaRpXL8H","name":"Hellebarde +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":2754,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":5,"opponentDefense":-3},"flags":{},"img":"icons/weapons/polearms/halberd-crescent-glowing.webp","effects":[{"_id":"APXje5Ppu0d75HNw","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"JIWNiHZdqmMiPMBz","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":3,"mode":2}],"duration":{},"label":"Initiative +3 (magisch)","transfer":true}]} +{"name":"Sturmrobe","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese blaugraue Robe +1 mit aufgestickten Sturm- & Gewitterwolken gewährt +1 auf jeden Blitzzauber. Selbst bei Windstille wogt sie in einer leichten Brise.

","quantity":1,"price":1751,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":0,"armorMaterialType":"cloth","armorType":"body"},"flags":{},"img":"icons/equipment/chest/robe-layered-teal.webp","effects":[{"_id":"JjEEDD1H1NvKF1Vr","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}],"_id":"xeSyfEpn3gABmKDR"} +{"_id":"xwjafjsWdZJBVN0A","name":"Kompass","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":35,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/tools/navigation/compass-brass-blue-red.webp","effects":[]} +{"_id":"yDq5abf47mYIw3OG","name":"Plattenbeinschienen +3","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":null,"quantity":1,"price":4258,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"plate","armorType":"greaves"},"flags":{},"img":"icons/equipment/leg/cuisses-plate-reticulated-steel-blue.webp","effects":[{"_id":"dJcAdxKxsUIXzHCa","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":3,"mode":2}],"duration":{},"label":"Panzerung +3 (magisch)","transfer":true}]} +{"_id":"yfqzgTskyIgWZq8A","name":"Schlachtgeißel","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Initiative -4, Bei Schlagen-Patzer trifft Angreifer sich selbst (Patzer ausgeschlossen)

","quantity":1,"price":16,"availability":"village","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-4},"flags":{},"img":"icons/weapons/maces/flail-triple-grey.webp","effects":[{"_id":"BdejYg7Bq6tM2ROu","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-4,"mode":2}],"duration":{},"label":"Initiative -4","transfer":true}]} +{"_id":"ygiod7LPfxwz0Jbb","name":"Wasserschlauch (5 Liter)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/survival/waterskin-leather-brown.webp","effects":[]} +{"_id":"ylWwhiSGGWLee2PA","name":"Kampfstab","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Zielzaubern +1, Zerbricht bei Schlagen-Patzer

","quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":1,"opponentDefense":0},"flags":{},"img":"icons/weapons/staves/staff-simple.webp","effects":[{"_id":"1aNTAQBai6qAcWGM","flags":{},"changes":[{"key":"data.combatValues.targetedSpellcasting.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Zielzaubern +1","tint":"","transfer":true}]} +{"_id":"yleQcy5mTJ5jn3RZ","name":"Lederschienen +2","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

An Arm & Bein

","quantity":1,"price":3254,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"vambraceGreaves"},"flags":{},"img":"icons/equipment/wrist/bracer-straight-leather-red.webp","effects":[{"_id":"YzSUbB0a2EknrxQQ","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":2,"mode":2}],"duration":{},"label":"Panzerung +2 (magisch)","transfer":true}]} +{"name":"Wildhüterharnisch","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

In diese aus Fellen zusammengenähte Lederrüstung +1 wurde der Zauber Tierbeherrschung eingebettet.

","quantity":1,"price":4714,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-leather-brown.webp","effects":[{"_id":"CUa4rA1A1cwWac46","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}],"_id":"yocl6DZ7hfOupqqz"} +{"_id":"yuSDAJwN3NFfcTSE","name":"Lederpanzer (Für Reittiere) +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"","quantity":1,"price":2262,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/commodities/leather/leather-leaf-tan.webp","effects":[{"_id":"ISagK3JV33VmnmoX","flags":{},"changes":[{"key":"data.combatValues.defense.total","value":1,"mode":2}],"duration":{},"label":"Panzerung +1 (magisch)","transfer":true}]} +{"_id":"zAMFB4HHHUQp4RFa","name":"Schloss: Gut (SW: 2)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/containers/chest/chest-reinforced-steel-oak-tan.webp","effects":[]} +{"_id":"zQLTx3zmJfnrdmlN","name":"Werkzeugset","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"","quantity":1,"price":5,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/tools/hand/hammer-and-nail.webp","effects":[]} +{"name":"Kluft des Jägers","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"armor","data":{"description":"

Diese braun-grüne Lederrüstung gewährt neben Jäger +I ihrem Träger +1 auf Bewegung.

","quantity":1,"price":1504,"availability":"unset","storageLocation":"-","equipped":false,"armorValue":1,"armorMaterialType":"leather","armorType":"body"},"flags":{},"img":"icons/equipment/chest/breastplate-layered-leather-green.webp","effects":[{"_id":"RXgVHCUhqvSvdubt","flags":{},"changes":[{"key":"data.traits.agility.total","value":1,"mode":2}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"","label":"Bewegung +1 (magisch)","tint":"","transfer":true}],"_id":"zWMPzHIY3vkrCIEJ"} +{"_id":"zXgxu2gCkaTSSSMU","name":"Waffenpaste","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Macht WB+1; hält W20 Nahkampfangriffe bzw. reicht für W20 Fernkampfgeschosse

","quantity":1,"price":0.5,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/tools/laboratory/bowl-liquid-black.webp","effects":[]} +{"_id":"zjefX9KYvMphtVwX","name":"Handschellen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Preis für beide Schlösser extra ermitteln

","quantity":1,"price":8,"availability":"village","storageLocation":"-"},"flags":{},"img":"icons/sundries/survival/cuffs-shackles-steel.webp","effects":[]} +{"_id":"zoPPqqDyRTvmV2do","name":"Hellebarde +1","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"weapon","data":{"description":"

Zweihändig, Initiative -2

","quantity":1,"price":4,"availability":"unset","storageLocation":"-","equipped":false,"attackType":"melee","weaponBonus":3,"opponentDefense":-1},"flags":{},"img":"icons/weapons/polearms/halberd-crescent-engraved-steel.webp","effects":[{"_id":"APXje5Ppu0d75HNw","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":-2,"mode":2}],"duration":{},"label":"Initiative -2","transfer":true},{"_id":"FuPTO8plsKR3lq8Z","flags":{},"changes":[{"key":"data.combatValues.initiative.total","value":1,"mode":2}],"duration":{},"label":"Initiative +1 (magisch)","transfer":true}]} +{"name":"Zieltrank","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Erhöht die Werte von Schießen und Zielzauber für die Dauer eines Kampfes um +1.

","quantity":1,"price":25,"availability":"unset","storageLocation":"-"},"flags":{},"img":"icons/svg/mystery-man.svg","effects":[],"_id":"zqlc3bq1ZfneLeYx"} +{"_id":"zquQpOOVr5lIbnmL","name":"Heilkraut","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":"

Probenwert 10: 1-10 heilt LK in Ergebnishöhe, 11+ kein Heileffekt

","quantity":1,"price":2.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/tools/laboratory/bowl-herbs-green.webp","effects":[]} +{"_id":"zx3FKwvrLw147ARX","name":"Pergamentblatt","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"loot","data":{"description":null,"quantity":1,"price":0.5,"availability":"hamlet","storageLocation":"-"},"flags":{},"img":"icons/sundries/documents/paper-plain-white.webp","effects":[]} diff --git a/src/packs/languages-and-scripts.db b/src/packs/languages-and-scripts.db new file mode 100644 index 00000000..a87693e8 --- /dev/null +++ b/src/packs/languages-and-scripts.db @@ -0,0 +1,12 @@ +{"name":"Freiwort","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"language","data":{"description":"

Freiwort ist die Gemeinsprache der Freien Lande.

"},"flags":{},"img":"systems/ds4/assets/icons/game-icons/conversation.svg","effects":[],"_id":"GQNpFENXcjJGeYr2"} +{"name":"Zwergisch","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"language","data":{"description":""},"flags":{},"img":"systems/ds4/assets/icons/game-icons/conversation.svg","effects":[],"_id":"PzkVTViII6ungWyp"} +{"name":"Kaitanisch","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"language","data":{"description":""},"flags":{},"img":"systems/ds4/assets/icons/game-icons/conversation.svg","effects":[],"_id":"n6KU1XIzbPWups0D"} +{"name":"Elfisch","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"language","data":{"description":""},"flags":{},"img":"systems/ds4/assets/icons/game-icons/conversation.svg","effects":[],"_id":"xpvHuSywc8lJa2UN"} +{"name":"Zasarisch","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"language","data":{"description":""},"flags":{},"img":"systems/ds4/assets/icons/game-icons/conversation.svg","effects":[],"_id":"usEWD48iYnMHO3Ty"} +{"name":"Ahnenrunen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"alphabet","data":{"description":""},"flags":{},"img":"icons/svg/book.svg","effects":[],"_id":"ylqXcZHRbIBeV20Z"} +{"name":"Gormanische Schrift","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"alphabet","data":{"description":""},"flags":{},"img":"icons/svg/book.svg","effects":[],"_id":"4KbbQeTvvJC7iNrI"} +{"name":"Kaitanische Schrift","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"alphabet","data":{"description":""},"flags":{},"img":"icons/svg/book.svg","effects":[],"_id":"k8FSxBda9CoLOJqZ"} +{"name":"Ornamentschrift","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"alphabet","data":{"description":""},"flags":{},"img":"icons/svg/book.svg","effects":[],"_id":"josgKzD9UmDOvTup"} +{"name":"Keilschrift","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"alphabet","data":{"description":""},"flags":{},"img":"icons/svg/book.svg","effects":[],"_id":"n2Nbg0ttFzcMxp7T"} +{"name":"Zasarische Schrift","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"alphabet","data":{"description":""},"flags":{},"img":"icons/svg/book.svg","effects":[],"_id":"O1U9jd0yJoydHwT8"} +{"_id":"GQNpFENXcjJGeYr2","name":"Freiwort","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"language","data":{"description":"

Freiwort ist die Gemeinsprache der Freien Lande.

"},"flags":{},"img":"systems/ds4/assets/icons/game-icons/conversation.svg","effects":[]} diff --git a/src/packs/special-creature-abilities.db b/src/packs/special-creature-abilities.db new file mode 100644 index 00000000..1a4846a0 --- /dev/null +++ b/src/packs/special-creature-abilities.db @@ -0,0 +1,58 @@ +{"_id":"02QMKm8MHzz8yAxL","name":"Zerstampfen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann einen Angriff pro Kampfrunde mit -6 ausführen, um das Ziel (sofern 1+ Größenkategorie kleiner) zu zerstampfen. Pro Größenunterschied wird der -6 Malus um 2 gemindert. Bei einem erfolgreichen Angriff wird nicht abwehrbarer Schaden verursacht.

","experiencePoints":15},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/crush.png","effects":[]} +{"_id":"05D4DdnbcQFoIllF","name":"Schweben","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann, statt zu laufen, auch schweben. Wird die Aktion “Rennen” ausgeführt, erhöht sich die Geschwindigkeit wie am Boden auf Laufen x 2.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/hover.png","effects":[]} +{"_id":"18PDF4gqWrIRWudN","name":"Schwimmen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann, statt zu laufen, schwimmen. Wird die Aktion “Rennen” schwimmend ausgeführt, erhöht sich die Geschwindigkeit ganz normal auf Laufen x 2.

","experiencePoints":5},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/swim.png","effects":[]} +{"name":"Mehrere Angriffe (+4)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann 4 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png","effects":[],"_id":"1JDyMkVOlho7IuiN"} +{"name":"Mehrere Angriffe (+2)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann 2 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png","effects":[],"_id":"1zPOH37f7Q5Rwodx"} +{"_id":"3LGUHTPC3tbVC13X","name":"Angst (2)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -2 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

","experiencePoints":20},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/fear.png","effects":[]} +{"_id":"5PdSHi6PY4TNV9rP","name":"Schleudern","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Schlagen-Immersieg schleudert das Ziel (sofern 1+ Größenkategorie kleiner) Schaden/3 m fort. Das Ziel erleidet für die Distanz Sturzschaden, gegen den es normal Abwehr würfelt, und liegt am Boden.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/flinging.png","effects":[]} +{"_id":"5eB5a0FnygbaqWPe","name":"Versteinern","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Bei einem erfolgreichen Blickangriff versteinert das Ziel, sofern diesem KÖR+AU misslingt. Eine Versteinerung kann durch den Zauber Allheilung aufgehoben werden.

","experiencePoints":50},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/petrification.png","effects":[]} +{"_id":"5maJ8tHAVZCxHGW6","name":"Lähmungseffekt","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Der lähmende Angriff (nur alle 10 Kampfrunden einsetzbar) macht Ziel für Probenergebnis in Kamprunden bewegungsunfähig, sofern ihm nicht KÖR+ST gelingt.

","experiencePoints":25},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/paralysis-effect.png","effects":[]} +{"_id":"602AkdkLqx6NWprb","name":"Werteverlust (AGI)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Pro schadensverursachendem Treffer wird AGI um 1 gesenkt (bei AGI Null ist das Opfer bewegungsunfähig). Pro Tag oder Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

","experiencePoints":15},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png","effects":[]} +{"_id":"75iKq2PTrfyTw0s4","name":"Dunkelsicht","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann selbst in völliger Dunkelheit noch sehen.

","experiencePoints":7},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/darkvision.png","effects":[]} +{"name":"Mehrere Angriffglieder (+3)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Greift mit 3 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png","effects":[],"_id":"8HmrA97ZqN7nEYgm"} +{"_id":"AjPsjbxcuNslQEuE","name":"Umschlingen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Schlagen-Immersieg umschlingt Ziel (sofern 1+ Größenkategorie kleiner), welches fortan ST Punkte abwehrbaren Schaden erleidet, sich nicht frei bewegen kann und einen Malus von -2 auf alle Proben pro Größenunterschied erhält. Befreien: Opfer mit AGI+ST vergleichende Probe gegen KÖR+ST des Umschlingers.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/entangle.png","effects":[]} +{"_id":"BtjiEmhGyje6YghP","name":"Sonar","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

“Sieht” per Sonar.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/sonar.png","effects":[]} +{"_id":"Dt7AvP3fUbOQB4Yn","name":"Angst (4)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -4 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

","experiencePoints":40},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/fear.png","effects":[]} +{"_id":"E5WqX3Em2HOAkP2e","name":"Anfällig (Wasser)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Erhält doppelten Schaden durch Eis-, Frost- und Wasserangriffe.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png","effects":[]} +{"_id":"FCxjdPJ1L8EJd0IF","name":"Nur durch Magie verletzbar","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Nur Angriffe mit magischen Waffen oder durch Zauber richten Schaden an. Ausgenommen sind eventuelle Anfälligkeiten, durch die ebenfalls Schaden erlitten wird.

","experiencePoints":50},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/only-vulnerable-to-magic.png","effects":[]} +{"_id":"HMCFkxVzU2b3KkSA","name":"Bezaubern","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann Gegner mit einem “Lockruf” bezaubern. Dieser Zauber funktioniert wie der Zauberspruch Gehorche. Abklingzeit des Lockrufs: 10 Kampfrunden

","experiencePoints":25},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/charm.png","effects":[]} +{"_id":"ImVvi7XqDvf6D2vY","name":"Anfällig (Luft)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Erhält doppelten Schaden durch Blitz-, Sturm- und Windangriffe.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png","effects":[]} +{"_id":"KDDlwN9as9B4ljeA","name":"Wesen des Lichts (Settingoption)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Gilt in den meisten Settings als ein Wesen des Lichts. Angewendete Regeln für Wesen des Lichts gelten für diese Kreatur.

","experiencePoints":5},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/creature-of-light.png","effects":[]} +{"_id":"Kbb8qlLeVahzxy5N","name":"Kletterläufer","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann mit normaler Laufen- Geschwindigkeit an Wänden und Decken aktionsfrei klettern.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/climber.png","effects":[]} +{"_id":"L0dxlrCY14bLyUdQ","name":"Sturmangriff","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Wird mindestens eine Distanz in Höhe von Laufen gerannt, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/charge.png","effects":[]} +{"name":"Mehrere Angriffe (+3)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann 3 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png","effects":[],"_id":"LM5xia0xVIlhQsLG"} +{"_id":"Mh6bLPD3N29ybeLq","name":"Regeneration","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Regeneriert jede Kampfrunde aktionsfrei LK in Höhe des Probenergebnisses der Regenerations- Probe (PW: KÖR). Durch Feuer oder Säure verlorene LK können nicht regeneriert werden.

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/regeneration.png","effects":[]} +{"_id":"R3j1CjXJckUH0CBG","name":"Wesen der Dunkelheit (Settingoption)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Gilt in den meisten Settings als ein Wesen der Dunkelheit. Angewendete Regeln für Wesen der Dunkelheit gelten für diese Kreatur.

","experiencePoints":5},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/creature-of-darkness.png","effects":[]} +{"name":"Mehrere Angriffglieder (+4)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Greift mit 4 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png","effects":[],"_id":"R6jT1GYF13ZijtM0"} +{"_id":"RwT0NBwkc1TuAR1e","name":"Werteverlust (KÖR)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Pro schadensverursachendem Treffer wird KÖR um 1 gesenkt (bei KÖR Null ist das Opfer tot). Pro Tag oder Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

","experiencePoints":15},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png","effects":[]} +{"name":"Mehrere Angriffglieder (+1)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Greift mit 1 zusätzlichem Angriffsglied an, das Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png","effects":[],"_id":"Sig4tVDj8zLWZCEP"} +{"_id":"TY1ZV1YsyaFtfX7U","name":"Gift (1)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 1 nicht abwehrbaren Schadenspunkt pro Runde.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/poison.png","effects":[]} +{"name":"Mehrere Angriffglieder (+2)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Greift mit 2 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png","effects":[],"_id":"VvzGK9lxAD7kuowL"} +{"_id":"X3UfX2rmUKDUXmrC","name":"Angst (5)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -5 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

","experiencePoints":50},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/fear.png","effects":[]} +{"_id":"XhAfEVVoSADC880C","name":"Anfällig (Feuer)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Erhält doppelten Schaden durch Feuerangriffe.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png","effects":[]} +{"_id":"YrmJo8dg4CF3lJdH","name":"Natürliche Waffen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Bei einem Schlagen-Patzer gegen einen Bewaffneten wird dessen Waffe getroffen. Der Angegriffene würfelt augenblicklich & aktionsfrei einen Angriff mit seiner Waffe gegen die patzende Kreatur.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/natural-weapons.png","effects":[]} +{"name":"Mehrere Angriffe (+5)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann 5 zusätzlichen Angriffe in jeder Runde aktionsfrei ausführen.

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png","effects":[],"_id":"YvkRgHyCkwhn3uzg"} +{"_id":"ZkgZiFI5xy8aevG8","name":"Totenkraft","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Erhält GEI+AU als Bonus auf Stärke und Härte.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/power-of-the-dead.png","effects":[]} +{"_id":"aOsmsf7jIK7hU9U8","name":"Anfällig (Licht)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Erhält doppelten Schaden durch Lichtangriffe.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png","effects":[]} +{"_id":"blDuh7uVVhaNSUVU","name":"Angst (3)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -3 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

","experiencePoints":30},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/fear.png","effects":[]} +{"name":"Mehrere Angriffglieder (+5)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Greift mit 5 zusätzlichen Angriffsgliedern an, die Gegner bei einem erfolgreichen Schlagen-Immersieg abtrennen / zertrümmern, wodurch die Angriffszahl letztendlich sinkt.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-limbs.png","effects":[],"_id":"e6VuJIL8ocXQDQ2V"} +{"_id":"e9F812racwKeZPgR","name":"Alterung (1 Jahr pro Treffer)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Bei einem Treffer altert das Ziel um 1 Jahr.

","experiencePoints":1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/aging.png","effects":[]} +{"_id":"eWuQlQYF3VmyR0kt","name":"Sturzangriff","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Wird fliegend mindestens eine Distanz in Höhe von Laufen x 2 “rennend” geflogen, kann in der Runde noch ein Angriff mit Schlagen + KÖR erfolgen, während der Bewegung, also nicht nur davor oder danach.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/dive-attack.png","effects":[]} +{"_id":"fY7yRpxhQTIV5G2p","name":"Verschlingen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Schlagen-Immersieg (mit einem Biss-Angriff) verschlingt Ziel (sofern 2+ Größenkategorien kleiner), welches fortan einen nicht abwehrbaren Schadenspunkt pro Kampfrunde und einen Malus von -8 auf alle Proben erhält. Befreien: Nur mit einem Schlagen-Immersieg, der Schaden verursacht, kann sich der Verschlungene augenblicklich aus dem Leib seines Verschlingers befreien, wenn dieser noch lebt.

","experiencePoints":25},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/devourer.png","effects":[]} +{"_id":"fYLkdhA3Xlw2cctC","name":"Gift (4)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 4 nicht abwehrbaren Schadenspunkt pro Runde.

","experiencePoints":40},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/poison.png","effects":[]} +{"_id":"jywCKRNCWLQFCFmu","name":"Gift (2)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 2 nicht abwehrbaren Schadenspunkt pro Runde.

","experiencePoints":20},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/poison.png","effects":[]} +{"_id":"l4ewILWP2zbiSM97","name":"Blickangriff","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Greift mit seinem Blick aktionsfrei jeden an, dem GEI+AU misslingt. Wer gegen die Kreatur vorgeht, ohne ihr in die Augen zu sehen, erhält -4 auf alle Proben, ist aber nicht mehr Ziel ihrer Blickangriffe.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/gaze-attack.png","effects":[]} +{"_id":"m52MTRs1GMXScTki","name":"Werteverlust (GEI)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Pro schadensverursachendem Treffer wird GEI um 1 gesenkt (bei GEI Null ist das Opfer wahnsinnig). Pro Tag oder Anwendung des Zaubers Allheilung wird 1 verlorener Attributspunkt regeneriert.

","experiencePoints":15},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/attribute-loss.png","effects":[]} +{"_id":"mAWyVCfTFH6JiEIu","name":"Anfällig (Erde)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Erhält doppelten Schaden durch Erd-, Fels- und Steinangriffe.

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/susceptible.png","effects":[]} +{"_id":"mVs6A48mWnfV9hcL","name":"Alterung (1 Jahr pro Schadenspunkt)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Bei einem Treffer altert das Ziel pro erlittenen Schadenspunkt um 1 Jahr.

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/aging.png","effects":[]} +{"name":"Mehrere Angriffe (+1)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann 1 zusätzlichen Angriff in jeder Runde aktionsfrei ausführen.

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/multiple-attacks.png","effects":[],"_id":"oDM4ImE7PrIgn22E"} +{"_id":"oPTuLvZOEsXnRPed","name":"Rost","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Jeder Treffer reduziert die PA eines zufälligen, metallischen, nichtmagischen Rüstungsstückes des Ziels um 1. Gleiches gilt für den WB nichtmagischer Metallwaffen, die die Kreatur treffen.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/rust.png","effects":[]} +{"_id":"oTLaMcZOW0eiUZCL","name":"Gift (5)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 5 nicht abwehrbaren Schadenspunkt pro Runde.

","experiencePoints":50},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/poison.png","effects":[]} +{"_id":"oUR6JglLxmJZduZz","name":"Antimagie (10 Meter)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Sämtliche Magie in einem Radius von 10 Metern um die Kreatur herum ist wirkungslos. Dies gilt nicht für die eigene Magie der Kreatur oder deren Zauber.

","experiencePoints":50},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/anti-magic.png","effects":[]} +{"_id":"pJjtHe2Rd0YCa35n","name":"Nachtsicht","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann bei einem Mindestmaß an Licht noch sehen wie am helllichten Tag.

","experiencePoints":5},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/night-vision.png","effects":[]} +{"name":"Schwarm","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Gilt als einzelner Gegner. Der Schwarmwert (SCW) entspricht seiner aktuellen Mitgliederanzahl/10 (zu Beginn und max. 200 Mitglieder pro Schwarm = SCW 20). Pro 1 LK Schaden sterben 10 Mitglieder (= SCW -1). Schwärme können Mitglieder an benachbarte Felder abgeben und ihr eigenes sowie jedes angrenzende Feld gleichzeitig angreifen (mit jeweils vollen Schlagen-Wert).

\n

Schlagen/Abwehr/LK entsprechen dem aktuellen SCW

","experiencePoints":0},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/swarm.png","effects":[],"_id":"rPbbTLUtSXZpdFjp"} +{"_id":"rUA7XVCeDkREYfi8","name":"Angst (1)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann einmal pro Kampf auf Sicht aktionsfrei Angst erzeugen. Wer GEI+VE+Stufe nicht schafft, ist eingeschüchert und erhält bis zum Ende des Kampfes -1 auf alle Proben. Bei einem Patzer ergreift man die Flucht.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/fear.png","effects":[]} +{"_id":"sDffbUUXg88Vn2Pq","name":"Odem","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Nur alle W20 Runden einsetzbar. Erzeugt nicht abwehrbaren Schaden (Schießen-Angriff) - nur für magische Abwehrboni wird gewürfelt (PW: Bonushöhe). GE x 5m langer Kegel (am Ende GE x 3m breit).

","experiencePoints":-1},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/breath-weapon.png","effects":[]} +{"_id":"uX7wuGyUjOPpYR5W","name":"Fliegen","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Kann, statt zu laufen, mit doppelten Laufen-Wert fliegen. Wird die Aktion “Rennen” im Flug ausgeführt, erhöht sich die Geschwindigkeit somit auf Laufen x 4.

","experiencePoints":15},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/flight.png","effects":[]} +{"_id":"xBZDRJORSen8qcRb","name":"Gift (3)","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Wird Schaden verursacht, würfelt das Ziel eine “Gift trotzen”-Probe, ansonsten erhält es W20 Kampfrunden lang 3 nicht abwehrbaren Schadenspunkt pro Runde.

","experiencePoints":30},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/poison.png","effects":[]} +{"_id":"ziB3j0RSbWMtq1LX","name":"Geistesimmun","permission":{"default":0,"onhXSUZqbwjdEiuE":3},"type":"specialCreatureAbility","data":{"description":"

Immun gegen geistesbeeinflussende Effekte (Bezauberungen, Einschläferung, Hypnose usw.) und Zauber der Kategorie Geistesbeeinflussend.

","experiencePoints":10},"flags":{},"img":"systems/ds4/assets/icons/official/special-creature-abilities/mind-immunity.png","effects":[]} diff --git a/src/scss/components/_actor_sheet.scss b/src/scss/components/_actor_sheet.scss new file mode 100644 index 00000000..037e31d5 --- /dev/null +++ b/src/scss/components/_actor_sheet.scss @@ -0,0 +1,4 @@ +.ds4.sheet.actor { + min-width: 650px; + min-height: 620px; +} diff --git a/src/scss/components/_apps.scss b/src/scss/components/_apps.scss new file mode 100644 index 00000000..a9198045 --- /dev/null +++ b/src/scss/components/_apps.scss @@ -0,0 +1,18 @@ +.window-content { + overflow-y: hidden; + padding: 5px; + + form { + height: 100%; + overflow: hidden; + } + + .sheet-body { + overflow-y: hidden; + } + .tab { + height: 100%; + overflow-y: auto; + align-content: flex-start; + } +} diff --git a/src/scss/components/_basic_property.scss b/src/scss/components/_basic_property.scss new file mode 100644 index 00000000..64a696c5 --- /dev/null +++ b/src/scss/components/_basic_property.scss @@ -0,0 +1,28 @@ +@use "../utils/mixins"; + +.basic-properties { + flex: 0 0 100%; + grid-gap: 2px; + grid-template-columns: repeat(auto-fill, minmax(9em, 1fr)); + .basic-property { + display: grid; + align-content: end; + padding-left: 1px; + padding-right: 1px; + + & > label { + font-weight: bold; + } + + & > select { + display: block; + width: 100%; + } + + .input-divider { + text-align: center; + } + + @include mixins.mark-invalid-or-disabled-input; + } +} diff --git a/src/scss/components/_character_progression.scss b/src/scss/components/_character_progression.scss new file mode 100644 index 00000000..1f9f3642 --- /dev/null +++ b/src/scss/components/_character_progression.scss @@ -0,0 +1,31 @@ +@use "../utils/colors"; +@use "../utils/typography"; +@use "../utils/variables"; + +.progression { + .progression-entry { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-end; + align-items: center; + + padding-right: 3px; + h2.progression-label { + @include typography.font-heading-upper; + display: block; + height: 50px; + padding: 0; + color: colors.$c-light-grey; + border: none; + line-height: 50px; + margin: variables.$margin-sm 0; + text-align: right; + } + input.progression-value { + margin-left: 5px; + flex: 0 0 40px; + text-align: left; + } + } +} diff --git a/src/scss/components/_character_values.scss b/src/scss/components/_character_values.scss new file mode 100644 index 00000000..69ccc0ff --- /dev/null +++ b/src/scss/components/_character_values.scss @@ -0,0 +1,5 @@ +header.sheet-header { + .character-values { + flex: 0 0 100%; + } +} diff --git a/src/scss/components/_check.scss b/src/scss/components/_check.scss new file mode 100644 index 00000000..796959d6 --- /dev/null +++ b/src/scss/components/_check.scss @@ -0,0 +1,11 @@ +@use "../utils/mixins"; + +.ds4-check { + cursor: pointer; + display: flex; + justify-content: space-between; + + &:hover { + @include mixins.foundry-highlight-text-shadow; + } +} diff --git a/src/scss/components/_checks.scss b/src/scss/components/_checks.scss new file mode 100644 index 00000000..9ea67506 --- /dev/null +++ b/src/scss/components/_checks.scss @@ -0,0 +1,7 @@ +.ds4-checks { + column-gap: 2em; + display: grid; + grid-template-columns: repeat(auto-fit, minmax(11em, 1fr)); + row-gap: 0.25em; + white-space: nowrap; +} diff --git a/src/scss/components/_combat_value.scss b/src/scss/components/_combat_value.scss new file mode 100644 index 00000000..81014b0e --- /dev/null +++ b/src/scss/components/_combat_value.scss @@ -0,0 +1,61 @@ +@use "../utils/mixins"; +@use "../utils/variables"; + +.ds4-combat-value { + $size: 3.75rem; + + display: grid; + place-items: center; + row-gap: 0.5em; + + &__value { + $combat-values-icons-path: "#{variables.$official-icons-path}/combat-values"; + @include mixins.centered-content; + + background-position: center; + background-repeat: no-repeat; + background-size: contain; + font-size: 1.5em; + height: $size; + width: $size; + + &--hitPoints { + background-image: url("#{$combat-values-icons-path}/hit-points.png"); + } + &--defense { + background-image: url("#{$combat-values-icons-path}/defense.png"); + } + &--initiative { + background-image: url("#{$combat-values-icons-path}/initiative.png"); + } + &--movement { + background-image: url("#{$combat-values-icons-path}/movement-rate.png"); + } + &--meleeAttack { + background-image: url("#{$combat-values-icons-path}/melee-attack.png"); + } + &--rangedAttack { + background-image: url("#{$combat-values-icons-path}/ranged-attack.png"); + } + &--spellcasting { + background-image: url("#{$combat-values-icons-path}/spellcasting.png"); + } + &--targetedSpellcasting { + background-image: url("#{$combat-values-icons-path}/targeted-spellcasting.png"); + } + } + + &__formula { + align-items: center; + justify-content: space-between; + display: flex; + gap: 0.15em; + text-align: center; + width: $size; + } + + &__formula-base, + &__formula-modifier { + flex: 1 1 4em; + } +} diff --git a/src/scss/components/_combat_values.scss b/src/scss/components/_combat_values.scss new file mode 100644 index 00000000..067a3f00 --- /dev/null +++ b/src/scss/components/_combat_values.scss @@ -0,0 +1,9 @@ +@use "../utils/variables"; + +.ds4-combat-values { + border-bottom: variables.$border-groove; + display: flex; + margin: variables.$margin-sm 0; + padding-bottom: variables.$margin-sm; + justify-content: space-between; +} diff --git a/src/scss/components/_core_value.scss b/src/scss/components/_core_value.scss new file mode 100644 index 00000000..b2fbd151 --- /dev/null +++ b/src/scss/components/_core_value.scss @@ -0,0 +1,36 @@ +@use "../utils/colors"; +@use "../utils/typography"; +@use "../utils/variables"; + +.ds4-core-value { + align-items: center; + display: flex; + + &__label { + @include typography.font-heading-upper; + flex: 1; + font-size: 2em; + text-align: center; + } + + &__value { + align-items: center; + display: flex; + flex: 1.1; + font-size: 1.2em; + gap: 0.15em; + text-align: center; + } + + &__value-input, + &__value-total { + flex: 1 1 4em; + } + + &--trait { + .ds4-core-value__label { + -webkit-text-stroke: 1px colors.$c-black; + color: transparent; + } + } +} diff --git a/src/scss/components/_core_values.scss b/src/scss/components/_core_values.scss new file mode 100644 index 00000000..be687512 --- /dev/null +++ b/src/scss/components/_core_values.scss @@ -0,0 +1,10 @@ +@use "../utils/colors"; +@use "../utils/typography"; +@use "../utils/variables"; + +.ds4-core-values { + column-gap: 0.5em; + display: grid; + grid-template-columns: repeat(3, 1fr); + row-gap: 0.5em; +} diff --git a/src/scss/components/_currency.scss b/src/scss/components/_currency.scss new file mode 100644 index 00000000..582a6547 --- /dev/null +++ b/src/scss/components/_currency.scss @@ -0,0 +1,16 @@ +@use "../utils/variables"; + +.ds4-currency { + align-items: center; + display: flex; + gap: 1em; + margin: 0.5em 0; +} + +.ds4-currency-title { + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; +} diff --git a/src/scss/components/_description.scss b/src/scss/components/_description.scss new file mode 100644 index 00000000..01187302 --- /dev/null +++ b/src/scss/components/_description.scss @@ -0,0 +1,66 @@ +@use "../utils/mixins"; +@use "../utils/variables"; + +.side-properties { + flex: 0; + min-width: fit-content; + max-width: 50%; + margin: 5px 5px 5px 0; + padding-right: 5px; + border-right: variables.$border-groove; + + .side-property { + margin: 2px 0; + display: grid; + grid-template-columns: minmax(40%, max-content) 1fr; + justify-content: left; + + label { + line-height: variables.$default-input-height; + font-weight: bold; + padding-right: 3pt; + } + + input, + select, + a { + text-align: left; + width: calc(100% - 2px); + overflow: hidden; + text-overflow: ellipsis; + } + + @include mixins.mark-invalid-or-disabled-input; + + input[type="checkbox"] { + width: auto; + height: 100%; + margin: 0px; + } + + .unit-data-pair { + display: flex; + flex-direction: row; + select { + width: 4em; + } + input { + max-width: 7em; + } + } + } +} + +.description { + height: 100%; +} + +.sheet-body .tab .editor { + height: 100%; +} + +.tox { + .tox-edit-area { + padding: 0 8px; + } +} diff --git a/src/scss/components/_dice_total.scss b/src/scss/components/_dice_total.scss new file mode 100644 index 00000000..a9082cc1 --- /dev/null +++ b/src/scss/components/_dice_total.scss @@ -0,0 +1,20 @@ +@use "../utils/colors"; + +// Needs to be nested in .dice-roll to win against foundry's style.css with respect to specificity +.dice-roll .ds4-dice-total { + @mixin color-filter($rotation) { + filter: sepia(0.5) hue-rotate($rotation); + } + + &--coup { + @include color-filter(60deg); + background-color: colors.$c-coup-bg; + color: colors.$c-coup; + } + + &--fumble { + @include color-filter(-60deg); + background-color: colors.$c-fumble-bg; + color: colors.$c-fumble; + } +} diff --git a/src/scss/components/_forms.scss b/src/scss/components/_forms.scss new file mode 100644 index 00000000..672b56bd --- /dev/null +++ b/src/scss/components/_forms.scss @@ -0,0 +1,65 @@ +@use "../utils/colors"; +@use "../utils/typography"; +@use "../utils/variables"; + +.item-form { + font-family: typography.$font-primary; +} + +header.sheet-header { + flex: 0 0 auto; + overflow: hidden; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + align-items: flex-start; + + .profile-img { + flex: 0 0 100px; + height: 100px; + margin: variables.$margin-sm 10px variables.$margin-sm 0; + } + + .header-fields { + flex: 1; + } + + h1.charname { + height: 50px; + padding: 0px; + margin: variables.$margin-sm 10px variables.$margin-sm 0; + border-bottom: 0; + @include typography.font-heading-upper; + display: block; + input { + width: 100%; + height: 100%; + margin: 0; + border: none; + background-color: transparent; + @include typography.font-heading-upper; + } + } + h2.item-type { + @include typography.font-heading-upper; + display: block; + height: 50px; + padding: 0px; + flex: 0 0 auto; + color: colors.$c-light-grey; + border: none; + line-height: 50px; + margin: variables.$margin-sm 0; + text-align: right; + } +} + +.sheet-tabs { + flex: 0; +} + +.sheet-body, +.sheet-body .tab { + height: 100%; +} diff --git a/src/scss/components/_item_list.scss b/src/scss/components/_item_list.scss new file mode 100644 index 00000000..b4d2edab --- /dev/null +++ b/src/scss/components/_item_list.scss @@ -0,0 +1,108 @@ +@use "../utils/mixins"; +@use "../utils/variables"; + +.ds4-item-list { + @include mixins.mark-invalid-or-disabled-input; + + $row-height: 1.75em; + + align-items: center; + display: grid; + grid-column-gap: 0.5em; + grid-row-gap: 0.2em; + margin: 0.5em 0; + overflow-y: auto; + padding: 0; + + &--weapon { + grid-template-columns: $row-height $row-height 3ch 3fr $row-height 1fr 3ch 5fr 5ch; + } + &--armor { + grid-template-columns: $row-height $row-height 3ch 3fr 1fr 1fr 3ch 5fr 5ch; + } + &--shield { + grid-template-columns: $row-height $row-height 3ch 1fr 3ch 3fr 5ch; + } + &--equipment { + grid-template-columns: $row-height $row-height 3ch 1fr 10ch 3fr 5ch; + } + &--loot { + grid-template-columns: $row-height 3ch 1fr 10ch 3fr 5ch; + } + &--spell { + grid-template-columns: $row-height $row-height 2fr $row-height 1fr 1fr 1fr 1fr 5ch; + } + &--talent { + grid-template-columns: $row-height 1fr 21ch 3fr 5ch; + } + &--racial-ability, + &--language, + &--alphabet, + &--special-creature-ability { + grid-template-columns: $row-height 1fr 3fr 5ch; + } + + &__row { + display: contents; // TODO: Once chromium supports `grid-template-columns: subgrid` (https://bugs.chromium.org/p/chromium/issues/detail?id=618969), switch to `display: grid; grid: 1/-1; grid-template-columns: subgrid` + + &--header { + font-weight: bold; + } + + > * { + height: $row-height; + line-height: $row-height; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + } + + &__image { + border: none; + } + + &__editable { + background-color: transparent; + border: 0; + padding: 0; + + &--checkbox { + width: 100%; + height: 100%; + margin: 0px; + } + } + + &__description { + overflow: hidden; + text-overflow: ellipsis; + + :not(:first-child) { + display: none; + } + + > * { + font-size: 0.75em; + margin: 0; + overflow: hidden; + text-overflow: ellipsis; + } + } + + &__control-buttons { + display: grid; + grid-template-columns: 1fr 1fr; + text-align: center; + width: 100%; + padding: 0 calc(1em / 3); + } +} + +.ds4-item-list-title { + border-bottom: variables.$border-groove; + font-weight: bold; + margin-bottom: 0; + margin-top: 1em; + padding-left: 1em; +} diff --git a/src/scss/components/_rollable_image.scss b/src/scss/components/_rollable_image.scss new file mode 100644 index 00000000..ba33bca7 --- /dev/null +++ b/src/scss/components/_rollable_image.scss @@ -0,0 +1,33 @@ +.ds4-rollable-image { + position: relative; + + &--rollable { + cursor: pointer; + + &:hover { + .ds4-rollable-image__image { + opacity: 0.25; + } + + .ds4-rollable-image__overlay { + opacity: 1; + } + } + } + + &__image { + border: none; + transition: 0.1s ease; + } + + &__overlay { + border: none; + bottom: 0; + left: 0; + opacity: 0; + position: absolute; + right: 0; + top: 0; + transition: 0.1s ease; + } +} diff --git a/src/scss/components/_tabs.scss b/src/scss/components/_tabs.scss new file mode 100644 index 00000000..064923c3 --- /dev/null +++ b/src/scss/components/_tabs.scss @@ -0,0 +1,15 @@ +@use "../utils/variables"; + +nav.tabs { + height: auto; + border-top: variables.$border-groove; + border-bottom: variables.$border-groove; + .item { + font-weight: bold; + white-space: nowrap; + } + + .item.active { + text-decoration: none; + } +} diff --git a/src/scss/components/_talent_rank_equation.scss b/src/scss/components/_talent_rank_equation.scss new file mode 100644 index 00000000..0b861f9b --- /dev/null +++ b/src/scss/components/_talent_rank_equation.scss @@ -0,0 +1,12 @@ +.ds4-talent-rank-equation { + display: flex; + gap: 0.5em; + + &__value { + background-color: transparent; + border: 0; + height: auto; + padding: 0; + text-align: center; + } +} diff --git a/src/scss/ds4.scss b/src/scss/ds4.scss new file mode 100644 index 00000000..69f44dae --- /dev/null +++ b/src/scss/ds4.scss @@ -0,0 +1,32 @@ +@use 'sass:meta'; + +/* Global styles */ +@include meta.load-css("global/accessibility"); +@include meta.load-css("global/flex"); +@include meta.load-css("global/fonts"); +@include meta.load-css("global/grid"); +@include meta.load-css("global/window"); + +@include meta.load-css("components/actor_sheet"); +@include meta.load-css("components/dice_total"); + +/* Styles limited to ds4 sheets */ +.ds4 { + @include meta.load-css("components/apps"); + @include meta.load-css("components/basic_property"); + @include meta.load-css("components/character_progression"); + @include meta.load-css("components/character_values"); + @include meta.load-css("components/check"); + @include meta.load-css("components/checks"); + @include meta.load-css("components/combat_value"); + @include meta.load-css("components/combat_values"); + @include meta.load-css("components/core_value"); + @include meta.load-css("components/core_values"); + @include meta.load-css("components/currency"); + @include meta.load-css("components/description"); + @include meta.load-css("components/forms"); + @include meta.load-css("components/item_list"); + @include meta.load-css("components/rollable_image"); + @include meta.load-css("components/tabs"); + @include meta.load-css("components/talent_rank_equation"); +} diff --git a/src/scss/global/_accessibility.scss b/src/scss/global/_accessibility.scss new file mode 100644 index 00000000..dd0e4211 --- /dev/null +++ b/src/scss/global/_accessibility.scss @@ -0,0 +1,3 @@ +.hidden { + display: none; +} diff --git a/src/scss/global/_flex.scss b/src/scss/global/_flex.scss new file mode 100644 index 00000000..3f23d105 --- /dev/null +++ b/src/scss/global/_flex.scss @@ -0,0 +1,86 @@ +/* ----------------------------------------- */ +/* Flexbox */ +/* ----------------------------------------- */ + +.flexrow { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + + > * { + flex: 1; + } + + .flex05 { + flex: 0.5; + } + .flex1 { + flex: 1; + } + .flex125 { + flex: 1.25; + } + .flex15 { + flex: 1.5; + } + .flex2 { + flex: 2; + } + .flex3 { + flex: 3; + } + .flex4 { + flex: 4; + } +} + +.flexnowrap { + flex-wrap: nowrap; +} + +.flexcol { + display: flex; + flex-direction: column; + flex-wrap: nowrap; + + > * { + flex: 1; + } + + .flex05 { + flex: 0.5; + } + .flex1 { + flex: 1; + } + .flex125 { + flex: 1.25; + } + .flex15 { + flex: 1.5; + } + .flex2 { + flex: 2; + } + .flex3 { + flex: 3; + } + .flex4 { + flex: 4; + } +} + +.flex-center { + align-items: center; + justify-content: center; + text-align: center; +} + +.flex-between { + justify-content: space-between; +} + +.flex-around { + justify-content: space-around; +} diff --git a/src/scss/global/_fonts.scss b/src/scss/global/_fonts.scss new file mode 100644 index 00000000..3f931a2d --- /dev/null +++ b/src/scss/global/_fonts.scss @@ -0,0 +1,34 @@ +@font-face { + font-family: "Lora"; + font-style: normal; + font-weight: normal; + src: local("Lora"), url("../fonts/Lora/Lora.woff") format("woff"); +} + +@font-face { + font-family: "Lora"; + font-style: normal; + font-weight: bold; + src: local("Lora"), url("../fonts/Lora/Lora-Bold.woff") format("woff"); +} + +@font-face { + font-family: "Lora"; + font-style: italic; + font-weight: normal; + src: local("Lora"), url("../fonts/Lora/Lora-Italic.woff") format("woff"); +} + +@font-face { + font-family: "Lora"; + font-style: italic; + font-weight: bold; + src: local("Lora"), url("../fonts/Lora/Lora-BoldItalic.woff") format("woff"); +} + +@font-face { + font-family: "Wood Stamp"; + font-style: normal; + font-weight: normal; + src: local("Wood Stamp"), url("../fonts/Woodstamp/Woodstamp.woff") format("woff"); +} diff --git a/src/scss/global/_grid.scss b/src/scss/global/_grid.scss new file mode 100644 index 00000000..b8903f70 --- /dev/null +++ b/src/scss/global/_grid.scss @@ -0,0 +1,83 @@ +.grid, +.grid-2col { + display: grid; + grid-column: span 2 / span 2; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; + padding: 0; +} + +.grid-1col { + grid-column: span 1 / span 1; + grid-template-columns: repeat(1, minmax(0, 1fr)); +} + +.grid-3col { + grid-column: span 3 / span 3; + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.grid-4col { + grid-column: span 4 / span 4; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.grid-5col { + grid-column: span 5 / span 5; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} + +.grid-6col { + grid-column: span 6 / span 6; + grid-template-columns: repeat(6, minmax(0, 1fr)); +} + +.grid-7col { + grid-column: span 7 / span 7; + grid-template-columns: repeat(7, minmax(0, 1fr)); +} + +.grid-8col { + grid-column: span 8 / span 8; + grid-template-columns: repeat(8, minmax(0, 1fr)); +} + +.grid-9col { + grid-column: span 9 / span 9; + grid-template-columns: repeat(9, minmax(0, 1fr)); +} + +.grid-10col { + grid-column: span 10 / span 10; + grid-template-columns: repeat(10, minmax(0, 1fr)); +} + +.grid-11col { + grid-column: span 11 / span 11; + grid-template-columns: repeat(11, minmax(0, 1fr)); +} + +.grid-12col { + grid-column: span 12 / span 12; + grid-template-columns: repeat(12, minmax(0, 1fr)); +} + +.flex-group-center, +.flex-group-left, +.flex-group-right { + justify-content: center; + align-items: center; + text-align: center; + padding: 5px; + border: 1px solid #999; +} + +.flex-group-left { + justify-content: flex-start; + text-align: left; +} + +.flex-group-right { + justify-content: flex-end; + text-align: right; +} diff --git a/src/scss/global/_window.scss b/src/scss/global/_window.scss new file mode 100644 index 00000000..2d22fe58 --- /dev/null +++ b/src/scss/global/_window.scss @@ -0,0 +1,12 @@ +@use "../utils/typography"; + +.window-app { + font-family: typography.$font-primary; + input[type="text"], + input[type="number"], + input[type="password"], + input[type="date"], + input[type="time"] { + width: 100%; + } +} diff --git a/scss/utils/_colors.scss b/src/scss/utils/_colors.scss similarity index 59% rename from scss/utils/_colors.scss rename to src/scss/utils/_colors.scss index 490d3294..b3a864a2 100644 --- a/scss/utils/_colors.scss +++ b/src/scss/utils/_colors.scss @@ -1,10 +1,3 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * SPDX-FileCopyrightText: 2021 Gesina Schwalbe - * - * SPDX-License-Identifier: MIT - */ - $c-white: #fff; $c-black: #000; $c-light-grey: #777; diff --git a/src/scss/utils/_mixins.scss b/src/scss/utils/_mixins.scss new file mode 100644 index 00000000..9f0db342 --- /dev/null +++ b/src/scss/utils/_mixins.scss @@ -0,0 +1,36 @@ +@use "./colors"; + +@mixin element-invisible { + position: absolute; + + width: 1px; + height: 1px; + margin: -1px; + border: 0; + padding: 0; + + clip: rect(0 0 0 0); + overflow: hidden; +} + +@mixin hide { + display: none; +} + +@mixin centered-content { + display: grid; + place-items: center; +} + +@mixin mark-invalid-or-disabled-input { + input:invalid { + background-color: colors.$c-invalid-input; + } + input:disabled { + background-color: transparent; + } +} + +@mixin foundry-highlight-text-shadow { + text-shadow: 0 0 10px red; +} diff --git a/src/scss/utils/_typography.scss b/src/scss/utils/_typography.scss new file mode 100644 index 00000000..5cf2892f --- /dev/null +++ b/src/scss/utils/_typography.scss @@ -0,0 +1,8 @@ +$font-primary: "Lora", serif; +$font-secondary: "Lora", serif; +$font-heading: "Wood Stamp", sans-serif; + +@mixin font-heading-upper { + font-family: $font-heading; + text-transform: uppercase; +} diff --git a/scss/utils/_variables.scss b/src/scss/utils/_variables.scss similarity index 74% rename from scss/utils/_variables.scss rename to src/scss/utils/_variables.scss index 9909c4ed..2a47a3b5 100644 --- a/scss/utils/_variables.scss +++ b/src/scss/utils/_variables.scss @@ -1,9 +1,3 @@ -/* - * SPDX-FileCopyrightText: 2021 Johannes Loher - * - * SPDX-License-Identifier: MIT - */ - @use "./colors"; $padding-sm: 5px; @@ -13,6 +7,8 @@ $margin-sm: $padding-sm; $margin-md: $padding-md; $margin-lg: $padding-lg; +$default-input-height: 26px; + $official-icons-path: "../assets/icons/official"; $border-groove: 2px groove colors.$c-border-groove; diff --git a/src/settings.js b/src/settings.js deleted file mode 100644 index 328a8512..00000000 --- a/src/settings.js +++ /dev/null @@ -1,58 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { getGame } from "./utils/utils"; - -export function registerSystemSettings() { - const game = getGame(); - - /** - * Track the migration version of the latest migration that has been applied. - */ - game.settings.register("ds4", "systemMigrationVersion", { - name: "System Migration Version", - scope: "world", - config: false, - type: Number, - default: -1, - }); - - game.settings.register("ds4", "useSlayingDiceForAutomatedChecks", { - name: "DS4.SettingUseSlayingDiceForAutomatedChecksName", - hint: "DS4.SettingUseSlayingDiceForAutomatedChecksHint", - scope: "world", - config: true, - type: Boolean, - default: false, - }); - - game.settings.register("ds4", "showSlayerPoints", { - name: "DS4.SettingShowSlayerPointsName", - hint: "DS4.SettingShowSlayerPointsHint", - scope: "world", - config: true, - type: Boolean, - default: false, - }); -} - -/** - * @typedef DS4Settings - * @property {number} systemMigrationVersion - * @property {boolean} useSlayingDiceForAutomatedChecks - * @property {boolean} showSlayerPoints - */ - -/** - * Get the current values for DS4 settings. - * @returns {DS4Settings} - */ -export function getDS4Settings() { - const game = getGame(); - return { - systemMigrationVersion: game.settings.get("ds4", "systemMigrationVersion"), - useSlayingDiceForAutomatedChecks: game.settings.get("ds4", "useSlayingDiceForAutomatedChecks"), - showSlayerPoints: game.settings.get("ds4", "showSlayerPoints"), - }; -} diff --git a/src/system.json b/src/system.json new file mode 100644 index 00000000..fc86c225 --- /dev/null +++ b/src/system.json @@ -0,0 +1,79 @@ +{ + "name": "ds4", + "title": "Dungeonslayers 4", + "description": "The Dungeonslayers 4 system for FoundryVTT. Dungeonslayers (© Christian Kennig) is licensed under CC BY-NC-SA 3.0 (https://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.en).", + "version": "0.5.2", + "minimumCoreVersion": "0.7.9", + "compatibleCoreVersion": "0.7.9", + "templateVersion": 3, + "author": "Johannes Loher, Gesina Schwalbe, Oliver Rümpelein, Siegfried Krug", + "authors": [ + { + "name": "Johannes Loher", + "email": "johannes.loher@fg4f.de" + }, + { + "name": "Gesina Schwalbe", + "email": "gesina.schwalbe@pheerai.de" + }, + { + "name": "Oliver Rümpelein", + "email": "foundryvtt@pheerai.de" + }, + { + "name": "Siegfried Krug", + "email": "foundryvtt@asdil1991.de" + } + ], + "esmodules": ["module/ds4.js"], + "styles": ["css/ds4.css"], + "scripts": [], + "packs": [ + { + "name": "special-creature-abilities", + "label": "Besondere Kreaturenfähigkeiten (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/special-creature-abilities.db", + "entity": "Item" + }, + { + "name": "languages-and-scripts", + "label": "Sprachen und Schriftzeichen (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/languages-and-scripts.db", + "entity": "Item" + }, + { + "name": "equipment", + "label": "Gegenstände (GRW)", + "system": "ds4", + "module": "ds4", + "path": "./packs/items.db", + "entity": "Item" + } + ], + "languages": [ + { + "lang": "en", + "name": "English", + "path": "lang/en.json" + }, + { + "lang": "de", + "name": "Deutsch", + "path": "lang/de.json" + } + ], + "gridDistance": 1, + "gridUnits": "m", + "primaryTokenAttribute": "combatValues.hitPoints", + "url": "https://git.f3l.de/dungeonslayers/ds4", + "manifest": "https://git.f3l.de/dungeonslayers/ds4/-/raw/latest/src/system.json?inline=false", + "download": "https://git.f3l.de/dungeonslayers/ds4/-/jobs/artifacts/0.5.2/download?job=build", + "license": "MIT", + "initiative": "@combatValues.initiative.total", + "manifestPlusVersion": "1.0.0", + "bugs": "https://git.f3l.de/dungeonslayers/ds4/-/issues" +} diff --git a/src/template.json b/src/template.json new file mode 100644 index 00000000..3ee98118 --- /dev/null +++ b/src/template.json @@ -0,0 +1,221 @@ +{ + "Actor": { + "types": ["character", "creature"], + "templates": { + "base": { + "attributes": { + "body": { + "base": 0, + "mod": 0 + }, + "mobility": { + "base": 0, + "mod": 0 + }, + "mind": { + "base": 0, + "mod": 0 + } + }, + "traits": { + "strength": { + "base": 0, + "mod": 0 + }, + "constitution": { + "base": 0, + "mod": 0 + }, + "agility": { + "base": 0, + "mod": 0 + }, + "dexterity": { + "base": 0, + "mod": 0 + }, + "intellect": { + "base": 0, + "mod": 0 + }, + "aura": { + "base": 0, + "mod": 0 + } + }, + "combatValues": { + "hitPoints": { + "mod": 0, + "value": 0 + }, + "defense": { + "mod": 0 + }, + "initiative": { + "mod": 0 + }, + "movement": { + "mod": 0 + }, + "meleeAttack": { + "mod": 0 + }, + "rangedAttack": { + "mod": 0 + }, + "spellcasting": { + "mod": 0 + }, + "targetedSpellcasting": { + "mod": 0 + } + } + } + }, + "creature": { + "templates": ["base"], + "baseInfo": { + "loot": "", + "foeFactor": 1, + "creatureType": "humanoid", + "sizeCategory": "normal", + "experiencePoints": 0, + "description": "" + } + }, + "character": { + "templates": ["base"], + "baseInfo": { + "race": "", + "class": "", + "heroClass": "", + "culture": "" + }, + "progression": { + "level": 0, + "experiencePoints": 0, + "talentPoints": { + "total": 0, + "used": 0 + }, + "progressPoints": { + "total": 0, + "used": 0 + } + }, + "profile": { + "biography": "", + "gender": "", + "birthday": "", + "birthplace": "", + "age": 0, + "height": 0, + "hairColor": "", + "weight": 0, + "eyeColor": "", + "specialCharacteristics": "" + }, + "currency": { + "gold": 0, + "silver": 0, + "copper": 0 + } + } + }, + "Item": { + "types": [ + "weapon", + "armor", + "shield", + "spell", + "equipment", + "loot", + "talent", + "racialAbility", + "language", + "alphabet", + "specialCreatureAbility" + ], + "templates": { + "base": { + "description": "" + }, + "physical": { + "quantity": 1, + "price": 0, + "availability": "unset", + "storageLocation": "-" + }, + "equipable": { + "equipped": false + }, + "protective": { + "armorValue": 0 + } + }, + "weapon": { + "templates": ["base", "physical", "equipable"], + "attackType": "melee", + "weaponBonus": 0, + "opponentDefense": 0 + }, + "armor": { + "templates": ["base", "physical", "equipable", "protective"], + "armorMaterialType": "cloth", + "armorType": "body" + }, + "shield": { + "templates": ["base", "physical", "equipable", "protective"] + }, + "equipment": { + "templates": ["base", "physical", "equipable"] + }, + "loot": { + "templates": ["base", "physical"] + }, + "talent": { + "templates": ["base"], + "rank": { + "base": 0, + "max": 0, + "mod": 0 + } + }, + "racialAbility": { + "templates": ["base"] + }, + "language": { + "templates": ["base"] + }, + "alphabet": { + "templates": ["base"] + }, + "spell": { + "templates": ["base", "equipable"], + "spellType": "spellcasting", + "bonus": "", + "spellCategory": "unset", + "maxDistance": { + "value": "", + "unit": "meter" + }, + "effectRadius": { + "value": "", + "unit": "meter" + }, + "duration": { + "value": "", + "unit": "custom" + }, + "cooldownDuration": { + "value": "", + "unit": "custom" + }, + "scrollPrice": 0 + }, + "specialCreatureAbility": { + "templates": ["base"], + "experiencePoints": 0 + } + } +} diff --git a/src/templates/dialogs/roll-options.hbs b/src/templates/dialogs/roll-options.hbs new file mode 100644 index 00000000..76c840aa --- /dev/null +++ b/src/templates/dialogs/roll-options.hbs @@ -0,0 +1,41 @@ +{{!-- +!-- Render a roll options dialog. It uses the default form classes of Foundry VTT. +!-- @param checkTargetNumber: The preselected check target number. +!-- @param maximumCoupResult: The preselected maximum coup result. +!-- @param minimumFumbleResult: The preselected minimum fumble result. +!-- @param rollMode: The preselected roll mode (= chat roll-mode). +!-- @param rollModes: A map of all roll modes and their i18n keys. +--}} +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ +
+
+
diff --git a/src/templates/dialogs/simple-select-form.hbs b/src/templates/dialogs/simple-select-form.hbs new file mode 100644 index 00000000..dc82f319 --- /dev/null +++ b/src/templates/dialogs/simple-select-form.hbs @@ -0,0 +1,19 @@ +{{!-- +!-- Render a simple form with a single select element. It uses the default form classes of Foundry VTT. +!-- @param identifier: The identifier to use as id for the select element. Can be used to query the value later on. +!-- @param label: Text to display as the label for the select element. +!-- @param options: Key-value pairs that describe the options. The keys are used for the value attribute of the +options, the values are used as content. +--}} +
+
+ +
+ +
+
+
diff --git a/templates/dice/roll.hbs b/src/templates/dice/roll.hbs similarity index 80% rename from templates/dice/roll.hbs rename to src/templates/dice/roll.hbs index 8afcbd10..89ffe7a7 100644 --- a/templates/dice/roll.hbs +++ b/src/templates/dice/roll.hbs @@ -1,9 +1,3 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} -
diff --git a/src/templates/sheets/actor/components/checks.hbs b/src/templates/sheets/actor/components/checks.hbs new file mode 100644 index 00000000..05d58a23 --- /dev/null +++ b/src/templates/sheets/actor/components/checks.hbs @@ -0,0 +1,10 @@ +
+ {{#each config.i18n.checks as |check-label check-key|}} + {{> systems/ds4/templates/sheets/actor/components/check.hbs check-key=check-key check-target-number=(lookup + ../data.checks check-key) check-label=check-label}} + {{/each}} + {{#each data.customChecks as |check-target-number check-key|}} + {{> systems/ds4/templates/sheets/actor/components/check.hbs check-key=check-key + check-target-number=check-target-number check-label=check-key}} + {{/each}} +
diff --git a/src/templates/sheets/actor/components/combat-value.hbs b/src/templates/sheets/actor/components/combat-value.hbs new file mode 100644 index 00000000..b2368d87 --- /dev/null +++ b/src/templates/sheets/actor/components/combat-value.hbs @@ -0,0 +1,22 @@ +{{!-- +!-- Render a combat value. +!-- +!-- @param combat-value-key: The key of the combat value +!-- @param combat-value-data: The data for the combat value +!-- @param combat-value-label: The label for the combat value +--}} + +
+
+ {{combat-value-data.total}} +
+
+ {{combat-value-data.base}} + + + +
+
diff --git a/src/templates/sheets/actor/components/combat-values.hbs b/src/templates/sheets/actor/components/combat-values.hbs new file mode 100644 index 00000000..f8c2e8fb --- /dev/null +++ b/src/templates/sheets/actor/components/combat-values.hbs @@ -0,0 +1,6 @@ +
+ {{#each config.i18n.combatValues as |combat-value-label combat-value-key|}} + {{> systems/ds4/templates/sheets/actor/components/combat-value.hbs combat-value-key=combat-value-key + combat-value-data=(lookup ../data.combatValues combat-value-key) combat-value-label=combat-value-label}} + {{/each}} +
diff --git a/templates/sheets/actor/components/core-value.hbs b/src/templates/sheets/actor/components/core-value.hbs similarity index 57% rename from templates/sheets/actor/components/core-value.hbs rename to src/templates/sheets/actor/components/core-value.hbs index 498178eb..c73f0037 100644 --- a/templates/sheets/actor/components/core-value.hbs +++ b/src/templates/sheets/actor/components/core-value.hbs @@ -1,9 +1,3 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - {{!-- !-- Render a core value. !-- @@ -11,22 +5,21 @@ SPDX-License-Identifier: MIT !-- @param core-value-key: The key of the core value !-- @param core-value-data: The data for the core value !-- @param core-value-variant: The variant of the core value, i.e. attribute or trait -!-- @param actor-id: The id of the actor the core value belongs to --}}
-
+ + name="data.{{core-value-variant}}s.{{core-value-key}}.mod" + id="data.{{core-value-variant}}s.{{core-value-key}}.mod" value='{{core-value-data.mod}}' data-dtype="Number" + title="{{core-value-label}} {{localize 'DS4.TooltipModifier'}}" /> {{core-value-data.total}} diff --git a/templates/sheets/actor/components/core-values.hbs b/src/templates/sheets/actor/components/core-values.hbs similarity index 59% rename from templates/sheets/actor/components/core-values.hbs rename to src/templates/sheets/actor/components/core-values.hbs index 57ba03dd..b2e634e6 100644 --- a/templates/sheets/actor/components/core-values.hbs +++ b/src/templates/sheets/actor/components/core-values.hbs @@ -1,19 +1,12 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} -
{{#each config.i18n.attributes as |attribute-label attribute-key|}} {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=attribute-label - core-value-key=attribute-key core-value-data=(lookup ../data.system.attributes - attribute-key) core-value-variant="attribute" actor-id=../data._id}} + core-value-key=attribute-key core-value-data=(lookup ../data.attributes + attribute-key) core-value-variant="attribute"}} {{/each}} {{#each config.i18n.traits as |trait-label trait-key|}} {{> systems/ds4/templates/sheets/actor/components/core-value.hbs core-value-label=trait-label core-value-key=trait-key - core-value-data=(lookup ../data.system.traits trait-key) core-value-variant="trait" actor-id=../data._id}} + core-value-data=(lookup ../data.traits trait-key) core-value-variant="trait"}} {{/each}}
diff --git a/src/templates/sheets/actor/components/currency.hbs b/src/templates/sheets/actor/components/currency.hbs new file mode 100644 index 00000000..821c769f --- /dev/null +++ b/src/templates/sheets/actor/components/currency.hbs @@ -0,0 +1,8 @@ +

{{localize 'DS4.CharacterCurrency'}}

+
+ {{#each data.currency as |value key|}} + + + {{/each}} +
diff --git a/src/templates/sheets/actor/components/item-list-entry.hbs b/src/templates/sheets/actor/components/item-list-entry.hbs new file mode 100644 index 00000000..1f227c9e --- /dev/null +++ b/src/templates/sheets/actor/components/item-list-entry.hbs @@ -0,0 +1,48 @@ +{{!-- +!-- Render an item list entry row. +!-- If the partial is called with a partial block, the partial block +!-- content is inserted before the description. +!-- @param itemData: The data of the item. +!-- @param isEquipable: A flag to enable the equipped column. +!-- @param hasQuantity: A flag to enable the quantity column. +!-- @param hideDescription: A flag to disable the description column. +!-- @param @partial-block: Custom column headers can be passed using the partial block. +--}} +
  • + {{!-- equipped --}} + {{#if isEquipable}} + + {{/if}} + + {{!-- image --}} + {{> systems/ds4/templates/sheets/actor/components/rollable-image.hbs rollable=itemData.data.rollable + src=itemData.img alt=(localize "DS4.EntityImageAltText" name=itemData.name) title=itemData.name + rollableTitle=(localize "DS4.RollableImageRollableTitle" name=itemData.name) rollableClass="rollable-item"}} + + {{!-- amount --}} + {{#if hasQuantity}} + + {{/if}} + + {{!-- name --}} + + + {{!-- item type specifics --}} + {{#if @partial-block }} + {{> @partial-block}} + {{/if}} + + {{!-- description --}} + {{#unless hideDescription}} +
    + {{{itemData.data.description}}}
    + {{/unless}} + + {{!-- control buttons --}} + {{> systems/ds4/templates/sheets/actor/components/overview-control-buttons.hbs + class="ds4-item-list__control-buttons" }} +
  • diff --git a/src/templates/sheets/actor/components/item-list-header.hbs b/src/templates/sheets/actor/components/item-list-header.hbs new file mode 100644 index 00000000..4a478e3b --- /dev/null +++ b/src/templates/sheets/actor/components/item-list-header.hbs @@ -0,0 +1,39 @@ +{{!-- +!-- Render an item list header row. +!-- If the partial is called with a partial block, the partial block +!-- content is inserted before the description heading. +!-- @param isEquipable: A flag to enable the equipped column. +!-- @param hasQuantity: A flag to enable the quantity column. +!-- @param hideDescription: A flag to disable the description column. +!-- @param @partial-block: Custom column headers can be passed using the partial block. +--}} +
  • + {{!-- equipped --}} + {{#if isEquipable}} +
    {{localize 'DS4.ItemEquippedAbbr'}}
    + {{/if}} + + {{!-- image --}} +
    + + {{!-- amount --}} + {{#if hasQuantity}} +
    #
    + {{/if}} + + {{!-- name --}} +
    {{localize 'DS4.ItemName'}}
    + + {{!-- item type specifics --}} + {{#if @partial-block }} + {{> @partial-block }} + {{/if}} + + {{!-- description --}} + {{#unless hideDescription}} +
    {{localize 'DS4.Description'}}
    + {{/unless}} + + {{!-- control buttons placeholder --}} +
    +
  • diff --git a/src/templates/sheets/actor/components/items-overview.hbs b/src/templates/sheets/actor/components/items-overview.hbs new file mode 100644 index 00000000..9ad5cb2c --- /dev/null +++ b/src/templates/sheets/actor/components/items-overview.hbs @@ -0,0 +1,134 @@ +{{!-- WEAPONS --}} +

    {{localize 'DS4.ItemTypeWeaponPlural'}}

    +{{#unless (isEmpty itemsByType.weapon)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true}} + {{!-- attack type --}} +
      {{localize 'DS4.AttackTypeAbbr'}}
      + + {{!-- weapon bonus --}} +
      + {{localize 'DS4.WeaponBonusAbbr'}} +
      + + {{!-- opponent defense --}} +
      + {{localize 'DS4.OpponentDefenseAbbr'}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + + {{#each itemsByType.weapon as |itemData id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + hasQuantity=true}} + {{!-- attack type --}} + + + {{!-- weapon bonus --}} +
      {{ itemData.data.weaponBonus}}
      + + {{!-- opponent defense --}} +
      {{ itemData.data.opponentDefense}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='weapon'}} + +{{!-- ARMOR --}} +

    {{localize 'DS4.ItemTypeArmorPlural'}}

    +{{#unless (isEmpty itemsByType.armor)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true}} + {{!-- armor material type --}} +
      {{localize 'DS4.ArmorMaterialTypeAbbr'}}
      + + {{!-- armor type --}} +
      {{localize 'DS4.ArmorTypeAbbr'}}
      + + {{!-- armor value --}} +
      + {{localize 'DS4.ArmorValueAbbr'}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + + {{#each itemsByType.armor as |itemData id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + hasQuantity=true}} + {{!-- armor material type --}} +
      + {{lookup ../../config.i18n.armorMaterialTypesAbbr itemData.data.armorMaterialType}} +
      + + {{!-- armor type --}} +
      + {{lookup ../../config.i18n.armorTypesAbbr itemData.dataData.armorType}} +
      + + {{!-- armor value --}} +
      {{ itemData.data.armorValue}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='armor'}} + +{{!-- SHIELD --}} +

    {{localize 'DS4.ItemTypeShieldPlural'}}

    +{{#unless (isEmpty itemsByType.shield)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true}} + {{!-- armor value --}} +
      + {{localize 'DS4.ArmorValueAbbr'}} +
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.shield as |itemData id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + hasQuantity=true}} + {{!-- armor value --}} +
      {{itemData.data.armorValue}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='shield'}} + +{{!-- EQUIPMENT --}} +

    {{localize 'DS4.ItemTypeEquipmentPlural'}}

    +{{#unless (isEmpty itemsByType.equipment)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true}} + {{!-- storage location --}} +
      {{localize 'DS4.StorageLocation'}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.equipment as |itemData id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true + hasQuantity=true}} + {{!-- storage location --}} + + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='equipment'}} + +{{!-- LOOT --}} +

    {{localize 'DS4.ItemTypeLootPlural'}}

    +{{#unless (isEmpty itemsByType.loot)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs hasQuantity=true}} + {{!-- storage location --}} +
      {{localize 'DS4.StorageLocation'}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.loot as |itemData id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData hasQuantity=true}} + {{!-- storage location --}} + + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    +{{/unless}} +{{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='loot'}} diff --git a/src/templates/sheets/actor/components/overview-add-button.hbs b/src/templates/sheets/actor/components/overview-add-button.hbs new file mode 100644 index 00000000..ad60bc7f --- /dev/null +++ b/src/templates/sheets/actor/components/overview-add-button.hbs @@ -0,0 +1,10 @@ +{{! +!-- Render an "add" button for adding an item of given data type. +!-- @param dataType: hand over the dataType to the partial as hash parameter +}} + diff --git a/src/templates/sheets/actor/components/overview-control-buttons.hbs b/src/templates/sheets/actor/components/overview-control-buttons.hbs new file mode 100644 index 00000000..ac7177b2 --- /dev/null +++ b/src/templates/sheets/actor/components/overview-control-buttons.hbs @@ -0,0 +1,10 @@ +{{!-- +!-- Render a group of an "edit" and a "delete" button for the current item. +!-- The current item is defined by the data-item-id HTML property of the parent li element. +!-- @param class: Additional CSS class(es) for the controls +--}} +
    + + +
    diff --git a/templates/sheets/shared/components/rollable-image.hbs b/src/templates/sheets/actor/components/rollable-image.hbs similarity index 88% rename from templates/sheets/shared/components/rollable-image.hbs rename to src/templates/sheets/actor/components/rollable-image.hbs index 6447aa60..08abc7d1 100644 --- a/templates/sheets/shared/components/rollable-image.hbs +++ b/src/templates/sheets/actor/components/rollable-image.hbs @@ -1,9 +1,3 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - {{!-- !-- Render an image that has a dice overlay image. !-- @param rollable: A flag indicating whether or not the image is actually rollable. @@ -15,9 +9,7 @@ SPDX-License-Identifier: MIT --}}
    - {{#if src}} {{alt}} - {{/if}} {{#if rollable}} {{localize 'DS4.DiceOverlayImageAltText'}} diff --git a/src/templates/sheets/actor/components/talent-rank-equation.hbs b/src/templates/sheets/actor/components/talent-rank-equation.hbs new file mode 100644 index 00000000..e6e2f052 --- /dev/null +++ b/src/templates/sheets/actor/components/talent-rank-equation.hbs @@ -0,0 +1,38 @@ +{{!-- ======================================================================== --}} +{{!-- INLINE PARTIAL DEFINITIONS --}} +{{!-- ======================================================================== --}} + +{{!-- +!-- Render an input element for a rank value property of an item. +!-- @param talentRank: The talentRank +!-- @param property: The key of the property in item.data (if 'base', the max value is set automatically) +!-- @param disabled: If given, is placed plainly into the input as HTML property; meant to be set to "disabled" to +disable the input element +!-- @param localizeString: The string to use as key for the localized tooltip +--}} +{{#*inline "talentRankValue"}} + +{{/inline}} + +{{!-- ======================================================================== --}} + +{{!-- +!-- Render an input element for a rank value property of an item. +!-- @param talentRank: The talent rank +--}} +
    + {{!-- acquired rank --}} + {{> talentRankValue talentRank=talentRank property='base' localizeString='DS4.TalentRankBase'}} +
    ( {{localize "DS4.TalentRankOf"}}
    + {{!-- maximum acquirable rank --}} + {{> talentRankValue talentRank=talentRank property='max' localizeString='DS4.TalentRankMax'}} +
    ) +
    + {{!-- additional ranks --}} + {{> talentRankValue talentRank=talentRank property='mod' localizeString='DS4.TalentRankMod'}} +
    =
    + {{!-- derived total rank --}} + {{> talentRankValue talentRank=talentRank property='total' localizeString='DS4.TalentRankTotal' + disabled='disabled'}} +
    diff --git a/src/templates/sheets/actor/creature-sheet.hbs b/src/templates/sheets/actor/creature-sheet.hbs new file mode 100644 index 00000000..51b33c88 --- /dev/null +++ b/src/templates/sheets/actor/creature-sheet.hbs @@ -0,0 +1,80 @@ +
    + {{!-- Sheet Header --}} +
    + +
    +

    + + +

    + {{> systems/ds4/templates/sheets/actor/components/character-progression.hbs}} + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
    + {{!-- Values Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/values.hbs}} + + {{!-- Inventory Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs}} + + {{!-- Special Creature Abilities Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/special-creature-abilities.hbs}} + + {{!-- Spells Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/spells.hbs}} + + {{!-- Description Tab --}} + {{> systems/ds4/templates/sheets/actor/tabs/description.hbs}} +
    +
    diff --git a/src/templates/sheets/actor/tabs/biography.hbs b/src/templates/sheets/actor/tabs/biography.hbs new file mode 100644 index 00000000..461bdc11 --- /dev/null +++ b/src/templates/sheets/actor/tabs/biography.hbs @@ -0,0 +1,4 @@ +
    + {{editor content=data.profile.biography target="data.profile.biography" button=true owner=owner + editable=editable}} +
    diff --git a/src/templates/sheets/actor/tabs/character-inventory.hbs b/src/templates/sheets/actor/tabs/character-inventory.hbs new file mode 100644 index 00000000..e763a21f --- /dev/null +++ b/src/templates/sheets/actor/tabs/character-inventory.hbs @@ -0,0 +1,4 @@ +
    + {{> systems/ds4/templates/sheets/actor/components/currency.hbs}} + {{> systems/ds4/templates/sheets/actor/components/items-overview.hbs}} +
    diff --git a/src/templates/sheets/actor/tabs/creature-inventory.hbs b/src/templates/sheets/actor/tabs/creature-inventory.hbs new file mode 100644 index 00000000..7512829e --- /dev/null +++ b/src/templates/sheets/actor/tabs/creature-inventory.hbs @@ -0,0 +1,3 @@ +
    + {{> systems/ds4/templates/sheets/actor/components/items-overview.hbs}} +
    diff --git a/src/templates/sheets/actor/tabs/description.hbs b/src/templates/sheets/actor/tabs/description.hbs new file mode 100644 index 00000000..6dc48ffb --- /dev/null +++ b/src/templates/sheets/actor/tabs/description.hbs @@ -0,0 +1,4 @@ +
    + {{editor content=data.baseInfo.description target="data.baseInfo.description" button=true owner=owner + editable=editable}} +
    diff --git a/src/templates/sheets/actor/tabs/profile.hbs b/src/templates/sheets/actor/tabs/profile.hbs new file mode 100644 index 00000000..06647b39 --- /dev/null +++ b/src/templates/sheets/actor/tabs/profile.hbs @@ -0,0 +1,21 @@ +
    +
    + {{#each data.profile as |profile-data-value profile-data-key|}} + {{#if (and (ne profile-data-key 'biography') (ne profile-data-key 'specialCharacteristics'))}} +
    + + +
    + {{/if}} + {{/each}} +
    + + +
    +
    +
    diff --git a/src/templates/sheets/actor/tabs/special-creature-abilities.hbs b/src/templates/sheets/actor/tabs/special-creature-abilities.hbs new file mode 100644 index 00000000..602b73b1 --- /dev/null +++ b/src/templates/sheets/actor/tabs/special-creature-abilities.hbs @@ -0,0 +1,11 @@ +
    + {{#unless (isEmpty itemsByType.specialCreatureAbility)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.specialCreatureAbility as |itemData id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='specialCreatureAbility'}} +
    diff --git a/templates/sheets/actor/tabs/spells.hbs b/src/templates/sheets/actor/tabs/spells.hbs similarity index 52% rename from templates/sheets/actor/tabs/spells.hbs rename to src/templates/sheets/actor/tabs/spells.hbs index cee615e6..58e78735 100644 --- a/templates/sheets/actor/tabs/spells.hbs +++ b/src/templates/sheets/actor/tabs/spells.hbs @@ -1,10 +1,3 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - {{!-- ======================================================================== --}} {{!-- INLINE PARTIAL DEFINITIONS --}} {{!-- ======================================================================== --}} @@ -44,58 +37,49 @@ titleKey=titleKey}} {{!-- ======================================================================== --}} -
    +
    {{#unless (isEmpty itemsByType.spell)}} -
      - {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hideDescription=true - type='spell'}} +
        + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hideDescription=true}} {{!-- spell type --}} -
        {{localize 'DS4.SpellTypeAbbr'}}
        +
        {{localize 'DS4.SpellTypeAbbr'}}
        - {{!-- spell modifier --}} -
        {{localize - 'DS4.SpellModifierAbbr'}}
        + {{!-- spell bonus --}} +
        {{localize 'DS4.SpellBonusAbbr'}}
        {{!-- max. distance --}} -
        +
        {{!-- duration --}}
        {{!-- cooldown duration --}} -
        +
        {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - - {{#each itemsByType.spell as |item id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true + {{#each itemsByType.spell as |itemData id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData isEquipable=true hideDescription=true}} {{!-- spell type --}} - + - {{!-- spell modifier --}} -
        {{#if (eq item.system.spellModifier.complex - '')}}{{item.system.spellModifier.numerical}}{{else}}{{item.system.spellModifier.complex}}{{/if}} -
        + {{!-- spell bonus --}} + {{!-- max. distance --}} - {{> distanceUnit titleKey='DS4.SpellDistance' unitDatum=item.system.maxDistance - config=@root/config}} + {{> distanceUnit titleKey='DS4.SpellMaxDistance' unitDatum=itemData.data.maxDistance + config=../../config}} {{!-- duration --}} - {{> temporalUnit titleKey='DS4.SpellDuration' unitDatum=item.system.duration config=@root/config}} + {{> temporalUnit titleKey='DS4.SpellDuration' unitDatum=itemData.data.duration config=../../config}} {{!-- cooldown duration --}} -
        {{lookup @root/config.i18n.cooldownDurations - item.system.cooldownDuration}}
        - + {{> temporalUnit titleKey='DS4.SpellCooldownDuration' unitDatum=itemData.data.cooldownDuration + config=../../config}} {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} {{/each}}
      {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' - documentType='item' type='spell'}} + {{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='spell' }}
    diff --git a/src/templates/sheets/actor/tabs/talents-abilities.hbs b/src/templates/sheets/actor/tabs/talents-abilities.hbs new file mode 100644 index 00000000..9793a6eb --- /dev/null +++ b/src/templates/sheets/actor/tabs/talents-abilities.hbs @@ -0,0 +1,55 @@ +
    + {{!-- TALENT --}} +

    {{localize 'DS4.ItemTypeTalentPlural'}}

    + {{#unless (isEmpty itemsByType.talent)}} +
      + {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{!-- rank --}} +
      {{localize 'DS4.TalentRank'}}
      + {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.talent as |itemData id|}} + {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{!-- rank --}} + {{> systems/ds4/templates/sheets/actor/components/talent-rank-equation.hbs talentRank=itemData.data.rank}} + {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='talent'}} + + {{!-- RACIAL ABILITY --}} +

    {{localize 'DS4.ItemTypeRacialAbilityPlural'}}

    + {{#unless (isEmpty itemsByType.racialAbility)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.racialAbility as |itemData id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='racialAbility'}} + + {{!-- LANGUAGE --}} +

    {{localize 'DS4.ItemTypeLanguagePlural'}}

    + {{#unless (isEmpty itemsByType.language)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.language as |itemData id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='language'}} + + {{!-- ALPHABET --}} +

    {{localize 'DS4.ItemTypeAlphabetPlural'}}

    + {{#unless (isEmpty itemsByType.alphabet)}} +
      + {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} + {{#each itemsByType.alphabet as |itemData id|}} + {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs itemData=itemData}} + {{/each}} +
    + {{/unless}} + {{> systems/ds4/templates/sheets/actor/components/overview-add-button.hbs dataType='alphabet'}} +
    diff --git a/templates/sheets/actor/tabs/values.hbs b/src/templates/sheets/actor/tabs/values.hbs similarity index 57% rename from templates/sheets/actor/tabs/values.hbs rename to src/templates/sheets/actor/tabs/values.hbs index 3c3668f0..e2ca14e0 100644 --- a/templates/sheets/actor/tabs/values.hbs +++ b/src/templates/sheets/actor/tabs/values.hbs @@ -1,10 +1,4 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    +
    {{> systems/ds4/templates/sheets/actor/components/core-values.hbs}} {{> systems/ds4/templates/sheets/actor/components/combat-values.hbs}} {{> systems/ds4/templates/sheets/actor/components/checks.hbs}} diff --git a/src/templates/sheets/item/alphabet-sheet.hbs b/src/templates/sheets/item/alphabet-sheet.hbs new file mode 100644 index 00000000..1211adac --- /dev/null +++ b/src/templates/sheets/item/alphabet-sheet.hbs @@ -0,0 +1,8 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + +
    diff --git a/src/templates/sheets/item/armor-sheet.hbs b/src/templates/sheets/item/armor-sheet.hbs new file mode 100644 index 00000000..402f4f03 --- /dev/null +++ b/src/templates/sheets/item/armor-sheet.hbs @@ -0,0 +1,34 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} +
    diff --git a/src/templates/sheets/item/components/body.hbs b/src/templates/sheets/item/components/body.hbs new file mode 100644 index 00000000..2bfe9ca0 --- /dev/null +++ b/src/templates/sheets/item/components/body.hbs @@ -0,0 +1,28 @@ +{{!-- Template for the common body (navigation & body sections) of all items. --}} + +{{!-- Sheet Tab Navigation --}} + + +{{!-- Sheet Body --}} +
    + + {{!-- Description Tab --}} + {{#> systems/ds4/templates/sheets/item/tabs/description.hbs}} + {{> @partial-block}} + {{/systems/ds4/templates/sheets/item/tabs/description.hbs}} + + {{!-- Effects Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} + + {{#if isPhysical}} + {{!-- Details Tab --}} + {{> systems/ds4/templates/sheets/item/tabs/details.hbs}} + {{/if}} + +
    diff --git a/src/templates/sheets/item/components/sheet-header.hbs b/src/templates/sheets/item/components/sheet-header.hbs new file mode 100644 index 00000000..ff30f526 --- /dev/null +++ b/src/templates/sheets/item/components/sheet-header.hbs @@ -0,0 +1,8 @@ +
    + +
    +

    +

    {{lookup config.i18n.itemTypes item.type}}

    + {{> @partial-block}} +
    +
    \ No newline at end of file diff --git a/src/templates/sheets/item/equipment-sheet.hbs b/src/templates/sheets/item/equipment-sheet.hbs new file mode 100644 index 00000000..723636c9 --- /dev/null +++ b/src/templates/sheets/item/equipment-sheet.hbs @@ -0,0 +1,7 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} +
    diff --git a/src/templates/sheets/item/language-sheet.hbs b/src/templates/sheets/item/language-sheet.hbs new file mode 100644 index 00000000..1211adac --- /dev/null +++ b/src/templates/sheets/item/language-sheet.hbs @@ -0,0 +1,8 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + +
    diff --git a/src/templates/sheets/item/loot-sheet.hbs b/src/templates/sheets/item/loot-sheet.hbs new file mode 100644 index 00000000..723636c9 --- /dev/null +++ b/src/templates/sheets/item/loot-sheet.hbs @@ -0,0 +1,7 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} +
    diff --git a/src/templates/sheets/item/racialAbility-sheet.hbs b/src/templates/sheets/item/racialAbility-sheet.hbs new file mode 100644 index 00000000..1211adac --- /dev/null +++ b/src/templates/sheets/item/racialAbility-sheet.hbs @@ -0,0 +1,8 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + +
    diff --git a/src/templates/sheets/item/shield-sheet.hbs b/src/templates/sheets/item/shield-sheet.hbs new file mode 100644 index 00000000..160e7923 --- /dev/null +++ b/src/templates/sheets/item/shield-sheet.hbs @@ -0,0 +1,14 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} +
    +
    + + +
    +
    + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} +
    diff --git a/src/templates/sheets/item/specialCreatureAbility-sheet.hbs b/src/templates/sheets/item/specialCreatureAbility-sheet.hbs new file mode 100644 index 00000000..8808afa9 --- /dev/null +++ b/src/templates/sheets/item/specialCreatureAbility-sheet.hbs @@ -0,0 +1,15 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} +
    +
    + + +
    +
    + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + +
    diff --git a/src/templates/sheets/item/spell-sheet.hbs b/src/templates/sheets/item/spell-sheet.hbs new file mode 100644 index 00000000..2c3a0db3 --- /dev/null +++ b/src/templates/sheets/item/spell-sheet.hbs @@ -0,0 +1,75 @@ +{{!-- ======================================================================== --}} +{{!-- INLINE PARTIAL DEFINITIONS --}} +{{!-- ======================================================================== --}} + + +{{#*inline "unitDatum" }} +
    + +
    + + +
    +
    +{{/inline}} + + +{{!-- ======================================================================== --}} + + +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} +
    +
    + + +
    +
    + + +
    +
    + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}} +
    + + +
    + {{> unitDatum data=data property='maxDistance' localizeString='DS4.SpellMaxDistance' unitType='distance' }} + {{> unitDatum data=data property='effectRadius' localizeString='DS4.SpellEffectRadius' unitType='distance' }} + {{> unitDatum data=data property='duration' localizeString='DS4.SpellDuration' unitType='temporal' }} + {{> unitDatum data=data property='cooldownDuration' localizeString='DS4.SpellCooldownDuration' unitType='temporal' + }} +
    + + +
    + {{/systems/ds4/templates/sheets/item/components/body.hbs}} + +
    diff --git a/src/templates/sheets/item/tabs/description.hbs b/src/templates/sheets/item/tabs/description.hbs new file mode 100644 index 00000000..b7139387 --- /dev/null +++ b/src/templates/sheets/item/tabs/description.hbs @@ -0,0 +1,37 @@ +{{!-- +Render a description tab. +Additional elements of the side-properties div can be handed over via the @partial-block. +--}} + +
    +
    + {{#if isOwned}} + {{#if (ne data.equipped undefined)}}
    + + +
    + {{/if}} +
    + + {{actor.name}} +
    + {{#if isPhysical}} +
    + + +
    +
    + + +
    + {{/if}} + {{else}} + {{localize "DS4.NotOwned"}} + {{/if}} + {{> @partial-block}} +
    +
    + {{editor content=data.description target="data.description" button=true owner=owner editable=editable}} +
    +
    \ No newline at end of file diff --git a/src/templates/sheets/item/tabs/details.hbs b/src/templates/sheets/item/tabs/details.hbs new file mode 100644 index 00000000..69f7526a --- /dev/null +++ b/src/templates/sheets/item/tabs/details.hbs @@ -0,0 +1,21 @@ +{{!-- The item tab for details. --}} +
    + {{!-- As you add new fields, add them in here! --}} +
    +
    + + +
    +
    + + +
    +
    +
    \ No newline at end of file diff --git a/src/templates/sheets/item/tabs/effects.hbs b/src/templates/sheets/item/tabs/effects.hbs new file mode 100644 index 00000000..a064313e --- /dev/null +++ b/src/templates/sheets/item/tabs/effects.hbs @@ -0,0 +1,24 @@ +{{!-- Tab for the items view to manage effects --}} +
    +
      +
    1. +
      +
      Name
      + +
    2. + {{#each item.effects as |effect id|}} +
    3. +

      {{effect.label}}

      +
      + + + + +
      +
    4. + {{/each}} +
    +
    \ No newline at end of file diff --git a/src/templates/sheets/item/talent-sheet.hbs b/src/templates/sheets/item/talent-sheet.hbs new file mode 100644 index 00000000..cd151f67 --- /dev/null +++ b/src/templates/sheets/item/talent-sheet.hbs @@ -0,0 +1,32 @@ +{{!-- ======================================================================== --}} +{{!-- INLINE PARTIAL DEFINITIONS --}} +{{!-- ======================================================================== --}} + + +{{#*inline "talentRankBasicProperty" }} +
    + + +
    +{{/inline}} + + +{{!-- ======================================================================== --}} + + +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} +
    + {{> talentRankBasicProperty data=data property='base' localizeString='DS4.TalentRankBase' }} + {{> talentRankBasicProperty data=data property='max' localizeString='DS4.TalentRankMax'}} + {{> talentRankBasicProperty data=data property='mod' localizeString='DS4.TalentRankMod'}} + {{> talentRankBasicProperty data=data property='total' localizeString='DS4.TalentRankTotal' disabled='disabled'}} +
    + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} + +
    diff --git a/src/templates/sheets/item/weapon-sheet.hbs b/src/templates/sheets/item/weapon-sheet.hbs new file mode 100644 index 00000000..ead8fa91 --- /dev/null +++ b/src/templates/sheets/item/weapon-sheet.hbs @@ -0,0 +1,29 @@ +
    + {{#> systems/ds4/templates/sheets/item/components/sheet-header.hbs}} +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    + {{/systems/ds4/templates/sheets/item/components/sheet-header.hbs}} + + {{!-- Common Item body --}} + {{#> systems/ds4/templates/sheets/item/components/body.hbs}}{{/systems/ds4/templates/sheets/item/components/body.hbs}} +
    diff --git a/src/ui/fonts.ts b/src/ui/fonts.ts deleted file mode 100644 index 48959058..00000000 --- a/src/ui/fonts.ts +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -const basicFonts = ["Wood Stamp"]; -const variantFonts = ["Lora"]; - -export async function preloadFonts(): Promise { - const fonts = [ - ...basicFonts.map((font) => `1rem ${font}`), - ...variantFonts.flatMap((font) => [ - `1rem ${font}`, - `bold 1rem ${font}`, - `italic 1rem ${font}`, - `bold italic 1rem ${font}`, - ]), - ]; - return Promise.all(fonts.map((font) => document.fonts.load(font))); -} diff --git a/src/ui/notifications.js b/src/ui/notifications.js deleted file mode 100644 index db311eba..00000000 --- a/src/ui/notifications.js +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { logger } from "../utils/logger"; -import { getNotificationsSafe } from "../utils/utils"; - -/** - * @typedef {Object} NotificationOptions - * @property {boolean} [permanent=false] - * @property {boolean} [log=false] - */ - -/** - * @typedef {(message: string, options?: NotificationOptions) => void} NotificationFunction - */ - -/** - * @typedef {"info" | "warn" | "error"} NotificationType - */ - -/** - * @param {NotificationType} type The type of the notification - * @returns {NotificationFunction} - */ -function getNotificationFunction(type) { - return (message, { permanent = false, log = false } = {}) => { - if (ui.notifications) { - ui.notifications[type](message, { permanent }); - if (log) { - logger[type](message); - } - } else { - logger[type](message); - } - }; -} - -/** - * @param {string} message - * @param {NotificationType} type - * @param {NotificationOptions} [options={}] - */ -function notify(message, type, { permanent = false, log = false } = {}) { - const notifications = getNotificationsSafe(); - if (notifications) { - notifications.notify(message, type, { permanent }); - if (log) { - logger.getLoggingFunction(type)(message); - } - } else { - logger.getLoggingFunction(type)(message); - } -} - -export const notifications = Object.freeze({ - info: getNotificationFunction("info"), - warn: getNotificationFunction("warn"), - error: getNotificationFunction("error"), - notify, -}); diff --git a/src/utils/logger.ts b/src/utils/logger.ts deleted file mode 100644 index 07429720..00000000 --- a/src/utils/logger.ts +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -const loggingContext = "DS4"; -const loggingSeparator = "|"; - -type LogLevel = "debug" | "info" | "warning" | "error"; -type LoggingFunction = (...data: unknown[]) => void; - -const getLoggingFunction = (type: LogLevel = "info"): LoggingFunction => { - const log = { debug: console.debug, info: console.info, warning: console.warn, error: console.error }[type]; - return (...data: unknown[]) => log(loggingContext, loggingSeparator, ...data); -}; - -export const logger = Object.freeze({ - debug: getLoggingFunction("debug"), - info: getLoggingFunction("info"), - warn: getLoggingFunction("warning"), - error: getLoggingFunction("error"), - getLoggingFunction, -}); diff --git a/src/utils/utils.js b/src/utils/utils.js deleted file mode 100644 index f7fec6cb..00000000 --- a/src/utils/utils.js +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -/** - * Tests if the given `value` is truthy. - * - * If it is not truthy, an {@link Error} is thrown, which depends on the given `message` parameter: - * - If `message` is a string`, it is used to construct a new {@link Error} which then is thrown. - * - If `message` is an instance of {@link Error}, it is thrown. - * - If `message` is `undefined`, an {@link Error} with a default message is thrown. - * @param {unknown} value The value to check for truthyness - * @param {string | Error} [message] An error message to use when the check fails - * @returns {asserts value} - */ -export function enforce(value, message) { - if (!value) { - if (!message) { - message = - getGameSafe()?.i18n.localize("DS4.ErrorUnexpectedError") ?? - "There was an unexpected error in the Dungeonslayers 4 system. For more details, please take a look at the console (F12)."; - } - throw message instanceof Error ? message : new Error(message); - } -} - -/** - * A wrapper that returns the canvas, if it is ready. - * @throws if the canvas is not ready yet - * @returns {Canvas} - */ -export function getCanvas() { - enforce(canvas instanceof Canvas && canvas.ready, getGame().i18n.localize("DS4.ErrorCanvasIsNotInitialized")); - return canvas; -} - -/** - * A wrapper that returns the game, if it already exists. - * @throws {Error} if the game is not ready yet - * @returns {Game} - */ -export function getGame() { - enforce(game instanceof Game, "Game is not initialized yet."); - return game; -} - -/** - * A wrapper that returns the game, or `undefined` if it doesn't exist yet - * @returns {Game | undefined} - */ -export function getGameSafe() { - return game instanceof Game ? game : undefined; -} - -/** - * A wrapper that returns `ui.notifications`, or `undefined` if it doesn't exist yet - * @returns {Notifications | undefined} - */ -export function getNotificationsSafe() { - return ui.notifications instanceof Notifications ? ui.notifications : undefined; -} diff --git a/system.json b/system.json deleted file mode 100644 index 36245e6f..00000000 --- a/system.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "id": "ds4", - "title": "Dungeonslayers 4", - "description": "An implementation of the Dungeonslayers 4 game system for Foundry Virtual Tabletop.", - "authors": [ - { - "name": "Johannes Loher", - "email": "johannes.loher@fg4f.de", - "discord": "ghost#2000", - "ko-fi": "ghostfvtt" - }, - { - "name": "Gesina Schwalbe", - "email": "gesina.schwalbe@pheerai.de" - }, - { - "name": "Oliver Rümpelein", - "email": "foundryvtt@pheerai.de" - }, - { - "name": "Siegfried Krug", - "email": "foundryvtt@asdil1991.de" - }, - { - "name": "Max Tharr" - }, - { - "name": "Sascha Martens" - } - ], - "license": "https://git.f3l.de/dungeonslayers/ds4/raw/tag/2.0.5/LICENSE.md", - "readme": "https://git.f3l.de/dungeonslayers/ds4/raw/tag/2.0.5/README.md", - "bugs": "https://git.f3l.de/dungeonslayers/ds4/issues", - "changelog": "https://git.f3l.de/dungeonslayers/ds4/releases/tag/2.0.5", - "version": "2.0.5", - "flags": { - "hotReload": { - "extensions": ["css", "hbs", "json"], - "paths": ["templates", "css", "lang"] - } - }, - "compatibility": { - "minimum": "12.331", - "verified": "12" - }, - "esmodules": ["ds4.js"], - "styles": ["css/ds4.css"], - "languages": [ - { - "lang": "en", - "name": "English", - "path": "lang/en.json" - }, - { - "lang": "de", - "name": "Deutsch", - "path": "lang/de.json" - } - ], - "packs": [ - { - "name": "special-creature-abilities", - "label": "Besondere Kreaturenfähigkeiten (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/special-creature-abilities", - "type": "Item" - }, - { - "name": "languages-and-scripts", - "label": "Sprachen und Schriftzeichen (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/languages-and-scripts", - "type": "Item" - }, - { - "name": "equipment", - "label": "Gegenstände (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/items", - "type": "Item" - }, - { - "name": "spells", - "label": "Zauber (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/spells", - "type": "Item" - }, - { - "name": "creatures", - "label": "Kreaturen (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/creatures", - "type": "Actor" - }, - { - "name": "racial-abilities", - "label": "Volksfähigkeiten (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/racial-abilities", - "type": "Item" - }, - { - "name": "talents", - "label": "Talente (GRW)", - "system": "ds4", - "module": "ds4", - "path": "./packs/talents", - "type": "Item" - } - ], - "manifest": "https://git.f3l.de/api/packages/dungeonslayers/generic/ds4/latest/system.json", - "download": "https://git.f3l.de/dungeonslayers/ds4/releases/download/2.0.5/ds4.zip", - "initiative": "@combatValues.initiative.total", - "grid": { - "distance": 1, - "units": "m" - }, - "primaryTokenAttribute": "combatValues.hitPoints", - "url": "https://git.f3l.de/dungeonslayers/ds4" -} diff --git a/system.json.license b/system.json.license deleted file mode 100644 index 45e761ff..00000000 --- a/system.json.license +++ /dev/null @@ -1,10 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe -SPDX-FileCopyrightText: 2021 Siegfried Krug -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Max Tharr -SPDX-FileCopyrightText: 2021 Sascha Martens - - -SPDX-License-Identifier: MIT diff --git a/template.json b/template.json deleted file mode 100644 index acb087d0..00000000 --- a/template.json +++ /dev/null @@ -1,247 +0,0 @@ -{ - "Actor": { - "types": ["character", "creature"], - "templates": { - "base": { - "attributes": { - "body": { - "base": 0, - "mod": 0 - }, - "mobility": { - "base": 0, - "mod": 0 - }, - "mind": { - "base": 0, - "mod": 0 - } - }, - "traits": { - "strength": { - "base": 0, - "mod": 0 - }, - "constitution": { - "base": 0, - "mod": 0 - }, - "agility": { - "base": 0, - "mod": 0 - }, - "dexterity": { - "base": 0, - "mod": 0 - }, - "intellect": { - "base": 0, - "mod": 0 - }, - "aura": { - "base": 0, - "mod": 0 - } - }, - "combatValues": { - "hitPoints": { - "mod": 0, - "value": 0 - }, - "defense": { - "mod": 0 - }, - "initiative": { - "mod": 0 - }, - "movement": { - "mod": 0 - }, - "meleeAttack": { - "mod": 0 - }, - "rangedAttack": { - "mod": 0 - }, - "spellcasting": { - "mod": 0 - }, - "targetedSpellcasting": { - "mod": 0 - } - } - } - }, - "creature": { - "templates": ["base"], - "baseInfo": { - "loot": "", - "foeFactor": 1, - "creatureType": "humanoid", - "sizeCategory": "normal", - "experiencePoints": 0, - "description": "" - } - }, - "character": { - "templates": ["base"], - "baseInfo": { - "race": "", - "class": "", - "heroClass": "", - "culture": "" - }, - "progression": { - "level": 0, - "experiencePoints": 0, - "talentPoints": { - "total": 0, - "used": 0 - }, - "progressPoints": { - "total": 0, - "used": 0 - } - }, - "profile": { - "biography": "", - "gender": "", - "birthday": "", - "birthplace": "", - "age": 0, - "height": 0, - "hairColor": "", - "weight": 0, - "eyeColor": "", - "specialCharacteristics": "" - }, - "currency": { - "gold": 0, - "silver": 0, - "copper": 0 - }, - "slayerPoints": { - "value": 0 - } - } - }, - "Item": { - "types": [ - "weapon", - "armor", - "shield", - "spell", - "equipment", - "loot", - "talent", - "racialAbility", - "language", - "alphabet", - "specialCreatureAbility" - ], - "templates": { - "base": { - "description": "" - }, - "physical": { - "quantity": 1, - "price": 0, - "availability": "unset", - "storageLocation": "-" - }, - "equipable": { - "equipped": false - }, - "protective": { - "armorValue": 0 - } - }, - "weapon": { - "templates": ["base", "physical", "equipable"], - "attackType": "melee", - "weaponBonus": 0, - "opponentDefense": 0 - }, - "armor": { - "templates": ["base", "physical", "equipable", "protective"], - "armorMaterialType": "cloth", - "armorType": "body" - }, - "shield": { - "templates": ["base", "physical", "equipable", "protective"] - }, - "spell": { - "templates": ["base", "equipable"], - "spellType": "spellcasting", - "spellModifier": { - "numerical": 0, - "complex": "" - }, - "allowsDefense": false, - "spellGroups": { - "lightning": false, - "earth": false, - "water": false, - "ice": false, - "fire": false, - "healing": false, - "light": false, - "air": false, - "transport": false, - "damage": false, - "shadow": false, - "protection": false, - "mindAffecting": false, - "demonology": false, - "necromancy": false, - "transmutation": false, - "area": false - }, - "maxDistance": { - "value": "", - "unit": "meter" - }, - "effectRadius": { - "value": "", - "unit": "meter" - }, - "duration": { - "value": "", - "unit": "custom" - }, - "cooldownDuration": "0r", - "minimumLevels": { - "healer": null, - "wizard": null, - "sorcerer": null - } - }, - "equipment": { - "templates": ["base", "physical", "equipable"] - }, - "loot": { - "templates": ["base", "physical"] - }, - "talent": { - "templates": ["base"], - "rank": { - "base": 0, - "max": 0, - "mod": 0 - } - }, - "racialAbility": { - "templates": ["base"] - }, - "language": { - "templates": ["base"] - }, - "alphabet": { - "templates": ["base"] - }, - "specialCreatureAbility": { - "templates": ["base"], - "experiencePoints": 0 - } - } -} diff --git a/template.json.license b/template.json.license deleted file mode 100644 index ff79d3f7..00000000 --- a/template.json.license +++ /dev/null @@ -1,6 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe -SPDX-FileCopyrightText: 2021 Siegfried Krug - -SPDX-License-Identifier: MIT diff --git a/templates/dialogs/roll-options.hbs b/templates/dialogs/roll-options.hbs deleted file mode 100644 index 406a512e..00000000 --- a/templates/dialogs/roll-options.hbs +++ /dev/null @@ -1,55 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render a roll options dialog. It uses the default form classes of Foundry VTT. -!-- @param checkTargetNumber: The preselected check target number. -!-- @param maximumCoupResult: The preselected maximum coup result. -!-- @param minimumFumbleResult: The preselected minimum fumble result. -!-- @param rollMode: The preselected roll mode (= chat roll-mode). -!-- @param rollModes: A map of all roll modes and their i18n keys. -!-- @param checkModifiers: A map of all check difficulty modifiers and their translations. -!-- @param id: A unique id, used to provided uniqe ids for input elements. ---}} -
    -
    - - -
    -
    - -
    - -
    -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - -
    - -
    -
    -
    diff --git a/templates/dialogs/simple-select-form.hbs b/templates/dialogs/simple-select-form.hbs deleted file mode 100644 index f27a489c..00000000 --- a/templates/dialogs/simple-select-form.hbs +++ /dev/null @@ -1,28 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render a simple form with select elements. It uses the default form classes of Foundry VTT. -!-- @param selects: An array of objects that each contain the following: -!---- identifier: The identifier to use as id for the select element. Can be used to query the value later on. -!---- label: Text to display as the label for the select element. -!---- options: Key-value pairs that describe the options. The keys are used for the value attribute of the -options, the values are used as content. ---}} -
    - {{#each selects}} -
    - -
    - -
    -
    - {{/each}} -
    diff --git a/templates/sheets/active-effect/active-effect-config.hbs b/templates/sheets/active-effect/active-effect-config.hbs deleted file mode 100644 index 5a52247a..00000000 --- a/templates/sheets/active-effect/active-effect-config.hbs +++ /dev/null @@ -1,179 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2022 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - - -
    - -

    - -

    -
    - - - - - -
    -
    - -
    - -
    -
    - -
    - - {{editor descriptionHTML target="description" button=false editable=editable engine="prosemirror" - collaborate=false}} -
    - -
    - - -
    - - {{#if isActorEffect}} -
    - -
    - -
    -
    - {{/if}} - - {{#if isItemEffect}} -
    - -
    - -
    -

    {{ labels.transfer.hint }}

    -
    - {{/if}} - -
    - -
    - - {{#each statuses as |status|}} - - {{/each}} - -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    - -
    -
    -
    - - -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    -
    - -
    - - - - -
    -
    -
    - -
    - -
    -
    - -
    - -
    - - - - -
    -
    -
    - - -
    -
    -
    {{ localize "EFFECT.ChangeKey" }}
    -
    {{ localize "EFFECT.ChangeMode" }}
    -
    {{ localize "EFFECT.ChangeValue" }}
    -
    - -
    -
    -
      - {{#each data.changes as |change i|}} -
    1. -
      - -
      -
      - -
      -
      - -
      -
      - -
      -
    2. - {{/each}} -
    -
    - -
    - -
    -
    diff --git a/templates/sheets/actor/character-sheet.hbs b/templates/sheets/actor/character-sheet.hbs deleted file mode 100644 index 556b4c1e..00000000 --- a/templates/sheets/actor/character-sheet.hbs +++ /dev/null @@ -1,50 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{#> systems/ds4/templates/sheets/actor/components/actor-header.hbs}} - {{> systems/ds4/templates/sheets/actor/components/character-properties.hbs}} - {{/systems/ds4/templates/sheets/actor/components/actor-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - - -{{!-- Sheet Body (remove indentation to avoid annoying Handlebars auto-indent) --}} -
    -{{!-- Values Tab --}} -{{> systems/ds4/templates/sheets/actor/tabs/values.hbs}} - -{{!-- Inventory Tab --}} -{{> systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs}} - -{{!-- Spells Tab --}} -{{> systems/ds4/templates/sheets/actor/tabs/spells.hbs}} - -{{!-- Abilities Tab --}} -{{> systems/ds4/templates/sheets/actor/tabs/character-abilities.hbs}} - -{{!-- Effects Tab --}} -{{> systems/ds4/templates/sheets/actor/tabs/effects.hbs}} - -{{!-- Biography Tab --}} -{{> systems/ds4/templates/sheets/actor/tabs/biography.hbs}} - -
    - - -
    diff --git a/templates/sheets/actor/components/actor-header.hbs b/templates/sheets/actor/components/actor-header.hbs deleted file mode 100644 index c6b13c78..00000000 --- a/templates/sheets/actor/components/actor-header.hbs +++ /dev/null @@ -1,33 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render an actor sheet header. -!-- @param @partial-block: Properties to render in the second header row. ---}} -
    - {{localize 'DS4.ActorImageAltText'}} -
    -
    -

    - - -

    - {{#unless limited}} - {{> systems/ds4/templates/sheets/actor/components/actor-progression.hbs}} - {{/unless}} -
    - {{#unless limited}} -
    - {{> @partial-block}} -
    - {{/unless}} -
    -
    diff --git a/templates/sheets/actor/components/actor-progression.hbs b/templates/sheets/actor/components/actor-progression.hbs deleted file mode 100644 index 13e5b5f4..00000000 --- a/templates/sheets/actor/components/actor-progression.hbs +++ /dev/null @@ -1,49 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    -
    -

    -

    - -
    - {{#if (eq data.type "character")}} - {{#if settings.showSlayerPoints}} -
    -

    -

    - -
    - {{/if}} -
    -

    -

    - -
    -
    -

    -

    - -
    - {{/if}} -
    diff --git a/templates/sheets/actor/components/biography.hbs b/templates/sheets/actor/components/biography.hbs deleted file mode 100644 index b8e1befb..00000000 --- a/templates/sheets/actor/components/biography.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{editor data.system.profile.biography target="system.profile.biography" button=true owner=owner - editable=editable engine="prosemirror"}} -
    diff --git a/templates/sheets/actor/components/character-properties.hbs b/templates/sheets/actor/components/character-properties.hbs deleted file mode 100644 index ddc02909..00000000 --- a/templates/sheets/actor/components/character-properties.hbs +++ /dev/null @@ -1,64 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    -
    - - -
    -
    - - -
    -
    - -
    - - / - - -
    -
    -
    - -
    - - / - - -
    -
    -
    - - -
    -
    - - -
    -
    diff --git a/templates/sheets/actor/components/checks.hbs b/templates/sheets/actor/components/checks.hbs deleted file mode 100644 index f0bbc30e..00000000 --- a/templates/sheets/actor/components/checks.hbs +++ /dev/null @@ -1,12 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{#each config.i18n.checks as |check-label check-key|}} - {{> systems/ds4/templates/sheets/actor/components/check.hbs check-key=check-key check-target-number=(lookup - ../data.system.checks check-key) check-label=check-label}} - {{/each}} -
    diff --git a/templates/sheets/actor/components/combat-value.hbs b/templates/sheets/actor/components/combat-value.hbs deleted file mode 100644 index 78177d69..00000000 --- a/templates/sheets/actor/components/combat-value.hbs +++ /dev/null @@ -1,32 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render a combat value. -!-- -!-- @param combat-value-key: The key of the combat value -!-- @param combat-value-data: The data for the combat value -!-- @param combat-value-title: The title for the combat value -!-- @param combat-value-label: The label for the combat value (possibly an abbreviation) -!-- @param actor-id: The id of the actor the core value belongs to ---}} - -
    -
    - {{combat-value-data.total}} -
    - {{combat-value-label}} -
    - {{combat-value-data.base}} - + - -
    -
    diff --git a/templates/sheets/actor/components/combat-values.hbs b/templates/sheets/actor/components/combat-values.hbs deleted file mode 100644 index e71f548e..00000000 --- a/templates/sheets/actor/components/combat-values.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{#each config.i18n.combatValues as |combat-value-title combat-value-key|}} - {{> systems/ds4/templates/sheets/actor/components/combat-value.hbs combat-value-key=combat-value-key - combat-value-data=(lookup ../data.system.combatValues combat-value-key) combat-value-label=(lookup - ../config.i18n.combatValuesSheet combat-value-key) combat-value-title=combat-value-title - actor-id=../data._id}} - {{/each}} -
    diff --git a/templates/sheets/actor/components/creature-properties.hbs b/templates/sheets/actor/components/creature-properties.hbs deleted file mode 100644 index 25d20a54..00000000 --- a/templates/sheets/actor/components/creature-properties.hbs +++ /dev/null @@ -1,44 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    - - -
    -
    diff --git a/templates/sheets/actor/components/currency.hbs b/templates/sheets/actor/components/currency.hbs deleted file mode 100644 index b9b019a2..00000000 --- a/templates/sheets/actor/components/currency.hbs +++ /dev/null @@ -1,16 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe -SPDX-FileCopyrightText: 2021 Siegfried Krug - -SPDX-License-Identifier: MIT ---}} - -

    {{localize 'DS4.CharacterCurrency'}}

    -
    - {{#each data.system.currency as |value key|}} - - - {{/each}} -
    diff --git a/templates/sheets/actor/components/description.hbs b/templates/sheets/actor/components/description.hbs deleted file mode 100644 index dac3ba05..00000000 --- a/templates/sheets/actor/components/description.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{editor data.system.baseInfo.description target="system.baseInfo.description" button=true owner=owner - editable=editable engine="prosemirror"}} -
    diff --git a/templates/sheets/actor/components/effect-list-entry.hbs b/templates/sheets/actor/components/effect-list-entry.hbs deleted file mode 100644 index 9fd21553..00000000 --- a/templates/sheets/actor/components/effect-list-entry.hbs +++ /dev/null @@ -1,37 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render an effect list entry row. -!-- @param effectData: The data of the item. ---}} -
  • - {{!-- enabled --}} - - - {{!-- active --}} - {{#if effectData.active}}{{else}}{{/if}} - - {{!-- img --}} - {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img - alt=(localize "DS4.DocumentImageAltText" name=effectData.label) title=effectData.label}} - - {{!-- name --}} -
    {{effectData.name}}
    - - {{!-- source name --}} -
    {{effectData.sourceName}}
    - - {{!-- factor --}} -
    {{effectData.factor}}
    - - {{!-- control button group --}} - {{> systems/ds4/templates/sheets/shared/components/control-button-group.hbs documentType="effect" - editTitle="DS4.UserInteractionEditEffectTitle" deleteTitle="DS4.UserInteractionDeleteEffectTitle"}} -
  • diff --git a/templates/sheets/actor/components/effect-list-header.hbs b/templates/sheets/actor/components/effect-list-header.hbs deleted file mode 100644 index 113103f2..00000000 --- a/templates/sheets/actor/components/effect-list-header.hbs +++ /dev/null @@ -1,32 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render an effect list header row. ---}} -
  • - {{!-- enabled --}} -
    {{localize 'DS4.EffectEnabledAbbr'}}
    - - {{!-- active --}} -
    {{localize 'DS4.EffectActiveAbbr'}}
    - - {{!-- icon --}} -
    - - {{!-- name --}} -
    {{localize 'DS4.EffectName'}}
    - - {{!-- source name --}} -
    {{localize 'DS4.EffectSourceName'}}
    - - {{!-- factor --}} -
    {{localize 'DS4.EffectFactorAbbr'}}
    - - {{!-- control buttons placeholder --}} -
    -
  • diff --git a/templates/sheets/actor/components/item-list-entry.hbs b/templates/sheets/actor/components/item-list-entry.hbs deleted file mode 100644 index 9456f976..00000000 --- a/templates/sheets/actor/components/item-list-entry.hbs +++ /dev/null @@ -1,57 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render an item list entry row. -!-- If the partial is called with a partial block, the partial block -!-- content is inserted before the description. -!-- @param item: The item. -!-- @param isEquipable: A flag to enable the equipped column. -!-- @param hasQuantity: A flag to enable the quantity column. -!-- @param hideDescription: A flag to disable the description column. -!-- @param @partial-block: Custom column headers can be passed using the partial block. ---}} -
  • - {{!-- equipped --}} - {{#if isEquipable}} - - {{/if}} - - {{!-- image --}} - {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=(and item.system.rollable - @root/editable) - src=item.img alt=(localize "DS4.DocumentImageAltText" name=item.name) title=item.name - rollableTitle=(localize "DS4.RollableImageRollableTitle" name=item.name) rollableClass="rollable-item"}} - - {{!-- amount --}} - {{#if hasQuantity}} - - {{/if}} - - {{!-- name --}} - - - {{!-- item type specifics --}} - {{#if @partial-block }} - {{> @partial-block}} - {{/if}} - - {{!-- description --}} - {{#unless hideDescription}} -
    - {{{item.system.description}}}
    - {{/unless}} - - {{!-- control button group --}} - {{> systems/ds4/templates/sheets/shared/components/control-button-group.hbs documentType="item" - editTitle="DS4.UserInteractionEditItemTitle" deleteTitle="DS4.UserInteractionDeleteItemTitle"}} -
  • diff --git a/templates/sheets/actor/components/item-list-header.hbs b/templates/sheets/actor/components/item-list-header.hbs deleted file mode 100644 index 9778e98e..00000000 --- a/templates/sheets/actor/components/item-list-header.hbs +++ /dev/null @@ -1,54 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render an item list header row. -!-- If the partial is called with a partial block, the partial block -!-- content is inserted before the description heading. -!-- @param isEquipable: A flag to enable the equipped column. -!-- @param hasQuantity: A flag to enable the quantity column. -!-- @param hideDescription: A flag to disable the description column. -!-- @param type: The type of the items in this table. -!-- @param @partial-block: Custom column headers can be passed using the partial block. ---}} -
  • - {{!-- equipped --}} - {{#if isEquipable}} -
    - {{localize 'DS4.ItemEquippedAbbr'}}
    - {{/if}} - - {{!-- image --}} -
    - - {{!-- amount --}} - {{#if hasQuantity}} -
    #
    - {{/if}} - - {{!-- name --}} -
    {{localize 'DS4.ItemName'}} -
    - - {{!-- item type specifics --}} - {{#if @partial-block }} - {{> @partial-block }} - {{/if}} - - {{!-- description --}} - {{#unless hideDescription}} -
    {{localize - 'DS4.Description'}}
    - {{/unless}} - - {{!-- control buttons placeholder --}} -
    -
  • diff --git a/templates/sheets/actor/components/items-overview.hbs b/templates/sheets/actor/components/items-overview.hbs deleted file mode 100644 index 935c77c6..00000000 --- a/templates/sheets/actor/components/items-overview.hbs +++ /dev/null @@ -1,175 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe -SPDX-FileCopyrightText: 2021 Siegfried Krug - -SPDX-License-Identifier: MIT ---}} - -{{!-- WEAPONS --}} -

    {{localize 'DS4.ItemTypeWeaponPlural'}}

    -{{#unless (isEmpty itemsByType.weapon)}} -
      - {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true - type='weapon'}} - {{!-- attack type --}} -
      - {{localize - 'DS4.AttackTypeAbbr'}}
      - - {{!-- weapon bonus --}} -
      - {{localize 'DS4.WeaponBonusAbbr'}} -
      - - {{!-- opponent defense --}} -
      - {{localize 'DS4.OpponentDefenseAbbr'}} -
      - {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - - {{#each itemsByType.weapon as |item id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true - hasQuantity=true}} - {{!-- attack type --}} - - - {{!-- weapon bonus --}} -
      {{ item.system.weaponBonus}}
      - - {{!-- opponent defense --}} -
      - {{#if item.system.opponentDefenseForAttackType.melee includeZero=true}} - {{#if item.system.opponentDefenseForAttackType.ranged includeZero=true}} - {{item.system.opponentDefenseForAttackType.melee}}/{{item.system.opponentDefenseForAttackType.ranged}} - {{else}} - {{item.system.opponentDefenseForAttackType.melee}} - {{/if}} - {{else}} - {{item.system.opponentDefenseForAttackType.ranged}} - {{/if}} -
      - {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} - {{/each}} -
    -{{/unless}} -{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' -documentType='item' type='weapon'}} - -{{!-- ARMOR --}} -

    {{localize 'DS4.ItemTypeArmorPlural'}}

    -{{#unless (isEmpty itemsByType.armor)}} -
      - {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true - type="armor"}} - {{!-- armor material type --}} -
      {{localize 'DS4.ArmorMaterialTypeAbbr'}}
      - - {{!-- armor type --}} -
      {{localize 'DS4.ArmorTypeAbbr'}}
      - - {{!-- armor value --}} -
      - {{localize 'DS4.ArmorValueAbbr'}} -
      - {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - - {{#each itemsByType.armor as |item id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true - hasQuantity=true}} - {{!-- armor material type --}} -
      - {{lookup @root/config.i18n.armorMaterialTypesAbbr item.system.armorMaterialType}} -
      - - {{!-- armor type --}} -
      - {{lookup @root/config.i18n.armorTypesAbbr item.system.armorType}} -
      - - {{!-- armor value --}} -
      {{ item.system.armorValue}}
      - {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} - {{/each}} -
    -{{/unless}} -{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' -documentType='item' type='armor'}} - -{{!-- SHIELD --}} -

    {{localize 'DS4.ItemTypeShieldPlural'}}

    -{{#unless (isEmpty itemsByType.shield)}} -
      - {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true - type='shield'}} - {{!-- armor value --}} -
      - {{localize 'DS4.ArmorValueAbbr'}} -
      - {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.shield as |item id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true - hasQuantity=true}} - {{!-- armor value --}} -
      {{item.system.armorValue}}
      - {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} - {{/each}} -
    -{{/unless}} -{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' -documentType='item' type='shield'}} - -{{!-- EQUIPMENT --}} -

    {{localize 'DS4.ItemTypeEquipmentPlural'}}

    -{{#unless (isEmpty itemsByType.equipment)}} -
      - {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs isEquipable=true hasQuantity=true - type='equipment'}} - {{!-- storage location --}} -
      {{localize 'DS4.StorageLocation'}}
      - {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.equipment as |item id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item isEquipable=true - hasQuantity=true}} - {{!-- storage location --}} - - {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} - {{/each}} -
    -{{/unless}} -{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' -documentType='item' type='equipment'}} - -{{!-- LOOT --}} -

    {{localize 'DS4.ItemTypeLootPlural'}}

    -{{#unless (isEmpty itemsByType.loot)}} -
      - {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs hasQuantity=true type='loot'}} - {{!-- storage location --}} -
      {{localize 'DS4.StorageLocation'}}
      - {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.loot as |item id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item hasQuantity=true}} - {{!-- storage location --}} - - {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} - {{/each}} -
    -{{/unless}} -{{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' -documentType='item' type='loot'}} diff --git a/templates/sheets/actor/components/profile.hbs b/templates/sheets/actor/components/profile.hbs deleted file mode 100644 index 86884939..00000000 --- a/templates/sheets/actor/components/profile.hbs +++ /dev/null @@ -1,29 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{#each data.system.profile as |profile-data-value profile-data-key|}} - {{#if (and (ne profile-data-key 'biography') (ne profile-data-key 'specialCharacteristics'))}} -
    - - -
    - {{/if}} - {{/each}} -
    - - -
    -
    diff --git a/templates/sheets/actor/creature-sheet.hbs b/templates/sheets/actor/creature-sheet.hbs deleted file mode 100644 index b23ba54b..00000000 --- a/templates/sheets/actor/creature-sheet.hbs +++ /dev/null @@ -1,46 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{#> systems/ds4/templates/sheets/actor/components/actor-header.hbs}} - {{> systems/ds4/templates/sheets/actor/components/creature-properties.hbs}} - {{/systems/ds4/templates/sheets/actor/components/actor-header.hbs}} - - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Values Tab --}} - {{> systems/ds4/templates/sheets/actor/tabs/values.hbs}} - - {{!-- Inventory Tab --}} - {{> systems/ds4/templates/sheets/actor/tabs/creature-inventory.hbs}} - - {{!-- Spells Tab --}} - {{> systems/ds4/templates/sheets/actor/tabs/spells.hbs}} - - {{!-- Abilities Tab --}} - {{> systems/ds4/templates/sheets/actor/tabs/creature-abilities.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/actor/tabs/effects.hbs}} - - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/actor/tabs/description.hbs}} -
    -
    diff --git a/templates/sheets/actor/limited-sheet.hbs b/templates/sheets/actor/limited-sheet.hbs deleted file mode 100644 index 66497eb2..00000000 --- a/templates/sheets/actor/limited-sheet.hbs +++ /dev/null @@ -1,21 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2022 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{#> systems/ds4/templates/sheets/actor/components/actor-header.hbs}} - {{/systems/ds4/templates/sheets/actor/components/actor-header.hbs}} - - - {{!-- Sheet Body --}} -
    - {{#if (eq data.type 'character')}} - {{> systems/ds4/templates/sheets/actor/components/biography.hbs}} - {{else}} - {{> systems/ds4/templates/sheets/actor/components/description.hbs}} - {{/if}} -
    -
    diff --git a/templates/sheets/actor/tabs/biography.hbs b/templates/sheets/actor/tabs/biography.hbs deleted file mode 100644 index 4c131119..00000000 --- a/templates/sheets/actor/tabs/biography.hbs +++ /dev/null @@ -1,17 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -
    - - - {{!-- remove indentation to avoid annoying Handlebars auto-indent --}} -{{> systems/ds4/templates/sheets/actor/components/profile.hbs}} -{{> systems/ds4/templates/sheets/actor/components/biography.hbs}} - - -
    -
    diff --git a/templates/sheets/actor/tabs/character-abilities.hbs b/templates/sheets/actor/tabs/character-abilities.hbs deleted file mode 100644 index 55857a7b..00000000 --- a/templates/sheets/actor/tabs/character-abilities.hbs +++ /dev/null @@ -1,67 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- TALENT --}} -

    {{localize 'DS4.ItemTypeTalentPlural'}}

    - {{#unless (isEmpty itemsByType.talent)}} -
      - {{#> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='talent'}} - {{!-- rank --}} -
      {{localize 'DS4.TalentRank'}}
      - {{/systems/ds4/templates/sheets/actor/components/item-list-header.hbs}} - {{#each itemsByType.talent as |item id|}} - {{#> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} - {{!-- rank --}} -
      {{toRomanNumerals item.system.rank.total}}
      - {{/systems/ds4/templates/sheets/actor/components/item-list-entry.hbs}} - {{/each}} -
    - {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' - documentType='item' type='talent'}} - - {{!-- RACIAL ABILITY --}} -

    {{localize 'DS4.ItemTypeRacialAbilityPlural'}}

    - {{#unless (isEmpty itemsByType.racialAbility)}} -
      - {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='racialAbility'}} - {{#each itemsByType.racialAbility as |item id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} - {{/each}} -
    - {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' - documentType='item' type='racialAbility'}} - - {{!-- LANGUAGE --}} -

    {{localize 'DS4.ItemTypeLanguagePlural'}}

    - {{#unless (isEmpty itemsByType.language)}} -
      - {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='language'}} - {{#each itemsByType.language as |item id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} - {{/each}} -
    - {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' - documentType='item' type='language'}} - - {{!-- ALPHABET --}} -

    {{localize 'DS4.ItemTypeAlphabetPlural'}}

    - {{#unless (isEmpty itemsByType.alphabet)}} -
      - {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='alphabet'}} - {{#each itemsByType.alphabet as |item id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} - {{/each}} -
    - {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' - documentType='item' type='alphabet'}} -
    diff --git a/templates/sheets/actor/tabs/character-inventory.hbs b/templates/sheets/actor/tabs/character-inventory.hbs deleted file mode 100644 index 4134199e..00000000 --- a/templates/sheets/actor/tabs/character-inventory.hbs +++ /dev/null @@ -1,11 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{> systems/ds4/templates/sheets/actor/components/currency.hbs}} - {{> systems/ds4/templates/sheets/actor/components/items-overview.hbs}} -
    diff --git a/templates/sheets/actor/tabs/creature-abilities.hbs b/templates/sheets/actor/tabs/creature-abilities.hbs deleted file mode 100644 index b0ea8d9d..00000000 --- a/templates/sheets/actor/tabs/creature-abilities.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{#unless (isEmpty itemsByType.specialCreatureAbility)}} -
      - {{> systems/ds4/templates/sheets/actor/components/item-list-header.hbs type='specialCreatureAbility'}} - {{#each itemsByType.specialCreatureAbility as |item id|}} - {{> systems/ds4/templates/sheets/actor/components/item-list-entry.hbs item=item}} - {{/each}} -
    - {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddItemTitle' - documentType='item' type='specialCreatureAbility'}} -
    diff --git a/templates/sheets/actor/tabs/creature-inventory.hbs b/templates/sheets/actor/tabs/creature-inventory.hbs deleted file mode 100644 index 22260661..00000000 --- a/templates/sheets/actor/tabs/creature-inventory.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{> systems/ds4/templates/sheets/actor/components/items-overview.hbs}} -
    diff --git a/templates/sheets/actor/tabs/description.hbs b/templates/sheets/actor/tabs/description.hbs deleted file mode 100644 index 3f202525..00000000 --- a/templates/sheets/actor/tabs/description.hbs +++ /dev/null @@ -1,9 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{> systems/ds4/templates/sheets/actor/components/description.hbs}} -
    diff --git a/templates/sheets/actor/tabs/effects.hbs b/templates/sheets/actor/tabs/effects.hbs deleted file mode 100644 index b799fc48..00000000 --- a/templates/sheets/actor/tabs/effects.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -
    - {{#unless (isEmpty enrichedEffects)}} -
      - {{> systems/ds4/templates/sheets/actor/components/effect-list-header.hbs}} - {{#each enrichedEffects as |effectData id| }} - {{> systems/ds4/templates/sheets/actor/components/effect-list-entry.hbs effectData=effectData}} - {{/each}} -
    - {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddEffectTitle' - documentType='effect'}} -
    diff --git a/templates/sheets/item/alphabet-sheet.hbs b/templates/sheets/item/alphabet-sheet.hbs deleted file mode 100644 index f7089cf6..00000000 --- a/templates/sheets/item/alphabet-sheet.hbs +++ /dev/null @@ -1,25 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/armor-sheet.hbs b/templates/sheets/item/armor-sheet.hbs deleted file mode 100644 index 78d8be64..00000000 --- a/templates/sheets/item/armor-sheet.hbs +++ /dev/null @@ -1,36 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/armor.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/protective.hbs}} - {{#if isOwned}} - {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} - {{/if}} - {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/components/effect-list-entry.hbs b/templates/sheets/item/components/effect-list-entry.hbs deleted file mode 100644 index 47c452ce..00000000 --- a/templates/sheets/item/components/effect-list-entry.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render an effect list entry row. -!-- @param effectData: The data of the item. ---}} -
  • - {{!-- img --}} - {{> systems/ds4/templates/sheets/shared/components/rollable-image.hbs rollable=false src=effectData.img - alt=(localize "DS4.DocumentImageAltText" name=effectData.name) title=effectData.name}} - - {{!-- name --}} -
    {{effectData.name}}
    - - {{!-- control button group --}} - {{> systems/ds4/templates/sheets/shared/components/control-button-group.hbs documentType="effect" - editTitle="DS4.UserInteractionEditEffectTitle" deleteTitle="DS4.UserInteractionDeleteEffectTitle"}} -
  • diff --git a/templates/sheets/item/components/effect-list-header.hbs b/templates/sheets/item/components/effect-list-header.hbs deleted file mode 100644 index 625163a0..00000000 --- a/templates/sheets/item/components/effect-list-header.hbs +++ /dev/null @@ -1,19 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render an effect list header row. ---}} -
  • - {{!-- icon --}} -
    - - {{!-- name --}} -
    {{localize 'DS4.EffectName'}}
    - - {{!-- control buttons placeholder --}} -
    -
  • diff --git a/templates/sheets/item/components/item-header.hbs b/templates/sheets/item/components/item-header.hbs deleted file mode 100644 index 9eac3872..00000000 --- a/templates/sheets/item/components/item-header.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{localize 'DS4.ItemImageAltText'}} -
    -

    {{lookup config.i18n.itemTypes item.type}}

    -

    - - -

    -
    -
    diff --git a/templates/sheets/item/components/properties/armor.hbs b/templates/sheets/item/components/properties/armor.hbs deleted file mode 100644 index 458bd65b..00000000 --- a/templates/sheets/item/components/properties/armor.hbs +++ /dev/null @@ -1,25 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesArmor'}}

    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    diff --git a/templates/sheets/item/components/properties/equipable.hbs b/templates/sheets/item/components/properties/equipable.hbs deleted file mode 100644 index 899effd3..00000000 --- a/templates/sheets/item/components/properties/equipable.hbs +++ /dev/null @@ -1,14 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesEquipable'}}

    -
    - - -
    -
    diff --git a/templates/sheets/item/components/properties/physical.hbs b/templates/sheets/item/components/properties/physical.hbs deleted file mode 100644 index bd15ac0e..00000000 --- a/templates/sheets/item/components/properties/physical.hbs +++ /dev/null @@ -1,34 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesPhysical'}}

    -
    - - -
    -
    - -
    - -
    -
    - {{#if isOwned}} -
    - - -
    -
    - - -
    - {{/if}} -
    diff --git a/templates/sheets/item/components/properties/protective.hbs b/templates/sheets/item/components/properties/protective.hbs deleted file mode 100644 index 50190196..00000000 --- a/templates/sheets/item/components/properties/protective.hbs +++ /dev/null @@ -1,14 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesProtective'}}

    -
    - - -
    -
    diff --git a/templates/sheets/item/components/properties/special-creature-ability.hbs b/templates/sheets/item/components/properties/special-creature-ability.hbs deleted file mode 100644 index 293f2697..00000000 --- a/templates/sheets/item/components/properties/special-creature-ability.hbs +++ /dev/null @@ -1,15 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesSpecialCreatureAbility'}}

    -
    - - -
    -
    diff --git a/templates/sheets/item/components/properties/spell.hbs b/templates/sheets/item/components/properties/spell.hbs deleted file mode 100644 index 2d1069b8..00000000 --- a/templates/sheets/item/components/properties/spell.hbs +++ /dev/null @@ -1,118 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesSpell'}}

    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    -
    -
    - -
    - -
    -
    -
    - -
    - {{#each config.i18n.spellGroups as |value key|}} -
    - - -
    - {{/each}} -
    -
    -
    - -
    - -
    -
    -
    - -
    - - - - - - -
    -
    -
    - -
    - {{data.system.price}} -
    -
    -
    diff --git a/templates/sheets/item/components/properties/talent.hbs b/templates/sheets/item/components/properties/talent.hbs deleted file mode 100644 index bb8e70b3..00000000 --- a/templates/sheets/item/components/properties/talent.hbs +++ /dev/null @@ -1,26 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesTalent'}}

    -
    - -
    - - - - -
    - - - - {{data.system.rank.total}} -
    -
    -
    diff --git a/templates/sheets/item/components/properties/weapon.hbs b/templates/sheets/item/components/properties/weapon.hbs deleted file mode 100644 index 703a0c25..00000000 --- a/templates/sheets/item/components/properties/weapon.hbs +++ /dev/null @@ -1,27 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    -

    {{localize 'DS4.ItemPropertiesWeapon'}}

    -
    - -
    - -
    -
    -
    - - -
    -
    - - -
    -
    diff --git a/templates/sheets/item/equipment-sheet.hbs b/templates/sheets/item/equipment-sheet.hbs deleted file mode 100644 index eeb322ff..00000000 --- a/templates/sheets/item/equipment-sheet.hbs +++ /dev/null @@ -1,34 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{#if isOwned}} - {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} - {{/if}} - {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/language-sheet.hbs b/templates/sheets/item/language-sheet.hbs deleted file mode 100644 index f7089cf6..00000000 --- a/templates/sheets/item/language-sheet.hbs +++ /dev/null @@ -1,25 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/loot-sheet.hbs b/templates/sheets/item/loot-sheet.hbs deleted file mode 100644 index 0216ecc5..00000000 --- a/templates/sheets/item/loot-sheet.hbs +++ /dev/null @@ -1,31 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/racialAbility-sheet.hbs b/templates/sheets/item/racialAbility-sheet.hbs deleted file mode 100644 index f7089cf6..00000000 --- a/templates/sheets/item/racialAbility-sheet.hbs +++ /dev/null @@ -1,25 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/shield-sheet.hbs b/templates/sheets/item/shield-sheet.hbs deleted file mode 100644 index 6b9c8803..00000000 --- a/templates/sheets/item/shield-sheet.hbs +++ /dev/null @@ -1,35 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/protective.hbs}} - {{#if isOwned}} - {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} - {{/if}} - {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/specialCreatureAbility-sheet.hbs b/templates/sheets/item/specialCreatureAbility-sheet.hbs deleted file mode 100644 index 83b3be7d..00000000 --- a/templates/sheets/item/specialCreatureAbility-sheet.hbs +++ /dev/null @@ -1,31 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/special-creature-ability.hbs}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/spell-sheet.hbs b/templates/sheets/item/spell-sheet.hbs deleted file mode 100644 index 1291a407..00000000 --- a/templates/sheets/item/spell-sheet.hbs +++ /dev/null @@ -1,34 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/spell.hbs}} - {{#if isOwned}} - {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} - {{/if}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/tabs/description.hbs b/templates/sheets/item/tabs/description.hbs deleted file mode 100644 index cde3089c..00000000 --- a/templates/sheets/item/tabs/description.hbs +++ /dev/null @@ -1,10 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{editor data.system.description target="system.description" button=true owner=owner - editable=editable engine="prosemirror"}} -
    diff --git a/templates/sheets/item/tabs/effects.hbs b/templates/sheets/item/tabs/effects.hbs deleted file mode 100644 index 0e76c5ef..00000000 --- a/templates/sheets/item/tabs/effects.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{#unless (isEmpty data.effects)}} -
      - {{> systems/ds4/templates/sheets/item/components/effect-list-header.hbs}} - {{#each data.effects as |effectData id| }} - {{> systems/ds4/templates/sheets/item/components/effect-list-entry.hbs effectData=effectData}} - {{/each}} -
    - {{/unless}} - {{> systems/ds4/templates/sheets/shared/components/add-button.hbs title='DS4.UserInteractionAddEffectTitle' - documentType='effect'}} -
    diff --git a/templates/sheets/item/tabs/properties.hbs b/templates/sheets/item/tabs/properties.hbs deleted file mode 100644 index b5deffc4..00000000 --- a/templates/sheets/item/tabs/properties.hbs +++ /dev/null @@ -1,9 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{> @partial-block}} -
    diff --git a/templates/sheets/item/talent-sheet.hbs b/templates/sheets/item/talent-sheet.hbs deleted file mode 100644 index a6faf4f4..00000000 --- a/templates/sheets/item/talent-sheet.hbs +++ /dev/null @@ -1,31 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/talent.hbs}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/item/weapon-sheet.hbs b/templates/sheets/item/weapon-sheet.hbs deleted file mode 100644 index c08ff3de..00000000 --- a/templates/sheets/item/weapon-sheet.hbs +++ /dev/null @@ -1,35 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - -
    - {{!-- Header --}} - {{> systems/ds4/templates/sheets/item/components/item-header.hbs}} - - {{!-- Sheet Tab Navigation --}} - - - {{!-- Sheet Body --}} -
    - {{!-- Description Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/description.hbs}} - - {{!-- Properties Tab --}} - {{#> systems/ds4/templates/sheets/item/tabs/properties.hbs}} - {{> systems/ds4/templates/sheets/item/components/properties/weapon.hbs}} - {{#if isOwned}} - {{> systems/ds4/templates/sheets/item/components/properties/equipable.hbs}} - {{/if}} - {{> systems/ds4/templates/sheets/item/components/properties/physical.hbs}} - {{/systems/ds4/templates/sheets/item/tabs/properties.hbs}} - - {{!-- Effects Tab --}} - {{> systems/ds4/templates/sheets/item/tabs/effects.hbs}} -
    -
    diff --git a/templates/sheets/shared/components/add-button.hbs b/templates/sheets/shared/components/add-button.hbs deleted file mode 100644 index 1b7f0089..00000000 --- a/templates/sheets/shared/components/add-button.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{! -!-- Render an "add" button. -!-- @param documentType: The type of document this button controls, item or effect -!-- @param title: The title to use for the link element (will be localized) -!-- @param type: An optional property to use as data-type attribute -}} -{{#if @root/editable}} - -{{/if}} diff --git a/templates/sheets/shared/components/control-button-group.hbs b/templates/sheets/shared/components/control-button-group.hbs deleted file mode 100644 index 007e28ae..00000000 --- a/templates/sheets/shared/components/control-button-group.hbs +++ /dev/null @@ -1,22 +0,0 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Gesina Schwalbe - -SPDX-License-Identifier: MIT ---}} - -{{!-- -!-- Render a group of an "edit" and a "delete" button. -!-- The current item is defined by the a corresponding id attribute of the parent li element. -!-- @param documentType: The type of document that is controlled by this button group, item or effect -!-- @param editTitle: The title to use for the edit link element (will be localized) -!-- @param deleteTitle: The title to use for the delete link element (will be localized) ---}} -
    - {{#if @root/editable}} - - - {{/if}} -
    diff --git a/tools/bump-version.js b/tools/bump-version.js deleted file mode 100644 index 825b6631..00000000 --- a/tools/bump-version.js +++ /dev/null @@ -1,103 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import fs from "fs-extra"; -import semver from "semver"; -import yargs from "yargs"; -import { hideBin } from "yargs/helpers"; - -const packageType = "system"; -const repositoryOwner = process.env.CI_REPO_OWNER; -const repositoryName = process.env.CI_REPO_NAME; -const repositoryURL = process.env.CI_REPO_URL; -const forgeURL = process.env.CI_FORGE_URL; - -const getManifestUrl = (channel) => - `${forgeURL}/api/packages/${repositoryOwner}/generic/${repositoryName}/${channel}/${packageType}.json`; -const getDownloadURL = (version) => `${repositoryURL}/releases/download/${version}/${repositoryName}.zip`; -const bugsURL = `${repositoryURL}/issues`; -const getChangelogURL = (version) => `${repositoryURL}/releases/tag/${version}`; -const getReadmeURL = (version) => `${repositoryURL}/raw/tag/${version}/README.md`; -const getLicenseURL = (version) => `${repositoryURL}/raw/tag/${version}/LICENSE.md`; - -const manifestPath = `${packageType}.json`; - -/** - * Get the contents of the manifest file as object. - * @returns {unknown} An object describing the manifest - */ -function getManifest() { - if (fs.existsSync(manifestPath)) { - return fs.readJSONSync(manifestPath); - } -} - -/** - * Get the target version based on on the current version and the argument passed as release. - * @param {string} currentVersion The current version - * @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version - * @returns {string | null} The target version - */ -function getTargetVersion(currentVersion, release) { - if (["major", "premajor", "minor", "preminor", "patch", "prepatch", "prerelease"].includes(release)) { - return semver.inc(currentVersion, release); - } else { - return semver.valid(release); - } -} - -/** - * Get the channel for a given version. - * @param {string} version The version for which to get the channel - * @returns {"latest" | "beta"} The channel for the version - */ -function getChannel(version) { - return version.includes("-") ? "beta" : "latest"; -} - -/** - * Update version and download URL. - * @param {semver.ReleaseType | string} release Either a semver release type or a valid semver version - */ -function bumpVersion(release) { - if (!release) { - throw new Error("Missing release type"); - } - - const packageJson = fs.readJSONSync("package.json"); - const manifest = getManifest(); - if (!manifest) throw new Error("Manifest JSON not found"); - - const currentVersion = packageJson.version; - const targetVersion = getTargetVersion(currentVersion, release); - - if (!targetVersion) { - throw new Error("Incorrect version arguments"); - } - if (targetVersion === currentVersion) { - throw new Error("Target version is identical to current version"); - } - - console.log(`Bumping version number to '${targetVersion}'`); - packageJson.version = targetVersion; - fs.writeJSONSync("package.json", packageJson, { spaces: 2 }); - manifest.version = targetVersion; - manifest.url = repositoryURL; - manifest.manifest = getManifestUrl(getChannel(targetVersion)); - manifest.download = getDownloadURL(targetVersion); - manifest.bugs = bugsURL; - manifest.changelog = getChangelogURL(targetVersion); - manifest.readme = getReadmeURL(targetVersion); - manifest.license = getLicenseURL(targetVersion); - fs.writeJSONSync(manifestPath, manifest, { spaces: 2 }); -} - -const argv = yargs(hideBin(process.argv)).usage("Usage: $0").option("release", { - alias: "r", - type: "string", - demandOption: true, - description: "Either a semver release type or a valid semver version", -}).argv; -const release = argv.r; -bumpVersion(release); diff --git a/tools/const.js b/tools/const.js deleted file mode 100644 index bdad530c..00000000 --- a/tools/const.js +++ /dev/null @@ -1,9 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -export const name = "ds4"; -export const sourceDirectory = "./src"; -export const distDirectory = "./dist"; -export const destinationDirectory = "systems"; -export const foundryconfigFile = "./foundryconfig.json"; diff --git a/tools/link-package.js b/tools/link-package.js deleted file mode 100644 index 7fb452e8..00000000 --- a/tools/link-package.js +++ /dev/null @@ -1,55 +0,0 @@ -// SPDX-FileCopyrightText: 2021 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import fs from "fs-extra"; -import path from "node:path"; -import yargs from "yargs"; -import { hideBin } from "yargs/helpers"; - -import { destinationDirectory, distDirectory, foundryconfigFile, name } from "./const.js"; - -/** - * Get the data path of Foundry VTT based on what is configured in the {@link foundryconfigFile}. - */ -function getDataPath() { - const config = fs.readJSONSync(foundryconfigFile); - - if (config?.dataPath) { - if (!fs.existsSync(path.resolve(config.dataPath))) { - throw new Error("User data path invalid, no Data directory found"); - } - return path.resolve(config.dataPath); - } else { - throw new Error(`No user data path defined in ${foundryconfigFile}`); - } -} -/** - * Link the built package to the user data folder. - * @param {boolean} clean Whether to remove the link instead of creating it - */ -async function linkPackage(clean) { - if (!fs.existsSync(path.resolve("system.json"))) { - throw new Error("Could not find system.json"); - } - - const linkDirectory = path.resolve(getDataPath(), "Data", destinationDirectory, name); - - if (clean) { - console.log(`Removing link to built package at ${linkDirectory}.`); - await fs.remove(linkDirectory); - } else if (!fs.existsSync(linkDirectory)) { - console.log(`Linking built package to ${linkDirectory}.`); - await fs.ensureDir(path.resolve(linkDirectory, "..")); - await fs.symlink(path.resolve(".", distDirectory), linkDirectory); - } -} - -const argv = yargs(hideBin(process.argv)).usage("Usage: $0").option("clean", { - alias: "c", - type: "boolean", - default: false, - description: "Remove the link instead of creating it", -}).argv; -const clean = argv.c; -await linkPackage(clean); diff --git a/tools/packs.sh b/tools/packs.sh deleted file mode 100755 index 3a77ca93..00000000 --- a/tools/packs.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# SPDX-FileCopyrightText: 2023 Johannes Loher -# -# SPDX-License-Identifier: MIT - -pack() { - packs=$(ls -1 ./packs) - for pack in $packs; do - pnpm exec fvtt package pack --type=System --id=ds4 --compendiumName=$pack --inputDirectory=./packs/$pack --outputDirectory=./dist/packs - done -} - -unpack() { - packs=$(ls -1 ./dist/packs) - rm -rf ./packs/* - for pack in $packs; do - pnpm exec fvtt package unpack --type=System --id=ds4 --compendiumName=$pack --inputDirectory=./dist/packs --outputDirectory=./packs/$pack - done -} - -case $1 in - "pack") pack - ;; - "unpack") unpack - ;; - *) echo "Usage: $0 " - ;; -esac diff --git a/tsconfig.eslint.json b/tsconfig.eslint.json index b587f711..c394325f 100644 --- a/tsconfig.eslint.json +++ b/tsconfig.eslint.json @@ -1,4 +1,4 @@ { - "extends": "./tsconfig.json", - "include": ["src", "spec", "*.js"] + "extends": "./tsconfig.json", + "include": ["src", "spec", "*.js"] } diff --git a/tsconfig.eslint.json.license b/tsconfig.eslint.json.license deleted file mode 100644 index 31803f36..00000000 --- a/tsconfig.eslint.json.license +++ /dev/null @@ -1,3 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 9a2ce2d3..55672c07 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,13 @@ { - "compilerOptions": { - "outDir": "dist", - "target": "ES2021", - "lib": ["ES2021", "DOM"], - "types": ["@types/jquery", "handlebars"], - "esModuleInterop": true, - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noUncheckedIndexedAccess": true, - "noImplicitOverride": true, - "resolveJsonModule": true, - "verbatimModuleSyntax": true, - "checkJs": false, - "allowJs": true, - "skipLibCheck": true - }, - "include": ["src", "client", "common"] + "compilerOptions": { + "target": "ES2020", + "lib": ["DOM", "ES2020"], + "types": ["@league-of-foundry-developers/foundry-vtt-types"], + "esModuleInterop": true, + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "strict": true, + "sourceMap": true + }, + "include": ["src"] } diff --git a/tsconfig.json.license b/tsconfig.json.license deleted file mode 100644 index 409f785b..00000000 --- a/tsconfig.json.license +++ /dev/null @@ -1,4 +0,0 @@ -SPDX-FileCopyrightText: 2021 Johannes Loher -SPDX-FileCopyrightText: 2021 Oliver Rümpelein - -SPDX-License-Identifier: MIT diff --git a/vite.config.js b/vite.config.js deleted file mode 100644 index 244a02e5..00000000 --- a/vite.config.js +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-FileCopyrightText: 2022 Johannes Loher -// -// SPDX-License-Identifier: MIT - -import { defineConfig } from "vitest/config"; - -export default defineConfig({ - test: { - setupFiles: ["./spec/setup.ts"], - }, -}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..d36f0273 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,9335 @@ +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 4 + cacheKey: 7 + +"@babel/code-frame@npm:7.12.11, @babel/code-frame@npm:^7.0.0": + version: 7.12.11 + resolution: "@babel/code-frame@npm:7.12.11" + dependencies: + "@babel/highlight": ^7.10.4 + checksum: 033d3fb3bf911929c0d904282ee69d1197c8d8ae9c6492aaab09e530bca8c463b11c190185dfda79866556facb5bb4c8dc0b4b32b553d021987fcc28c8dd9c6c + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/code-frame@npm:7.12.13" + dependencies: + "@babel/highlight": ^7.12.13 + checksum: 471532bb7cb4a300bd1a3201e75e7c0c83ebfb4e0e6610fdb53270521505d7efe0961258de61e7b1970ef3092a97ed675248ee1a44597912a1f61f903d85ef41 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.13.0": + version: 7.13.6 + resolution: "@babel/compat-data@npm:7.13.6" + checksum: 0bed7ac3e2c4597140e56db034e2b7a664516c7f094ee521a15efee814a208e3937fd9a5ac12e8d3d6ccfcbbfd35ceced75163fc7b2d9ca71b48d8fcfbc6f990 + languageName: node + linkType: hard + +"@babel/core@npm:7.13.1, @babel/core@npm:^7.1.0, @babel/core@npm:^7.7.5": + version: 7.13.1 + resolution: "@babel/core@npm:7.13.1" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/generator": ^7.13.0 + "@babel/helper-compilation-targets": ^7.13.0 + "@babel/helper-module-transforms": ^7.13.0 + "@babel/helpers": ^7.13.0 + "@babel/parser": ^7.13.0 + "@babel/template": ^7.12.13 + "@babel/traverse": ^7.13.0 + "@babel/types": ^7.13.0 + convert-source-map: ^1.7.0 + debug: ^4.1.0 + gensync: ^1.0.0-beta.2 + json5: ^2.1.2 + lodash: ^4.17.19 + semver: 7.0.0 + source-map: ^0.5.0 + checksum: 3adc8e8ce201f7e45a83c6715b11b353e5083339cf32dc84db10bda63b63e4cd785b57ee8d51e0e049a60ebbbf7cd45d594475b6511607b57917076fd5acd888 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/generator@npm:7.13.0" + dependencies: + "@babel/types": ^7.13.0 + jsesc: ^2.5.1 + source-map: ^0.5.0 + checksum: d406238edc9e967e5a5013b9c7cf02d9eb4ea0160cd209cb63edb39a095d392b007e6762acb65ae79958a8bc0cf94945155b34dbcb2dfc93df1159881c217148 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helper-compilation-targets@npm:7.13.0" + dependencies: + "@babel/compat-data": ^7.13.0 + "@babel/helper-validator-option": ^7.12.17 + browserslist: ^4.14.5 + semver: 7.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 55a5af52e24e21ad8033178e55e6fd480375f0c1558ab80de9927c62635fc10ba9e7345020a3c8ad254b8312f21aa9b1198c65043a50671a520c9439bac03fcc + languageName: node + linkType: hard + +"@babel/helper-function-name@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-function-name@npm:7.12.13" + dependencies: + "@babel/helper-get-function-arity": ^7.12.13 + "@babel/template": ^7.12.13 + "@babel/types": ^7.12.13 + checksum: 25f03f303be790618437dc49c6df758d362112a564361d2eae66b58fda4f5ec09e62875473b18090b939c8d3d60b36aa7c9f688768b7fade511512d02ac9d3d0 + languageName: node + linkType: hard + +"@babel/helper-get-function-arity@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-get-function-arity@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: cfb5c39959ea9f1cc21ee0f4a23054be66a615fa5392f25763ea98f0c690a5b47500af9a63f28a42a2fb3f699684c113c45a95c4ce6303dfecb3358e32e56c76 + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helper-member-expression-to-functions@npm:7.13.0" + dependencies: + "@babel/types": ^7.13.0 + checksum: 9baaab9910a96c0f201b71c6cc39037dce5d32a321f61347ac489ddbef2bcbd232adcadeaa8e44d8c9a7216226c009b57f9d65697d90d7a8ed2c27682932d959 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-module-imports@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: 9832436fb44361b2d7a0b7d99f18b7c0529afb94202ab92b578147aba062447e9a1cff33bc95db33189686fa922c62f23da296870958eee2f862b3aa89809159 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helper-module-transforms@npm:7.13.0" + dependencies: + "@babel/helper-module-imports": ^7.12.13 + "@babel/helper-replace-supers": ^7.13.0 + "@babel/helper-simple-access": ^7.12.13 + "@babel/helper-split-export-declaration": ^7.12.13 + "@babel/helper-validator-identifier": ^7.12.11 + "@babel/template": ^7.12.13 + "@babel/traverse": ^7.13.0 + "@babel/types": ^7.13.0 + lodash: ^4.17.19 + checksum: b7e45c67eeaca488fa7a7bb0afebaec25b91f94cb04d32229ef799bd3a31ef5b566737fefd139b20c6525817528816e43bf492372c77e352e2a0e4d03b1fe21b + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-optimise-call-expression@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: 5e4df5da4a45d7b7c100307efdc11f9fb460f943b4db1c60ddbdf57c3a7cbeecc8dea8980f4a9d4f3c38071b04d0e7c95af213229bcc1c13f17eb7293a6298a9 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.13.0 + resolution: "@babel/helper-plugin-utils@npm:7.13.0" + checksum: 229ac1917b43ad38732d2d4a9a826f87d8945719249efe1d6191f3e25ba6027a289af70380d82d62a03fc9e82558a0ea6f12739cbb55b64bb280d6b511b4ca65 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helper-replace-supers@npm:7.13.0" + dependencies: + "@babel/helper-member-expression-to-functions": ^7.13.0 + "@babel/helper-optimise-call-expression": ^7.12.13 + "@babel/traverse": ^7.13.0 + "@babel/types": ^7.13.0 + checksum: b32ab3f4d6a4e7f80c361eb9c0a001c2ae498f885248cb567c8de2475fb3dcbdf7ddd32a9e9a926abf55cf4f46faad7ceebfd3d035dea5508c3d9ba55d4083cc + languageName: node + linkType: hard + +"@babel/helper-simple-access@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-simple-access@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: 34f19da4b8129006d660ff6d704d493a447852268a1360727a7de32087c7cead4c2548a3bb73c8fee7afa2dcad85087d53f9b0cabe071f3bf5cc27f35de9e7c8 + languageName: node + linkType: hard + +"@babel/helper-split-export-declaration@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/helper-split-export-declaration@npm:7.12.13" + dependencies: + "@babel/types": ^7.12.13 + checksum: c8d529558c45855542b7094de7b08e6c6de34922037a71596545dbb7a3be6ebf61b8b3193afe85fa5c9c35bcb0cc94110866deab8028f73e500bdc62427532c9 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.12.11": + version: 7.12.11 + resolution: "@babel/helper-validator-identifier@npm:7.12.11" + checksum: 18de432203264b501db2690b53370a4289dc56084f5a2c66de624b159ee28b8abaeb402b2b7584296d9261645d91ddb6bfd21125d3ffd9bf02e9262e77baf3d2 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.12.17": + version: 7.12.17 + resolution: "@babel/helper-validator-option@npm:7.12.17" + checksum: 9201d17a5634b05a6f3d561b95e73a4e4f9ba2e56c55cfc3b9a2a9618c4090b4b507720ac7a2e77209e68dc9bdc00a59b5ba7ad9ecbca3fb2c9217e814b7b5a5 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/helpers@npm:7.13.0" + dependencies: + "@babel/template": ^7.12.13 + "@babel/traverse": ^7.13.0 + "@babel/types": ^7.13.0 + checksum: 6c435aefe108e85b999570eed9fc2ec10944cb1ed4c3ff6656936c90a6f986174bd5c80ec48ecbbb7042e5eca5761364f484d7e0238a3aa77c2f5099dcac8df0 + languageName: node + linkType: hard + +"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/highlight@npm:7.12.13" + dependencies: + "@babel/helper-validator-identifier": ^7.12.11 + chalk: ^2.0.0 + js-tokens: ^4.0.0 + checksum: 83a3a2cc961b9e17fb75bd57ebf90cf07be6ec4263d74b60c435c28bcb045c474f0162eaa921ad7b44429d7624ec49b41cae416e475d3f747ccda678be1f7a8f + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.13, @babel/parser@npm:^7.13.0": + version: 7.13.4 + resolution: "@babel/parser@npm:7.13.4" + bin: + parser: ./bin/babel-parser.js + checksum: 3aac62adbd1fd91798751a09b385ed3810acffb7bd637066bea65acf16670fdc8c7c39bab2148c57b4d6606355344de01922c9aba86405c771eaabc58701077a + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 39685944ffe342981afb1fe3af824305e94ee249b1841c78c1112f93d256d3d405902ac146ab3bad8c243710f081621f9fbf53c62474800d398293c99521c8ef + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 8c9b610377af48e1d8ec0d5ad5eec5e462fbc775b20f367e0ebc2656b98b4cc73a952e8b5ab8641e6de0d04923f3843dd73ce00a71ef5cac9940822ff776c8ec + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.8.3": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 3023dec8acd42e0b691d9cdf21bc6931fe3e3d53c2231bdfe3eca3afeab168723f7315991550a163748bc49dbcd3c95632b77ec56f5e1d89bc5029cfeb7f0f7b + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 685ee8f0b5b675952e02e1cabcde4d92638918a66ed515b2663e2e0b2246210a0768325423d5642f8687653a449357826675ccfcb712676be260a0ae13313828 + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 1a7dabf0a4b264cb235966c4256aad131567eba20e41de731fa9127d371454a2f702e27fd7bedac65efb0df847e5cece7bcb5507a931604d1c2ecb7390adaa1f + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5b82f717707d278e58d12649932bf3327923361f051cd4517a5b63d7ebfe39cb6cdfb37aa199b5a441db305301a3c8de01c946d25d1f4c4ecb94322a23ac9e73 + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 4ba03753759a2d9783b792c060147a20f474f76c42edf77cbf89c6669f9f22ffb3cbba4facdd8ce651129db6089a81feca1f7e42da75244eabedecba37bd20be + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.8.3": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": ^7.10.4 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 47ae8782939ccc41f94b1d46b8b7a63363b003b8b7544bddae8dd454a8d51b38bbd4f9c26e91ecfb5fc16dc5f2228700e3030def63c5d07046073ec8fabc4665 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: db5dfb39faceddba8b80c586e331e17c3a1f79941f80eaa070b91fb920582bffe8bba46f6bebbdaf7c1f9b0bbe2a68493c28e1c9fb0ced864da739c0cd52ce43 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: f03d07526674ecdb3388e1d648ec250250968e13c037a7110e37d3eab0b82b07d6605332772afdf19f1831dfd3bdbbf0288a7d9097097d30b9548388ea693a07 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": ^7.8.0 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 2a50685d023bc609b01a3fd7ed3af03bc36c575da8d02199ed51cb24e8e068f26a128a20486cd502abe9e1d4c02e0264b8a58f1a5143e1291ca3508a948ada97 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.8.3": + version: 7.12.13 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": ^7.12.13 + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 5bd0a65b01a39e5636169f830ade7511d046f2db63831e226fa99139d97aa30ee6958ac04a1e114954ace8c64875269fc450ed3304a4204f4be82c1b8aa21be7 + languageName: node + linkType: hard + +"@babel/template@npm:^7.12.13, @babel/template@npm:^7.3.3": + version: 7.12.13 + resolution: "@babel/template@npm:7.12.13" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/parser": ^7.12.13 + "@babel/types": ^7.12.13 + checksum: 665977068a7036233b017396c0cd4856b6bb2ad9759e95e2325cbd198b98d2e26796f25977c8e12b5936d7d94f49cf883df9cffa3c91c797abdf27fc9b6bec65 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.1.0, @babel/traverse@npm:^7.13.0": + version: 7.13.0 + resolution: "@babel/traverse@npm:7.13.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@babel/generator": ^7.13.0 + "@babel/helper-function-name": ^7.12.13 + "@babel/helper-split-export-declaration": ^7.12.13 + "@babel/parser": ^7.13.0 + "@babel/types": ^7.13.0 + debug: ^4.1.0 + globals: ^11.1.0 + lodash: ^4.17.19 + checksum: e5d1b690157da325b5bea98e472f4df0fff16048242a70880e2da7939b005ccd5b63d2b4527e203cfc71a422da0fa513c0ad84114bff002d583ebd7dbd2c8576 + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.13, @babel/types@npm:^7.13.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.8.3": + version: 7.13.0 + resolution: "@babel/types@npm:7.13.0" + dependencies: + "@babel/helper-validator-identifier": ^7.12.11 + lodash: ^4.17.19 + to-fast-properties: ^2.0.0 + checksum: a47357647a92c08ee2f5059210d37fd7fe190e8d4ef71dd97ba61c6ca7b7e979660bc8ba00fdc51249c037199b634dd984fde8d7a622fdd5e3e2161fe65e94c3 + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 4fc6fb784b09d2e994fc9180dc8af9f674a4e5114cd2c52754e689f87725e670d0919728945fe3991d434109e42e5ac6f9d85c58a566e2a645eb9dda68eead6a + languageName: node + linkType: hard + +"@cnakazawa/watch@npm:^1.0.3": + version: 1.0.4 + resolution: "@cnakazawa/watch@npm:1.0.4" + dependencies: + exec-sh: ^0.3.2 + minimist: ^1.2.0 + bin: + watch: cli.js + checksum: 7909f89bbee917b2a5932fd178b48b5291f417293538b1e8e68a5fa5815b3d6d4873c591d965f84559cd3e7b669c42a749ab706ef792368de39b95541ae4627d + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^0.4.0": + version: 0.4.0 + resolution: "@eslint/eslintrc@npm:0.4.0" + dependencies: + ajv: ^6.12.4 + debug: ^4.1.1 + espree: ^7.3.0 + globals: ^12.1.0 + ignore: ^4.0.6 + import-fresh: ^3.2.1 + js-yaml: ^3.13.1 + minimatch: ^3.0.4 + strip-json-comments: ^3.1.1 + checksum: d3f51b741997cbf36662d8b5a52985bfa5d2873e48cadccd95c67fcce1706327ec98ebb6f0be79c6ecbc31bdeca32c2b1c4f66fd1cf3934c434d1ac269cbceac + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: ^5.3.1 + find-up: ^4.1.0 + get-package-type: ^0.1.0 + js-yaml: ^3.13.1 + resolve-from: ^5.0.0 + checksum: f7f3b1c922bf5e36a7f747b2a80fedc9c2e1ebd7e03dc73082fca7c1066cc4e2e2ac39827aded6a087c32294e9c032ff3e50bc9041fcf757b4a38ca97418b652 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: d84c326335c37e3bd963e51d0e9631153961ff695524b1722317c9991f5153da283f819beab84a079695e2da8b3740e84c81db47c361cf12fff575968145d662 + languageName: node + linkType: hard + +"@jest/console@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/console@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@types/node": "*" + chalk: ^4.0.0 + jest-message-util: ^26.6.2 + jest-util: ^26.6.2 + slash: ^3.0.0 + checksum: 72920a893e4a622ce96786eb1d3f6ef0c88c9d1ec32fffbde4e25f582b5f1ccd5f5b7a370c0b1a4917fb74c046467f43422c0039c497df4b307527910759e0a5 + languageName: node + linkType: hard + +"@jest/core@npm:^26.6.3": + version: 26.6.3 + resolution: "@jest/core@npm:26.6.3" + dependencies: + "@jest/console": ^26.6.2 + "@jest/reporters": ^26.6.2 + "@jest/test-result": ^26.6.2 + "@jest/transform": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.4 + jest-changed-files: ^26.6.2 + jest-config: ^26.6.3 + jest-haste-map: ^26.6.2 + jest-message-util: ^26.6.2 + jest-regex-util: ^26.0.0 + jest-resolve: ^26.6.2 + jest-resolve-dependencies: ^26.6.3 + jest-runner: ^26.6.3 + jest-runtime: ^26.6.3 + jest-snapshot: ^26.6.2 + jest-util: ^26.6.2 + jest-validate: ^26.6.2 + jest-watcher: ^26.6.2 + micromatch: ^4.0.2 + p-each-series: ^2.1.0 + rimraf: ^3.0.0 + slash: ^3.0.0 + strip-ansi: ^6.0.0 + checksum: e0d35e40fcbda21997dbc126722db92f8d534926c9bcf4a30ee79aa772e40ead2fefd405866e3364bff7ee50b12f03705c3fea5491b77807091961b2c3a0d65e + languageName: node + linkType: hard + +"@jest/environment@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/environment@npm:26.6.2" + dependencies: + "@jest/fake-timers": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + jest-mock: ^26.6.2 + checksum: a4f426546801e79d2f5d1a516d80c330ccbe1638f7a7705f65110ac33f8a3ded08ccef75ad648610618122f2bfeba34e0c1e616eccc219a315956d63ff30d8fc + languageName: node + linkType: hard + +"@jest/fake-timers@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/fake-timers@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@sinonjs/fake-timers": ^6.0.1 + "@types/node": "*" + jest-message-util: ^26.6.2 + jest-mock: ^26.6.2 + jest-util: ^26.6.2 + checksum: a82aa6d2f31d5e9958484b32e4714cb2ebca6ce6baf590c29505c8eea638663bf27f27b98a30ab574023cb15ecffbe70dc75d14694d76c4ccc78bee37d2ec1d1 + languageName: node + linkType: hard + +"@jest/globals@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/globals@npm:26.6.2" + dependencies: + "@jest/environment": ^26.6.2 + "@jest/types": ^26.6.2 + expect: ^26.6.2 + checksum: d8f68a24adf87f6e32ba34ec884502ec067ed79a2855852ed64daa50383a53daf2b97487dd049e77c6fd6cade28b32f8cad4f0a2d02ce6b8aa23f95a136db8a7 + languageName: node + linkType: hard + +"@jest/reporters@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/reporters@npm:26.6.2" + dependencies: + "@bcoe/v8-coverage": ^0.2.3 + "@jest/console": ^26.6.2 + "@jest/test-result": ^26.6.2 + "@jest/transform": ^26.6.2 + "@jest/types": ^26.6.2 + chalk: ^4.0.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.2 + graceful-fs: ^4.2.4 + istanbul-lib-coverage: ^3.0.0 + istanbul-lib-instrument: ^4.0.3 + istanbul-lib-report: ^3.0.0 + istanbul-lib-source-maps: ^4.0.0 + istanbul-reports: ^3.0.2 + jest-haste-map: ^26.6.2 + jest-resolve: ^26.6.2 + jest-util: ^26.6.2 + jest-worker: ^26.6.2 + node-notifier: ^8.0.0 + slash: ^3.0.0 + source-map: ^0.6.0 + string-length: ^4.0.1 + terminal-link: ^2.0.0 + v8-to-istanbul: ^7.0.0 + dependenciesMeta: + node-notifier: + optional: true + checksum: 86ed8563dd4862de79c1b4f2e529a9a471d856b44aa66069c91b406d4c32ea70d909757797f99fc8d14a7eb2bd95286bd716346e289a92dba243e4b9eddef537 + languageName: node + linkType: hard + +"@jest/source-map@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/source-map@npm:26.6.2" + dependencies: + callsites: ^3.0.0 + graceful-fs: ^4.2.4 + source-map: ^0.6.0 + checksum: 9a6d3e650660229fadfcf4d9789cdf99d645d3827b05cbce7676f39d19af2ab00cca728420ef188cf44b92289e06e2a5f3e5299085e3ae080cc0472ea1fa4cc9 + languageName: node + linkType: hard + +"@jest/test-result@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/test-result@npm:26.6.2" + dependencies: + "@jest/console": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/istanbul-lib-coverage": ^2.0.0 + collect-v8-coverage: ^1.0.0 + checksum: 0ecd35212bb19f2dee97d795193897780729c446739715a52cb37ed248020ad6a32bc2e9563812f56028be19c651237403c7dfec9ed967f443d9afcc385dd9dc + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:^26.6.3": + version: 26.6.3 + resolution: "@jest/test-sequencer@npm:26.6.3" + dependencies: + "@jest/test-result": ^26.6.2 + graceful-fs: ^4.2.4 + jest-haste-map: ^26.6.2 + jest-runner: ^26.6.3 + jest-runtime: ^26.6.3 + checksum: c0c2c7917a0b6e25414b0ed570701c9cd5b2ba18fe0c55ac3a2d53ccf6aeeaf7ec388c14c78d13c27c4a7e7ee87bdca52d09d820c0ebf80a3e7d47f3fc52e9ef + languageName: node + linkType: hard + +"@jest/transform@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/transform@npm:26.6.2" + dependencies: + "@babel/core": ^7.1.0 + "@jest/types": ^26.6.2 + babel-plugin-istanbul: ^6.0.0 + chalk: ^4.0.0 + convert-source-map: ^1.4.0 + fast-json-stable-stringify: ^2.0.0 + graceful-fs: ^4.2.4 + jest-haste-map: ^26.6.2 + jest-regex-util: ^26.0.0 + jest-util: ^26.6.2 + micromatch: ^4.0.2 + pirates: ^4.0.1 + slash: ^3.0.0 + source-map: ^0.6.1 + write-file-atomic: ^3.0.0 + checksum: 28e97c9eb837af80095f8e94e34a81b4515912a25d13c70a83e3920757783751be6ccb7bca9acb4a384ab78cd54f0ebcf34c1be826173719fdf88d981d54e4b7 + languageName: node + linkType: hard + +"@jest/types@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/types@npm:26.6.2" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.0 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" + "@types/yargs": ^15.0.0 + chalk: ^4.0.0 + checksum: 5c511d7807f414b298299ae4a053abf265f39984942e0eefdfb17a7986a36f1047e0fd9a6f785bdddbf7343a5737595dfabe148719a80e118dd77486502009cc + languageName: node + linkType: hard + +"@league-of-foundry-developers/foundry-vtt-types@npm:^0.7.9-6": + version: 0.7.9-6 + resolution: "@league-of-foundry-developers/foundry-vtt-types@npm:0.7.9-6" + dependencies: + "@types/howler": 2.2.1 + "@types/jquery": 3.5.1 + "@types/socket.io-client": ^1.4.33 + handlebars: 4.7.6 + pixi-particles: ^4.3.0 + pixi.js: 5.3.4 + tinymce: 5.6.2 + typescript: ^4.1.4 + checksum: ea8783a4da939db6d51e12a6cb343e53cb6df747ccf8d823063066322c707c98c0fffd2559efc0e0e8fec47b08528f5920be3ac9cd4708c673d947f0e8898e6e + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.4": + version: 2.1.4 + resolution: "@nodelib/fs.scandir@npm:2.1.4" + dependencies: + "@nodelib/fs.stat": 2.0.4 + run-parallel: ^1.1.9 + checksum: 30b3102ee37e1c1a0cb939a8e93f9a58b1637e2b4b546bb9143b3fb5efacd2abde3237a5313d5329bf1bc4231c418a77c3cb7f5434ce410e61a91ff4051cf215 + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.4, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.4 + resolution: "@nodelib/fs.stat@npm:2.0.4" + checksum: 6454a79e945dd55102b5c2e158813804ed349f9c1cc806f8754fca4587688a5d8e4115fc3eedbdf3d8a6b343169a6b664ecd8a7a42289eed210c686a4d0897c4 + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.6 + resolution: "@nodelib/fs.walk@npm:1.2.6" + dependencies: + "@nodelib/fs.scandir": 2.1.4 + fastq: ^1.6.0 + checksum: d0503ffd0bb4172d5ac5d23993b14665f5f6d42a460a719ad97743ce71e60588d134cc60df12ca76be0e5e3a93c9a3156904d9296b78a8cdf19425c3423c0b58 + languageName: node + linkType: hard + +"@pixi/accessibility@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/accessibility@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: a570f9fbe3f5de5ec43e89b8b76bbbfbde0c20bfb98a763e96692b65ad2f9af3c287236790e35f2b988cb8226edd1021b185e7c15c4612ea034a6e809c6f770a + languageName: node + linkType: hard + +"@pixi/app@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/app@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + checksum: a3dc010e7ae0f38cd2e707d0127bf8146214cf6febbc0a2936470ebf84a87f32517afec3b74f787fab2355dcff538100e6b2570b4ed7f7a7320a9e91caf5a1fe + languageName: node + linkType: hard + +"@pixi/constants@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/constants@npm:5.3.4" + checksum: d18e2cf232c513538a2190f43f9f271c29f38ea5c2f92d0c04dbfbb9cf28458e191f3181dfb480262b3f6e0fe447fa1a656878e13c2be3ee52c3716647a61e34 + languageName: node + linkType: hard + +"@pixi/core@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/core@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/runner": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/ticker": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: e380d68351637d527e0ac5674baaa837c0b154dd65856d0f22cbf7a58a0068b93070ff7dffa11509d0b290f2ade852a6a43a131f2725d0f17106b4049d113e0a + languageName: node + linkType: hard + +"@pixi/display@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/display@npm:5.3.4" + dependencies: + "@pixi/math": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 486a62c8c9c5d39a0039c20d38b9e949323fa7d31dd3e9b0a2d674fa0178ff3d5741b33cc0f818cf596ab8d09b2f4070d9a6113992192c1bd3f784a9cc346206 + languageName: node + linkType: hard + +"@pixi/extract@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/extract@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: e06be5453eaab8587e53149f48a498467ed50954cb8856991733a9a9ab24c020d63e1878dcacffd2854318c65f7c4ed8b1e889ef73a3f407896bdb4d8f886592 + languageName: node + linkType: hard + +"@pixi/filter-alpha@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/filter-alpha@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + checksum: 011bab9c9cd29630ebdcba6d81bf3507e55865f8b898ea9dfdafc97f0f0fa650dac1428693ebebcc8d85dbfb11f18aaaa14e1e88edaeee58423852932379110e + languageName: node + linkType: hard + +"@pixi/filter-blur@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/filter-blur@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/settings": 5.3.4 + checksum: 8028251358d2e0ae161b5bdd4512a787e6efd629ce79b2db23a19e3aefd402bcd9542f0b56f3d2b78fdca325d4a0ccec4bf6662925a4e7d5fefbfdedba7dbe65 + languageName: node + linkType: hard + +"@pixi/filter-color-matrix@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/filter-color-matrix@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + checksum: 5cfe2cde5643e35c5bacde6764e46aec2f9dacbc3fd56fd37077296a69f32352bccebec6c6f4e5af307ce5bbc08f6353d657f453dc4b10e936ecb65e2e3fca84 + languageName: node + linkType: hard + +"@pixi/filter-displacement@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/filter-displacement@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/math": 5.3.4 + checksum: 4e2039873aadf295cbf3a2b5e568193b4a1af4af4fa1ea7b4f947d38b1f2b4a0cb71c1d7b024ae9b17cc3c8c0b090f224c84bd5edd4b56b5c46767183c0db2f6 + languageName: node + linkType: hard + +"@pixi/filter-fxaa@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/filter-fxaa@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + checksum: e0dbaca46ef487b56a614024f3a3cc4b28c9a08a7b047b0ac272d718063980eb8b62b2e7b1bbd651101c521b8c06e958e3330b2b62a86fbe4680a4e41a298961 + languageName: node + linkType: hard + +"@pixi/filter-noise@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/filter-noise@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + checksum: b100e09d86303e8beb5832b295d976f128558a775a3d87ff2edaa6ba21aad2fb0a624fe9a8f3c4dd66ea142710a825f0786291d4a06aa613784a834a24ceff5d + languageName: node + linkType: hard + +"@pixi/graphics@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/graphics@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/sprite": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 8b4c14f4750ccb418044f50598a3779f50dd41d6fd3d5ecfedabe30bec74cdf69d351fe3efe87ce01cda2b353f774b84d6f83f2004804a69c500e462e34c5eca + languageName: node + linkType: hard + +"@pixi/interaction@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/interaction@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/ticker": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 6e9a7db6cab87688af925e0a9602533accbd5166484889ad79104fddfa8d74955a8346a4cc1f598b92352d0f8d677d3f809ecbb32ca80aee718bdf1aac81086f + languageName: node + linkType: hard + +"@pixi/loaders@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/loaders@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/utils": 5.3.4 + resource-loader: ^3.0.1 + checksum: bdfbc20d6309e48b164fe4c20dc1c55d54bf3c648ce3da39c69eb079bbea82634fdf4a221054253cee8a45a6e9bc27379ab14ef7d566317a920ea2dc589621b0 + languageName: node + linkType: hard + +"@pixi/math@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/math@npm:5.3.4" + checksum: 515b3f2662a28346ab10f5a1e63a46d3bc34341fdc140150b2ab7482ca5a50ace1638691cae968f1110bb6002670512c9914dc419f70fe9642bdd5aa7428e30c + languageName: node + linkType: hard + +"@pixi/mesh-extras@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/mesh-extras@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/core": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/mesh": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 013066f1b8ed7f28de71045b5d5faaf4fd7a139ea36882c02c5a525b0142cff3548bc7389d0508d50f0fce8b41ed3b8b2fdc1be39f4efaf4335438d3e48f07a9 + languageName: node + linkType: hard + +"@pixi/mesh@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/mesh@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: da16d6d266c9d0285259cf4c041d53271bdef3abc3b75614c6ce0ca48b2bf1f8876344f1c109c8790fc514251932c860ed0f34829b7d24e62f6e6469f019e31a + languageName: node + linkType: hard + +"@pixi/mixin-cache-as-bitmap@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/mixin-cache-as-bitmap@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/sprite": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 8052c7573a83d1b480f949b3aecc3d6e6efa88c8a3ee31272a3e9900437fff906d92945aa2ca42f1a451823195dd867c6c685ff7078b9f7e87c565cee89c98ed + languageName: node + linkType: hard + +"@pixi/mixin-get-child-by-name@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/mixin-get-child-by-name@npm:5.3.4" + dependencies: + "@pixi/display": 5.3.4 + checksum: b2d6f23a7309a55b1fcc97274b6911224e59773bffb8377b2c0a56eeabc333f2a1900fd267c2f8e53778dce11cfbf16071fac782b3c646c0d4531272ad05478c + languageName: node + linkType: hard + +"@pixi/mixin-get-global-position@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/mixin-get-global-position@npm:5.3.4" + dependencies: + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + checksum: 5ec4d799441b7e165ceb78a34c7fd189dd5680c30e052c10f25f3e0f712562a386097cbc90bafd02a9857e94c89cdd2c99d3a93eddd377e56dc9295d9d1c816c + languageName: node + linkType: hard + +"@pixi/particles@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/particles@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 50304cc99149ffdf57bc5de525c9cb36168530d062d3e16222f737ade7f0fb89d647b1649b6c13dfcd56454e12a633fa25873105fd975276e0b9eb104fe5629a + languageName: node + linkType: hard + +"@pixi/polyfill@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/polyfill@npm:5.3.4" + dependencies: + es6-promise-polyfill: ^1.2.0 + object-assign: ^4.1.1 + checksum: 3d292f37e3a8524549699051ad8f9154cee51b517b2601aeb810eae2ff1865ed6f2da0004fa3efb962afc03f6441c1f2cbf87eaf419d07f07859115d84f36ccc + languageName: node + linkType: hard + +"@pixi/prepare@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/prepare@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/graphics": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/text": 5.3.4 + "@pixi/ticker": 5.3.4 + checksum: 9037baeeaa9d5dd10340a86a937450cc5b107140636e61fd415ad6e765cd596baa4cfa50b85a512626d4c0e80bc55dd1c19b20b44cf2438cc819ca5e9c7cadc0 + languageName: node + linkType: hard + +"@pixi/runner@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/runner@npm:5.3.4" + checksum: bc69dad0a975ab5f9e690342bff132e461a4c2c38b1c1a0a9f7e05fff0e3eb05ea9314dedc7ab4b74d7f4980321a6f2cbe57123ae9c816bda410e08cc43190e9 + languageName: node + linkType: hard + +"@pixi/settings@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/settings@npm:5.3.4" + dependencies: + ismobilejs: ^1.1.0 + checksum: 3cfec20062d966f540bd458f5fbf17cd9592afe28bc53d00329d2160e6242aab44bb64c7e7870b1de9a5f343cbb9db5819da915d41ab5a13af3a23fae069fcf8 + languageName: node + linkType: hard + +"@pixi/sprite-animated@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/sprite-animated@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/sprite": 5.3.4 + "@pixi/ticker": 5.3.4 + checksum: 70bd170af04b325cae2073f41129b7475ff9095f3825fd1c960d06b04457d902d0b047790865f5fc8c25ce21ddcd51721108639180a6dcec099dc0d9d4126704 + languageName: node + linkType: hard + +"@pixi/sprite-tiling@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/sprite-tiling@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/sprite": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 31f52f94647d53608e7eac26cc406c2879e9239cd85cc4cec30b2c577ce8dab23669a92b58d360bf5c50404a229464eeb1f2aadbca431ac97c269286ca06fb2d + languageName: node + linkType: hard + +"@pixi/sprite@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/sprite@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 14e992a9e24a532c9de2a780d7bf828db947518d4b75ae67be96216677b7587cecfcee098181e6d0d135c46c4fe434b28a276403406d54764219b73cdbafc33a + languageName: node + linkType: hard + +"@pixi/spritesheet@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/spritesheet@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/loaders": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: e5e99fb89aaba2dfd9af96d59eace2dc2edcd0aa6eb5d45d7cc1b0cb648d613e9a352ef02df3b88c271076ddb47a437e54c21a1556cdf81184a0ce9a16bd23a5 + languageName: node + linkType: hard + +"@pixi/text-bitmap@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/text-bitmap@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/loaders": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/mesh": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/text": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 086213b746ec27082d934d57147208b1c3d6ce895f648a8301e03f115c8982d4b7739570d6199092aaa7cb050c5df08d00a84128c62d94154c0621b644b2d48b + languageName: node + linkType: hard + +"@pixi/text@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/text@npm:5.3.4" + dependencies: + "@pixi/core": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/sprite": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: ca98d50ecfd9cedce1b99c97057f6567dd51a1e829ba9f05097fd86efb7e0db31d76ed2e11698531a7bc31497db9bc296ab0efe532113a4483c62d01f4b88cf8 + languageName: node + linkType: hard + +"@pixi/ticker@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/ticker@npm:5.3.4" + dependencies: + "@pixi/settings": 5.3.4 + checksum: ae328279d71697272840f6ede7480d2eb3b0e6929f183ab0b24a449c3c331c3f06df8c074599c434c6ebecf5449b2bb0d7a5e8e326ff95c4b114222f74ee1c7c + languageName: node + linkType: hard + +"@pixi/utils@npm:5.3.4": + version: 5.3.4 + resolution: "@pixi/utils@npm:5.3.4" + dependencies: + "@pixi/constants": 5.3.4 + "@pixi/settings": 5.3.4 + earcut: ^2.1.5 + eventemitter3: ^3.1.0 + url: ^0.11.0 + checksum: f28a88ce40486ff4151d42273609075c69f642894ad150ff8a9ff6856b5e834a7aa21c971b27d890f8c1d4d7016986e0026d897fc9428b153c93831b625d1926 + languageName: node + linkType: hard + +"@rollup/plugin-node-resolve@npm:^11.2.1": + version: 11.2.1 + resolution: "@rollup/plugin-node-resolve@npm:11.2.1" + dependencies: + "@rollup/pluginutils": ^3.1.0 + "@types/resolve": 1.17.1 + builtin-modules: ^3.1.0 + deepmerge: ^4.2.2 + is-module: ^1.0.0 + resolve: ^1.19.0 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: ae1bed46a949a1d8c077e021751c0140a523f731bea464ed0bfc3d335096493d1638be2a756f72d96f1f3a00fbdad8ba8fad8e86381d3eafce5ea2dffd62f175 + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^3.1.0": + version: 3.1.0 + resolution: "@rollup/pluginutils@npm:3.1.0" + dependencies: + "@types/estree": 0.0.39 + estree-walker: ^1.0.1 + picomatch: ^2.2.2 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 45da6411e045d1b034242a8144f4a5e8c02ff1b68a2e0857807f5bb4b091c416f2015e075057f0f0dec200e7b35efe6ed4e301b43e365cedea09192f01a6839b + languageName: node + linkType: hard + +"@rollup/pluginutils@npm:^4.1.0": + version: 4.1.0 + resolution: "@rollup/pluginutils@npm:4.1.0" + dependencies: + estree-walker: ^2.0.1 + picomatch: ^2.2.2 + peerDependencies: + rollup: ^1.20.0||^2.0.0 + checksum: 566b8d2bcc0d52877f8c9f364026be40fa921c8d5860b5f2a5f476658dfebf462536632f079aa3f52fafe64d8aea6741c20bb198e67b33eaba8f9fe69b38ae3f + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^1.7.0": + version: 1.8.2 + resolution: "@sinonjs/commons@npm:1.8.2" + dependencies: + type-detect: 4.0.8 + checksum: b7eb499e3537a487160fcc42e65b9ad8c7d70ee4a1bbebacdbe28149e01b2da501912df2fbf06c81eac51de8c0ad10eaae573b31932ee747c9f1949fee30c20d + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^6.0.1": + version: 6.0.1 + resolution: "@sinonjs/fake-timers@npm:6.0.1" + dependencies: + "@sinonjs/commons": ^1.7.0 + checksum: 64458b908773638dda08b555a00e6fbbbc679735348291dc1b7f437ada2f60242537fdc48e4ee82d2573d86984ec87e755b66a96c0ed9ebf0f46b4c6687ccde2 + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.7": + version: 7.1.12 + resolution: "@types/babel__core@npm:7.1.12" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + "@types/babel__generator": "*" + "@types/babel__template": "*" + "@types/babel__traverse": "*" + checksum: e2642b77b89af41254a19d85b6cc5b1096f9825aa2b6534d5426cee7fbf6d90cfeceb5c1621f233d32dc1925a9fe88c317e412f81a061cf7239dbd4e2dd413e4 + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.6.2 + resolution: "@types/babel__generator@npm:7.6.2" + dependencies: + "@babel/types": ^7.0.0 + checksum: 58fc195a3d6dddd1b39e49d05585e7261052a4b87cf1fbb8068c9fb826465a7df33df4acd3d52bb6540dc704c5bacde19fcefa152a6b064e2bf34d0c458636c5 + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.0 + resolution: "@types/babel__template@npm:7.4.0" + dependencies: + "@babel/parser": ^7.1.0 + "@babel/types": ^7.0.0 + checksum: 7a81a59f85705e52e753e969e760ab2d9b740be540df355e7d52f7696979f93c4728c4c8b7871c995f043c64989a6b6f307001d47cc00fb90a8442236e58adbe + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.4, @types/babel__traverse@npm:^7.0.6": + version: 7.11.0 + resolution: "@types/babel__traverse@npm:7.11.0" + dependencies: + "@babel/types": ^7.3.0 + checksum: cfb83f1633aafbd447008caf6d40d188a7318ac64d64beaa469dd6d35f72c8298869a6668f082e1116fecf1425654ed0a3dc7fccdc2e18c803b0a7b44f88bec0 + languageName: node + linkType: hard + +"@types/estree@npm:0.0.39": + version: 0.0.39 + resolution: "@types/estree@npm:0.0.39" + checksum: 43e5361de39969def145f32f4599391ab13055ec94841f1633a7cfe10f0e8a940ebf0e9a4b2770454a6bddd034b57e7e0d51a4d565cb2714ee2accf10a7718be + languageName: node + linkType: hard + +"@types/fs-extra@npm:^9.0.11": + version: 9.0.11 + resolution: "@types/fs-extra@npm:9.0.11" + dependencies: + "@types/node": "*" + checksum: e7a4df27880c525cf12c2d16a4fafb0b68b27c74e24cd4d0d637c56e9be27795efdd89cfc85de751ad1edfdcf1b3eb0bf97231eba90c91086825659de4ab8c72 + languageName: node + linkType: hard + +"@types/graceful-fs@npm:^4.1.2": + version: 4.1.5 + resolution: "@types/graceful-fs@npm:4.1.5" + dependencies: + "@types/node": "*" + checksum: ab79ec306d51775542b94bd768162e85fe2a0d47bd2f6033e2aad65bfcae399614ee7662a1370091fc508a8b639e3de0abf6b7232c9fb52047f207ba114ff390 + languageName: node + linkType: hard + +"@types/howler@npm:2.2.1": + version: 2.2.1 + resolution: "@types/howler@npm:2.2.1" + checksum: bfb92d24673b39546d3f87a1888718359c3a7214b52aad91c7c54a5c3ad40f542ecb662efbe0dde207d958c705897373f26f6e94aba72bc5c8852f7077bf85f4 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": + version: 2.0.3 + resolution: "@types/istanbul-lib-coverage@npm:2.0.3" + checksum: d6f6dbf66d2d2d7d80d093329f0428ac279440510030bfd0080545bba6882433444430905e6e31eba299b890e50ccf2b6a7de9345d7d0ed52ff174f8ead48855 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.0 + resolution: "@types/istanbul-lib-report@npm:3.0.0" + dependencies: + "@types/istanbul-lib-coverage": "*" + checksum: 78aa9f859b6d1b2c02387b401e4e42fdec2e26ffede392e544da108abc6aff35c95b40821116ca46006d94c8b405ffd64465c32514549e997b04f8363de1af5e + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.0": + version: 3.0.0 + resolution: "@types/istanbul-reports@npm:3.0.0" + dependencies: + "@types/istanbul-lib-report": "*" + checksum: 8aee794ea2e8065aa83e0a1017420068d10110f5e67f8473f5751e74462509306c451f79db3856e6848507519bf1d4de7d101daede6539701cc4d74b4646acd9 + languageName: node + linkType: hard + +"@types/jest@npm:^26.0.22": + version: 26.0.22 + resolution: "@types/jest@npm:26.0.22" + dependencies: + jest-diff: ^26.0.0 + pretty-format: ^26.0.0 + checksum: 4c98ed058522f6cc74bcb47b8b7b104b77b2d4e42e087171f3d2d3ae5338c21f43ec26f2a186bc229c1bd72c3f776ad07faba837f0ec27f22cf94e154516c0b3 + languageName: node + linkType: hard + +"@types/jquery@npm:3.5.1": + version: 3.5.1 + resolution: "@types/jquery@npm:3.5.1" + dependencies: + "@types/sizzle": "*" + checksum: 43f7885e75a7c5fdecb99ff7893a844d53b88ba5d6fb8c8d9bf65d0bfc42ee1ec75844cc9b73bcefd5d955376cb37dcbc9950e3d18e8922a8ef30e3ef8dab78e + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.3": + version: 7.0.7 + resolution: "@types/json-schema@npm:7.0.7" + checksum: b9d2c509fa4e0b82f58e73f5e6ab76c60ff1884ba41bb82f37fb1cece226d4a3e5a62fedf78a43da0005373a6713d9abe61c1e592906402c41c08ad6ab26d52b + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 14.14.31 + resolution: "@types/node@npm:14.14.31" + checksum: 635dc8a0898a923621e02ca179e17baa39fdfa44f0096fcc1b7046c9b32317e74a99956a7b45ca0e8069874f51f4e7873a418239a318a4b6e7936f6510ac5992 + languageName: node + linkType: hard + +"@types/normalize-package-data@npm:^2.4.0": + version: 2.4.0 + resolution: "@types/normalize-package-data@npm:2.4.0" + checksum: 6d077e73be7ac6227b678829c7bd765607136cdef537fd4ee7f368d9302a651aea924254d69826663322048436d90d6e7c679c9aa99c4824a687c568aab8ce4f + languageName: node + linkType: hard + +"@types/parse-json@npm:^4.0.0": + version: 4.0.0 + resolution: "@types/parse-json@npm:4.0.0" + checksum: 4a8f720afac47b474d3f2eece312340e72bc31bc9561cda37b596ce2ed218c0099765d302625bb67d659a8452a1f93d514f4863c11c7ebaf65430428687dc426 + languageName: node + linkType: hard + +"@types/prettier@npm:^2.0.0": + version: 2.2.1 + resolution: "@types/prettier@npm:2.2.1" + checksum: 9dc257dfc51eab6bc1e9ce58df94b309a206b2cdc6768709de3d20f70ae545c616bbc46add6d66f66cfa6cfbb0613dd09e6b6028ff6ff8ba9d3625f38d85cc66 + languageName: node + linkType: hard + +"@types/resolve@npm:1.17.1": + version: 1.17.1 + resolution: "@types/resolve@npm:1.17.1" + dependencies: + "@types/node": "*" + checksum: 8e72a73574f9489760662498c1ad512a8d4084a5db15f327e0d785cb277bb0a3146cd049241a8e3268bd0ed204ad3ee7b4a6b4622ef681e70547be9af258ca6a + languageName: node + linkType: hard + +"@types/sizzle@npm:*": + version: 2.3.2 + resolution: "@types/sizzle@npm:2.3.2" + checksum: 447a1c3f39f0e47ffdbccd1df58d63e8b67dc001f44f26f43ac8243db7834a3d956cebc8abe9272ecbdccfc8f4ec0ae74b811ccdad5b6cddaf8f0968513d618a + languageName: node + linkType: hard + +"@types/socket.io-client@npm:^1.4.33": + version: 1.4.35 + resolution: "@types/socket.io-client@npm:1.4.35" + checksum: 367bceb6edd3491898cf9eebbec9f6663737a470047573a262462f0492f7171a59fa79113f494dfdd4c37548d05e45284d88d8881a692417900b82df869c8ced + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.0": + version: 2.0.0 + resolution: "@types/stack-utils@npm:2.0.0" + checksum: 662312302e07685c99a1c45c6753eb997b31d2af66e646c5937f62d593a63a111289503d0b06a8d1e6f3922b67fc2ed94889d84653a08861a7fee67b81ce5b92 + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 20.2.0 + resolution: "@types/yargs-parser@npm:20.2.0" + checksum: 202b8ca16a1589514f6b3155194c6fde9b5e5b2ffc1025849f93483f70ca9318f4d0423f209efc180beecbc447dcf14cf18e6177db296036e7927e302329dc94 + languageName: node + linkType: hard + +"@types/yargs@npm:^15.0.0": + version: 15.0.13 + resolution: "@types/yargs@npm:15.0.13" + dependencies: + "@types/yargs-parser": "*" + checksum: fa1a5b0a07dbbff1657a27d1191d586632412d170321000f6f417f279547a8c191d7058dbf4d4187c188a5a1aeb2473ddb25fe316b206fccdfe1de6fad976619 + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:^4.22.0": + version: 4.22.0 + resolution: "@typescript-eslint/eslint-plugin@npm:4.22.0" + dependencies: + "@typescript-eslint/experimental-utils": 4.22.0 + "@typescript-eslint/scope-manager": 4.22.0 + debug: ^4.1.1 + functional-red-black-tree: ^1.0.1 + lodash: ^4.17.15 + regexpp: ^3.0.0 + semver: ^7.3.2 + tsutils: ^3.17.1 + peerDependencies: + "@typescript-eslint/parser": ^4.0.0 + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 40485bbf51283616b5098b33fa5285104a80419c4dcf75659442ae780352289bc238a64591939012ebc47823485497ae6ba8a35e653b0e33ff7f58743b46c34e + languageName: node + linkType: hard + +"@typescript-eslint/experimental-utils@npm:4.22.0": + version: 4.22.0 + resolution: "@typescript-eslint/experimental-utils@npm:4.22.0" + dependencies: + "@types/json-schema": ^7.0.3 + "@typescript-eslint/scope-manager": 4.22.0 + "@typescript-eslint/types": 4.22.0 + "@typescript-eslint/typescript-estree": 4.22.0 + eslint-scope: ^5.0.0 + eslint-utils: ^2.0.0 + peerDependencies: + eslint: "*" + checksum: afabf0d6f9e70b910575d8bc2e8ccd3416e8d05ed968296fc56379f71f8cf3a27107598b98f7c76a91e6b0be796dc102c866381a3af5bf24799a333532d1e997 + languageName: node + linkType: hard + +"@typescript-eslint/experimental-utils@npm:^4.0.1": + version: 4.18.0 + resolution: "@typescript-eslint/experimental-utils@npm:4.18.0" + dependencies: + "@types/json-schema": ^7.0.3 + "@typescript-eslint/scope-manager": 4.18.0 + "@typescript-eslint/types": 4.18.0 + "@typescript-eslint/typescript-estree": 4.18.0 + eslint-scope: ^5.0.0 + eslint-utils: ^2.0.0 + peerDependencies: + eslint: "*" + checksum: 1f1357b38aa6e1dc9088abec1c259372ff124be215644283df1725421c3faeeb90ca463c5e549247f10918d18031cd56b58b366d22a5c90e23f601826d1d7f3a + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:^4.22.0": + version: 4.22.0 + resolution: "@typescript-eslint/parser@npm:4.22.0" + dependencies: + "@typescript-eslint/scope-manager": 4.22.0 + "@typescript-eslint/types": 4.22.0 + "@typescript-eslint/typescript-estree": 4.22.0 + debug: ^4.1.1 + peerDependencies: + eslint: ^5.0.0 || ^6.0.0 || ^7.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 679e14a5cec5bae3b392b1736f5d919897fd1a269a9d25366babfd12c1d275b320ae36a0b8be215ba14780cb1feec2b386001b4e0225ef82bd0040bf5dbaf99f + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:4.18.0": + version: 4.18.0 + resolution: "@typescript-eslint/scope-manager@npm:4.18.0" + dependencies: + "@typescript-eslint/types": 4.18.0 + "@typescript-eslint/visitor-keys": 4.18.0 + checksum: c543d4bf73ad0193cca7303c376f15b099ee861be492a210cfc19909d2ec828b7dc898a59e17c89cc91e4cc2ea450731a83671d136cd995fb9b77f8a7db4d440 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:4.22.0": + version: 4.22.0 + resolution: "@typescript-eslint/scope-manager@npm:4.22.0" + dependencies: + "@typescript-eslint/types": 4.22.0 + "@typescript-eslint/visitor-keys": 4.22.0 + checksum: c6f5565f517373cba61d29be919c69ad0e178f2a007eed6f1d8f80518853c3c4e6a3a059e492920b71675f0828e093eb36ec9eef318b9e2b4e9e65b0e93f03b6 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:4.18.0": + version: 4.18.0 + resolution: "@typescript-eslint/types@npm:4.18.0" + checksum: 45d3df0c4993ceab017df2a4502bb2e3d9b21e6554997a539b88dfa5899c83bf6156a823d15eeb679e65dec15ab07ff371c6e5c09f98c166ed94f79a8223ffab + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:4.22.0": + version: 4.22.0 + resolution: "@typescript-eslint/types@npm:4.22.0" + checksum: db2717132540feba39b002cdb2483aa822e0b50c17f9deff918a52609178df071444188a1e76c07c51018c353b01509dd741272b6d482edf7d9e7d60adc6c70e + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:4.18.0": + version: 4.18.0 + resolution: "@typescript-eslint/typescript-estree@npm:4.18.0" + dependencies: + "@typescript-eslint/types": 4.18.0 + "@typescript-eslint/visitor-keys": 4.18.0 + debug: ^4.1.1 + globby: ^11.0.1 + is-glob: ^4.0.1 + semver: ^7.3.2 + tsutils: ^3.17.1 + peerDependenciesMeta: + typescript: + optional: true + checksum: b77e150d281d50aad89f915c05310b5f94fa2b1fc64eada20460d8a7f10c42d4c2a5ccffe185f128c965fc9bd209f77a0df8e1779af18b0a3a383241564ecc4b + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:4.22.0": + version: 4.22.0 + resolution: "@typescript-eslint/typescript-estree@npm:4.22.0" + dependencies: + "@typescript-eslint/types": 4.22.0 + "@typescript-eslint/visitor-keys": 4.22.0 + debug: ^4.1.1 + globby: ^11.0.1 + is-glob: ^4.0.1 + semver: ^7.3.2 + tsutils: ^3.17.1 + peerDependenciesMeta: + typescript: + optional: true + checksum: 538d932361d1463c9450c155fc5696f4cc1a07db2bfd4ca9079e1f919e5062fd95d8dc128fc2fa8368c9582787cfc97ee6284083b94fe8d580cd1a9fca688efa + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:4.18.0": + version: 4.18.0 + resolution: "@typescript-eslint/visitor-keys@npm:4.18.0" + dependencies: + "@typescript-eslint/types": 4.18.0 + eslint-visitor-keys: ^2.0.0 + checksum: 654576d330531386773facffc715e213602721de8ca2f6268d71186a732975031954119fba414a4d502b4827b3941fae068ebb4368b4b7f94e937597b3f57d82 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:4.22.0": + version: 4.22.0 + resolution: "@typescript-eslint/visitor-keys@npm:4.22.0" + dependencies: + "@typescript-eslint/types": 4.22.0 + eslint-visitor-keys: ^2.0.0 + checksum: 645896d05aa757fac02d952574ecda0eecd0be120162e28533c4528bb70d2162e9df62c3547217c69f18a72ceecaf212ea585afd20f976db64b59ac6de0d1ec8 + languageName: node + linkType: hard + +"abab@npm:^2.0.3": + version: 2.0.5 + resolution: "abab@npm:2.0.5" + checksum: a42b91bd9dd2451a3fc6996bc8953139904ff7b1a793719205041148da892337afc97ed0589ef2c44765c4da3d688eed145781db1623b611621d805294c367a3 + languageName: node + linkType: hard + +"abbrev@npm:1": + version: 1.1.1 + resolution: "abbrev@npm:1.1.1" + checksum: 9f9236a3cc7f56c167be3aa81c77fcab2e08dfb8047b7861b91440f20b299b9442255856bdbe9d408d7e96a0b64a36e1c27384251126962490b4eee841b533e0 + languageName: node + linkType: hard + +"acorn-globals@npm:^6.0.0": + version: 6.0.0 + resolution: "acorn-globals@npm:6.0.0" + dependencies: + acorn: ^7.1.1 + acorn-walk: ^7.1.1 + checksum: 078ed9bc354e95a30893efd260e2dc566dfc34d8e1d24a54b9ad59984bea53ff93cb1986a85b2b5e2b8e573cb00d34ad8767371b852941a1947f81c37c1be759 + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.1": + version: 5.3.1 + resolution: "acorn-jsx@npm:5.3.1" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 5925bc5d79a2821a8f7250b6de2b02bb86c0470dcb78cf68a603855291c5e50602b9eaf294aba2efbf3ee7063c80a9074b520b2330cc1aef80b849bfc7a041c0 + languageName: node + linkType: hard + +"acorn-walk@npm:^7.1.1": + version: 7.2.0 + resolution: "acorn-walk@npm:7.2.0" + checksum: 7b52d5d6397f2d395ca878bdb0f56e583e69bc875521876d05fe2b6e293c21aca918b288c01bd18ac99b46b55a0f00a8d0e30fbdfb53c8e36e78ad1a65f73a4a + languageName: node + linkType: hard + +"acorn@npm:^7.1.1, acorn@npm:^7.4.0": + version: 7.4.1 + resolution: "acorn@npm:7.4.1" + bin: + acorn: bin/acorn + checksum: 2bde98c28c1be9a08e41e581179b776b43396c9486ce52b2b9848d73c53df38c516b7edba4bacdc84cabc9d7a3299f3b46ef240ae261c38dbf8ddd89f635bd32 + languageName: node + linkType: hard + +"aggregate-error@npm:^3.0.0": + version: 3.1.0 + resolution: "aggregate-error@npm:3.1.0" + dependencies: + clean-stack: ^2.0.0 + indent-string: ^4.0.0 + checksum: 704d2001a303c185e9b836d211f7eef2f4557195a11c3271143b4dcda5f6f263abe746d9b8a06b5871d07870686c7db9c0b2c38e2d3cbc593784eaaee8a29043 + languageName: node + linkType: hard + +"ajv@npm:^6.10.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + 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 + checksum: 19a8f3b0a06001eb68e6268f4f9f04424b32baadd5df6ba8292cd473e22e5f4019ed9ab17c3e3510394178ed8bef9b42ad0bdb5c675d65f042421a774780ce1a + languageName: node + linkType: hard + +"ajv@npm:^7.0.2": + version: 7.1.1 + resolution: "ajv@npm:7.1.1" + dependencies: + fast-deep-equal: ^3.1.1 + json-schema-traverse: ^1.0.0 + require-from-string: ^2.0.2 + uri-js: ^4.2.2 + checksum: fe4e138529363bf1c8c429e1f3e88480918b538fe4a44660b989cea863714715af75e874aad129ccd5cbcf6647fa457e20b735bb3279a3bca08f11193bae5d19 + languageName: node + linkType: hard + +"amdefine@npm:>=0.0.4": + version: 1.0.1 + resolution: "amdefine@npm:1.0.1" + checksum: 8b163d7cd3224b8648a6f9be045f1e111847d53acb21b3f9fca3b7ef20da63de4b256c6dfc175a340d9a2bb13fcab9f633089e2d4ac230ea9721db038962d256 + languageName: node + linkType: hard + +"ansi-colors@npm:^1.0.1": + version: 1.1.0 + resolution: "ansi-colors@npm:1.1.0" + dependencies: + ansi-wrap: ^0.1.0 + checksum: da130343830a755c88ad5e814a979af5a7439b9f03b2afe2bc08bbab158c55c4da6659882cdaf306ba17c4cd0f6e52af885741dfd27816a08fcb47986886f9d8 + languageName: node + linkType: hard + +"ansi-colors@npm:^4.1.1": + version: 4.1.1 + resolution: "ansi-colors@npm:4.1.1" + checksum: 50d8dfbce25602caea1b170ecf4c71c4c9c58d2d1e3186fb5712848c0610d05fe60b8bb6a9eaebd9b54f1db3baf6f603e04214cce597cc7799bc9f47fd9a797a + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.2.1, ansi-escapes@npm:^4.3.0": + version: 4.3.1 + resolution: "ansi-escapes@npm:4.3.1" + dependencies: + type-fest: ^0.11.0 + checksum: bcb39e57bd32af0236c4ded96aaf8ef5d86c5a4683762b0be998c68cd11d5afd93296f4b5e087a3557da82a899b7c4d081483d603a4d4647e6a6613bf1aded8a + languageName: node + linkType: hard + +"ansi-gray@npm:^0.1.1": + version: 0.1.1 + resolution: "ansi-gray@npm:0.1.1" + dependencies: + ansi-wrap: 0.1.0 + checksum: fa1fb6b373763a32db0356870fc826d60f3deef7bf08b4c4ce5ebe29b7f78c10a474044d97d375ddf1ddab83638c58d70af509984f89b985f4f4ebce28b3b4ac + languageName: node + linkType: hard + +"ansi-regex@npm:^2.0.0": + version: 2.1.1 + resolution: "ansi-regex@npm:2.1.1" + checksum: 93a53c923fd433f67cd3d5647dffa6790f37bbfb924cf73ad23e28a8e414bde142d1da260d9a2be52ac4aa382063196880b1d40cf8b547642c746ed538ebf6c4 + languageName: node + linkType: hard + +"ansi-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "ansi-regex@npm:3.0.0" + checksum: 2e3c40d42904366e4a1a7b906ea3ae7968179a50916dfa0fd3e59fd12333c5d95970a9a59067ac3406d97c78784d591f0b841a4efd365dafb261327ae1ea3478 + languageName: node + linkType: hard + +"ansi-regex@npm:^4.1.0": + version: 4.1.0 + resolution: "ansi-regex@npm:4.1.0" + checksum: 53b6fe447cf92ee59739379de637af6f86b3b8a9537fbfe36a66f946f1d9d34afc3efe664ac31bcc7c3af042d43eabcfcfd3f790316d474bbc7b19a4b1d132dd + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.0": + version: 5.0.0 + resolution: "ansi-regex@npm:5.0.0" + checksum: cbd9b5c9dbbb4a949c2a6e93f1c6cc19f0683d8a4724d08d2158627be6d373f0f3ba1f4ada01dce7ee141f2ba2628fbbd29932c7d49926e3b630c7f329f3178b + languageName: node + linkType: hard + +"ansi-styles@npm:^2.2.1": + version: 2.2.1 + resolution: "ansi-styles@npm:2.2.1" + checksum: 108c7496372982f1ee53f3f09975de89cc771d2f7c89a32d56ab7a542f67b7de97391c9c16b43b39eb7ea176d3cfbb15975b6b355ae827f15f5a457b1b9dec31 + languageName: node + linkType: hard + +"ansi-styles@npm:^3.2.0, ansi-styles@npm:^3.2.1": + version: 3.2.1 + resolution: "ansi-styles@npm:3.2.1" + dependencies: + color-convert: ^1.9.0 + checksum: 456e1c23d9277512a47718da75e7fbb0a5ee215ef893c2f76d6b3efe8fceabc861121b80b0362146f5f995d21a1633f05a19bbf6283ae66ac11dc3b9c0bed779 + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: ^2.0.1 + checksum: ea02c0179f3dd089a161f5fdd7ccd89dd84f31d82b68869f1134bf5c5b9e1313dadd2ff9edb02b44f46243f285ef5b785f6cb61c84a293694221417c42934407 + languageName: node + linkType: hard + +"ansi-wrap@npm:0.1.0, ansi-wrap@npm:^0.1.0": + version: 0.1.0 + resolution: "ansi-wrap@npm:0.1.0" + checksum: f9d05b4d83bb5af5908e84ba62cec55a62bb480d9611a384355b809129eb30d678c30453206a12eb9702069c91d78a1ed9e9433e0063d00fe07a89253bc4c848 + languageName: node + linkType: hard + +"anymatch@npm:^2.0.0": + version: 2.0.0 + resolution: "anymatch@npm:2.0.0" + dependencies: + micromatch: ^3.1.4 + normalize-path: ^2.1.1 + checksum: 9e495910cca364b47ee125d451bae1bde542ef78a56ac2a1e9fe835a671ed6f3b05a0fedafc8afc58d0f5214c604cddd5ca2d27fa48f234faffa2bf26ffa7fcf + languageName: node + linkType: hard + +"anymatch@npm:^3.0.3": + version: 3.1.1 + resolution: "anymatch@npm:3.1.1" + dependencies: + normalize-path: ^3.0.0 + picomatch: ^2.0.4 + checksum: cf61bbaf7f34d9f94dd966230b7a7f8f1f24e3e2185540741a2561118e108206d85101ee2fc9876cd756475dbe6573d84d91115c3abdbf53a64e26a5f1f06b67 + languageName: node + linkType: hard + +"append-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "append-buffer@npm:1.0.2" + dependencies: + buffer-equal: ^1.0.0 + checksum: 3f205f30482cedf135f4aaf1266845ea13b237196c10e42ac6628604708b6b7bd9128abfa0a5c6351a0832fafa0855ecdb0eed979816b1b43278f063684f8e27 + languageName: node + linkType: hard + +"aproba@npm:^1.0.3": + version: 1.2.0 + resolution: "aproba@npm:1.2.0" + checksum: d4bac3e640af1f35eea8d5ee2b96ce2682549e47289f071aa37ae56066e19d239e43dea170c207d0f71586d7634099089523dd5701f26d4ded7b31dd5848a24a + languageName: node + linkType: hard + +"archy@npm:^1.0.0": + version: 1.0.0 + resolution: "archy@npm:1.0.0" + checksum: fed06a0487f79dd89f30a8558f3e8f88011025ded47b10e412a4fc8f842a4ddec6e51af5a117258f5b84bef587cff7d1e056df4f453a7d8752a46e25bf5be7dc + languageName: node + linkType: hard + +"are-we-there-yet@npm:~1.1.2": + version: 1.1.5 + resolution: "are-we-there-yet@npm:1.1.5" + dependencies: + delegates: ^1.0.0 + readable-stream: ^2.0.6 + checksum: 2d6fdb0ddde9b8cb120b6851b42c75f6b6db78b540b579a00d144ad38cb9e1bdf1248e5454049fcf5b47ef61d1a6f2ea433a8e38984158afd441bc1e0db7a625 + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: ~1.0.2 + checksum: 435adaef5f6671c3ef1478a22be6fd54bdb99fdbbce8f5561b9cbbb05068ccce87b7df3b9f3322ff52a6ebb9cab2b427cbedac47a07611690a9beaa5184093e2 + languageName: node + linkType: hard + +"arr-diff@npm:^4.0.0": + version: 4.0.0 + resolution: "arr-diff@npm:4.0.0" + checksum: cbdff67cf52b9742d7ecfcf8614a1a458638679909fadcec2f91d18807dd5ba1cfa1e47984f52876063c8648146d385926e11bdac976a1db3f219bfde9668160 + languageName: node + linkType: hard + +"arr-filter@npm:^1.1.1": + version: 1.1.2 + resolution: "arr-filter@npm:1.1.2" + dependencies: + make-iterator: ^1.0.0 + checksum: 35fc0a578bac1f30538beaa6a54827376369c959ce7c45612953eedeb91461e1c0db76c9eafd26c27ceb84d9b52b4806f4e985764b1532ecd5584537c65547b7 + languageName: node + linkType: hard + +"arr-flatten@npm:^1.0.1, arr-flatten@npm:^1.1.0": + version: 1.1.0 + resolution: "arr-flatten@npm:1.1.0" + checksum: 564dc9c32cb20a1b5bc6eeea3b7a7271fcc5e9f1f3d7648b9db145b7abf68815562870267010f9f4976d788f3f79d2ccf176e94cee69af7da48943a71041ab57 + languageName: node + linkType: hard + +"arr-map@npm:^2.0.0, arr-map@npm:^2.0.2": + version: 2.0.2 + resolution: "arr-map@npm:2.0.2" + dependencies: + make-iterator: ^1.0.0 + checksum: fc970926785184625a17610945a00f5d40c5a4574f4c15aff3e6714ca3a27e5924aaa130b5ed79c3aa81cd4390203d2de5d11573c432d29aa8dca9004cf3328d + languageName: node + linkType: hard + +"arr-union@npm:^3.1.0": + version: 3.1.0 + resolution: "arr-union@npm:3.1.0" + checksum: 78f0f75c4778283023b723152bf12be65773ab3628e21493e1a1d3c316d472af9053d9b3dec4d814a130ad4f8ba45ae79b0f33d270a4ae0b0ff41eb743461aa8 + languageName: node + linkType: hard + +"array-each@npm:^1.0.0, array-each@npm:^1.0.1": + version: 1.0.1 + resolution: "array-each@npm:1.0.1" + checksum: 59a456f95151c1c4bdf02550ef455cd86cf1fff44f0ce3e5559caa9550a7663dd147f9bda58bff85756a5454da4e136282396391aedec1f19793f143910c6272 + languageName: node + linkType: hard + +"array-find-index@npm:^1.0.1": + version: 1.0.2 + resolution: "array-find-index@npm:1.0.2" + checksum: 5320b3bd4680eadee5191b8d8a4f01788f8761e11ae5d8d8f67e836308760d453c38300cdef41315e8adf24979083f73c353f651f1dc029ab3c712c1ef5ebf17 + languageName: node + linkType: hard + +"array-initial@npm:^1.0.0": + version: 1.1.0 + resolution: "array-initial@npm:1.1.0" + dependencies: + array-slice: ^1.0.0 + is-number: ^4.0.0 + checksum: a6b855163a51d8dbbea677ac50c272a51a0b4bda5d5897211d44a70c328f088ada2928af9dcac9fb966fdb6b662b254e1e1de72dc5d19c224c5e223dc9e71c52 + languageName: node + linkType: hard + +"array-last@npm:^1.1.1": + version: 1.3.0 + resolution: "array-last@npm:1.3.0" + dependencies: + is-number: ^4.0.0 + checksum: 45cefc31838b16a1f325404025abf00ae786c46b2f3ec42ac901062bd8502f9878b9c07ef32798e7a0eaa5594f5a6b7288634711856b37c8e6f0a4cbc88546ea + languageName: node + linkType: hard + +"array-slice@npm:^1.0.0": + version: 1.1.0 + resolution: "array-slice@npm:1.1.0" + checksum: f7d100cf61835a776b0772df247d2b6a663c959eb35fa00e09e4d94acc0004b51bf1e6564600b74295acb0e37a3304498154f2fa8e35601a7033ea75d6671062 + languageName: node + linkType: hard + +"array-sort@npm:^1.0.0": + version: 1.0.0 + resolution: "array-sort@npm:1.0.0" + dependencies: + default-compare: ^1.0.0 + get-value: ^2.0.6 + kind-of: ^5.0.2 + checksum: 82e4ac3d6b0f26cb7306a918af174e2af80aa32fcd3f99398db110b5db353ac3fe6d9230b85e42ff89deecaaa44d268856ad3afb5b0f1795a63eec38337ff555 + languageName: node + linkType: hard + +"array-union@npm:^2.1.0": + version: 2.1.0 + resolution: "array-union@npm:2.1.0" + checksum: 93af542eb854bf62a742192d0061c82788a963a9a6594628f367388f2b9f1bfd9215910febbbdd55074841555d8b59bda6a13ecba4a8e136f58b675499eda292 + languageName: node + linkType: hard + +"array-unique@npm:^0.3.2": + version: 0.3.2 + resolution: "array-unique@npm:0.3.2" + checksum: 7139dbbcaf48325224593f2f7a400b123b310c53365b4a1d49916928082ad862117a1e6d411c926ec540e9408786bbd1cf90805609040568059156d1d09feb70 + languageName: node + linkType: hard + +"asn1@npm:~0.2.3": + version: 0.2.4 + resolution: "asn1@npm:0.2.4" + dependencies: + safer-buffer: ~2.1.0 + checksum: 5743ace942e2faa0b72f3b14bf1826509c5ca707ea150c10520f52b04f90aa715cee4370ec2e6279ce1ceb7d3c472ca33270124e90b495bea4c9b02f41b9d8ac + languageName: node + linkType: hard + +"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": + version: 1.0.0 + resolution: "assert-plus@npm:1.0.0" + checksum: 1bda24f67343ccb75a7eee31179c92cf9f79bd6f6bc24101b0ce1495ef979376dd9b0f9b9064812bba564cdade5fbf851ed76b4a44b5e141d49cdaee6ffed6b2 + languageName: node + linkType: hard + +"assign-symbols@npm:^1.0.0": + version: 1.0.0 + resolution: "assign-symbols@npm:1.0.0" + checksum: 893e9389a5dde0690102ad8d6146e50d747b6f45d51996d39b04abb7774755a4a9b53883295abab4dd455704b1e10c1fa560d617db5404bae118526916472bec + languageName: node + linkType: hard + +"astral-regex@npm:^2.0.0": + version: 2.0.0 + resolution: "astral-regex@npm:2.0.0" + checksum: bf049ee7048b70af5473580020f98faf09159af31a7fa5e223099966dc90e9e87760bd34030e19a6dcac05b45614b428f559bd71f027344d123555e524cb95ac + languageName: node + linkType: hard + +"async-done@npm:^1.2.0, async-done@npm:^1.2.2": + version: 1.3.2 + resolution: "async-done@npm:1.3.2" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.2 + process-nextick-args: ^2.0.0 + stream-exhaust: ^1.0.1 + checksum: 2726ffc74bd087ebff09ae8c3679ab58d4a00ca5fe09588bcbe014b28eb505bebd76861dc23eaabdd1f0d3b5e131f31ef0b044a806dc310acb5dd609705caf00 + languageName: node + linkType: hard + +"async-each@npm:^1.0.1": + version: 1.0.3 + resolution: "async-each@npm:1.0.3" + checksum: 0cf01982ae42db5ce591aab153e45e77aa7c813c4fb282f1e7cac2259f90949f82542e82a33f73ef308e0126c9a8bc702ee117a87614549fe88840cf5a44aec4 + languageName: node + linkType: hard + +"async-foreach@npm:^0.1.3": + version: 0.1.3 + resolution: "async-foreach@npm:0.1.3" + checksum: 8ada24663c04b6eef561d21d5824d941cf76d3da4c289d0fe1e95beeba6b44ab1b0bf3d107149601fa6760a143bb6043d56baa9520c1b56ab3ee2b19a3be2afe + languageName: node + linkType: hard + +"async-settle@npm:^1.0.0": + version: 1.0.0 + resolution: "async-settle@npm:1.0.0" + dependencies: + async-done: ^1.2.2 + checksum: 063e74d75a96b2b6bdedc1cc0be98ffd0434b3fc7817d8ab5ce68c9d299cceb0aa6c26f16815639bc16899a79607a769f2adafab5d0f067f9d654d71f707f1f7 + languageName: node + linkType: hard + +"asynckit@npm:^0.4.0": + version: 0.4.0 + resolution: "asynckit@npm:0.4.0" + checksum: a024000b9ddd938e2f27b3cb8188f96a5e1fff58185e98b84862fc4e01de279a547874a800340c2b106bb9de9b0fc61c6c683bc6892abf65e6be29a96addafd3 + languageName: node + linkType: hard + +"at-least-node@npm:^1.0.0": + version: 1.0.0 + resolution: "at-least-node@npm:1.0.0" + checksum: 8f33efc16287ed39766065c718a2d36a469f702c66c6eb41fa460c0c62bca395301a6a02946e315ae4a84c9cc7f44c94ec73a556bc2a1049350da98d0b013afe + languageName: node + linkType: hard + +"atob@npm:^2.1.2": + version: 2.1.2 + resolution: "atob@npm:2.1.2" + bin: + atob: bin/atob.js + checksum: 597c0d1a740bb6522c98bea8fe362ae9420b4203af588d2bd470326d9abd4504264956b8355923d7019a21527ef5e6526a7b4455862ec5178ccd81e0ea289d5f + languageName: node + linkType: hard + +"aws-sign2@npm:~0.7.0": + version: 0.7.0 + resolution: "aws-sign2@npm:0.7.0" + checksum: 7162b9b8fbd4cf451bd889b0ed27fc895f88e6a6cb5c5609de49759ea1a6e31646f86ca8e18d90bea0455c4caa466fc9692c1098a1784d2372a358cb68c1eea6 + languageName: node + linkType: hard + +"aws4@npm:^1.8.0": + version: 1.11.0 + resolution: "aws4@npm:1.11.0" + checksum: d30dce2b73839974894d8283a06c53e8374b74d643d3b08340d84c364e01158be011fcfd1a88f8462be946d69055313a3038202f2eafd155b039aaab3549ba21 + languageName: node + linkType: hard + +"babel-jest@npm:^26.6.3": + version: 26.6.3 + resolution: "babel-jest@npm:26.6.3" + dependencies: + "@jest/transform": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/babel__core": ^7.1.7 + babel-plugin-istanbul: ^6.0.0 + babel-preset-jest: ^26.6.2 + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + slash: ^3.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 89231d00e6b73e1dc6f009cb97a74edb1af4426f2cfa5d9b71684d1382526651820f8dd301857b9007a44c6b7d1fb77242b201bdea3cff98488b893e9c7d7182 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^6.0.0": + version: 6.0.0 + resolution: "babel-plugin-istanbul@npm:6.0.0" + dependencies: + "@babel/helper-plugin-utils": ^7.0.0 + "@istanbuljs/load-nyc-config": ^1.0.0 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-instrument: ^4.0.0 + test-exclude: ^6.0.0 + checksum: 0a185405d8209153054900049a69886af9dd107eb49341530e378b0babd31902f96a3eaa44dfc8a9c8ca5bcf43794a630cb70f8148d75e26c79cdfdc2255af7f + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:^26.6.2": + version: 26.6.2 + resolution: "babel-plugin-jest-hoist@npm:26.6.2" + dependencies: + "@babel/template": ^7.3.3 + "@babel/types": ^7.3.3 + "@types/babel__core": ^7.0.0 + "@types/babel__traverse": ^7.0.6 + checksum: e9c1de0fced1c8220590a0d6f37631f5b975964a8e876f0426fc7fd224f4c154b01f156e87401de47556b873bf4414eb2a9632fb56765f35fc07fe69e5b76d31 + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.0.0": + version: 1.0.1 + resolution: "babel-preset-current-node-syntax@npm:1.0.1" + dependencies: + "@babel/plugin-syntax-async-generators": ^7.8.4 + "@babel/plugin-syntax-bigint": ^7.8.3 + "@babel/plugin-syntax-class-properties": ^7.8.3 + "@babel/plugin-syntax-import-meta": ^7.8.3 + "@babel/plugin-syntax-json-strings": ^7.8.3 + "@babel/plugin-syntax-logical-assignment-operators": ^7.8.3 + "@babel/plugin-syntax-nullish-coalescing-operator": ^7.8.3 + "@babel/plugin-syntax-numeric-separator": ^7.8.3 + "@babel/plugin-syntax-object-rest-spread": ^7.8.3 + "@babel/plugin-syntax-optional-catch-binding": ^7.8.3 + "@babel/plugin-syntax-optional-chaining": ^7.8.3 + "@babel/plugin-syntax-top-level-await": ^7.8.3 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: bba41cc95aa205268fd6b1cc0baab8810b848ac1dac62c7f54e5eab0beed9ad8fe68bec3766137b68d2f6d318bf990876d65d94debaa0627bd63ed09d25e2504 + languageName: node + linkType: hard + +"babel-preset-jest@npm:^26.6.2": + version: 26.6.2 + resolution: "babel-preset-jest@npm:26.6.2" + dependencies: + babel-plugin-jest-hoist: ^26.6.2 + babel-preset-current-node-syntax: ^1.0.0 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 466ca17bba2638cadda5c25f3108dab1867b30e5d728366d0d2309be5d6555db8738a6cacd2c43284bee2ce7917e3285194c223a22b3d9817794f00c2775fdb2 + languageName: node + linkType: hard + +"bach@npm:^1.0.0": + version: 1.2.0 + resolution: "bach@npm:1.2.0" + dependencies: + arr-filter: ^1.1.1 + arr-flatten: ^1.0.1 + arr-map: ^2.0.0 + array-each: ^1.0.0 + array-initial: ^1.0.0 + array-last: ^1.1.1 + async-done: ^1.2.2 + async-settle: ^1.0.0 + now-and-later: ^2.0.0 + checksum: ed03f7167ab047f2cf4ece498e68ff0fdeb84c3e6eaeb6b332cc714ae63d47f5d0f344ed03df8898f2b280062e0ac9b8b6afc362a00fe4fd9355b914ce9dd762 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.0 + resolution: "balanced-match@npm:1.0.0" + checksum: f515a605fe1b59f476f7477c5e1d53ad55b4f42982fca1d57b6701906f4ad1f1ac90fd6587d92cc1af2edb43eecf979214dd847ee410a6de9db4ebf0dd128d62 + languageName: node + linkType: hard + +"base@npm:^0.11.1": + version: 0.11.2 + resolution: "base@npm:0.11.2" + dependencies: + cache-base: ^1.0.1 + class-utils: ^0.3.5 + component-emitter: ^1.2.1 + define-property: ^1.0.0 + isobject: ^3.0.1 + mixin-deep: ^1.2.0 + pascalcase: ^0.1.1 + checksum: 84e30392fd028df388b209cfb800e1ab4156b3cc499bd46f96ce6271fd17f10302ba6b87d4a56c6946cc77b6571502d45d73c7948a63a84f9ffd421f81232dd5 + languageName: node + linkType: hard + +"bcrypt-pbkdf@npm:^1.0.0": + version: 1.0.2 + resolution: "bcrypt-pbkdf@npm:1.0.2" + dependencies: + tweetnacl: ^0.14.3 + checksum: 3f57eb99bbc02352f68ff31e446997f4d21cc9a5e5286449dc1fe0116ec5dac5a4aa538967d45714fa9320312d2be8d16126f2d357da1dd40a3d546b96e097ed + languageName: node + linkType: hard + +"binary-extensions@npm:^1.0.0": + version: 1.13.1 + resolution: "binary-extensions@npm:1.13.1" + checksum: 7cdacc6dadaffb6a4d250c39ca51e1fd7ba0fd846348e2813465dfaa7fce1e59a3465c1555578e7e4e7959023b47824cc387b37780e2160f52fface775cc0133 + languageName: node + linkType: hard + +"bindings@npm:^1.5.0": + version: 1.5.0 + resolution: "bindings@npm:1.5.0" + dependencies: + file-uri-to-path: 1.0.0 + checksum: bd623dec58f126eb0c30f04a20da7080f06cdd5af26bf5a91615e70055fbba66c4cec5c88b156e8181c1d822f2392034a40a9121ef3ebc25638dc2163332b12d + languageName: node + linkType: hard + +"block-stream@npm:*": + version: 0.0.9 + resolution: "block-stream@npm:0.0.9" + dependencies: + inherits: ~2.0.0 + checksum: 8018fa57aebcb00899e6d6e035d7fdab518d217156396e7442aac718c890ede0ce3e5258659f060cf3a558b40d771e809f4f4b706520ca13de3be5d8b6ae10e7 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.11 + resolution: "brace-expansion@npm:1.1.11" + dependencies: + balanced-match: ^1.0.0 + concat-map: 0.0.1 + checksum: 4c878e25e4858baf801945dfd63eb68feab2e502cf1122f25f3915c0e3bf397af3a93ff6bef0798db41c0d81ef28c08e55daac38058710f749a3b96eee6b8f40 + languageName: node + linkType: hard + +"braces@npm:^2.3.1, braces@npm:^2.3.2": + version: 2.3.2 + resolution: "braces@npm:2.3.2" + dependencies: + arr-flatten: ^1.1.0 + array-unique: ^0.3.2 + extend-shallow: ^2.0.1 + fill-range: ^4.0.0 + isobject: ^3.0.1 + repeat-element: ^1.1.2 + snapdragon: ^0.8.1 + snapdragon-node: ^2.0.1 + split-string: ^3.0.2 + to-regex: ^3.0.1 + checksum: 5f2d5ae262a39e516c7266f1316bc1caade4dcc26c5f8454f1d35064abbccd51cfea1c2cfa5a7402026991448a2b0ed0be1adce76ff1db2dfca7d3263f58d24d + languageName: node + linkType: hard + +"braces@npm:^3.0.1": + version: 3.0.2 + resolution: "braces@npm:3.0.2" + dependencies: + fill-range: ^7.0.1 + checksum: f3493181c3e91a1333d3c9afc9b3263a3f62f4ced0b033c372efc1373b48a7699557f4e04026b232a8556e043ca5360a9d3008c33852350138d4b0ea57558b8d + languageName: node + linkType: hard + +"browser-process-hrtime@npm:^1.0.0": + version: 1.0.0 + resolution: "browser-process-hrtime@npm:1.0.0" + checksum: 565847e5b0dc8c3762e545abb806ba886ed55de9b2c1479e382cf27e54f0af38ae3a1f81f3a98760403404419f65cbb20aff88d91cbee2b25e284bdebcc60a85 + languageName: node + linkType: hard + +"browserslist@npm:^4.14.5": + version: 4.16.3 + resolution: "browserslist@npm:4.16.3" + dependencies: + caniuse-lite: ^1.0.30001181 + colorette: ^1.2.1 + electron-to-chromium: ^1.3.649 + escalade: ^3.1.1 + node-releases: ^1.1.70 + bin: + browserslist: cli.js + checksum: dfab0d3c3d9a3517cf3f8a274bc4e8245f3a02c1a5ae2a0e01498273d363952d11ee09fdce3b0ce551f6cab9d619ed2d9facf7b6471c9190df949a5ad39665c5 + languageName: node + linkType: hard + +"bs-logger@npm:0.x": + version: 0.2.6 + resolution: "bs-logger@npm:0.2.6" + dependencies: + fast-json-stable-stringify: 2.x + checksum: f5f2f1315d6ceac655c3945d149086a5f5a90b3c908780757e12e938aad0125a7aa563cae2f7153ccf43443adb1b88a44960a61063903c3973e1dfdda6fc2d8c + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: ^0.4.0 + checksum: 302af195672988c21be9590b0b4fcacf9bd5bc116a32cbb5f613b21800fce8ee6aa1c57e76bbfa15a60269fe48885d062383e353fbaa821dbf06e92f72cc8b7d + languageName: node + linkType: hard + +"buffer-equal@npm:^1.0.0": + version: 1.0.0 + resolution: "buffer-equal@npm:1.0.0" + checksum: c071efa3279c6af39333dc879acd0cdf5245c22e547d50cca4cc2225f50042fea7950031437e6db81a952c663b56e84aaabb80ee06980bfeca24573768e19553 + languageName: node + linkType: hard + +"buffer-from@npm:1.x, buffer-from@npm:^1.0.0": + version: 1.1.1 + resolution: "buffer-from@npm:1.1.1" + checksum: 540ceb79c4f5bfcadaabbc18324fa84c50dc52905084be7c03596a339cf5a88513bee6831ce9b36ddd046fab09257a7c80686e129d0559a0cfd141da196ad956 + languageName: node + linkType: hard + +"builtin-modules@npm:^3.1.0": + version: 3.2.0 + resolution: "builtin-modules@npm:3.2.0" + checksum: f0e7240f70ae472a0a0167bf76d2e828c73028fe60be8cd229939c38a27527ea68c92f700553dac1316fa124af3037bc7a765ca0e029a03d2e9201dfb372ea24 + languageName: node + linkType: hard + +"cache-base@npm:^1.0.1": + version: 1.0.1 + resolution: "cache-base@npm:1.0.1" + dependencies: + collection-visit: ^1.0.0 + component-emitter: ^1.2.1 + get-value: ^2.0.6 + has-value: ^1.0.0 + isobject: ^3.0.1 + set-value: ^2.0.0 + to-object-path: ^0.3.0 + union-value: ^1.0.0 + unset-value: ^1.0.0 + checksum: 3f362ba824453d4043df82655314503e591a09a1bcb909ffdfcc74deb0fe4e7c58e40de31293153b07aeb5545610a1d81bf49b67cff5d3dd084d389e5a4d4849 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0": + version: 1.0.2 + resolution: "call-bind@npm:1.0.2" + dependencies: + function-bind: ^1.1.1 + get-intrinsic: ^1.0.2 + checksum: 18cc6107a1f028247f2b505dae73ad1c63b737addfcd43ff75159f072c5c827300c1fb66f26ee0ec70fc2fdd005ce68d65c05a2a34b74bab08c3b1921954ada9 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: f726bf10d752901174cae348e69c2e58206404d5eebcea485b3fedbcf7fcffdb397e10919fdf6ee2c8adb4be52a64eea2365d52583611939bfecd109260451c9 + languageName: node + linkType: hard + +"camelcase-keys@npm:^2.0.0": + version: 2.1.0 + resolution: "camelcase-keys@npm:2.1.0" + dependencies: + camelcase: ^2.0.0 + map-obj: ^1.0.0 + checksum: 74eff079c8e6335aee88e3e950a138a293cd97055520a404d51eb5caad36af2bca92efcf4f78a5f319d41fcb146d46630fef380daf897a7ce38711ed66c52849 + languageName: node + linkType: hard + +"camelcase@npm:^2.0.0": + version: 2.1.1 + resolution: "camelcase@npm:2.1.1" + checksum: 311182686b3b87ac07851d6bc8c1327d55ef5fe95403bce97e21696dfe666dec70cf2b008593c00ae69a2b84e0074e4c130157a41db1d237f6fe5686cbf870b3 + languageName: node + linkType: hard + +"camelcase@npm:^3.0.0": + version: 3.0.0 + resolution: "camelcase@npm:3.0.0" + checksum: 7993433f5bc180928f70399b06a0f11a02840bfe027e51a7e6c1b4f68c5c3119a58ec64e17b3112acab9ba420a97613956a0a2cf65f6fc8247fc9938aee64de6 + languageName: node + linkType: hard + +"camelcase@npm:^5.0.0, camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 6a3350c4ea8ab6e5109e0b443cfaf43dc40abfad7b2d79dcafbbafbe9b6b4059b4365b17ad822e24cf08e6627c1ffb65a9651d05cef9fcc6f64b6a0c2f327feb + languageName: node + linkType: hard + +"camelcase@npm:^6.0.0": + version: 6.2.0 + resolution: "camelcase@npm:6.2.0" + checksum: 654700600a80cb1f06ab85b3e2fe80333f94b441884d40826becdac549774f51b0317c6dcb6040416df26241fa9481eb58d0c1659d4d6d5627dcd4259be61beb + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001181": + version: 1.0.30001192 + resolution: "caniuse-lite@npm:1.0.30001192" + checksum: d2e3bc901b0cde3cd4522fa7f813565a4559284648b5c54f1049e6f991fc55d7d93b907e739270516e0207dd09b7c2ed8b8ca4469dceeb515eb1ec09798dff16 + languageName: node + linkType: hard + +"capture-exit@npm:^2.0.0": + version: 2.0.0 + resolution: "capture-exit@npm:2.0.0" + dependencies: + rsvp: ^4.8.4 + checksum: 9dd81108a087a90430e5abbad45a195123647718cf19faa58b76db519a1d79975ab13685e55de16dbdee1da3f8e4c522e7b6dc7aa7614c65dc58ad27588f7887 + languageName: node + linkType: hard + +"caseless@npm:~0.12.0": + version: 0.12.0 + resolution: "caseless@npm:0.12.0" + checksum: 147f48bff9bebf029d7050e2335da3f8d295f26d157edf08d8c3282c804dae04a462c4cd6efa8179755686aa3aeaca5c28f3e7f3559698bc0484c65e46c36c5b + languageName: node + linkType: hard + +"chalk@npm:^1.1.1": + version: 1.1.3 + resolution: "chalk@npm:1.1.3" + dependencies: + ansi-styles: ^2.2.1 + escape-string-regexp: ^1.0.2 + has-ansi: ^2.0.0 + strip-ansi: ^3.0.0 + supports-color: ^2.0.0 + checksum: bc2df54f6da63d0918254aa2d79dd87f75442e35c751b07f5ca37e5886dd0963472e37ee8c5fa6da27710fdfa0e10779c72be4a6c860c67e96769ba63ee2901e + languageName: node + linkType: hard + +"chalk@npm:^2.0.0, chalk@npm:^2.3.0": + version: 2.4.2 + resolution: "chalk@npm:2.4.2" + dependencies: + ansi-styles: ^3.2.1 + escape-string-regexp: ^1.0.5 + supports-color: ^5.3.0 + checksum: 22c7b7b5bc761c882bb6516454a1a671923f1c53ff972860065aa0b28a195f230163c1d46ee88bcc7a03e5539177d896457d8bc727de7f244c6e87032743038e + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.0": + version: 4.1.0 + resolution: "chalk@npm:4.1.0" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: f860285b419f9e925c2db0f45ffa88aa8794c14b80cc5d01ff30930bcfc384996606362706f0829cf557f6d36152a5fb2d227ad63c4bc90e2ec9e9dbed4a3c07 + languageName: node + linkType: hard + +"chalk@npm:^4.1.1": + version: 4.1.1 + resolution: "chalk@npm:4.1.1" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: 445c12db7aeed0046500a1e4184d31209a77d165654c885a789c41c8598a6a95bd2392180987cac572c967b93a2a730dda778bb7f87fa06ca63fd8592f8cc59f + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 7db46ed45d9925985a9d212ed6fd5846debb7b969fe40548a3b806e65064480e895e303f8635d57b53f2f3725986d0a9cb10c227a31221d1b039e13a2211faaf + languageName: node + linkType: hard + +"chokidar@npm:>=2.0.0 <4.0.0, chokidar@npm:^2.0.0": + version: 2.1.8 + resolution: "chokidar@npm:2.1.8" + dependencies: + anymatch: ^2.0.0 + async-each: ^1.0.1 + braces: ^2.3.2 + fsevents: ^1.2.7 + glob-parent: ^3.1.0 + inherits: ^2.0.3 + is-binary-path: ^1.0.0 + is-glob: ^4.0.0 + normalize-path: ^3.0.0 + path-is-absolute: ^1.0.0 + readdirp: ^2.2.1 + upath: ^1.1.1 + dependenciesMeta: + fsevents: + optional: true + checksum: 0758dcc7c6c7ace5924cf3c68088210932d391ab41026376b0adb8e07013ac87232e029f13468dfc9ca4dd59adae62a2b7eaedebb6c4e4f0ba92cbf3ac9e3721 + languageName: node + linkType: hard + +"chownr@npm:^2.0.0": + version: 2.0.0 + resolution: "chownr@npm:2.0.0" + checksum: b06ba0bf4218bc2214cdb94a7d0200db5c6425f9425795c064dcf5a3801aac8ae87f764727890cd1f48c026559159e7e0e15ed3d1940ce453dec54898d013379 + languageName: node + linkType: hard + +"ci-info@npm:^2.0.0": + version: 2.0.0 + resolution: "ci-info@npm:2.0.0" + checksum: 553fe83c085fce5e19e20f85b993f24a463e6f805803837a8868607bb68b1300567868694a5dff1beca6c54926a4c0be1cc9ef0c35f810653d590bf64183f6a0 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^0.6.0": + version: 0.6.0 + resolution: "cjs-module-lexer@npm:0.6.0" + checksum: 333671db7fb916d9c569a52fba714a86051881c69a4df784a07cb1dfec2a1796c7bcd7ba46ff9035cccb6e7aaff612a83f6505437c01a5ae14c4ebc6c36f762c + languageName: node + linkType: hard + +"class-utils@npm:^0.3.5": + version: 0.3.6 + resolution: "class-utils@npm:0.3.6" + dependencies: + arr-union: ^3.1.0 + define-property: ^0.2.5 + isobject: ^3.0.0 + static-extend: ^0.1.1 + checksum: 6411679ad4d2bde81b62ad721d4771d108d5d8ef32805d10ebfa6f1d6bdcfd5cb6dfea5232b85221f079e42691c36cf2db05a5e76b87ba8f6deb37a2c23a4a41 + languageName: node + linkType: hard + +"clean-stack@npm:^2.0.0": + version: 2.2.0 + resolution: "clean-stack@npm:2.2.0" + checksum: e291ce2b8c8c59e6449ac9a7a726090264bea6696e5343b21385e16d279c808ca09d73a1abea8fd23a9b7699e6ef5ce582df203511f71c8c27666bf3b2e300c5 + languageName: node + linkType: hard + +"cli-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "cli-cursor@npm:3.1.0" + dependencies: + restore-cursor: ^3.1.0 + checksum: 15dbfc222f27da8cbc61680e4948b189e811224271f6ee5be9db0dcbabe23ae3b2c5a5663be6f17ee51f6203ab44abddd4f4cffb20d69458fc845fa86976f96a + languageName: node + linkType: hard + +"cli-truncate@npm:^2.1.0": + version: 2.1.0 + resolution: "cli-truncate@npm:2.1.0" + dependencies: + slice-ansi: ^3.0.0 + string-width: ^4.2.0 + checksum: 2b20f9e353cd34b015ff0067effd2810490c4e23eb9b4edfd7cdc41f00311d0d1a6148eb7e9947d4ab858295f4da5b5d8f150842a8802dc7999c51288fe26e62 + languageName: node + linkType: hard + +"cliui@npm:^3.2.0": + version: 3.2.0 + resolution: "cliui@npm:3.2.0" + dependencies: + string-width: ^1.0.1 + strip-ansi: ^3.0.1 + wrap-ansi: ^2.0.0 + checksum: 369a15d48058633e21e024c29ad314e082da6da6c9ed322385ac3171bce305bb3b3d61374cbe5444feca445de06ffaa2239cf8edb8307dad6a4b6ef62200a281 + languageName: node + linkType: hard + +"cliui@npm:^5.0.0": + version: 5.0.0 + resolution: "cliui@npm:5.0.0" + dependencies: + string-width: ^3.1.0 + strip-ansi: ^5.2.0 + wrap-ansi: ^5.1.0 + checksum: 25e61dc985279bd7ec16715df53288346e5c36ff43956f7de31bf55b2432ce1259e75148b28c3ed41265caf1baee1d204363c429ae5fee54e6f78bed5a5d82b3 + languageName: node + linkType: hard + +"cliui@npm:^6.0.0": + version: 6.0.0 + resolution: "cliui@npm:6.0.0" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^6.2.0 + checksum: e59d0642946dd300b1b002e69f43b32d55e682c84f6f2073705ffe77477b400aeabd4f4795467db0771a21d35ee070071f6a31925e4f83b52a7fe1f5c8e6e860 + languageName: node + linkType: hard + +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^7.0.0 + checksum: c49ac1d13f6dda4beaa11b26f62867e0e9892eb985951187d7c691793e0fe08b9bc15cedfaf4dc6d2e9a4d1516704c0c9dcb671ebcd758dbabb18b5d757fbdb5 + languageName: node + linkType: hard + +"clone-buffer@npm:^1.0.0": + version: 1.0.0 + resolution: "clone-buffer@npm:1.0.0" + checksum: 70d92e1482af3cfc4e1f1f620ac2a34c0a441da4760f46a250a5f75df7b5f054f27c4358467ba3915832b2a9674b469fa93b7f9e3bc97ade3227e20952ea3404 + languageName: node + linkType: hard + +"clone-stats@npm:^1.0.0": + version: 1.0.0 + resolution: "clone-stats@npm:1.0.0" + checksum: fc70411afba2115e5b2800b76ad434a79e0fe81d7ad8016c9351937fbec14a10c56314c5df545549bc5046a4b21b7bb2ee45a6393dcccf279abd5554c04629f2 + languageName: node + linkType: hard + +"clone@npm:^2.1.1": + version: 2.1.2 + resolution: "clone@npm:2.1.2" + checksum: 85232d66015d2d703dc59812e30049931d97c7815bf70569ae4fb7a66be257f46fcf47040e4e7050966ca195a9e615d59d73ba9e39fc37eedba1a76865f27ab1 + languageName: node + linkType: hard + +"cloneable-readable@npm:^1.0.0": + version: 1.1.3 + resolution: "cloneable-readable@npm:1.1.3" + dependencies: + inherits: ^2.0.1 + process-nextick-args: ^2.0.0 + readable-stream: ^2.3.5 + checksum: b7dda8125e898a788ac6427003337920532658b8b62b8ae3ae1c45ca877e3159c51c260efeb89f5a23b18bc62031bfcd5d2dfe5beada4a657d93f5fd2c8b7e50 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 3f22dbbe0f413ff72831d087d853a81d1137093e12e8ec90b4da2bde5c67bc6bff11b6adeb38ca9fa8704b8cd40dba294948bda3c271bccb74669972b840cc1a + languageName: node + linkType: hard + +"code-point-at@npm:^1.0.0": + version: 1.1.0 + resolution: "code-point-at@npm:1.1.0" + checksum: 7d9837296e0f1c00239c88542f5a3e0bad11e45d3d0e8d9d097901fe54722dd5d2c006969077a287be8648a202c43f74e096f17552cbd897568308fba7b87ac0 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.0": + version: 1.0.1 + resolution: "collect-v8-coverage@npm:1.0.1" + checksum: 2fc4c79300d6e22169cb0f85e00565079c3939679b7021179db73419f773454166654c7b82372b080c780a9643de4002ec5bb909be55e7018aba3e8cb4f8b01f + languageName: node + linkType: hard + +"collection-map@npm:^1.0.0": + version: 1.0.0 + resolution: "collection-map@npm:1.0.0" + dependencies: + arr-map: ^2.0.2 + for-own: ^1.0.0 + make-iterator: ^1.0.0 + checksum: d059df832a21a178ca934e93bd075150b557000f3d9258f5c4fe4b9ba3e4c9c9267ec2ae414c819ca717bd932298de76d3e94ccf09228223e397bbc6fdc47e84 + languageName: node + linkType: hard + +"collection-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "collection-visit@npm:1.0.0" + dependencies: + map-visit: ^1.0.0 + object-visit: ^1.0.0 + checksum: c73cb1316c29f4b175198dba417f759e6b50ca3f312e42f4f451c2a38cc8e3e292e1fec60d9ccbada35fbc22805a1d897d3bc37fd88fbfe8ab509e4ede88c386 + languageName: node + linkType: hard + +"color-convert@npm:^1.9.0": + version: 1.9.3 + resolution: "color-convert@npm:1.9.3" + dependencies: + color-name: 1.1.3 + checksum: 5f244daa3d1fe1f216d48878c550465067d15268688308554e613b7640a068f96588096d51f0b98b68f15d6ff6bb8ad24e172582ac8c0ad43fa4d3da60fd1b79 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: ~1.1.4 + checksum: 3d5d8a011a43012ca11b6d739049ecf2055d95582fd16ec44bf1e685eb0baa5cc652002be8a1dc92b429c8d87418287d0528266a7595cb1ad8a7f4f1d3049df2 + languageName: node + linkType: hard + +"color-name@npm:1.1.3": + version: 1.1.3 + resolution: "color-name@npm:1.1.3" + checksum: d8b91bb90aefc05b6ff568cf8889566dcc6269824df6f3c9b8ca842b18d7f4d089c07dc166808d33f22092d4a79167aa56a96a5ff0d21efab548bf44614db43b + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 3e1c9a4dee12eada307436f61614dd11fe300469db2b83f80c8b7a7cd8a1015f0f18dd13403f018927b249003777ff60baba4a03c65f12e6bddc0dfd9642021f + languageName: node + linkType: hard + +"color-support@npm:^1.1.3": + version: 1.1.3 + resolution: "color-support@npm:1.1.3" + bin: + color-support: bin.js + checksum: dce8615cffa693ec56f6b438a1b3f3af1af7ac03a9df129005dfbd5b2c18fe130382378a613afe0f84fe7309f117b68bb552d964c23f76dae244ab6495913c28 + languageName: node + linkType: hard + +"colorette@npm:^1.2.1": + version: 1.2.2 + resolution: "colorette@npm:1.2.2" + checksum: e240f0c94b8d9f34b52bd17b50fc13a3b74f9e662edeaa2b0c65e06ec6b1fc6367fb42b834ec5a1d819d68b74a3d850f3bd3e284f9e614d6c4ffa122f83c6ec5 + languageName: node + linkType: hard + +"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6": + version: 1.0.8 + resolution: "combined-stream@npm:1.0.8" + dependencies: + delayed-stream: ~1.0.0 + checksum: 5791ce7944530f0db74a97e77ea28b6fdbf89afcf038e41d6b4195019c4c803cd19ed2905a54959e5b3830d50bd5d6f93c681c6d3aaea8614ad43b48e62e9d65 + languageName: node + linkType: hard + +"commander@npm:^6.2.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 47856aae6f194404122e359d8463e5e1a18f7cbab26722ce69f1379be8514bd49a160ef81a983d3d2091e3240022643354101d1276c797dcdd0b5bfc3c3f04a3 + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 98f18ad14f0ea38e0866db365bc8496f2a74250cf47ec96b94913e1b0574c99b4ff837a9f05dbc68d82505fd06b52dfba4f6bbe6fbda43094296cfaf33b475a0 + languageName: node + linkType: hard + +"component-emitter@npm:^1.2.1": + version: 1.3.0 + resolution: "component-emitter@npm:1.3.0" + checksum: fc4edbf1014f0aed88dcec33ca02d2938734e428423f640d8a3f94975615b8e8c506c19e29b93949637c5a281353e75fa79e299e0d57732f42a9fe346cb2cad6 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 554e28d9ee5aa6e061795473ee092cb3d3a2cbdb76c35416e0bb6e03f136d7d07676da387b2ed0ec4106cedbb6534080d9abc48ecc4a92b76406cf2d0c3c0c4b + languageName: node + linkType: hard + +"concat-stream@npm:^1.6.0": + version: 1.6.2 + resolution: "concat-stream@npm:1.6.2" + dependencies: + buffer-from: ^1.0.0 + inherits: ^2.0.3 + readable-stream: ^2.2.2 + typedarray: ^0.0.6 + checksum: 7a97b7a7d0938e36800bdb6f5caf938bac8c523a6ec15df1f2ac41d3785541be30a6671c9f4c0d1ac9609e6ab29dcab8f54d1c84035e3e3b7b24f9336da68ab0 + languageName: node + linkType: hard + +"console-control-strings@npm:^1.0.0, console-control-strings@npm:~1.1.0": + version: 1.1.0 + resolution: "console-control-strings@npm:1.1.0" + checksum: 58a404d951bf270494fb91e136cf064652c1208ccedac23e4da24e6a3a3933998f302cadc45cbf6582a007a4aa44dab944e84056b24e3b1964e9a28aeedf76c9 + languageName: node + linkType: hard + +"convert-source-map@npm:^1.4.0, convert-source-map@npm:^1.5.0, convert-source-map@npm:^1.6.0, convert-source-map@npm:^1.7.0": + version: 1.7.0 + resolution: "convert-source-map@npm:1.7.0" + dependencies: + safe-buffer: ~5.1.1 + checksum: b10fbf041e3221c65e1ab67f05c8fcbad9c5fd078c62f4a6e05cb5fddc4b5a0e8a17c6a361c6a44f011b1a0c090b36aa88543be9dfa65da8c9e7f39c5de2d4df + languageName: node + linkType: hard + +"copy-descriptor@npm:^0.1.0": + version: 0.1.1 + resolution: "copy-descriptor@npm:0.1.1" + checksum: c052cf571ff6b69b604607a3d41f03cb742af9472026013e690ab33e1bef5e64930c53a5f881dc79c7e4f5ccc3cea0ebb9f420315d3690989329088976b68ee9 + languageName: node + linkType: hard + +"copy-props@npm:^2.0.1": + version: 2.0.4 + resolution: "copy-props@npm:2.0.4" + dependencies: + each-props: ^1.3.0 + is-plain-object: ^2.0.1 + checksum: 6e6d169003c97e2a7cd10fc57df37b00e80fcb14c9dc45fda5adaa150b6f0380b966b85b28d25cd0329764e507530292bc17832f8432d1c2238c6a13320b5a6c + languageName: node + linkType: hard + +"core-util-is@npm:1.0.2, core-util-is@npm:~1.0.0": + version: 1.0.2 + resolution: "core-util-is@npm:1.0.2" + checksum: 089015ee3c462dfceba70faa1df83b42a7bb35db26dae6af283247b06fe3216c65fccd9f00eebcaf98300dc31e981d56aae9f90b624f8f6ff1153e235ff88b65 + languageName: node + linkType: hard + +"cosmiconfig@npm:^7.0.0": + version: 7.0.0 + resolution: "cosmiconfig@npm:7.0.0" + dependencies: + "@types/parse-json": ^4.0.0 + import-fresh: ^3.2.1 + parse-json: ^5.0.0 + path-type: ^4.0.0 + yaml: ^1.10.0 + checksum: 151fcb91773c0ae826fc801eab86f8f818605dbf63c8e5515adf0ff0fec5ede8e614f387f93c088d65527a2ea9021f0cd8c6b6e5c7fef2b77480b5e2c33700dc + languageName: node + linkType: hard + +"cross-spawn@npm:^3.0.0": + version: 3.0.1 + resolution: "cross-spawn@npm:3.0.1" + dependencies: + lru-cache: ^4.0.1 + which: ^1.2.9 + checksum: 1228429c247d718c8ee0f5b63139de10fbcd8638098ec4c2449c025230eea71b527daabe681bfd5843051b85c26647821c81aaad12f736587075cda5a001767b + languageName: node + linkType: hard + +"cross-spawn@npm:^6.0.0": + version: 6.0.5 + resolution: "cross-spawn@npm:6.0.5" + dependencies: + nice-try: ^1.0.4 + path-key: ^2.0.1 + semver: ^5.5.0 + shebang-command: ^1.2.0 + which: ^1.2.9 + checksum: 05fbbf957d9b81dc05fd799a238f6aacc2e7cc9783fff3f0e00439a97d6f269c90482571cbf1eeea17200fd119161a2d1f88aa49a8110b176e04f2a70825284f + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2": + version: 7.0.3 + resolution: "cross-spawn@npm:7.0.3" + dependencies: + path-key: ^3.1.0 + shebang-command: ^2.0.0 + which: ^2.0.1 + checksum: 51f10036f5f1de781be98f4738d58b50c6d44f4f471069b8ab075b21605893ba1548654880f7310a29a732d6fc7cd481da6026169b9f0831cab0148a62fb397a + languageName: node + linkType: hard + +"cssom@npm:^0.4.4": + version: 0.4.4 + resolution: "cssom@npm:0.4.4" + checksum: db81cac44219b20d76b06f51d2614cead098478d1323b2df5e4b5d25bdc3f16d8474c3d45ae28f594a0933691c774fc2102837df66ccf375e280b0728ad53c5f + languageName: node + linkType: hard + +"cssom@npm:~0.3.6": + version: 0.3.8 + resolution: "cssom@npm:0.3.8" + checksum: b7fb8b13aa2014a6c168c7644baa2f4d447a28b624544c87c8ef905bbec64ef247b3d167270f87e043acc6df30ea0f80e0da545a45187ff4006eb2c24988dfae + languageName: node + linkType: hard + +"cssstyle@npm:^2.2.0": + version: 2.3.0 + resolution: "cssstyle@npm:2.3.0" + dependencies: + cssom: ~0.3.6 + checksum: a778180d2f5eef44742b7083997a0ad6e59eee016724ceac4d6229e48842d3c5ebbb55dc02c555f793bdc486254f6eef8d2049c1815e8fc74514e3eb827d49ec + languageName: node + linkType: hard + +"currently-unhandled@npm:^0.4.1": + version: 0.4.1 + resolution: "currently-unhandled@npm:0.4.1" + dependencies: + array-find-index: ^1.0.1 + checksum: 1968b4b57677da838b8b3f0db806e1eb4f59cc95addb6e0fd3098703fe31a3e7e5e437f253aa74408a80699e7cc59947881a7e678d0ced887619077dcccdf70f + languageName: node + linkType: hard + +"d@npm:1, d@npm:^1.0.1": + version: 1.0.1 + resolution: "d@npm:1.0.1" + dependencies: + es5-ext: ^0.10.50 + type: ^1.0.1 + checksum: cf9b770965fa4876f7aff46784e4f1a1ee71cc5df7e05c9c36bee52a74340b312b6f7ab224c8bfcc83f4b18c6f6a24e7b50bcd449ba4464c1df69874941324ae + languageName: node + linkType: hard + +"dashdash@npm:^1.12.0": + version: 1.14.1 + resolution: "dashdash@npm:1.14.1" + dependencies: + assert-plus: ^1.0.0 + checksum: 5959409ee42dc4bdbf3fa384b801ece580ca336658bb0342ffab0099b3fc6bf9b3e239e1b82dcc4fcaeee315353e08f2eae47b0928a6a579391598c44958afa1 + languageName: node + linkType: hard + +"data-urls@npm:^2.0.0": + version: 2.0.0 + resolution: "data-urls@npm:2.0.0" + dependencies: + abab: ^2.0.3 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.0.0 + checksum: 42239927c6a202e2d02b7f41c94ca53e3cea036898b97b8bf6120ed1b25e0dd11c48ec7aa5c84cf807c2cb9f3a637df9fb50f3ca25a52863186a4ac46254726b + languageName: node + linkType: hard + +"debug@npm:^2.2.0, debug@npm:^2.3.3": + version: 2.6.9 + resolution: "debug@npm:2.6.9" + dependencies: + ms: 2.0.0 + checksum: 559f44f98cf25e2ee489022aec173afbff746564cb108c4493becb95bc3c017a67bdaa25a0ff64801fd32c35051d00af0e56cc7f762ae2c3bc089496e5a1c31b + languageName: node + linkType: hard + +"debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.2.0": + version: 4.3.1 + resolution: "debug@npm:4.3.1" + dependencies: + ms: 2.1.2 + peerDependenciesMeta: + supports-color: + optional: true + checksum: 0d41ba5177510e8b388dfd7df143ab0f9312e4abdaba312595461511dac88e9ef8101939d33b4e6d37e10341af6a5301082e4d7d6f3deb4d57bc05fc7d296fad + languageName: node + linkType: hard + +"decamelize@npm:^1.1.1, decamelize@npm:^1.1.2, decamelize@npm:^1.2.0": + version: 1.2.0 + resolution: "decamelize@npm:1.2.0" + checksum: 8ca9d03ea8ac07920f4504e219d18edff2491bdd0a3e05a1e5ca2e9a0bf6333564231de3528b01d5e76c40a38c37bbc1e09cb5a0424714f53dd615ed78ced464 + languageName: node + linkType: hard + +"decimal.js@npm:^10.2.0": + version: 10.2.1 + resolution: "decimal.js@npm:10.2.1" + checksum: ba28b27bb8aca6bbb73fbdb51d759961d9ff82218c4aa737b4f4826dee4244618a61c410201bb152950c4915e3d82a86211d1c2a4e23f805ee577574ba115e59 + languageName: node + linkType: hard + +"decode-uri-component@npm:^0.2.0": + version: 0.2.0 + resolution: "decode-uri-component@npm:0.2.0" + checksum: d8cb28c33f7b0a70b159b5fa126aee821ba090396689bd46ad2c423c3a658c504d2743ab18060fd5ed1cae5377bdd3632760a8e98ba920ff49637d43dc6a9687 + languageName: node + linkType: hard + +"dedent@npm:^0.7.0": + version: 0.7.0 + resolution: "dedent@npm:0.7.0" + checksum: 05c18541a4b932006a65eccaf03d68ac60552981db424f39f1ca4bebf5beaa53d318eadbb4dc0be24232844e69d1140763a7ada94559b2cb7771a47c0a829aeb + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": + version: 0.1.3 + resolution: "deep-is@npm:0.1.3" + checksum: 3de58f86af4dec86c8be531a5abaf2e6d8ea98fa2f1d81a3a778d0d8df920ee282043a6ef05bfb4eb699c8551df9ac1b808d4dc71d54cc40ab1efa5ce8792943 + languageName: node + linkType: hard + +"deepmerge@npm:^4.2.2": + version: 4.2.2 + resolution: "deepmerge@npm:4.2.2" + checksum: 85abf8e0045ee280996e7d2396979c877ef0741e413b716e42441110e0a83ac08098b2a49cea035510060bf667c0eae3189b2a52349f5fa4b000c211041637b1 + languageName: node + linkType: hard + +"default-compare@npm:^1.0.0": + version: 1.0.0 + resolution: "default-compare@npm:1.0.0" + dependencies: + kind-of: ^5.0.2 + checksum: d9ab7f03ff23e070c4ca03b989647c7ef7d2f364c340a3ecb8a81c5eb470156a26bdcf9eaffd1347bdbd0f689af6e8780c38913cd2984c924617d3b04e34b9a0 + languageName: node + linkType: hard + +"default-resolution@npm:^2.0.0": + version: 2.0.0 + resolution: "default-resolution@npm:2.0.0" + checksum: 5743dd9c1687f522977e04ee6eead4e92e82423fa90dbb95800309b34232e19610595abb6cb528c6c344a89082032820cd5cc466094cf78020dbad630fa4e25a + languageName: node + linkType: hard + +"define-properties@npm:^1.1.3": + version: 1.1.3 + resolution: "define-properties@npm:1.1.3" + dependencies: + object-keys: ^1.0.12 + checksum: b69c48c1b1dacb61f0b1cea367707c3bb214e3c47818aff18e6f20a7f88cbfa33d4cbdfd9ff79e56faba95ddca3d78ff10fbf2f02ecfad6f3e13b256e76b1212 + languageName: node + linkType: hard + +"define-property@npm:^0.2.5": + version: 0.2.5 + resolution: "define-property@npm:0.2.5" + dependencies: + is-descriptor: ^0.1.0 + checksum: 6fed0540727ca8ea1f5eacddf24bf9e8c212c07f638ef0cd743caa69647f0421cd72a17b466d4c378c5c0f232ad756fa92b90f8e1d975ddfec388dc6306e3583 + languageName: node + linkType: hard + +"define-property@npm:^1.0.0": + version: 1.0.0 + resolution: "define-property@npm:1.0.0" + dependencies: + is-descriptor: ^1.0.0 + checksum: 9034f8f6f3128945374349262e4f97b53e9582f9e3435bedb284c5210c45a98b355d40a42a570766add34a604d97b6ff0773bfd122f891a289009a1b82cc0eee + languageName: node + linkType: hard + +"define-property@npm:^2.0.2": + version: 2.0.2 + resolution: "define-property@npm:2.0.2" + dependencies: + is-descriptor: ^1.0.2 + isobject: ^3.0.1 + checksum: 00c7ec53b5040507016736922a9678b3247bc85e0ea0429e47d6ca6a993890f9dc338fb19d5bf6f8c0ca29016a68aa7e7da5c35d4ed8b3646347d86a3b2b4b01 + languageName: node + linkType: hard + +"delayed-stream@npm:~1.0.0": + version: 1.0.0 + resolution: "delayed-stream@npm:1.0.0" + checksum: d9dfb0a7c79fd308fada9db2cf29d1ff22047ceb50dd78f7e3c173567909b438f418259cb76a6d9c9f513e88ef41d3a14154f618741ec8368c3efeff616d0c9f + languageName: node + linkType: hard + +"delegates@npm:^1.0.0": + version: 1.0.0 + resolution: "delegates@npm:1.0.0" + checksum: 7459e34d29cadd9bfd340728bfcc70ea96da5d940fb197298b523f805822680e583cba3ec34d36a18004325f1ec9de55e202a92b414d01db18cd87bb8a2ae5bd + languageName: node + linkType: hard + +"detect-file@npm:^1.0.0": + version: 1.0.0 + resolution: "detect-file@npm:1.0.0" + checksum: 69717e5618370f31d3b266240289442d7c50f933834bbcffad187e73a6efaf3adc4ed283d8120a9ad77cbdcef3375c48acb4cdbb2df477695ed78d86c0d08c9c + languageName: node + linkType: hard + +"detect-newline@npm:^3.0.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 6d3f67971da681403c1b1920eb3994c0718a4e70d32ae4cfc5369f3e30b4746f075a3986cb5a5c762fac36597d8f8a33b6c98bd5ce822589773313f29ce4544f + languageName: node + linkType: hard + +"diff-sequences@npm:^26.6.2": + version: 26.6.2 + resolution: "diff-sequences@npm:26.6.2" + checksum: dd1eb6e52f0a200228b836876a69c90690003b8991cf7d9264d6e6063acde8fe852084b6a196f2a13f169d309e30c24c457e9c8db617aed186c665efb50af1d8 + languageName: node + linkType: hard + +"dir-glob@npm:^3.0.1": + version: 3.0.1 + resolution: "dir-glob@npm:3.0.1" + dependencies: + path-type: ^4.0.0 + checksum: 687fa3bd604f264042f325d9460e1298447fb32782f30cddc47cb302b742684d13e8ffce4c6f455e0ae92099d71e29f72387379c10b8fd3f6f1bf8992d7c0997 + languageName: node + linkType: hard + +"doctrine@npm:^3.0.0": + version: 3.0.0 + resolution: "doctrine@npm:3.0.0" + dependencies: + esutils: ^2.0.2 + checksum: 2eae469bd2889ceee9892083a67340b3622568fe5290edce620e5d5ddab23d644b2a780e9a7c68ad9c8a62716a70c5e484402ac93a398fa78b54b7505592aa7f + languageName: node + linkType: hard + +"domexception@npm:^2.0.1": + version: 2.0.1 + resolution: "domexception@npm:2.0.1" + dependencies: + webidl-conversions: ^5.0.0 + checksum: bde9f50cb568a29b0c24ab50500ff23e9a2160394f04ae5fd9db91c4303a4f892fd9a42b07a0d52cdae11d8a348b4e907dd4343176c6f5a74f8be6ffde60bd95 + languageName: node + linkType: hard + +"dungeonslayers4@workspace:.": + version: 0.0.0-use.local + resolution: "dungeonslayers4@workspace:." + dependencies: + "@league-of-foundry-developers/foundry-vtt-types": ^0.7.9-6 + "@rollup/plugin-node-resolve": ^11.2.1 + "@types/fs-extra": ^9.0.11 + "@types/jest": ^26.0.22 + "@typescript-eslint/eslint-plugin": ^4.22.0 + "@typescript-eslint/parser": ^4.22.0 + chalk: ^4.1.1 + eslint: ^7.25.0 + eslint-config-prettier: ^8.3.0 + eslint-plugin-jest: ^24.3.5 + eslint-plugin-prettier: ^3.4.0 + fs-extra: ^9.1.0 + gulp: ^4.0.2 + gulp-sass: ^4.1.0 + husky: ^5.2.0 + jest: ^26.6.3 + jest-junit: ^12.0.0 + lint-staged: ^10.5.4 + prettier: ^2.2.1 + rollup: ^2.45.2 + rollup-plugin-typescript2: ^0.30.0 + sass: ^1.32.8 + semver: ^7.3.5 + ts-jest: ^26.5.5 + tslib: ^2.2.0 + typescript: ^4.2.4 + yargs: ^16.2.0 + languageName: unknown + linkType: soft + +"duplexify@npm:^3.6.0": + version: 3.7.1 + resolution: "duplexify@npm:3.7.1" + dependencies: + end-of-stream: ^1.0.0 + inherits: ^2.0.1 + readable-stream: ^2.0.0 + stream-shift: ^1.0.0 + checksum: 9581cdb8f6304fdaacb8bbe2b8b393a8da3ece3086dd24070601b70f08ca417305b4f3a94699b984c4981dceb6eebb4c132abfe0445baacfd04f2b66a0524cda + languageName: node + linkType: hard + +"each-props@npm:^1.3.0": + version: 1.3.2 + resolution: "each-props@npm:1.3.2" + dependencies: + is-plain-object: ^2.0.1 + object.defaults: ^1.1.0 + checksum: 460c6f63a5d6c066bcce73fb59b6611f1443c2917f9e112663750f45a193756b0ff67b1e3f564de27353f84f1317eee3f91ef89c4e76bf706fde02f716a187b8 + languageName: node + linkType: hard + +"earcut@npm:^2.1.5": + version: 2.2.2 + resolution: "earcut@npm:2.2.2" + checksum: 030e091437c4fae34c4538e0886a1d7c68f67c3ec3ba793210b280df24b329221ed81179e300742abf7aa2c394332a77395133c5163717b1806cebab6aa6c88c + languageName: node + linkType: hard + +"ecc-jsbn@npm:~0.1.1": + version: 0.1.2 + resolution: "ecc-jsbn@npm:0.1.2" + dependencies: + jsbn: ~0.1.0 + safer-buffer: ^2.1.0 + checksum: 5b4dd05f24b2b94c1bb882488dba2b878bb5b83182669aa71fbdf53c6941618180cb226c4eb9a3e2fa51ad11f87b5edb0a7d7289cdef468ba2e6024542f73f07 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.3.649": + version: 1.3.675 + resolution: "electron-to-chromium@npm:1.3.675" + checksum: 32bc34084af5f6eb5e52500de8282302b0d19e85e93201e4544f91520d80cc262ccdcc800d23a67b9995e9abb59a82d3dfb31313388e4d2c50bf6838f9ddcfc5 + languageName: node + linkType: hard + +"emittery@npm:^0.7.1": + version: 0.7.2 + resolution: "emittery@npm:0.7.2" + checksum: 34acfef51922a1b73d75cb658bf43ecb279633b263ffa831fb87697abbbd3aa4241ef15d204eeaa6a3c62656bd7563de7145c416a2bb18c4805e54ce6d7cdac6 + languageName: node + linkType: hard + +"emoji-regex@npm:^7.0.1": + version: 7.0.3 + resolution: "emoji-regex@npm:7.0.3" + checksum: e3a504cf5242061d9b3c78a88ce787d6beee37a5d21287c6ccdddf1fe665d5ef3eddfdda663d0baf683df8e7d354210eeb1458a7d9afdf0d7a28d48cbb9975e1 + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 87cf3f89efb8ba028075b3dc1713e2c5609af94cbc129b1f00c3113d01dbe4bf85c9d971e75a98bf8a8508131727682ce929e4bd70e9022af4fd47d75e9507de + languageName: node + linkType: hard + +"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0": + version: 1.4.4 + resolution: "end-of-stream@npm:1.4.4" + dependencies: + once: ^1.4.0 + checksum: 7da60e458bdb5e16c006a45e85ef3bc1e3791db5ba275b0913258ccddc8899acb9252c4ddbcce87bd1b46e2a3f97315aafb9f0c0330e8aac44defb504a9d3ccd + languageName: node + linkType: hard + +"enquirer@npm:^2.3.5, enquirer@npm:^2.3.6": + version: 2.3.6 + resolution: "enquirer@npm:2.3.6" + dependencies: + ansi-colors: ^4.1.1 + checksum: e249bb97bf7d5a91d51081547ea5aa1d849604e5de74feff2c48f7174fc6c9dfcfeea42ef5536e9a3be58964a248c322d6897269ae7bba3e1b6d24f152d9d685 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.0 + resolution: "env-paths@npm:2.2.0" + checksum: 09de4fd1c068d5965aa8aede852a764b7fb6fa8f1299ba7789bc29c22840ab1985e0c9c55bc6bf40b4276834b8adfa1baf82ec9bc58445d9e75800dc32d78a4f + languageName: node + linkType: hard + +"error-ex@npm:^1.2.0, error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: ^0.2.1 + checksum: 6c6c9187429ae867d145bc64c682c7c137b1f8373a406dc3b605c0d92f15b85bfcea02b461dc55ae11b10d013377e1eaf3d469d2861b2f94703c743620a9c08c + languageName: node + linkType: hard + +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50": + version: 0.10.53 + resolution: "es5-ext@npm:0.10.53" + dependencies: + es6-iterator: ~2.0.3 + es6-symbol: ~3.1.3 + next-tick: ~1.0.0 + checksum: 99e8115c2f99674d0defc1e077bb0061cd9e1fc996e93605f83441cc5b3b200b7b3646f9cda9313aa877a05c47b4577ead99a26177136a0ca3f208f67a7b4418 + languageName: node + linkType: hard + +"es6-iterator@npm:^2.0.1, es6-iterator@npm:^2.0.3, es6-iterator@npm:~2.0.3": + version: 2.0.3 + resolution: "es6-iterator@npm:2.0.3" + dependencies: + d: 1 + es5-ext: ^0.10.35 + es6-symbol: ^3.1.1 + checksum: 1880ce31210da874cbb92b404c3128bdf68f616f3a902b2ca1d12f268aaedb11c5e6a2d9d364cde762de0130652a0474ba91abc09fa35f4abf6a8f22a592265e + languageName: node + linkType: hard + +"es6-promise-polyfill@npm:^1.2.0": + version: 1.2.0 + resolution: "es6-promise-polyfill@npm:1.2.0" + checksum: 723d6b093c6e491be47449b30399e4ed49b140b559081cb05d1c63d3689f0f8b52c8501fce1020c8c9e792730804108224d739f2714f943e1b2f206cb7919d86 + languageName: node + linkType: hard + +"es6-symbol@npm:^3.1.1, es6-symbol@npm:~3.1.3": + version: 3.1.3 + resolution: "es6-symbol@npm:3.1.3" + dependencies: + d: ^1.0.1 + ext: ^1.1.2 + checksum: 0915d72de8760b56b69ca4360276123a4f61de5a3172fe340ce9288271cf48bcebe3ee46ca8ee0f2fd73206bbbefa7c4a40a6673d278a87c97d3a155de778931 + languageName: node + linkType: hard + +"es6-weak-map@npm:^2.0.1": + version: 2.0.3 + resolution: "es6-weak-map@npm:2.0.3" + dependencies: + d: 1 + es5-ext: ^0.10.46 + es6-iterator: ^2.0.3 + es6-symbol: ^3.1.1 + checksum: 8dfd50b2919e16cf246ea9d5f9271eef466924248bc98a48a718cc149d0f67b708628c8e4bd32fa945a813c7780f94270f21ac16fff33c854a348db7e19f084d + languageName: node + linkType: hard + +"escalade@npm:^3.1.1": + version: 3.1.1 + resolution: "escalade@npm:3.1.1" + checksum: 1e31ff50d66f47cd0dfffa702061127116ccf9886d1f54a802a7b3bc95b94cab0cbf5b145cc5ac199036df6fd9d1bb24af1fa1bfed87c94879e950fbee5f86d1 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^1.0.2, escape-string-regexp@npm:^1.0.5": + version: 1.0.5 + resolution: "escape-string-regexp@npm:1.0.5" + checksum: f9484b8b4c8827d816e0fd905c25ed4b561376a9c220e1430403ea84619bf680c76a883a48cff8b8e091daf55d6a497e37479f9787b9f15f3c421b6054289744 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: f3500f264e864aef0c336a2efb3adb1cee9ba1abbe15d69f0d9dab423607cac91aa009b23011b4e6cfd6d6b79888873e21dad1882047aa2e1555dd307428c51d + languageName: node + linkType: hard + +"escodegen@npm:^1.14.1": + version: 1.14.3 + resolution: "escodegen@npm:1.14.3" + dependencies: + esprima: ^4.0.1 + estraverse: ^4.2.0 + esutils: ^2.0.2 + optionator: ^0.8.1 + source-map: ~0.6.1 + dependenciesMeta: + source-map: + optional: true + bin: + escodegen: bin/escodegen.js + esgenerate: bin/esgenerate.js + checksum: 548c5a83a81a51122f1006309a392e1412bb00657f15aca60f01f9d4553851bdaf0519d898fd3ee2bb46f116e03ee48757f4d9a28a7b58bc8c096fd4b33f6cbc + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^8.3.0": + version: 8.3.0 + resolution: "eslint-config-prettier@npm:8.3.0" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 94ccbb50fb67e5e47e8ba6cfa257b5cbf53619990ab13f46b99518cfe9b900394b93bdf6ffedbde1a8e2997d301b0fbd73a6b4202146bc53475dfb30a8c812f2 + languageName: node + linkType: hard + +"eslint-plugin-jest@npm:^24.3.5": + version: 24.3.5 + resolution: "eslint-plugin-jest@npm:24.3.5" + dependencies: + "@typescript-eslint/experimental-utils": ^4.0.1 + peerDependencies: + "@typescript-eslint/eslint-plugin": ">= 4" + eslint: ">=5" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + checksum: 6352966b16a2a65cd5637f6d02ffcd59f52e8cb6cb8434d35520fe5b30cbf475e3a55a088fcf0d41d6f7c0dbd93e9b5c637707075fbb3d960b318c305c3ac7aa + languageName: node + linkType: hard + +"eslint-plugin-prettier@npm:^3.4.0": + version: 3.4.0 + resolution: "eslint-plugin-prettier@npm:3.4.0" + dependencies: + prettier-linter-helpers: ^1.0.0 + peerDependencies: + eslint: ">=5.0.0" + prettier: ">=1.13.0" + peerDependenciesMeta: + eslint-config-prettier: + optional: true + checksum: 322be1af8c7a6b7f1c718d912090722b65da072fda05bbc0a9d94523e6c3dfda49a7f62fd411126f1909c12bbc63e827ee6459163b2ce3458adb292541decf66 + languageName: node + linkType: hard + +"eslint-scope@npm:^5.0.0, eslint-scope@npm:^5.1.1": + version: 5.1.1 + resolution: "eslint-scope@npm:5.1.1" + dependencies: + esrecurse: ^4.3.0 + estraverse: ^4.1.1 + checksum: 79465cf5082f4216176f6d49c7d088de89ee890f912eb87b831f23ee9a5e17ed0f3f2ab6108fb8fefa0474ba5ebeaa9bdefbe49ba704bd879b73f2445e23ee10 + languageName: node + linkType: hard + +"eslint-utils@npm:^2.0.0, eslint-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "eslint-utils@npm:2.1.0" + dependencies: + eslint-visitor-keys: ^1.1.0 + checksum: a43892372a4205374982ac9d4c8edc5fe180cba76535ab9184c48f18a3d931b7ffdd6862cb2f8ca4305c47eface0e614e39884a75fbf169fcc55a6131af2ec48 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^1.1.0, eslint-visitor-keys@npm:^1.3.0": + version: 1.3.0 + resolution: "eslint-visitor-keys@npm:1.3.0" + checksum: 58ab7a0107621d8a0fe19142a5e1306fd527c0f36b65d5c79033639e80278d8060264804f42c56f68e5541c4cc83d9175f9143083774cec8222f6cd5a695306e + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^2.0.0": + version: 2.0.0 + resolution: "eslint-visitor-keys@npm:2.0.0" + checksum: 429dabdcab3c1cf5e65d44843afc513398d4ee32a37f93edc93bb5ba59a12b78fa67d87ff23c752c170b5e4f9085050f45b3c036cdfb23d40a724f2614048140 + languageName: node + linkType: hard + +"eslint@npm:^7.25.0": + version: 7.25.0 + resolution: "eslint@npm:7.25.0" + dependencies: + "@babel/code-frame": 7.12.11 + "@eslint/eslintrc": ^0.4.0 + ajv: ^6.10.0 + chalk: ^4.0.0 + cross-spawn: ^7.0.2 + debug: ^4.0.1 + doctrine: ^3.0.0 + enquirer: ^2.3.5 + eslint-scope: ^5.1.1 + eslint-utils: ^2.1.0 + eslint-visitor-keys: ^2.0.0 + espree: ^7.3.1 + esquery: ^1.4.0 + esutils: ^2.0.2 + file-entry-cache: ^6.0.1 + functional-red-black-tree: ^1.0.1 + glob-parent: ^5.0.0 + globals: ^13.6.0 + ignore: ^4.0.6 + import-fresh: ^3.0.0 + imurmurhash: ^0.1.4 + is-glob: ^4.0.0 + js-yaml: ^3.13.1 + json-stable-stringify-without-jsonify: ^1.0.1 + levn: ^0.4.1 + lodash: ^4.17.21 + minimatch: ^3.0.4 + natural-compare: ^1.4.0 + optionator: ^0.9.1 + progress: ^2.0.0 + regexpp: ^3.1.0 + semver: ^7.2.1 + strip-ansi: ^6.0.0 + strip-json-comments: ^3.1.0 + table: ^6.0.4 + text-table: ^0.2.0 + v8-compile-cache: ^2.0.3 + bin: + eslint: bin/eslint.js + checksum: 6e1782e2264ebf987504746ee82e996bf0ef2c29a2eaea869b54cb8aa1eaf10945b1d563618515e65ac934ca626f3609282127773f45868ad4a98744458a3c62 + languageName: node + linkType: hard + +"espree@npm:^7.3.0, espree@npm:^7.3.1": + version: 7.3.1 + resolution: "espree@npm:7.3.1" + dependencies: + acorn: ^7.4.0 + acorn-jsx: ^5.3.1 + eslint-visitor-keys: ^1.3.0 + checksum: ff8e0f73939e1e76529b630cba65b6128e4d18ed7bf0b16af62022cadc73ddb950c7e5aa629cca74e8abebdf76f6dcd1cf873dbc819f10599827c6019e2f8e91 + languageName: node + linkType: hard + +"esprima@npm:^4.0.0, esprima@npm:^4.0.1": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 5df45a3d9c95c36800d028ba76d8d4e04e199932b58c2939f462f859fd583e7d39b4a12d3f97986cf272a28a5fe5948ee6e49e36ef63f67b5b48d82a635c5081 + languageName: node + linkType: hard + +"esquery@npm:^1.4.0": + version: 1.4.0 + resolution: "esquery@npm:1.4.0" + dependencies: + estraverse: ^5.1.0 + checksum: 3293ecc1507a8cec8d2da8a4707275c2ccf5413e7a3c771fe41c16cee603cacd193bb7383a6e219d1f7d2449156ef575ffd66c839073d4a8058f72856a15f622 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: ^5.2.0 + checksum: 2c96302dd5c4e6d07154d0ce6baee9e829ebf77e21c50c5ca4f24d6d0006fe4a4582364624a01f5667a3633b3e39bbce1a8191924f8419fb71584bb45bf7bb81 + languageName: node + linkType: hard + +"estraverse@npm:^4.1.1, estraverse@npm:^4.2.0": + version: 4.3.0 + resolution: "estraverse@npm:4.3.0" + checksum: 1e4c627da9e9af07bf7b2817320f606841808fb2ec0cbd81097b30d5f90d8613288b3e523153babe04615d59b54ef876d98f0ca27488b6c0934dacd725a8d338 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.2.0 + resolution: "estraverse@npm:5.2.0" + checksum: 7dc1b027aebf937bab10c3254d9d73ed21672d7382518c9ddb9dc45560cb2f4e6548cc8ff1a07b7f431e94bd0fb0bf5da75b602e2473f966fea141c4c31b31d6 + languageName: node + linkType: hard + +"estree-walker@npm:^1.0.1": + version: 1.0.1 + resolution: "estree-walker@npm:1.0.1" + checksum: 85e7cee763e9125a7d8a947b3a06a8b9282873936df220dd0d791d9b3315e45e40ab096b43ba71bdc99140c11a6d23fdcf686642dc119a7b2d6181004fdb24d2 + languageName: node + linkType: hard + +"estree-walker@npm:^2.0.1": + version: 2.0.2 + resolution: "estree-walker@npm:2.0.2" + checksum: 378cc9d3be56962c5219c55ad1fde732cb7d55a11cde5acbf5995f39ddd0e98c1095a43c0ef15a520d1d6910e816bd3daff5fc5d7d38baaf8b12d5a2970df57c + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 590b04533177f8f6f0f352b3ac7da6c1c1e3d8375d8973972fba9c94558ca168685fd38319c3c6f4c37ba256df7494a7f15d8e761df1655af8a8f0027d988f8f + languageName: node + linkType: hard + +"eventemitter3@npm:^3.1.0": + version: 3.1.2 + resolution: "eventemitter3@npm:3.1.2" + checksum: fa1a206c4e4e8e427542f7fdfa10bd073a4ddf2510fb22e2f9a33b9aa7a0d5669bffba9b889e22d8c1c976af51a92dab274845e58d626ddb2d3563ed4d5d50dc + languageName: node + linkType: hard + +"exec-sh@npm:^0.3.2": + version: 0.3.4 + resolution: "exec-sh@npm:0.3.4" + checksum: cfdd8cbfde80cced18a9b6a361f531c9e99b9e5c0b010338dd1f20cb01aa480af21dc94932530bf07d51341807a79af897b5c31b86f8c2c8f42932e276c8089d + languageName: node + linkType: hard + +"execa@npm:^1.0.0": + version: 1.0.0 + resolution: "execa@npm:1.0.0" + dependencies: + cross-spawn: ^6.0.0 + get-stream: ^4.0.0 + is-stream: ^1.1.0 + npm-run-path: ^2.0.0 + p-finally: ^1.0.0 + signal-exit: ^3.0.0 + strip-eof: ^1.0.0 + checksum: 39714ea24e349403f9fc92b450f0e6823cdd4573e15b17c0fba6d95f2eecd46dc32624bbf15071d91e2c64a4402c74ce7a362671126964100ad34e2d6210adf9 + languageName: node + linkType: hard + +"execa@npm:^4.0.0, execa@npm:^4.1.0": + version: 4.1.0 + resolution: "execa@npm:4.1.0" + dependencies: + cross-spawn: ^7.0.0 + get-stream: ^5.0.0 + human-signals: ^1.1.1 + is-stream: ^2.0.0 + merge-stream: ^2.0.0 + npm-run-path: ^4.0.0 + onetime: ^5.1.0 + signal-exit: ^3.0.2 + strip-final-newline: ^2.0.0 + checksum: 79bd736acd63aa7c0afb32cc99af21cfd70db696580686c7cd56c177857b93b78bc0b9bb2b4410f377f46c71c566c8e723987e71ef0bc9b23791bfbced02f75c + languageName: node + linkType: hard + +"exit@npm:^0.1.2": + version: 0.1.2 + resolution: "exit@npm:0.1.2" + checksum: 64022f65df300964bb588a503ecbc582a2d2d4db12f777b64495e840274ec17a71099e5cdc06dc970aba9795d8bbb9ccb6ba016844fdbd6b74541f4fdb25f201 + languageName: node + linkType: hard + +"expand-brackets@npm:^2.1.4": + version: 2.1.4 + resolution: "expand-brackets@npm:2.1.4" + dependencies: + debug: ^2.3.3 + define-property: ^0.2.5 + extend-shallow: ^2.0.1 + posix-character-classes: ^0.1.0 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.1 + checksum: 9aadab00ff10da89d3bdbcb92fc48f152977e8f986b227955b17601cb7eb65a63c9b35811d78ce8ff534fc20faab759a043f0f1c71b904f5d37a35a074ff6fb0 + languageName: node + linkType: hard + +"expand-tilde@npm:^2.0.0, expand-tilde@npm:^2.0.2": + version: 2.0.2 + resolution: "expand-tilde@npm:2.0.2" + dependencies: + homedir-polyfill: ^1.0.1 + checksum: 502e8b04a22094575c68639e68e0a2c19ad23d78441e440e5164ad2f38bef05e4b2c2568acfcf4af37b90bbf49ea587c253753ba6d351229e5858b96cb136125 + languageName: node + linkType: hard + +"expect@npm:^26.6.2": + version: 26.6.2 + resolution: "expect@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + ansi-styles: ^4.0.0 + jest-get-type: ^26.3.0 + jest-matcher-utils: ^26.6.2 + jest-message-util: ^26.6.2 + jest-regex-util: ^26.0.0 + checksum: a4ec4cbafac8b05eb02a8af5f086dede84a3a701abbfdafeadca24a1d286bd07035b32b2864a6ff012a733009beb0b96c10469b40832c5ee0d2dd0bb6b50a5b0 + languageName: node + linkType: hard + +"ext@npm:^1.1.2": + version: 1.4.0 + resolution: "ext@npm:1.4.0" + dependencies: + type: ^2.0.0 + checksum: c94102371fecdee9f48d1acac2d0e49d49906af457c79d1d7cf1a0a14317ed3e4c99cd8a2e6f9a00e93d54306ee2872e2542edd0aa58bccc4fc72aa429ef215c + languageName: node + linkType: hard + +"extend-shallow@npm:^2.0.1": + version: 2.0.1 + resolution: "extend-shallow@npm:2.0.1" + dependencies: + is-extendable: ^0.1.0 + checksum: 03dbbba8b9711409442428f4e0f80a92f86862a4d2559fa9629dd7080e85cacc6311c84ebea8b22b5ff40d3ef6475bbf534f098b77b7624448276708e60fa248 + languageName: node + linkType: hard + +"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": + version: 3.0.2 + resolution: "extend-shallow@npm:3.0.2" + dependencies: + assign-symbols: ^1.0.0 + is-extendable: ^1.0.1 + checksum: 5301c5070b98bef2413524046c3478cdce1a6bc112b44af2d4bdbfca59daabad49eb04c14e55375963db45f4ef6f43530d71a2c1c862a72d08eb165c77a13767 + languageName: node + linkType: hard + +"extend@npm:^3.0.0, extend@npm:~3.0.2": + version: 3.0.2 + resolution: "extend@npm:3.0.2" + checksum: 1406da1f0c4b00b839497e4cdd0ec4303ce2ae349144b7c28064a5073c93ce8c08da4e8fb1bc5cb459ffcdff30a35fc0fe54344eb88320e70100c1baea6f195c + languageName: node + linkType: hard + +"extglob@npm:^2.0.4": + version: 2.0.4 + resolution: "extglob@npm:2.0.4" + dependencies: + array-unique: ^0.3.2 + define-property: ^1.0.0 + expand-brackets: ^2.1.4 + extend-shallow: ^2.0.1 + fragment-cache: ^0.2.1 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.1 + checksum: ce23be772ff536976902aa0193a6d167abad229ca40fb4c1de2fd71c0116eeae168a02f6508d41382eb918fcbafb66dba61d498754051964a167c98210c62b28 + languageName: node + linkType: hard + +"extsprintf@npm:1.3.0, extsprintf@npm:^1.2.0": + version: 1.3.0 + resolution: "extsprintf@npm:1.3.0" + checksum: 892efd56aa9b27cbfbca42ad0c59308633f66000e71d1fb19c6989ea7309b32f3ff281778871bd2ce9bc7f3ad02515aa2783cea0323d0f6ff840b7c6a6a4603e + languageName: node + linkType: hard + +"fancy-log@npm:^1.3.2": + version: 1.3.3 + resolution: "fancy-log@npm:1.3.3" + dependencies: + ansi-gray: ^0.1.1 + color-support: ^1.1.3 + parse-node-version: ^1.0.0 + time-stamp: ^1.0.0 + checksum: 41babd235d3627e577eff6e6a3ef637462094833d51ed026f71a5366b4f5cf4a69c4f0d79061f676662fcaddf997b32b49022b8ac2eedf3c737098f6d392bd07 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 451526766b219503131d11e823eaadd1533080b0be4860e316670b039dcaf31cd1007c2fe036a9b922abba7c040dfad5e942ed79d21f2ff849e50049f36e0fb7 + languageName: node + linkType: hard + +"fast-diff@npm:^1.1.2": + version: 1.2.0 + resolution: "fast-diff@npm:1.2.0" + checksum: 9c5407d9c4869407854fe8838b8d9d26065ca747c9b80697957ae37482e982e880de823efa2c97ea1cba05dc06fce853a005e7557d10550c64c052cf7021ba9e + languageName: node + linkType: hard + +"fast-glob@npm:^3.1.1": + version: 3.2.5 + resolution: "fast-glob@npm:3.2.5" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.0 + merge2: ^1.3.0 + micromatch: ^4.0.2 + picomatch: ^2.2.1 + checksum: 1a33c4a68d14cb2314c07a451689bc311bde87b09c525dd2064321165127a38a553457d121e2d3ecdd022374e3d53afb82cbb57f5694414d3406ce14ed6c0a1f + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 7df3fabfe445d65953b2d9d9d3958bd895438b215a40fb87dae8b2165c5169a897785eb5d51e6cf0eb03523af756e3d82ea01083f6ac6341fe16db532fee3016 + languageName: node + linkType: hard + +"fast-levenshtein@npm:^1.0.0": + version: 1.1.4 + resolution: "fast-levenshtein@npm:1.1.4" + checksum: cb08cd9e28c434ad7ee3e3853c795656e020cc803373c98437785162c6ec4bb49f6b6af14301e0275d63d249b121ed54647d19a1f7a753d98ee57c740db0d696 + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6, fast-levenshtein@npm:~2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: a2d03af3088b0397633e007fb3010ecfa4f91cae2116d2385653c59396a1b31467641afa672a79e6f82218518670dc144128378124e711e35dbf90bc82846f22 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.11.0 + resolution: "fastq@npm:1.11.0" + dependencies: + reusify: ^1.0.4 + checksum: 22822313d66aa7ef7fd392bf2da1cdf074dce902460bf73c0f0da6d58eb394ea8d74b8cce6c9466f5d659a51caeb732f4305cf8514ca8325490a4e3d873f5aa0 + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.0": + version: 2.0.1 + resolution: "fb-watchman@npm:2.0.1" + dependencies: + bser: 2.1.1 + checksum: f9ec24592a45026a6a7f54034a4b5efb010cac7d7fbc234fe9ae5d725c13efa9be0ded1ae348473fc42af4e28eea53f8b993857c0c49e6d721f7c9eb5b21217f + languageName: node + linkType: hard + +"figures@npm:^3.2.0": + version: 3.2.0 + resolution: "figures@npm:3.2.0" + dependencies: + escape-string-regexp: ^1.0.5 + checksum: 6c8acb1c17c4d27eeb6ff06801b5ae39a999c4794ec50eacf858a1e32746d92af77a9a907c3e1865e2e6ac7d9f1aa765f0f8a01a16a4676b79b6e90a7cc23f44 + languageName: node + linkType: hard + +"file-entry-cache@npm:^6.0.1": + version: 6.0.1 + resolution: "file-entry-cache@npm:6.0.1" + dependencies: + flat-cache: ^3.0.4 + checksum: af83a412143100405a995bb7d9a31982ebcfabe6c545dac2e787fc5580b2da74e253ef62968057fa5bbfaf0811a8b85623aeea776e16c77e3ce4c2488b0e4821 + languageName: node + linkType: hard + +"file-uri-to-path@npm:1.0.0": + version: 1.0.0 + resolution: "file-uri-to-path@npm:1.0.0" + checksum: 5ddb9682f04f6f87b7765b93306206db2f96bc86162487e27639c55fe3ffeed12c30906ef1dedaa5307d7cabbbbdcbfa299b79aaec435de0f17e17ab31bd20b3 + languageName: node + linkType: hard + +"fill-range@npm:^4.0.0": + version: 4.0.0 + resolution: "fill-range@npm:4.0.0" + dependencies: + extend-shallow: ^2.0.1 + is-number: ^3.0.0 + repeat-string: ^1.6.1 + to-regex-range: ^2.1.0 + checksum: 4a1491ee292f3d4a3d073c34cff0d7ba00dad8ad0de12d0a973c5aefb3f3f54971508cbc4b1c4923f6278b692b7695f9561086571fbee9f24cf3435ab92e8d50 + languageName: node + linkType: hard + +"fill-range@npm:^7.0.1": + version: 7.0.1 + resolution: "fill-range@npm:7.0.1" + dependencies: + to-regex-range: ^5.0.1 + checksum: efca43d59b487ad4bc0b2b1cb9e51617c75a7b0159db51fa190c75c3d634ea5fad1ff4750d7c14346add4cd065e3c46e8f99af333edf2b4ec2a424f87e491a85 + languageName: node + linkType: hard + +"find-cache-dir@npm:^3.3.1": + version: 3.3.1 + resolution: "find-cache-dir@npm:3.3.1" + dependencies: + commondir: ^1.0.1 + make-dir: ^3.0.2 + pkg-dir: ^4.1.0 + checksum: b1e23226ee89fba89646aa5f72d084c6d04bb64f6d523c9cb2d57a1b5280fcac39e92fd5be572e2fae8a83aa70bc5b797ce33a826b9a4b92373cc38e66d4aa64 + languageName: node + linkType: hard + +"find-up@npm:^1.0.0": + version: 1.1.2 + resolution: "find-up@npm:1.1.2" + dependencies: + path-exists: ^2.0.0 + pinkie-promise: ^2.0.0 + checksum: cc15a62434c3f7f499d2f8c956aeeace97a8e87ad52ad78e156bd52e9c2acafcaad729356b564d0d57150b48017d0d3165ba2e790546550b3de8b7db256b883b + languageName: node + linkType: hard + +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: ^3.0.0 + checksum: c5422fc7231820421cff6f6e3a5d00a11a79fd16625f2af779c6aedfbaad66764fd149c1b84017aa44e85f86395eb25c31188ad273fc468a981b529eaa59a424 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: ^5.0.0 + path-exists: ^4.0.0 + checksum: d612d28e02eaca6cd7128fc9bc9b456e2547a3f9875b2b2ae2dbdc6b8cec52bc2885efcb3ac6c18954e838f4c8e20565d196784b190e1d38565f9dc39aade722 + languageName: node + linkType: hard + +"findup-sync@npm:^2.0.0": + version: 2.0.0 + resolution: "findup-sync@npm:2.0.0" + dependencies: + detect-file: ^1.0.0 + is-glob: ^3.1.0 + micromatch: ^3.0.4 + resolve-dir: ^1.0.1 + checksum: 34497dd1f567e47124ddf5f7eba98f8cfaa5dd34f7253cb1d972d2205926dd8cbf385b57957acd72e61c2760dbd2e69a330a454449a85dfc5d1d0d7ebfbce9af + languageName: node + linkType: hard + +"findup-sync@npm:^3.0.0": + version: 3.0.0 + resolution: "findup-sync@npm:3.0.0" + dependencies: + detect-file: ^1.0.0 + is-glob: ^4.0.0 + micromatch: ^3.0.4 + resolve-dir: ^1.0.1 + checksum: be03bd98fc3f6666933b958e690b3913ac932496d55db13379de93657d86073c18ec53e7438ffe3adf98b606830c3d4645fae985e857645dd8a56983188abade + languageName: node + linkType: hard + +"fined@npm:^1.0.1": + version: 1.2.0 + resolution: "fined@npm:1.2.0" + dependencies: + expand-tilde: ^2.0.2 + is-plain-object: ^2.0.3 + object.defaults: ^1.1.0 + object.pick: ^1.2.0 + parse-filepath: ^1.0.1 + checksum: 1454ca2db0729a16b612b3339b313407be226112a541f5d4a4fdbe102c3088b021a94cfef07a309a32e10e5680f1d4cd30b192102533a89ddb9f4b8a000a023b + languageName: node + linkType: hard + +"flagged-respawn@npm:^1.0.0": + version: 1.0.1 + resolution: "flagged-respawn@npm:1.0.1" + checksum: a91d3ba48c0c17a0d8b99bf65172be8621a0637526e3425406c96deba91cd05a4a79a6b8029c2644f8448d31ad8ff0f8ef6dfc1d86c6f7a2600d79545417194d + languageName: node + linkType: hard + +"flat-cache@npm:^3.0.4": + version: 3.0.4 + resolution: "flat-cache@npm:3.0.4" + dependencies: + flatted: ^3.1.0 + rimraf: ^3.0.2 + checksum: 72d86ccdf840e70227168a20bb908db8bc382360f0b241efd4c2e5cf2d17a7d566c0849dc4c5d2e8e6d7838e052539dcc319f0cf295c0bb9f47b71844c1de78d + languageName: node + linkType: hard + +"flatted@npm:^3.1.0": + version: 3.1.1 + resolution: "flatted@npm:3.1.1" + checksum: 1065cd78294ea651b8c1b96c298a3e70893a23da655e2288e40c06d5d9b1ebce4bd977e604678e01065a92580f3de5078d60d9ee4cdcede9a9989859d7eb5057 + languageName: node + linkType: hard + +"flush-write-stream@npm:^1.0.2": + version: 1.1.1 + resolution: "flush-write-stream@npm:1.1.1" + dependencies: + inherits: ^2.0.3 + readable-stream: ^2.3.6 + checksum: b8fa1fbfadd5c4b6df3cf2c34b3c408fe508a2899c536bafa339f679de545689997e907bd4ff61dd292942f8044fb2f293a5956dd8b601f6a5601617842d0dda + languageName: node + linkType: hard + +"for-in@npm:^1.0.1, for-in@npm:^1.0.2": + version: 1.0.2 + resolution: "for-in@npm:1.0.2" + checksum: e8d7280a654216e9951103e407d1655c2dfa67178ad468cb0b35701df6b594809ccdc66671b3478660d0e6c4bca9d038b1f1fc032716a184c19d67319550c554 + languageName: node + linkType: hard + +"for-own@npm:^1.0.0": + version: 1.0.0 + resolution: "for-own@npm:1.0.0" + dependencies: + for-in: ^1.0.1 + checksum: 7d7a5a1496e39d1a339726c553da031b1d92a6bfa44b24061ffc31a16c1bb5b04f54f468c14d1ca359b310ce9bebaff55e8210d32318f273f1428136923cdb95 + languageName: node + linkType: hard + +"forever-agent@npm:~0.6.1": + version: 0.6.1 + resolution: "forever-agent@npm:0.6.1" + checksum: 9cc0054dd4ea5fc26e014b8c929d1fb9247e931e81165cbd965a712061d65fb84791b2124f64cd79492e516662b94068d29fe1d824732382237321b3f61955fe + languageName: node + linkType: hard + +"form-data@npm:~2.3.2": + version: 2.3.3 + resolution: "form-data@npm:2.3.3" + dependencies: + asynckit: ^0.4.0 + combined-stream: ^1.0.6 + mime-types: ^2.1.12 + checksum: 862e686b105634222db77138d5f5ae08ba85f88c04925de5be86b2b9d03cf671d86566ad10f1dd5217634c0f1634069dfc1a663a1cc13e8fbac0ce8f670ad070 + languageName: node + linkType: hard + +"fragment-cache@npm:^0.2.1": + version: 0.2.1 + resolution: "fragment-cache@npm:0.2.1" + dependencies: + map-cache: ^0.2.2 + checksum: f88983f4bf54f9a8847d15e54518535aecbfa9b7f0242604ca5cd027d88ea1469212b5dbb579233e769d0e2f4e6764bc6bbac44731fb78b9964942165c7c3048 + languageName: node + linkType: hard + +"fs-extra@npm:8.1.0": + version: 8.1.0 + resolution: "fs-extra@npm:8.1.0" + dependencies: + graceful-fs: ^4.2.0 + jsonfile: ^4.0.0 + universalify: ^0.1.0 + checksum: 056a96d4f55ab8728b021e251175a4a6440d1edb5845e6c2e8e010019bde3e63de188a0eb99386c21c71804ca1a571cd6e08f507971f10a2bc4f4f7667720fa4 + languageName: node + linkType: hard + +"fs-extra@npm:^9.1.0": + version: 9.1.0 + resolution: "fs-extra@npm:9.1.0" + dependencies: + at-least-node: ^1.0.0 + graceful-fs: ^4.2.0 + jsonfile: ^6.0.1 + universalify: ^2.0.0 + checksum: e667d8df54113b527bf5830dd9db8f142618db488894b329fe07724c7020dfacf8a372b144a74e683ae44e66f56117adca9cac165950dda7d83537c46c10dc4b + languageName: node + linkType: hard + +"fs-minipass@npm:^2.0.0": + version: 2.1.0 + resolution: "fs-minipass@npm:2.1.0" + dependencies: + minipass: ^3.0.0 + checksum: e14a490658621cf1f7d8cbf9e92a9cc4dc7ce050418e4817e877e4531c438223db79f7a1774668087428d665a3de95f87014ce36c8afdc841fea42bcb782abcb + languageName: node + linkType: hard + +"fs-mkdirp-stream@npm:^1.0.0": + version: 1.0.0 + resolution: "fs-mkdirp-stream@npm:1.0.0" + dependencies: + graceful-fs: ^4.1.11 + through2: ^2.0.3 + checksum: a432e19f94af5eefa6a5268ada83994caf94b4ba4898116261ce541c8680858144e23258cb6239aa49a991f94f51e07411e9b2612df1e6ea1f41be094e3e1f67 + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 698a91b1695e3926185c9e5b0dd57cf687dceb4eb73799af91e6b2ab741735e2962c366c5af6403ffddae2619914193bd339efa706fdc984d0ffc74b7a3603f4 + languageName: node + linkType: hard + +fsevents@^1.2.7: + version: 1.2.13 + resolution: "fsevents@npm:1.2.13" + dependencies: + bindings: ^1.5.0 + nan: ^2.12.1 + checksum: e70509558b5f49ce9dfacb8f9e2848c6e6751a61966027789561145a9c4ae9ba4c6b28b531bc8b4ae52fdd2d4c90a3bf314e6794717e51838b27910bb41ce588 + languageName: node + linkType: hard + +"fsevents@^2.1.2, fsevents@~2.3.1": + version: 2.3.2 + resolution: "fsevents@npm:2.3.2" + dependencies: + node-gyp: latest + checksum: a1883f4ca12b8b403ec528f1a4cb312b0877eacd24719da535cabea78d6fdd78530e3538bdba590a1c0f6c295128f964a89182621885296353a44dcfa4f9db53 + languageName: node + linkType: hard + +"fsevents@patch:fsevents@^1.2.7#builtin": + version: 1.2.13 + resolution: "fsevents@patch:fsevents@npm%3A1.2.13#builtin::version=1.2.13&hash=11e9ea" + dependencies: + bindings: ^1.5.0 + nan: ^2.12.1 + checksum: 7bc048c164eb72f91b18ba7cd2ba30679a0afe57e9cd6352eac4bdbc4ddd4ca2ea98674d0bd3a80e96427469adc433c13532494b36aea40fceab36e198982182 + languageName: node + linkType: hard + +"fsevents@patch:fsevents@^2.1.2#builtin, fsevents@patch:fsevents@~2.3.1#builtin": + version: 2.3.2 + resolution: "fsevents@patch:fsevents@npm%3A2.3.2#builtin::version=2.3.2&hash=11e9ea" + dependencies: + node-gyp: latest + checksum: 7b25d9251aefe433d508a0eb614217f0495ae05a9e8af15f7dbf9998e08c4e675acd1cf32361e0fcf71d917d9e8c4b76301fdc72a1ec1105a3ea0994f5e15a8d + languageName: node + linkType: hard + +"fstream@npm:^1.0.0, fstream@npm:^1.0.12": + version: 1.0.12 + resolution: "fstream@npm:1.0.12" + dependencies: + graceful-fs: ^4.1.2 + inherits: ~2.0.0 + mkdirp: ">=0.5 0" + rimraf: 2 + checksum: 61c76d2c8d702d0233efb1bdaaff49486d2ac523562167f9900151936ce229a6fc96f04236feeb3cb88ce65660c665781ad080d5f06c115f0987c9c27db9fb9d + languageName: node + linkType: hard + +"function-bind@npm:^1.1.1": + version: 1.1.1 + resolution: "function-bind@npm:1.1.1" + checksum: ffad86e7d2010ba179aaa6a3987d2cc0ed48fa92d27f1ed84bfa06d14f77deeed5bfbae7f00bdebc0c54218392cab2b18ecc080e2c72f592431927b87a27d42b + languageName: node + linkType: hard + +"functional-red-black-tree@npm:^1.0.1": + version: 1.0.1 + resolution: "functional-red-black-tree@npm:1.0.1" + checksum: 477ecaf62d4f8d788876099b35ed4b97586b331e729d2d28d0df96b598863d21c18b8a45a6cbecb6c2bf7f5e5ef1e82a053570583ef9a0ff8336683ab42b8d14 + languageName: node + linkType: hard + +"gauge@npm:~2.7.3": + version: 2.7.4 + resolution: "gauge@npm:2.7.4" + dependencies: + aproba: ^1.0.3 + console-control-strings: ^1.0.0 + has-unicode: ^2.0.0 + object-assign: ^4.1.0 + signal-exit: ^3.0.0 + string-width: ^1.0.1 + strip-ansi: ^3.0.1 + wide-align: ^1.1.0 + checksum: b136dbeb8e40acaaddab6c71c9f34d3c9aa104efc538c8c0ddcd74b25efb8daeb8dca24a9b30626b477d66beccd3dee8dd31e25eb4c7c97ec58a3f1a82914be1 + languageName: node + linkType: hard + +"gaze@npm:^1.0.0": + version: 1.1.3 + resolution: "gaze@npm:1.1.3" + dependencies: + globule: ^1.0.0 + checksum: 3613f9c407274ee5165960341973e0bf96630f6c9395871bd1fad714e7e68df55b4f60b568a13b189d87e14f30172cf6da22261cf4f7c99ca74f56f88f8cf18b + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: d523437689c97b3aba9c5cdeca4677d5fff9a29d620db693fea40d852bad63563110f16979d0170248439dbcd2ecee0780fb2533d3f0519f019081aa10767c60 + languageName: node + linkType: hard + +"get-caller-file@npm:^1.0.1": + version: 1.0.3 + resolution: "get-caller-file@npm:1.0.3" + checksum: 282a3d15e79c44203873a8d5c7d8492af9e6b2c0aeccfaf63f0a853916ece9d4456e12d92c1efad01b5f8c73188a1c4d6fe8b68d4c899b753a1810ac841f6672 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 9dd9e1e2591039ee4c38c897365b904f66f1e650a8c1cb7b7db8ce667fa63e88cc8b13282b74df9d93de481114b3304a0487880d31cd926dfda6efe71455855d + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.0.2": + version: 1.1.1 + resolution: "get-intrinsic@npm:1.1.1" + dependencies: + function-bind: ^1.1.1 + has: ^1.0.3 + has-symbols: ^1.0.1 + checksum: acf1506f25a32a194cfc5c19d33835756080d970eb6e29a8a3852380106df981acef7bb9ac2002689437235221f24bcbdc1e3532b9bcacd7ff3621091fafe607 + languageName: node + linkType: hard + +"get-own-enumerable-property-symbols@npm:^3.0.0": + version: 3.0.2 + resolution: "get-own-enumerable-property-symbols@npm:3.0.2" + checksum: 23f13946c768d9803a8e072ba13a4250528ced6bd5af4b4b31306eb197281f01a6426936b24b16725ff0e55f9097475296e4bcdb6d33455989683c3d385079ce + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: a5b8beaf68d8bcdb507e23b3d2b6458e54b9061e84e2a8a94b846c8e1d794beb47fdcbda895da16ae59225bb3ea1608c0719e4f986e8a987ec2f228eaf00d78b + languageName: node + linkType: hard + +"get-stdin@npm:^4.0.1": + version: 4.0.1 + resolution: "get-stdin@npm:4.0.1" + checksum: ba122b05691e29aa1c93f9dfe76671c23b311e5f299c4205c030c00a656045fcf56d2bb5a924b6cd576f278563643b6689b50aa54fc87abcdc2e6e8eda09920e + languageName: node + linkType: hard + +"get-stream@npm:^4.0.0": + version: 4.1.0 + resolution: "get-stream@npm:4.1.0" + dependencies: + pump: ^3.0.0 + checksum: f41bb3c74de09d1dbe1e9d0b6d12520875d99b7ecd32c71ee21eea26d32ca74110e2406922ca64ed8cd6f10076c5f59e4fd128f10cc292eae3b669379e5f18ed + languageName: node + linkType: hard + +"get-stream@npm:^5.0.0": + version: 5.2.0 + resolution: "get-stream@npm:5.2.0" + dependencies: + pump: ^3.0.0 + checksum: c71c5625f4573a33823371da253b4183df6bdb28cb678d03bab9b5f91626d92d6f3f5ae2404c5efdc1248fbb82204e4dae4283c7ff3cc14e505754f9f748f217 + languageName: node + linkType: hard + +"get-value@npm:^2.0.3, get-value@npm:^2.0.6": + version: 2.0.6 + resolution: "get-value@npm:2.0.6" + checksum: f08da3262718e0f2617703cc99ecd0ddb4cca1541b0022118f898824c99157778e044c802160688dc184b17e5a894d11c5771aaadc376c68cdf66bdbc25ff865 + languageName: node + linkType: hard + +"getpass@npm:^0.1.1": + version: 0.1.7 + resolution: "getpass@npm:0.1.7" + dependencies: + assert-plus: ^1.0.0 + checksum: 2650725bc6939616da8432e5351ca87d8b29421bb8dc19c21bad2c37cd337d2a50d36fcc398ce0c16a075f6079afe114131780dca7e2f4b96063e53e7d28fd7a + languageName: node + linkType: hard + +"glob-parent@npm:^3.1.0": + version: 3.1.0 + resolution: "glob-parent@npm:3.1.0" + dependencies: + is-glob: ^3.1.0 + path-dirname: ^1.0.0 + checksum: 2827ec4405295b660d5ec3e400d84d548a22fc38c3de8fb4586258248bb24afc4515f377935fd80b8397debeb56ffe0d2f4e91233e3a1377fe0d1ddbceb605fc + languageName: node + linkType: hard + +"glob-parent@npm:^5.0.0, glob-parent@npm:^5.1.0": + version: 5.1.1 + resolution: "glob-parent@npm:5.1.1" + dependencies: + is-glob: ^4.0.1 + checksum: 2af6e196fba4071fb07ba261366e446ba2b320e6db0a2069cf8e12117c5811abc6721f08546148048882d01120df47e56aa5a965517a6e5ba19bfeb792655119 + languageName: node + linkType: hard + +"glob-stream@npm:^6.1.0": + version: 6.1.0 + resolution: "glob-stream@npm:6.1.0" + dependencies: + extend: ^3.0.0 + glob: ^7.1.1 + glob-parent: ^3.1.0 + is-negated-glob: ^1.0.0 + ordered-read-streams: ^1.0.0 + pumpify: ^1.3.5 + readable-stream: ^2.1.5 + remove-trailing-separator: ^1.0.1 + to-absolute-glob: ^2.0.0 + unique-stream: ^2.0.2 + checksum: b453b3da5a4507722597cfaf0b93756caa09cc8d7cdd13aabce04104804dc5b010afc93d72bcbd87b2f3f8f600e953a42bb2ebdeeb62586eba016fc9961b86b7 + languageName: node + linkType: hard + +"glob-watcher@npm:^5.0.3": + version: 5.0.5 + resolution: "glob-watcher@npm:5.0.5" + dependencies: + anymatch: ^2.0.0 + async-done: ^1.2.0 + chokidar: ^2.0.0 + is-negated-glob: ^1.0.0 + just-debounce: ^1.0.0 + normalize-path: ^3.0.0 + object.defaults: ^1.1.0 + checksum: 0d1e529fbce75d6c0b32e4872c82cd927f9ad4a5750455f1467530344e6a718e32eef2339323e23cf4a1aceb90fb582f5444ef6a43dabfdaba8d0c06fe2a4518 + languageName: node + linkType: hard + +"glob@npm:^7.0.0, glob@npm:^7.0.3, glob@npm:^7.1.1, glob@npm:^7.1.2, glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:~7.1.1": + version: 7.1.6 + resolution: "glob@npm:7.1.6" + dependencies: + fs.realpath: ^1.0.0 + inflight: ^1.0.4 + inherits: 2 + minimatch: ^3.0.4 + once: ^1.3.0 + path-is-absolute: ^1.0.0 + checksum: 789977b52432865bd63846da5c75a6efc2c56abdc0cb5ffcdb8e91eeb67a58fa5594c1195d18b2b4aff99675b0739ed6bd61024b26562e0cca18c8f993efdc82 + languageName: node + linkType: hard + +"global-modules@npm:^1.0.0": + version: 1.0.0 + resolution: "global-modules@npm:1.0.0" + dependencies: + global-prefix: ^1.0.1 + is-windows: ^1.0.1 + resolve-dir: ^1.0.0 + checksum: 89fb699eee43823ce94e2dbcb5f7607e1de4f3e37b897a65b59720fa7284424b5f94b67f449a5f259e7a96e2bf851a1582ec31deb7f89b5336c9318ed95fcfe8 + languageName: node + linkType: hard + +"global-prefix@npm:^1.0.1": + version: 1.0.2 + resolution: "global-prefix@npm:1.0.2" + dependencies: + expand-tilde: ^2.0.2 + homedir-polyfill: ^1.0.1 + ini: ^1.3.4 + is-windows: ^1.0.1 + which: ^1.2.14 + checksum: 2353fc9bf5c3b688164356c08843b3f9cae6300836071d1250c06c70a0aa13ed643c5711399ec4a2027899977f1423f4d24e81e01a1da4c5239c4e195d80b024 + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 2563d3306a7e646fd9ec484b0ca29bf8847d9dc6ebbe86026f11e31bda04f420f6536c2decbd4cb96350379801d2cce352ab373c40be8b024324775b31f882f9 + languageName: node + linkType: hard + +"globals@npm:^12.1.0": + version: 12.4.0 + resolution: "globals@npm:12.4.0" + dependencies: + type-fest: ^0.8.1 + checksum: 0b9764bdeab0bc9762dea8954a0d4c5db029420bd8bf693df9098ce7e045ccaf9b2d259185396fd048b051d42fdc8dc7ab02af62e3dbeb2324a78a05aac8d33c + languageName: node + linkType: hard + +"globals@npm:^13.6.0": + version: 13.6.0 + resolution: "globals@npm:13.6.0" + dependencies: + type-fest: ^0.20.2 + checksum: 0322d9c1b210be233060aa79592bc65c45572237be8dbedabf830dbd70120ac21f8721309a396782463e60c4cc0b92a6476a348b4b13e481f35e361195328b8e + languageName: node + linkType: hard + +"globby@npm:^11.0.1": + version: 11.0.2 + resolution: "globby@npm:11.0.2" + dependencies: + array-union: ^2.1.0 + dir-glob: ^3.0.1 + fast-glob: ^3.1.1 + ignore: ^5.1.4 + merge2: ^1.3.0 + slash: ^3.0.0 + checksum: d23f2a6b8897b97fb27422cde243e0fd406ebbaa821929293b27c977d169884f8112494cda4f456a51d0ec1e133e3ac703ec24bfed484e327305ea34a665eb06 + languageName: node + linkType: hard + +"globule@npm:^1.0.0": + version: 1.3.2 + resolution: "globule@npm:1.3.2" + dependencies: + glob: ~7.1.1 + lodash: ~4.17.10 + minimatch: ~3.0.2 + checksum: c4f8d628b1781c57ea2fcea34ed1b2ad6eff0afc267117d42c6c80e391855d6610ac5a67deae5ce73e885b3082ec0a844d1478cd3d5999a66803980a3a51e066 + languageName: node + linkType: hard + +"glogg@npm:^1.0.0": + version: 1.0.2 + resolution: "glogg@npm:1.0.2" + dependencies: + sparkles: ^1.0.0 + checksum: f4769ac0306a129d465b8d8ab84ead9c3b5c0beac81406184f6fdd7ec6832a81ffd5487b8bb0ce8787945b7f44ae5eab85c027e0abbfb353bff3ad06c838b257 + languageName: node + linkType: hard + +"graceful-fs@npm:^4.0.0, graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.3, graceful-fs@npm:^4.2.4": + version: 4.2.6 + resolution: "graceful-fs@npm:4.2.6" + checksum: 84d39c7756892553da990a9db7e45f844b3309b37b5a00174cbb4748476f2250c54f24594d4d252f64f085c65c2fdac7c809419bf6d55f0e6e42eb07ac0f5bf2 + languageName: node + linkType: hard + +"growly@npm:^1.3.0": + version: 1.3.0 + resolution: "growly@npm:1.3.0" + checksum: c87f7e8c785cac6ee60719c9d62f7d790a85dafa13d62c4667664e3a21ee771f5fd19df3f374d2f7bdf297b8f687cf70e19bb066aba4832e6f6caa5190812578 + languageName: node + linkType: hard + +"gulp-cli@npm:^2.2.0": + version: 2.3.0 + resolution: "gulp-cli@npm:2.3.0" + dependencies: + ansi-colors: ^1.0.1 + archy: ^1.0.0 + array-sort: ^1.0.0 + color-support: ^1.1.3 + concat-stream: ^1.6.0 + copy-props: ^2.0.1 + fancy-log: ^1.3.2 + gulplog: ^1.0.0 + interpret: ^1.4.0 + isobject: ^3.0.1 + liftoff: ^3.1.0 + matchdep: ^2.0.0 + mute-stdout: ^1.0.0 + pretty-hrtime: ^1.0.0 + replace-homedir: ^1.0.0 + semver-greatest-satisfied-range: ^1.1.0 + v8flags: ^3.2.0 + yargs: ^7.1.0 + bin: + gulp: bin/gulp.js + checksum: e18372ad74653054a9cabb849824894a9d4cb554683d99cc258b4aee0296d7d5870d33ab86aa3cd6a5d74b73e76886d7f71e1f80f467a797dd2439a120ef49e3 + languageName: node + linkType: hard + +"gulp-sass@npm:^4.1.0": + version: 4.1.0 + resolution: "gulp-sass@npm:4.1.0" + dependencies: + chalk: ^2.3.0 + lodash: ^4.17.11 + node-sass: ^4.8.3 + plugin-error: ^1.0.1 + replace-ext: ^1.0.0 + strip-ansi: ^4.0.0 + through2: ^2.0.0 + vinyl-sourcemaps-apply: ^0.2.0 + checksum: 667fa0f9aca0ceb151ae3ea406df4dd2df7d0693963ca5de4c11ea593371b11e2acbf6199ad18295f99727cdf498ffeb29a734569fc71a3c821e8f92857316f1 + languageName: node + linkType: hard + +"gulp@npm:^4.0.2": + version: 4.0.2 + resolution: "gulp@npm:4.0.2" + dependencies: + glob-watcher: ^5.0.3 + gulp-cli: ^2.2.0 + undertaker: ^1.2.1 + vinyl-fs: ^3.0.0 + bin: + gulp: ./bin/gulp.js + checksum: e5bcf52e219129565b3bf83186d4d5db6dc2c68784166c2961a4528b077d45c0a89ccec72bd46c7cb34cdb9b963f053a126e2f849ca425a4f8693cba84497662 + languageName: node + linkType: hard + +"gulplog@npm:^1.0.0": + version: 1.0.0 + resolution: "gulplog@npm:1.0.0" + dependencies: + glogg: ^1.0.0 + checksum: f607258658d8bc1b5ef4deb369c2c2371ce46be5e9c983d2f6c9ef90457a3856f0b605062471cc326e738451942c76532770b98003b63a38d23c75c51b7fd5b8 + languageName: node + linkType: hard + +"handlebars@npm:4.7.6": + version: 4.7.6 + resolution: "handlebars@npm:4.7.6" + dependencies: + minimist: ^1.2.5 + neo-async: ^2.6.0 + source-map: ^0.6.1 + uglify-js: ^3.1.4 + wordwrap: ^1.0.0 + dependenciesMeta: + uglify-js: + optional: true + bin: + handlebars: bin/handlebars + checksum: 50276715da3e410f1d485635029b77e09b8c9244d9e49119d5f39ed978a3d44ce94f5d6120efeb707da0ba9dd0cddf140d8d2ac160721d93aa9f4234474ad318 + languageName: node + linkType: hard + +"har-schema@npm:^2.0.0": + version: 2.0.0 + resolution: "har-schema@npm:2.0.0" + checksum: e27ac33a968b8a3b2cc32e53afaec8aa795d08b058ef9b09b3bbce74db7ecadcabf60a6186e3bb901335d2c72bbf9e2af59429d736b5e80dc0edf18b3e1c5860 + languageName: node + linkType: hard + +"har-validator@npm:~5.1.3": + version: 5.1.5 + resolution: "har-validator@npm:5.1.5" + dependencies: + ajv: ^6.12.3 + har-schema: ^2.0.0 + checksum: 01b905cdaa7632c926a962c8127a77b98387935ef3aa0b44dae871eae2592ba6da948a3bdbb3eeceb90fa1599300f16716e50147965a7ea7c4e7c4e57ac69727 + languageName: node + linkType: hard + +"has-ansi@npm:^2.0.0": + version: 2.0.0 + resolution: "has-ansi@npm:2.0.0" + dependencies: + ansi-regex: ^2.0.0 + checksum: c6805f5d01ced45ba247ff2b8c914f401e70aa9086552d8eafbdf6bc0b0e38ea4a3bf1a387d100ff5f07e5854bca96532a01777820a16be2cdf8cf6582091bad + languageName: node + linkType: hard + +"has-flag@npm:^3.0.0": + version: 3.0.0 + resolution: "has-flag@npm:3.0.0" + checksum: 63aade480d27aeedb3b5b63a2e069d47d0006bf182338d662e7941cdc024e68a28418e0efa8dc5df30db9c4ee2407f39e6ea3f16cfbc6b83848b450826a28aa0 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 2e5391139d3d287231ccb58659702392f6e3abeac3296fb4721afaff46493f3d9b99a9329ae015dfe973aa206ed5c75f43e86aec0267dce79aa5c2b6e811b3ad + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.1": + version: 1.0.1 + resolution: "has-symbols@npm:1.0.1" + checksum: 84e2a03ada6f530f0c1ebea64df5932556ac20a4b78998f1f2b5dd0cf736843e8082c488b0ea7f08b9aec72fb6d8b736beed2fd62fac60dcaebfdc0b8d2aa7ac + languageName: node + linkType: hard + +"has-unicode@npm:^2.0.0": + version: 2.0.1 + resolution: "has-unicode@npm:2.0.1" + checksum: ed3719f95cbd7dada9e3fde6fad113eae6d317bc8e818a2350954914c098ca6eddb203261af2c291c49a14c52f83610becbc7ab8d569bee81261b9c260a435f2 + languageName: node + linkType: hard + +"has-value@npm:^0.3.1": + version: 0.3.1 + resolution: "has-value@npm:0.3.1" + dependencies: + get-value: ^2.0.3 + has-values: ^0.1.4 + isobject: ^2.0.0 + checksum: d78fab4523ad531894a84d840e00ac8041e5958e44a418c56517ac62436b7c827154ab79748b4b7f6aa1358cd7d74f888be52744115c56e6acedc7cb5523e213 + languageName: node + linkType: hard + +"has-value@npm:^1.0.0": + version: 1.0.0 + resolution: "has-value@npm:1.0.0" + dependencies: + get-value: ^2.0.6 + has-values: ^1.0.0 + isobject: ^3.0.0 + checksum: e05422bce9a522e79332cba48ec7c01fb4c4b04b0d030417fdc9e2ea53508479d7efcb3184d4f7a5cf5070a99043836f18962bab25c728362d2abc29ec18b574 + languageName: node + linkType: hard + +"has-values@npm:^0.1.4": + version: 0.1.4 + resolution: "has-values@npm:0.1.4" + checksum: df7ac830e460d399b181203c12cacaeaa1dcf0febceeed78fcfa0a6354879aa6c64c6b1ec049ce1c850a9b545d7a85fecc71741a5b743e0ad5dbd3e9928adff6 + languageName: node + linkType: hard + +"has-values@npm:^1.0.0": + version: 1.0.0 + resolution: "has-values@npm:1.0.0" + dependencies: + is-number: ^3.0.0 + kind-of: ^4.0.0 + checksum: b69c45d5132bc29d54a9a28e5ee53a35ab4109f3335a035c37e3511fe94234e848169e2e7d583f4fa889a92646f3018287361d47d9f636c0e2880c0856c79a58 + languageName: node + linkType: hard + +"has@npm:^1.0.3": + version: 1.0.3 + resolution: "has@npm:1.0.3" + dependencies: + function-bind: ^1.1.1 + checksum: c686e15300d41364486c099a9259d9c418022c294244843dcd712c4c286ff839d4f23a25413baa28c4d2c1e828afc2aaab70f685400b391533980223c71fa1ca + languageName: node + linkType: hard + +"homedir-polyfill@npm:^1.0.1": + version: 1.0.3 + resolution: "homedir-polyfill@npm:1.0.3" + dependencies: + parse-passwd: ^1.0.0 + checksum: 86a4e544cac858c31bb776d65a6aebbd84efddd98a5b4ebc65846d86b6161083b52fee059b8f809e9593537d10c9aabb381906305a0ee4a52f2625d0339b015f + languageName: node + linkType: hard + +"hosted-git-info@npm:^2.1.4": + version: 2.8.8 + resolution: "hosted-git-info@npm:2.8.8" + checksum: 3ecc389dc6ecbd5463fada7e04461e96f3c817fe2f989ca41e9dd3b503745a0bfa26fba405861b2831ca64edc1abc5d2fbc97ee977303f89650dac4fbfdc2d7a + languageName: node + linkType: hard + +"html-encoding-sniffer@npm:^2.0.1": + version: 2.0.1 + resolution: "html-encoding-sniffer@npm:2.0.1" + dependencies: + whatwg-encoding: ^1.0.5 + checksum: 6f49e83a2e9225ba92c4586701cd21c0cf26c4c1f1a5f330a911c90a792649cc47b5bb3e67e78ba23dfa6b5b9c70af34231f44729b173d52b4ba305467b39042 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: a216ae96fa647155ce31ebf14e45b602eb84ab7b4a99d329d85d855d8a74d54c0c4146ac7eb4ada2761d3e22c067e73d6c66b54faefee37229ac025cfc97a513 + languageName: node + linkType: hard + +"http-signature@npm:~1.2.0": + version: 1.2.0 + resolution: "http-signature@npm:1.2.0" + dependencies: + assert-plus: ^1.0.0 + jsprim: ^1.2.2 + sshpk: ^1.7.0 + checksum: d28227eed37cb0dae0e76c46b2a5e611c678808433e5642238f17dba7f2c9c8f8d1646122d57ec1a110ecc7e8b9f5b7aa0462f1e2a5fa3b41f2fca5a69af7edf + languageName: node + linkType: hard + +"human-signals@npm:^1.1.1": + version: 1.1.1 + resolution: "human-signals@npm:1.1.1" + checksum: cac115f635090055427bbd9d066781b17de3a2d8bbf839d920ae2fa52c3eab4efc63b4c8abc10e9a8b979233fa932c43a83a48864003a8c684ed9fb78135dd45 + languageName: node + linkType: hard + +"husky@npm:^5.2.0": + version: 5.2.0 + resolution: "husky@npm:5.2.0" + bin: + husky: lib/bin.js + checksum: a5a99bea465dbb8499e93d50eb632cc95ffea8cec3662c483af6587f4a5adcff8e5384cf9e1ff7275b2e3bff34f61404d60a7aa0e846c5b08f044ddeca7db688 + languageName: node + linkType: hard + +"iconv-lite@npm:0.4.24": + version: 0.4.24 + resolution: "iconv-lite@npm:0.4.24" + dependencies: + safer-buffer: ">= 2.1.2 < 3" + checksum: a9b9521066ee81853a8561e92bd7240bc5d3b7d5ef7da807a475e7858b0246e318b6af518c30a20a8749ef5eafeaa9631079446e4e696c7b60f468b34dc2cbfc + languageName: node + linkType: hard + +"ignore@npm:^4.0.6": + version: 4.0.6 + resolution: "ignore@npm:4.0.6" + checksum: 8f7b7f7c261d110604aed4340771933b0a42ffd2075e87bf8b4229ceb679659c5384c99e25c059f53a2b0e16cebaa4c49f7e837d1f374d1abf91fea46ccddd1a + languageName: node + linkType: hard + +"ignore@npm:^5.1.4": + version: 5.1.8 + resolution: "ignore@npm:5.1.8" + checksum: b08e3d5b5d94eca13475f29a5d47d221060e9cdd7e38d7647088e29d90130669a970fecbc4cdb41b8fa295c6673740c729d3dc05dadc381f593efb42282cbf9f + languageName: node + linkType: hard + +"import-fresh@npm:^3.0.0, import-fresh@npm:^3.2.1": + version: 3.3.0 + resolution: "import-fresh@npm:3.3.0" + dependencies: + parent-module: ^1.0.0 + resolve-from: ^4.0.0 + checksum: 3ff624f00140850a2878eb7630d635daaad556cfa5a0e23191e9b65ab4fec8cc23f929f03bc9b3c4251b497a434f459bf3e7a8aa547a400ad140f431a1b0e4d6 + languageName: node + linkType: hard + +"import-local@npm:^3.0.2": + version: 3.0.2 + resolution: "import-local@npm:3.0.2" + dependencies: + pkg-dir: ^4.2.0 + resolve-cwd: ^3.0.0 + bin: + import-local-fixture: fixtures/cli.js + checksum: 9ba5f1697b8b11aae8dab7964bf1c2409ed5dc51dd03fe8698fb32df04a3a683adbe9d95e6bb963a384373ec8d055c508f0c534b45aac1de4a3b4b653e6cfe82 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 34d414d789286f6ef4d2b954c76c7df40dd7cabffef9b9959c8bd148677e98151f4fa5344aae2e3ad2b62308555ccbba3022e535a3e24288c9babb1308e35532 + languageName: node + linkType: hard + +"in-publish@npm:^2.0.0": + version: 2.0.1 + resolution: "in-publish@npm:2.0.1" + bin: + in-install: in-install.js + in-publish: in-publish.js + not-in-install: not-in-install.js + not-in-publish: not-in-publish.js + checksum: 8d2296b25310b5288e7f3921354cdc58f55a1e2c75c261b2ca04faf7fd20f77f221c0885592135bf595e9bf4245a3cf493b85d192f61e295a0ae44eb7c7989db + languageName: node + linkType: hard + +"indent-string@npm:^2.1.0": + version: 2.1.0 + resolution: "indent-string@npm:2.1.0" + dependencies: + repeating: ^2.0.0 + checksum: 5c6bc6548e7c65c6f69c50a6cee286c4093e0d5a43cebaf4dae5b2acc321455dde8d80c421c9a14920ad44743a56bbe87082b1a619cd829477ab8da34dec1b59 + languageName: node + linkType: hard + +"indent-string@npm:^4.0.0": + version: 4.0.0 + resolution: "indent-string@npm:4.0.0" + checksum: 3e54996c6e15ca00a7a4403be705bce4fb3bb4ac637da2e1473006e42a651863f53bfb8c3438c1b3aac77817768ac0cde0e7b7a81a6cf24a1286227a06510dbf + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: ^1.3.0 + wrappy: 1 + checksum: 17c53fc42cbe7f7f471d2bc41b97a0cde4b79a74d5ff59997d3f75210566fa278e17596da526d43de2bd07e222706240ce50e60097e54f2cde2e64cbbb372638 + languageName: node + linkType: hard + +"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:~2.0.0, inherits@npm:~2.0.3": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 98426da247ddfc3dcd7d7daedd90c3ca32d5b08deca08949726f12d49232aef94772a07b36cf4ff833e105ae2ef931777f6de4a6dd8245a216b9299ad4a50bea + languageName: node + linkType: hard + +"ini@npm:^1.3.4": + version: 1.3.8 + resolution: "ini@npm:1.3.8" + checksum: 62189ce7ea44c5778e757e4232c581212e838f3c39e79d931bb9152fd4b9275f09fb20b96afdd60ba9f5d7996b92486cad6cc617fcb84ff4beedd1b33b86221e + languageName: node + linkType: hard + +"interpret@npm:^1.4.0": + version: 1.4.0 + resolution: "interpret@npm:1.4.0" + checksum: f15725d76206525546f559030ddc967db025c6db904eb8798a70ec3c07e42c5537c5cbc73a15eafd4ae5cdabad35601abf8878261c03dcc8217747e8037575fe + languageName: node + linkType: hard + +"invert-kv@npm:^1.0.0": + version: 1.0.0 + resolution: "invert-kv@npm:1.0.0" + checksum: fccd6ea4ee18d30b00fc21d6679191690f8447f248cbcdf6f74fe81a4048d51a3858d7af17a0318bd7c6fe6c46abee5a10756109787a3ec0e0a02a2c1b4a635d + languageName: node + linkType: hard + +"ip-regex@npm:^2.1.0": + version: 2.1.0 + resolution: "ip-regex@npm:2.1.0" + checksum: 2fd2190ada81b55a8a6f913bcb5a6fd6ff9da127905b4c01521f09a1d391e86d415dfe8c131ed2989d536949bb2f9654a71b9fa6f7ae2ac3ae6111b2026cc902 + languageName: node + linkType: hard + +"is-absolute@npm:^1.0.0": + version: 1.0.0 + resolution: "is-absolute@npm:1.0.0" + dependencies: + is-relative: ^1.0.0 + is-windows: ^1.0.1 + checksum: 4b8ebda658ee6d820cc9ef77c7228f5048e4824cd0092415d41d94ae9d59d8cf27cb1a322958161059be1887d7d8bc85ef10e1444ed763731b45229b74bb7ad1 + languageName: node + linkType: hard + +"is-accessor-descriptor@npm:^0.1.6": + version: 0.1.6 + resolution: "is-accessor-descriptor@npm:0.1.6" + dependencies: + kind-of: ^3.0.2 + checksum: 7a7fca21855f7f5e56706d34ce089bc95b78db4ee0d11f554b642ac06b508452aaf26ffdf5dc0680c99f66e2043d78ab659760c417af60fd067ae0f09717d3cc + languageName: node + linkType: hard + +"is-accessor-descriptor@npm:^1.0.0": + version: 1.0.0 + resolution: "is-accessor-descriptor@npm:1.0.0" + dependencies: + kind-of: ^6.0.0 + checksum: 3973215c2eaea260a33d8ab227f56dc1f9bf085f68a1a27e3108378917482369992b907a57ae05a72a16591af174cf5206efca3faf608fb36eaca675f2841e13 + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: fc2bbe14dbcb27b490e63b7fbf0e3b0aae843e5e1fa96d79450bb9617797615a575c78c454ffc8e027c3ad50d63d83e85a7387784979dcd46686d2eb5f412db0 + languageName: node + linkType: hard + +"is-binary-path@npm:^1.0.0": + version: 1.0.1 + resolution: "is-binary-path@npm:1.0.1" + dependencies: + binary-extensions: ^1.0.0 + checksum: 25a2cda1e504403a179d1daf2773d6ea47ce383e912bc695bb9e923b5d5468447e239499be5c2212c7508be7777196810f8307e1d1f0e83a6191425eb22c2887 + languageName: node + linkType: hard + +"is-buffer@npm:^1.1.5": + version: 1.1.6 + resolution: "is-buffer@npm:1.1.6" + checksum: 336ec78f00e88efe6ff6f1aa08d06aadb942a6cd320e5f538ac00648378fb964743b3737c88ce7ce8741c067e4a3b78f596b83ee1a3c72dc2885ea0b03dc84f2 + languageName: node + linkType: hard + +"is-ci@npm:^2.0.0": + version: 2.0.0 + resolution: "is-ci@npm:2.0.0" + dependencies: + ci-info: ^2.0.0 + bin: + is-ci: bin.js + checksum: 09083018edafd63221ff0506356f13c0aaf4b75a6435ea648bc67d07ddab199b2d5b9297de43d0821df1a14c18cd9f1edd1775a0166abfe37390843e79137213 + languageName: node + linkType: hard + +"is-core-module@npm:^2.2.0": + version: 2.2.0 + resolution: "is-core-module@npm:2.2.0" + dependencies: + has: ^1.0.3 + checksum: 2344744de98a3bc22e2bb30895f307d7889f09e963f9bcb1cc321788f508c8b463f75e0a9ca009eeeb8eb9465181b5c15f1ec9299a6bb6921cfbb2423892e0ba + languageName: node + linkType: hard + +"is-data-descriptor@npm:^0.1.4": + version: 0.1.4 + resolution: "is-data-descriptor@npm:0.1.4" + dependencies: + kind-of: ^3.0.2 + checksum: 51db89bb4676b871a67f371f665dcf9c3fabb84e26b411beff42fb3b5505cdc0e33eeb1aeaa9c0400eb6d372a3b241c23a6953b5902397e5ff212cfbfd9edcda + languageName: node + linkType: hard + +"is-data-descriptor@npm:^1.0.0": + version: 1.0.0 + resolution: "is-data-descriptor@npm:1.0.0" + dependencies: + kind-of: ^6.0.0 + checksum: 0297518899d51c498987b1cc64fde72b0300f93a09669b6653a4d56a9cfb40c85b5988e52e36b10e88d17ad13b1927932f4631ddc02f10fa1d44a1e3150d31cd + languageName: node + linkType: hard + +"is-descriptor@npm:^0.1.0": + version: 0.1.6 + resolution: "is-descriptor@npm:0.1.6" + dependencies: + is-accessor-descriptor: ^0.1.6 + is-data-descriptor: ^0.1.4 + kind-of: ^5.0.0 + checksum: cab6979fb6412eefca8e9bc3b59d239b2ce4916d6025f184eb6c3031b5d381cb536630606a4635f0f43197164a090bb500c762f713f17846c1e34dd9ae6ef607 + languageName: node + linkType: hard + +"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": + version: 1.0.2 + resolution: "is-descriptor@npm:1.0.2" + dependencies: + is-accessor-descriptor: ^1.0.0 + is-data-descriptor: ^1.0.0 + kind-of: ^6.0.2 + checksum: be8004010eac165fa9a61513a51881c4bac324d060916d44bfee2be03edf500d5994591707147f1f4c93ae611f97de27debdd8325702158fcd0cf8fcca3fbe06 + languageName: node + linkType: hard + +"is-docker@npm:^2.0.0": + version: 2.1.1 + resolution: "is-docker@npm:2.1.1" + bin: + is-docker: cli.js + checksum: dc8e36fa63a246728e5dd4b3ab2d454f685d3dcc1fecbe62144a0c3bc1f5eef0cf67cb3af1b4a9d274dd18877b954b651c7ef0a483abae6a7a2baa8f987554ba + languageName: node + linkType: hard + +"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": + version: 0.1.1 + resolution: "is-extendable@npm:0.1.1" + checksum: 9d051e68c38b09c242564b62d98cdcc0ba5b20421340c95d5ae023955dcaf31ae1d614e1eb7a18a6358d4c47ea77d811623e1777a0589df9ac5928c370edd5e5 + languageName: node + linkType: hard + +"is-extendable@npm:^1.0.1": + version: 1.0.1 + resolution: "is-extendable@npm:1.0.1" + dependencies: + is-plain-object: ^2.0.4 + checksum: 2bf711afe60cc99f46699015c444db8f06c9c5553dd2b26fd8cb663fcec4bf00df1c11d02e28a8cc97b8efb49315c3c3fcf6ce1ceb09341af8e4fcccde516dd7 + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: ca623e2c56c893714a237aff645ec7caa8fea4d78868682af8d6803d7f0780323f8d566311e0dc6f942c886e81cbfa517597e48fcada7f3bf78a4d099eeecdd3 + languageName: node + linkType: hard + +"is-finite@npm:^1.0.0": + version: 1.1.0 + resolution: "is-finite@npm:1.1.0" + checksum: d2ea9746ecc273e50183f56a51073862ff9f39bb1e63f6e2830da6be77d0d17c78e5ad1f8573d26c2a23457ab4a1b444472a46d64ba6f73824435cd734517ad4 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^1.0.0": + version: 1.0.0 + resolution: "is-fullwidth-code-point@npm:1.0.0" + dependencies: + number-is-nan: ^1.0.0 + checksum: fc3d51ef082eaf0c0d44e94b74cf43b97446e008b147b08186daea8bd5ff402596f04b5fe4fa4c0457470beab5c2de8339c49c96b5be65fe9fdf88f60a0001e8 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^2.0.0": + version: 2.0.0 + resolution: "is-fullwidth-code-point@npm:2.0.0" + checksum: e1e5284f848ab6885665967cd768292a75022304d4401e78937a68f423047c29bfe87a43a9cdb67a3210fff7bcd5da51469122a0eff59b03261c379e58dbe921 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: a01a19ecac34386ae3a4e801c5639d6e31082d1ddc418e7cd96317fef3c8b24ec8531558e9d3d35b33551ab9c5cf20bf2cdefa583927b7ff60c27c8d7c216063 + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.0.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 9639f8167925388f07d0ae190f1ebfe026e90db954480e6d28e776cf94040a00ea9158e1ac816bf77676e539bcbcf9cb4e997a599d80171e4bc52df76965e453 + languageName: node + linkType: hard + +"is-glob@npm:^3.1.0": + version: 3.1.0 + resolution: "is-glob@npm:3.1.0" + dependencies: + is-extglob: ^2.1.0 + checksum: 9911e04e28285c50bfd5ff79950c6cf712ed9d959ef640acba2daeca8a17a921494b78b3143d5d1749c4dc3bbeb296b8955064a4f17d014112f0c63a239322d6 + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1": + version: 4.0.1 + resolution: "is-glob@npm:4.0.1" + dependencies: + is-extglob: ^2.1.1 + checksum: 98cd4f715f0fb81da34aa6c8be4a5ef02d8cfac3ebc885153012abc2a0410df5a572f9d0393134fcba9192c7a845da96142c5f74a3c02787efe178ed798615e6 + languageName: node + linkType: hard + +"is-module@npm:^1.0.0": + version: 1.0.0 + resolution: "is-module@npm:1.0.0" + checksum: 2cbd41e2760874130b76aee84cc53120c4feef0d0f196fa665326857b444c8549909cc840f3f3a59652a7e8df46146a77f6c0f3f70a578704e03670975843e74 + languageName: node + linkType: hard + +"is-negated-glob@npm:^1.0.0": + version: 1.0.0 + resolution: "is-negated-glob@npm:1.0.0" + checksum: add3803c20bc80cfc8151eb618fe9ee537d2cf5dfa77080100c3262207943627fc562e671d457f88bcc52b788dc588fdaf2bdbfa753f02d1449912aab5286069 + languageName: node + linkType: hard + +"is-number@npm:^3.0.0": + version: 3.0.0 + resolution: "is-number@npm:3.0.0" + dependencies: + kind-of: ^3.0.2 + checksum: ae03986dedb1e414cfef5402b24c9be5e9171bc77fdaa189f468144e801b23d8abaa9bf52fb882295558a042fbb0192fb3f80759a010073884eff9ee3f196962 + languageName: node + linkType: hard + +"is-number@npm:^4.0.0": + version: 4.0.0 + resolution: "is-number@npm:4.0.0" + checksum: dda8d33df5fac78f0ce1723a995f0c4a630f59d62390665c52797f39fa9aabaeb1ce8179b29fc02c00cd339da629827e64a6ecc3e2d7619e0b787ea302d88db2 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: eec6e506c6de472af4bdfd0cc477e8aeb76f0a7066c8680fcdfed5324ee31a7d2b59d22313007c58aa80eb937f0c40eefdceedb851997d46b490b49f87160369 + languageName: node + linkType: hard + +"is-obj@npm:^1.0.1": + version: 1.0.1 + resolution: "is-obj@npm:1.0.1" + checksum: 0913a3bb6424d6bfb37e2daa5ef4a5d31a388b0f5a53f36bbe1fd95f1264efe92c6fd87a5c3f41e25b3db42fe60924fe6ae1f0efb274375b090fd093a5301ccf + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.1, is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: ^3.0.1 + checksum: 2f3232267366f3cdf13d53deda1b282ba7959f28ccb2ee8e0ca168f859f0d7126c27c846ebb7c2b9821a09bbda2e1835fd4020337ba666cf3c03dc256aab7ba1 + languageName: node + linkType: hard + +"is-potential-custom-element-name@npm:^1.0.0": + version: 1.0.0 + resolution: "is-potential-custom-element-name@npm:1.0.0" + checksum: 55b1ae44cf9241ea5b08414318d12a4d2eb157cb5722908fc7ef268c6d175894cb59d298092a87f9ed54af5b60fc572fa7f6b34b8633120dbe6edaa6c5169d0b + languageName: node + linkType: hard + +"is-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "is-regexp@npm:1.0.0" + checksum: b6c3ea4f405d31e20c9612f0480b5deb86d71477f3e08c78a889a8b7b4c9f9e9944b2621b997bede7b94b6f8607dc8333b521b6b69a2f8ad97c80d9eb47d04a9 + languageName: node + linkType: hard + +"is-relative@npm:^1.0.0": + version: 1.0.0 + resolution: "is-relative@npm:1.0.0" + dependencies: + is-unc-path: ^1.0.0 + checksum: a93a7b57d8fa2090757eb2193a58fcf318cd2963787d25cd756842b75c1d78a814105245deec16303a0df3e9263dbb587d55545ad684d6035b3534016a2bc4b3 + languageName: node + linkType: hard + +"is-stream@npm:^1.1.0": + version: 1.1.0 + resolution: "is-stream@npm:1.1.0" + checksum: 39843ee9ff68ebda05237199f18831eb6e0e28db7799ee9ddaac5573b0681f18b4dc427afdb7b7ad906db545e4648999c42a1810b277acc8451593ff59da00fa + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "is-stream@npm:2.0.0" + checksum: f92ba04a8b8fafbade79bdaada53a044025db2fbd3fc2be978434db9a097a4afa457c2e3222c70c2ffc38854bde3a352593d6315463a54394f08ca9e51e32b50 + languageName: node + linkType: hard + +"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": + version: 1.0.0 + resolution: "is-typedarray@npm:1.0.0" + checksum: 4e21156e7360a5916eded35c5938adf6278299a8055640864eebb251e4351cd605beccddf9af27477e19f753d453412fe0c21379bb54b55cfdf5add263076959 + languageName: node + linkType: hard + +"is-unc-path@npm:^1.0.0": + version: 1.0.0 + resolution: "is-unc-path@npm:1.0.0" + dependencies: + unc-path-regex: ^0.1.2 + checksum: ee43c89aa0dcf0292e50b0994cdb02d8c14bebea54d87f447915374982a66ffdf6e24780c7306c23a454a083c5b05a87dc84c9432bb17bbeddb1a4c6e52575c0 + languageName: node + linkType: hard + +"is-utf8@npm:^0.2.0, is-utf8@npm:^0.2.1": + version: 0.2.1 + resolution: "is-utf8@npm:0.2.1" + checksum: c72f604d72b72f6a57f9b2e22c9b6f480e869b3f0efe141bd1dfbc36655225043ca8c1316ff8e343ef641cf80868c9e4a37345492f31402abd5ab68e09367977 + languageName: node + linkType: hard + +"is-valid-glob@npm:^1.0.0": + version: 1.0.0 + resolution: "is-valid-glob@npm:1.0.0" + checksum: 7d61129ee5051409cd8b1ba738d1ce7108a20b39f297671f2c07a1d2737fc13d0cc476261b9a5fa6491252e6dbf0bc7cef04444b14455e929b285fddc2f48895 + languageName: node + linkType: hard + +"is-windows@npm:^1.0.1, is-windows@npm:^1.0.2": + version: 1.0.2 + resolution: "is-windows@npm:1.0.2" + checksum: dd1ed8339a28c68fb52f05931c832488dafc90063e53b97a69ead219a5584d7f3e6e564731c2f983962ff5403afeb05365d88ce9af34c8dae76a14911020d73a + languageName: node + linkType: hard + +"is-wsl@npm:^2.2.0": + version: 2.2.0 + resolution: "is-wsl@npm:2.2.0" + dependencies: + is-docker: ^2.0.0 + checksum: 3dcc4073d4682b9f9a4c59411bb73716cfff88eae58a6bd0af302b8ee016263a5150302bb296bc81a4cb0d3b66c86d82b3ee0146ed15f6558022bc847a2549a2 + languageName: node + linkType: hard + +"isarray@npm:1.0.0, isarray@npm:~1.0.0": + version: 1.0.0 + resolution: "isarray@npm:1.0.0" + checksum: b0ff31a290e783f7b3fb73f2951ee7fc2946dc197b05f73577dc77f87dc3be2e0f66007bedf069123d4e5c4b691e7c89a241f6ca06f0c0f4765cdac5aa4b4047 + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 7b437980bb77881a146fba85cfbdf01edc2b148673e9c2722a1e49661fea73adf524430a80fdbfb8ce9f60d43224e682c657c45030482bd39e0c488fc29b4afe + languageName: node + linkType: hard + +"ismobilejs@npm:^1.1.0": + version: 1.1.1 + resolution: "ismobilejs@npm:1.1.1" + checksum: 9e189015021026d407536d2ce37479dcfcc0f7326a7f594a059784726313640c713e23e59c1e534280f6113610b8df2694b1d042236d4f96c0234793849df21c + languageName: node + linkType: hard + +"isobject@npm:^2.0.0": + version: 2.1.0 + resolution: "isobject@npm:2.1.0" + dependencies: + isarray: 1.0.0 + checksum: 2e7d7dd8d5874d1c32a0380f8b5d8d84aee782e0137e5978f75e27402ee2d49ca194baf7acd43d176f4fe0d925090b8b336461741674f402558e954c8c4ee886 + languageName: node + linkType: hard + +"isobject@npm:^3.0.0, isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: b537a9ccdd8d40ec552fe7ff5db3731f1deb77581adf9beb8ae812f8d08acfa0e74b193159ac50fb01084d7ade06d114077f984e21b8340531241bf85be9a0ab + languageName: node + linkType: hard + +"isstream@npm:~0.1.2": + version: 0.1.2 + resolution: "isstream@npm:0.1.2" + checksum: 8e6e5c4cf1823562db7035d2e7bac388412060fe9bc6727eca8c608def5aa57709165c51c2e68a2fce6ff0b64d79489501b84715060c5e8a477b87b6cbcd1eca + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0": + version: 3.0.0 + resolution: "istanbul-lib-coverage@npm:3.0.0" + checksum: c8effc09ae00fc7974a10ee245fa2c3eceda840e8f46245b80bddc7101b84cf2ac0bcce514aa47e338de610cad06af1b6e3c21f679aebf03e398651898ca9aad + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^4.0.0, istanbul-lib-instrument@npm:^4.0.3": + version: 4.0.3 + resolution: "istanbul-lib-instrument@npm:4.0.3" + dependencies: + "@babel/core": ^7.7.5 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.0.0 + semver: ^6.3.0 + checksum: 478e43e75d3a0e8af3902dd11a8606b665dda005e4aaf6d1919c6ed570a557dc253553a56a26466df02e5703e722fba6a37f4f847cc6d1d0e8314df024d1d76c + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.0 + resolution: "istanbul-lib-report@npm:3.0.0" + dependencies: + istanbul-lib-coverage: ^3.0.0 + make-dir: ^3.0.0 + supports-color: ^7.1.0 + checksum: aada59dfceae04005f684031a627f1e9730634262a5426837a9b60c49530d626dc727be5930e7ae6303ce0d4357fb8331eda0935b8c6b999df5d376bdc825991 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^4.0.0": + version: 4.0.0 + resolution: "istanbul-lib-source-maps@npm:4.0.0" + dependencies: + debug: ^4.1.1 + istanbul-lib-coverage: ^3.0.0 + source-map: ^0.6.1 + checksum: 018b5feeb4a3eb32675abb0129e88e48009de6c0b1c1c7006e8dadd5b15e54f4c09cbbeba0febf8bd7bacd25a514abc61c91e4340479d859a0c185448f692099 + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.0.2": + version: 3.0.2 + resolution: "istanbul-reports@npm:3.0.2" + dependencies: + html-escaper: ^2.0.0 + istanbul-lib-report: ^3.0.0 + checksum: d4ed416e13fe0fc709566439086660ddab58dce9d6a655053c5315715aac8225bc7e9fcae553c2c3d8cc66cd4b59498a50b92d543a4820c5be0e5ee30178cdf0 + languageName: node + linkType: hard + +"jest-changed-files@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-changed-files@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + execa: ^4.0.0 + throat: ^5.0.0 + checksum: b15a1c524b32b16694aaa4b2823266b89b54dddbb7c37ed0fdea605ea79ee784ce1003dc6163aa041d47453dfa32e21a4ade56b464d58459cdaa8e2291c83d12 + languageName: node + linkType: hard + +"jest-cli@npm:^26.6.3": + version: 26.6.3 + resolution: "jest-cli@npm:26.6.3" + dependencies: + "@jest/core": ^26.6.3 + "@jest/test-result": ^26.6.2 + "@jest/types": ^26.6.2 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.4 + import-local: ^3.0.2 + is-ci: ^2.0.0 + jest-config: ^26.6.3 + jest-util: ^26.6.2 + jest-validate: ^26.6.2 + prompts: ^2.0.1 + yargs: ^15.4.1 + bin: + jest: bin/jest.js + checksum: 2d32e7e4b2802d230625cb041630abe25a8764fcea6a8ecf46a5ad68f23bd1498e5297bc43d1ba714832d433de6676d2bd3ac93d0fecec230665fe8421f23863 + languageName: node + linkType: hard + +"jest-config@npm:^26.6.3": + version: 26.6.3 + resolution: "jest-config@npm:26.6.3" + dependencies: + "@babel/core": ^7.1.0 + "@jest/test-sequencer": ^26.6.3 + "@jest/types": ^26.6.2 + babel-jest: ^26.6.3 + chalk: ^4.0.0 + deepmerge: ^4.2.2 + glob: ^7.1.1 + graceful-fs: ^4.2.4 + jest-environment-jsdom: ^26.6.2 + jest-environment-node: ^26.6.2 + jest-get-type: ^26.3.0 + jest-jasmine2: ^26.6.3 + jest-regex-util: ^26.0.0 + jest-resolve: ^26.6.2 + jest-util: ^26.6.2 + jest-validate: ^26.6.2 + micromatch: ^4.0.2 + pretty-format: ^26.6.2 + peerDependencies: + ts-node: ">=9.0.0" + peerDependenciesMeta: + ts-node: + optional: true + checksum: 974e7690bab003cc204906802107b6a38a32bcb2033bf738bdecc6d8ee5b536b4ca11d65c8a511ad0e730ec631651d666787ffcaf86365869dcceacb06d4e875 + languageName: node + linkType: hard + +"jest-diff@npm:^26.0.0, jest-diff@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-diff@npm:26.6.2" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^26.6.2 + jest-get-type: ^26.3.0 + pretty-format: ^26.6.2 + checksum: 05d0f1bdba147a026eab4121a73a69ee3df21aec59ecd34659d665ee0663e518636650b435d248974ab5aceb345de9bfcc035efd01df723fe788756a07c8d046 + languageName: node + linkType: hard + +"jest-docblock@npm:^26.0.0": + version: 26.0.0 + resolution: "jest-docblock@npm:26.0.0" + dependencies: + detect-newline: ^3.0.0 + checksum: 54b8ea1c8445a4b15e9ee5035f1bd60b0d492b87258995133a1b5df43a07803c93b54e8adaa45eae05778bd61ad57745491c625e7aa65198a9aa4f0c79030b56 + languageName: node + linkType: hard + +"jest-each@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-each@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + chalk: ^4.0.0 + jest-get-type: ^26.3.0 + jest-util: ^26.6.2 + pretty-format: ^26.6.2 + checksum: 628eaeca647adb4d6cf75bdc17c9ceb8cbcbb6921d838a583cd4de3db188e3e49b62209e3a0703f1281db379d1b2c07254900e5d97e85d61dd193d7b40361d3a + languageName: node + linkType: hard + +"jest-environment-jsdom@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-environment-jsdom@npm:26.6.2" + dependencies: + "@jest/environment": ^26.6.2 + "@jest/fake-timers": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + jest-mock: ^26.6.2 + jest-util: ^26.6.2 + jsdom: ^16.4.0 + checksum: 70af4860b71237274619cb93ebebf7da978ef086df2b6ad39ab23aba427b039e01e9c565afeee05f025d112d975252eee342a615416029b9b9a71ca7810b2a7d + languageName: node + linkType: hard + +"jest-environment-node@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-environment-node@npm:26.6.2" + dependencies: + "@jest/environment": ^26.6.2 + "@jest/fake-timers": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + jest-mock: ^26.6.2 + jest-util: ^26.6.2 + checksum: 68ea035d62b35faf1991c0a0a432c1d9547ce93949e9460761071748cbf4b1d818e47421df1eb7b15a3eda7c0846e284b4a5ece5d99122307a0ad742ea765a57 + languageName: node + linkType: hard + +"jest-get-type@npm:^26.3.0": + version: 26.3.0 + resolution: "jest-get-type@npm:26.3.0" + checksum: fc3e2d2b90cca74597c4ad6234c2fcc2ccb62894d0f7afe22fc55b5d93a2f02d3080ccef50f09c979d4b5a060bc76c4343911556d75ed9e892e0ebda6d54c44b + languageName: node + linkType: hard + +"jest-haste-map@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-haste-map@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@types/graceful-fs": ^4.1.2 + "@types/node": "*" + anymatch: ^3.0.3 + fb-watchman: ^2.0.0 + fsevents: ^2.1.2 + graceful-fs: ^4.2.4 + jest-regex-util: ^26.0.0 + jest-serializer: ^26.6.2 + jest-util: ^26.6.2 + jest-worker: ^26.6.2 + micromatch: ^4.0.2 + sane: ^4.0.3 + walker: ^1.0.7 + dependenciesMeta: + fsevents: + optional: true + checksum: 5c9e3a1e3feee8cf6e06aec5ddc28703d75d484c398802469ec881a922591a2c94b1bc86ce9510dec854b363740781f9eb2d76b224fdd560ecb8fa2436b35432 + languageName: node + linkType: hard + +"jest-jasmine2@npm:^26.6.3": + version: 26.6.3 + resolution: "jest-jasmine2@npm:26.6.3" + dependencies: + "@babel/traverse": ^7.1.0 + "@jest/environment": ^26.6.2 + "@jest/source-map": ^26.6.2 + "@jest/test-result": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + chalk: ^4.0.0 + co: ^4.6.0 + expect: ^26.6.2 + is-generator-fn: ^2.0.0 + jest-each: ^26.6.2 + jest-matcher-utils: ^26.6.2 + jest-message-util: ^26.6.2 + jest-runtime: ^26.6.3 + jest-snapshot: ^26.6.2 + jest-util: ^26.6.2 + pretty-format: ^26.6.2 + throat: ^5.0.0 + checksum: 18b15901f8eea23cb77b45dab7bbd9c9c15f6329516c4e5ccc36dff82153b9f992f7de264db45390a1a06b5cf730f073a9c49ed7b8905f7289c6f8055e8f7459 + languageName: node + linkType: hard + +"jest-junit@npm:^12.0.0": + version: 12.0.0 + resolution: "jest-junit@npm:12.0.0" + dependencies: + mkdirp: ^1.0.4 + strip-ansi: ^5.2.0 + uuid: ^3.3.3 + xml: ^1.0.1 + checksum: 2cdd446aeab75e4e87e3c168bc72b281a5f036b31f04a36795e9f1509afa85ef4bf6609c2f2504dd221bbaedc1181d57d49728655dca828a3e1033f446715d8e + languageName: node + linkType: hard + +"jest-leak-detector@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-leak-detector@npm:26.6.2" + dependencies: + jest-get-type: ^26.3.0 + pretty-format: ^26.6.2 + checksum: 08c1bbb628c46d22bead4de7bcbe6a4c9d5761d55f15a1d938b9409473eeb6175545ebade44318f9ae950fcdf484e1cbffbbcdcce8600b946e21300d7d1ed206 + languageName: node + linkType: hard + +"jest-matcher-utils@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-matcher-utils@npm:26.6.2" + dependencies: + chalk: ^4.0.0 + jest-diff: ^26.6.2 + jest-get-type: ^26.3.0 + pretty-format: ^26.6.2 + checksum: c6db72f19e90d8c3b3f949bc174e4a1b95db5973080eaf716b69df0069faa9b9da2de4502cf9b5c1376387b49705611259f45f04efb7dfc3deb72bcf3602a6a1 + languageName: node + linkType: hard + +"jest-message-util@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-message-util@npm:26.6.2" + dependencies: + "@babel/code-frame": ^7.0.0 + "@jest/types": ^26.6.2 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + micromatch: ^4.0.2 + pretty-format: ^26.6.2 + slash: ^3.0.0 + stack-utils: ^2.0.2 + checksum: 7a47773259e5bb431e3dba44321fd75d9e3264b12fc4fe584378053a8b065c61d1c7d07625c8e2c432ccf2d7f0dc68a9f6547bc62d0d558b8e5da0e82f824ecd + languageName: node + linkType: hard + +"jest-mock@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-mock@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@types/node": "*" + checksum: 98e658beca866a5391fd5c0503a985a928231fd0652dea31809efa706a043ac4c4559769215ba8c8d0cde758f5c5463fbf99f233441e82641cace68023308fb6 + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.2": + version: 1.2.2 + resolution: "jest-pnp-resolver@npm:1.2.2" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: d91c86e3899f35ac1a6d40fa29e94212fc9b8e5e70d31d77ff281413441c844ec44a3673a3860f9b2155fed6738548f52eee9e63845e8d5f8550a890533c78cc + languageName: node + linkType: hard + +"jest-regex-util@npm:^26.0.0": + version: 26.0.0 + resolution: "jest-regex-util@npm:26.0.0" + checksum: a3d08a852a7b79e3071ebe112b9fb4122efe6b987477e6769eb78814a8306d3c9e29ed544f25bb6a6d3737668b67ee4339810ed5fe5a9d6318639d6f81f47d3d + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:^26.6.3": + version: 26.6.3 + resolution: "jest-resolve-dependencies@npm:26.6.3" + dependencies: + "@jest/types": ^26.6.2 + jest-regex-util: ^26.0.0 + jest-snapshot: ^26.6.2 + checksum: 72e7a200c404197f1c06aff7faa77de13e12c2bfdc1a0a6bd9f8b96cd23317b64e2b614a26b67beece86d51249c3ec7dbeb3dfe17d284930307cd769712ace25 + languageName: node + linkType: hard + +"jest-resolve@npm:26.6.2, jest-resolve@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-resolve@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + jest-pnp-resolver: ^1.2.2 + jest-util: ^26.6.2 + read-pkg-up: ^7.0.1 + resolve: ^1.18.1 + slash: ^3.0.0 + checksum: 61e8884462b4bcdaa26dc8544b497f2e2dae0b0701c363d433afb482c7f2faa6d0ce691250ad64eddb7fff552dc025315c388e0449411c1522a4dd013cbe49ae + languageName: node + linkType: hard + +"jest-runner@npm:^26.6.3": + version: 26.6.3 + resolution: "jest-runner@npm:26.6.3" + dependencies: + "@jest/console": ^26.6.2 + "@jest/environment": ^26.6.2 + "@jest/test-result": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + chalk: ^4.0.0 + emittery: ^0.7.1 + exit: ^0.1.2 + graceful-fs: ^4.2.4 + jest-config: ^26.6.3 + jest-docblock: ^26.0.0 + jest-haste-map: ^26.6.2 + jest-leak-detector: ^26.6.2 + jest-message-util: ^26.6.2 + jest-resolve: ^26.6.2 + jest-runtime: ^26.6.3 + jest-util: ^26.6.2 + jest-worker: ^26.6.2 + source-map-support: ^0.5.6 + throat: ^5.0.0 + checksum: 7cac133ccfb4df461d32f536e7593c21e03b9b01fc97582f51b8487e673648444fe59ea3a96f1f6afddddecf62be86b1d8249723e3a3575cc04fa95f07a163c7 + languageName: node + linkType: hard + +"jest-runtime@npm:^26.6.3": + version: 26.6.3 + resolution: "jest-runtime@npm:26.6.3" + dependencies: + "@jest/console": ^26.6.2 + "@jest/environment": ^26.6.2 + "@jest/fake-timers": ^26.6.2 + "@jest/globals": ^26.6.2 + "@jest/source-map": ^26.6.2 + "@jest/test-result": ^26.6.2 + "@jest/transform": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/yargs": ^15.0.0 + chalk: ^4.0.0 + cjs-module-lexer: ^0.6.0 + collect-v8-coverage: ^1.0.0 + exit: ^0.1.2 + glob: ^7.1.3 + graceful-fs: ^4.2.4 + jest-config: ^26.6.3 + jest-haste-map: ^26.6.2 + jest-message-util: ^26.6.2 + jest-mock: ^26.6.2 + jest-regex-util: ^26.0.0 + jest-resolve: ^26.6.2 + jest-snapshot: ^26.6.2 + jest-util: ^26.6.2 + jest-validate: ^26.6.2 + slash: ^3.0.0 + strip-bom: ^4.0.0 + yargs: ^15.4.1 + bin: + jest-runtime: bin/jest-runtime.js + checksum: 5ef4ceaefb0cd8c140d58d2d4f660467cb6581d17622789d1c0bf1576fded6a9e0e831c3bb8b3f528ec81279f3fb38a6fb71e1d1a8960d7cdc8e048d33b71c32 + languageName: node + linkType: hard + +"jest-serializer@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-serializer@npm:26.6.2" + dependencies: + "@types/node": "*" + graceful-fs: ^4.2.4 + checksum: 62802ac809f7af3386b3640a3a01b6a979a093f48085c5b76a05c186a862b8dd3c1b2ea2d62373fd9fe31c0f893631006623079d30d8f8ebf32dff5ef279059e + languageName: node + linkType: hard + +"jest-snapshot@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-snapshot@npm:26.6.2" + dependencies: + "@babel/types": ^7.0.0 + "@jest/types": ^26.6.2 + "@types/babel__traverse": ^7.0.4 + "@types/prettier": ^2.0.0 + chalk: ^4.0.0 + expect: ^26.6.2 + graceful-fs: ^4.2.4 + jest-diff: ^26.6.2 + jest-get-type: ^26.3.0 + jest-haste-map: ^26.6.2 + jest-matcher-utils: ^26.6.2 + jest-message-util: ^26.6.2 + jest-resolve: ^26.6.2 + natural-compare: ^1.4.0 + pretty-format: ^26.6.2 + semver: ^7.3.2 + checksum: 9cf50bd7b7b31736f914ea71f8049ddf8a9ebcfdbb663d262ad55045f1dd74cb599152946844193503363b9fbb32ee84f882ceae5067181e1dac537846801ae7 + languageName: node + linkType: hard + +"jest-util@npm:^26.1.0, jest-util@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-util@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + "@types/node": "*" + chalk: ^4.0.0 + graceful-fs: ^4.2.4 + is-ci: ^2.0.0 + micromatch: ^4.0.2 + checksum: 1aef748c8224d00ead3389899177bd3b619479db7318f8d7de7fbedce283ac6a8dc8c9364a40a68e83e68e03fa18afbd6b49c8aafb81112807872f0f90fb5a37 + languageName: node + linkType: hard + +"jest-validate@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-validate@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + camelcase: ^6.0.0 + chalk: ^4.0.0 + jest-get-type: ^26.3.0 + leven: ^3.1.0 + pretty-format: ^26.6.2 + checksum: b19fd33b8667a45fea08a56353189b70532ebe360a6ac2e2320eac5e047be410053dcb3a6bcfe99d5e580e03580710af722119268d26ad5185871f5bfa0f6ca2 + languageName: node + linkType: hard + +"jest-watcher@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-watcher@npm:26.6.2" + dependencies: + "@jest/test-result": ^26.6.2 + "@jest/types": ^26.6.2 + "@types/node": "*" + ansi-escapes: ^4.2.1 + chalk: ^4.0.0 + jest-util: ^26.6.2 + string-length: ^4.0.1 + checksum: d4a13c17c7b9bd98616d7a4ff087c0c16346038ba6b6db6f4a15acbce2ea9a9c7b8b873d174ade3f458c9ad5607f7cadd29309aa13f03a844f984d3711b57805 + languageName: node + linkType: hard + +"jest-worker@npm:^26.6.2": + version: 26.6.2 + resolution: "jest-worker@npm:26.6.2" + dependencies: + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^7.0.0 + checksum: 5eb349833b5e9750ce8700388961dfd5d5e207c913122221e418e48b9cda3c17b0fb418f6a90f1614cfdc3ca836158b720c5dc1de82cb1e708266b4d76e31a38 + languageName: node + linkType: hard + +"jest@npm:^26.6.3": + version: 26.6.3 + resolution: "jest@npm:26.6.3" + dependencies: + "@jest/core": ^26.6.3 + import-local: ^3.0.2 + jest-cli: ^26.6.3 + bin: + jest: bin/jest.js + checksum: 4ffcfefa2b30999a71c205e1aacf2b3d7af10f36c17ba1baf45677684116ad5aa6a5bb162ad2dd418f9ea99d18f24b70d8c83fb317b765a3acac361a50e9db9f + languageName: node + linkType: hard + +"js-base64@npm:^2.1.8": + version: 2.6.4 + resolution: "js-base64@npm:2.6.4" + checksum: f3fadb18c2feade451a42677d29ddac4e5d40f6561fce38454c0dbf8b5b937d47e65ca54ae109325db90baaab7443780ae071b7d8577273918e8407b01b83f88 + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 1fc4e4667ac2d972aba65148b9cbf9c17566b2394d3504238d8492bbd3e68f496c657eab06b26b40b17db5cac0a34d153a12130e2d2d2bb6dc2cdc8a4764eb1b + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: ^1.0.7 + esprima: ^4.0.0 + bin: + js-yaml: bin/js-yaml.js + checksum: 46b61f889796a20d16b0b64580a01b6a02b2e45c1a2744906346da54d07e14cde764e887ab6d1512d8b2541c63711bd4b75859c28eb99605baf59fa173fc38c2 + languageName: node + linkType: hard + +"jsbn@npm:~0.1.0": + version: 0.1.1 + resolution: "jsbn@npm:0.1.1" + checksum: b530d48a64e6aff9523407856a54c5b9beee30f34a410612057f4fa097d90072fc8403c49604dacf0c3e7620dca43c2b7f0de3f954af611e43716a254c46f6f5 + languageName: node + linkType: hard + +"jsdom@npm:^16.4.0": + version: 16.4.0 + resolution: "jsdom@npm:16.4.0" + dependencies: + abab: ^2.0.3 + acorn: ^7.1.1 + acorn-globals: ^6.0.0 + cssom: ^0.4.4 + cssstyle: ^2.2.0 + data-urls: ^2.0.0 + decimal.js: ^10.2.0 + domexception: ^2.0.1 + escodegen: ^1.14.1 + html-encoding-sniffer: ^2.0.1 + is-potential-custom-element-name: ^1.0.0 + nwsapi: ^2.2.0 + parse5: 5.1.1 + request: ^2.88.2 + request-promise-native: ^1.0.8 + saxes: ^5.0.0 + symbol-tree: ^3.2.4 + tough-cookie: ^3.0.1 + w3c-hr-time: ^1.0.2 + w3c-xmlserializer: ^2.0.0 + webidl-conversions: ^6.1.0 + whatwg-encoding: ^1.0.5 + whatwg-mimetype: ^2.3.0 + whatwg-url: ^8.0.0 + ws: ^7.2.3 + xml-name-validator: ^3.0.0 + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + checksum: adca681df01b62452970357bb941c5a0a67f784afbf32c57bb07d7b3799a853f161e4c7a1ccce75fd9089b5c5e5601acf9eab5fe440899d96c08b5bdc3d2cad5 + languageName: node + linkType: hard + +"jsesc@npm:^2.5.1": + version: 2.5.2 + resolution: "jsesc@npm:2.5.2" + bin: + jsesc: bin/jsesc + checksum: ca91ec33d74c55959e4b6fdbfee2af5f38be74a752cf0a982702e3a16239f26c2abbe19f5f84b15592570dda01872e929a90738615bd445f7b9b859781cfcf68 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: d89fa7fe57957f3004cf0e786465a64183c0de861f6fda800d352956397c01b22f9feb141d0dce5b23f5dbe0aae74dd5b45fc0c3c1679b0942688efa5544e726 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 6f71bddba38aa043cf9c05ff9cf37158a6657909f1dd37032ba164b76923da47a17bb4592ee4f7f9c029dfaf26965b821ac214c1f991bb3bd038c9cfea2da50b + languageName: node + linkType: hard + +"json-schema-traverse@npm:^1.0.0": + version: 1.0.0 + resolution: "json-schema-traverse@npm:1.0.0" + checksum: 7a230bcd927f5bf41b33a822121730a225ac287e14d7e8abc94f4cbc36743f6e09455549abaada7029844f7e88a9fd693a023ec76296df17488746acb1e5a388 + languageName: node + linkType: hard + +"json-schema@npm:0.2.3": + version: 0.2.3 + resolution: "json-schema@npm:0.2.3" + checksum: d382ea841f0af5cf6ae3b63043c6ddbd144086de52342b5dd32d8966872dce1e0ed280f6b27c5fba97e50cf8640f27b593e039cb95df365718ada03ef0feb9f2 + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: a01b6c65413b2d0dd6797004ace6166bb6f8a0a2a77c742966021c74233cebe48de3c33223f003a9e8e4a241bb882fe92141e538e7e1dad58afd32649444e269 + languageName: node + linkType: hard + +"json-stringify-safe@npm:~5.0.1": + version: 5.0.1 + resolution: "json-stringify-safe@npm:5.0.1" + checksum: 261dfb8eb3e72c8b0dda11fd7c20c151ffc1d1b03e529245d51708c8dd8d8c6a225880464adf41a570dff6e5c805fd9d1f47fed948cfb526e4fbe5a67ce4e5f4 + languageName: node + linkType: hard + +"json5@npm:2.x, json5@npm:^2.1.2": + version: 2.2.0 + resolution: "json5@npm:2.2.0" + dependencies: + minimist: ^1.2.5 + bin: + json5: lib/cli.js + checksum: 07b1f90c2801dc52df2b0ac8d606cc400a85cda79130e754780fa2ab9805d0fb85a0e61b6a5cdd68e88e5d0c8f9109ec415af08283175556cdccaa8563853908 + languageName: node + linkType: hard + +"jsonfile@npm:^4.0.0": + version: 4.0.0 + resolution: "jsonfile@npm:4.0.0" + dependencies: + graceful-fs: ^4.1.6 + dependenciesMeta: + graceful-fs: + optional: true + checksum: a40b7b64da41c84b0dc7ad753737ba240bb0dc50a94be20ec0b73459707dede69a6f89eb44b4d29e6994ed93ddf8c9b6e57f6b1f09dd707567959880ad6cee7f + languageName: node + linkType: hard + +"jsonfile@npm:^6.0.1": + version: 6.1.0 + resolution: "jsonfile@npm:6.1.0" + dependencies: + graceful-fs: ^4.1.6 + universalify: ^2.0.0 + dependenciesMeta: + graceful-fs: + optional: true + checksum: 9419c886abc6f8a5088cbb222b7bc17c76e8ee9f6c0e5c38781a4e09488166084f25247bc0b58e025b08c43064c82ae860ad89a992e35fc8cfae639323b7edbc + languageName: node + linkType: hard + +"jsprim@npm:^1.2.2": + version: 1.4.1 + resolution: "jsprim@npm:1.4.1" + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.2.3 + verror: 1.10.0 + checksum: ee0177b7ef39e6becf18c586d31fabe15d62be88e7867d3aff86466e4a3de9a2cd47b6e597417aebc1cd3c2d43bc662e79ab5eecdadf3ce0643e909432ed6d2c + languageName: node + linkType: hard + +"just-debounce@npm:^1.0.0": + version: 1.1.0 + resolution: "just-debounce@npm:1.1.0" + checksum: 5bc04e8acace9b4d798af628bc53abb16cd463f1b8c29fc763986430da505d675e197b9be74daa33e42cd587daa54c4ba09522fae5923448586d63dd8563d4f2 + languageName: node + linkType: hard + +"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": + version: 3.2.2 + resolution: "kind-of@npm:3.2.2" + dependencies: + is-buffer: ^1.1.5 + checksum: e8a1835c4baa9b52666cd5d8ae89e6b9b9f5978600a30ba75fc92da332d1ba182bda90aa7372fc992a3eb6da261dc3fea0f136af24ddc87cfb668d40c817af56 + languageName: node + linkType: hard + +"kind-of@npm:^4.0.0": + version: 4.0.0 + resolution: "kind-of@npm:4.0.0" + dependencies: + is-buffer: ^1.1.5 + checksum: 2e7296c614f54ba9cdcab4c389ec9d8f6ed7955c661b4bd075d5c1b67107ee00263a82aa12f76b61209e9d93f4949ee3d20c6ff17a8b0d199d84ba06d6f59478 + languageName: node + linkType: hard + +"kind-of@npm:^5.0.0, kind-of@npm:^5.0.2": + version: 5.1.0 + resolution: "kind-of@npm:5.1.0" + checksum: c98cfe70c805a7a3a10ec4399fac2884fb4b277494baffea0712a5e8de49a0bbdc36d9cfedf7879f47567fa4d7f4d92fd5b69582bc8666100b3560e03bd88844 + languageName: node + linkType: hard + +"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 5de5d6577796af87a983199d6350ed41c670abec4a306cc43ca887c1afdbd6b89af9ab00016e3ca17eb7ad89ebfd9bb817d33baa89f855c6c95398a8b8abbf08 + languageName: node + linkType: hard + +"kleur@npm:^3.0.3": + version: 3.0.3 + resolution: "kleur@npm:3.0.3" + checksum: 20ef0e37fb3f9aebbec8a75b61f547051aa61e3a6c51bd2678e77a11d69d73885a76966aea77f09c40677c7dfa274a5e16741ec89859213c9f798d4a96f77521 + languageName: node + linkType: hard + +"last-run@npm:^1.1.0": + version: 1.1.1 + resolution: "last-run@npm:1.1.1" + dependencies: + default-resolution: ^2.0.0 + es6-weak-map: ^2.0.1 + checksum: 2e10e4f996114f1628f0dbb2a9caddcffecf6132ed3a8d24e1f174b5ea587944fb21f374b7906e345be2b28344f9b8c6d945e8b8d574d50ccd6999277c50fe28 + languageName: node + linkType: hard + +"lazystream@npm:^1.0.0": + version: 1.0.0 + resolution: "lazystream@npm:1.0.0" + dependencies: + readable-stream: ^2.0.5 + checksum: c5f628687ddbc762965814d80d80faa44e0c2ece207eee5783cbc656dc230c46bd18002719ea41a5f15646754070f67be11f2b8c2c1f04084f2395a355d84cb8 + languageName: node + linkType: hard + +"lcid@npm:^1.0.0": + version: 1.0.0 + resolution: "lcid@npm:1.0.0" + dependencies: + invert-kv: ^1.0.0 + checksum: 36f50f8be935c90e3f9296d3f7057df950ee27c4f1608549b11b3f88d26d68a19a47cf787b1a6e3eb292e820fcc8c96a67be2fca14f713430adb57b24e06fb96 + languageName: node + linkType: hard + +"lead@npm:^1.0.0": + version: 1.0.0 + resolution: "lead@npm:1.0.0" + dependencies: + flush-write-stream: ^1.0.2 + checksum: 8cac773a199e178e2904cc2bf5392c841b825dbe49394da8ee062d69d6399a6931f6fc6b4c399e3c94f171e8f002e7b539beea9e90c0b4bc79711838bb6b2558 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 6ebca7529809b8d099ab8793091b1ee8712a87932fae14c7d0c2693b0fcc0640aea72141a6539c03b9dae53a34f15a43dc151bb5c04eded0d1d38b277bfd206a + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: ^1.2.1 + type-check: ~0.4.0 + checksum: 2f6ddfb0b956f2cb6b1608253a62b0c30e7392dd3c7b4cf284dfe2889b44d8385eaa81597646e253752c312a960ccb5e4d596968e476d5f6614f4ca60e5218e9 + languageName: node + linkType: hard + +"levn@npm:~0.3.0": + version: 0.3.0 + resolution: "levn@npm:0.3.0" + dependencies: + prelude-ls: ~1.1.2 + type-check: ~0.3.2 + checksum: 775861da38dcb7e5f1de5bea2a1c7ffaede6e9e8632cfbac76be145ecb295370f46bb41307613c283d66f1fee5d8cc448ca3323c4a02d0fb1e913b2f78de2abb + languageName: node + linkType: hard + +"liftoff@npm:^3.1.0": + version: 3.1.0 + resolution: "liftoff@npm:3.1.0" + dependencies: + extend: ^3.0.0 + findup-sync: ^3.0.0 + fined: ^1.0.1 + flagged-respawn: ^1.0.0 + is-plain-object: ^2.0.4 + object.map: ^1.0.0 + rechoir: ^0.6.2 + resolve: ^1.1.7 + checksum: 1e9aa30c6bda4c4ecf7157595d81eca8ac74a367363799a3279fe50ebbb6dddcc4ce861af4d3237936a9f3e02ec3831b59c6991e01fd666c229b0ed50366f399 + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.1.6 + resolution: "lines-and-columns@npm:1.1.6" + checksum: 798b80ed7ae3fba34d43fe29591ccb4f16f6fca1da4e1f9922b92264b91d931012433c248daf8e44caa74feb40c0eaa0f27a14f8ee68b6ffb425f3c3f785af27 + languageName: node + linkType: hard + +"lint-staged@npm:^10.5.4": + version: 10.5.4 + resolution: "lint-staged@npm:10.5.4" + dependencies: + chalk: ^4.1.0 + cli-truncate: ^2.1.0 + commander: ^6.2.0 + cosmiconfig: ^7.0.0 + debug: ^4.2.0 + dedent: ^0.7.0 + enquirer: ^2.3.6 + execa: ^4.1.0 + listr2: ^3.2.2 + log-symbols: ^4.0.0 + micromatch: ^4.0.2 + normalize-path: ^3.0.0 + please-upgrade-node: ^3.2.0 + string-argv: 0.3.1 + stringify-object: ^3.3.0 + bin: + lint-staged: bin/lint-staged.js + checksum: dbcafe3679668379fc03f3aef481c3f710794ec03dd5c3915f26a0de110977fbcb44b55ab6dfcff9e8e5789c568ea5629e92f55944fc43f6f6fa1890ee5b07ba + languageName: node + linkType: hard + +"listr2@npm:^3.2.2": + version: 3.3.3 + resolution: "listr2@npm:3.3.3" + dependencies: + chalk: ^4.1.0 + cli-truncate: ^2.1.0 + figures: ^3.2.0 + indent-string: ^4.0.0 + log-update: ^4.0.0 + p-map: ^4.0.0 + rxjs: ^6.6.3 + through: ^2.3.8 + wrap-ansi: ^7.0.0 + peerDependencies: + enquirer: ">= 2.3.0 < 3" + checksum: 97ff0846bbcaaba76548db91fa005a80a4aa8e64e460cc3d6c549b74e8752a10565ab867fc86b59041a401b33a98714078d9e90903b3f7b22a9ba92674ad98c2 + languageName: node + linkType: hard + +"load-json-file@npm:^1.0.0": + version: 1.1.0 + resolution: "load-json-file@npm:1.1.0" + dependencies: + graceful-fs: ^4.1.2 + parse-json: ^2.2.0 + pify: ^2.0.0 + pinkie-promise: ^2.0.0 + strip-bom: ^2.0.0 + checksum: 3966dbc0c48f14df4091d89f4daf1e44b156f2c4e0870bf737b99e5925e0179277fc34226f03b7137a2e277d4e641cf626c6108c28910bbdce01e3d85e0d70b9 + languageName: node + linkType: hard + +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: ^3.0.0 + path-exists: ^3.0.0 + checksum: 0b6bf0c1bb09021499f6198ed6a4ae367e8224e2493a74cc7bc5f4e6eca9ed880a5f7fdfb4d57b7e21d3e289c3abfe152cd510cacb1d03049f9d81d9a7d302ca + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: ^4.1.0 + checksum: c58f49d45c8672d0a290dea0ce41fcb27205b3f2d61452ba335ef3b42ad36c10c31b1f061b46d96dd4b81e9a00e8a2897bc124d75623b80a9f6d36b1e754a6b5 + languageName: node + linkType: hard + +"lodash.sortby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.sortby@npm:4.7.0" + checksum: 43cde11276c66da7b3eda5e9f00dc6edc276d2bcf0a5969ffc62b612cd1c4baf2eff5e84cee11383005722c460a9ca0f521fad4fa1cd2dc1ef013ee4da2dfe63 + languageName: node + linkType: hard + +"lodash@npm:4.x, lodash@npm:^4.0.0, lodash@npm:^4.17.11, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:~4.17.10": + version: 4.17.21 + resolution: "lodash@npm:4.17.21" + checksum: 4983720b9abca930a4a46f18db163d7dad8dd00dbed6db0cc7b499b33b717cce69f80928b27bbb1ff2cbd3b19d251ee90669a8b5ea466072ca81c2ebe91e7468 + languageName: node + linkType: hard + +"log-symbols@npm:^4.0.0": + version: 4.0.0 + resolution: "log-symbols@npm:4.0.0" + dependencies: + chalk: ^4.0.0 + checksum: 2cbdb0427d1853f2bd36645bff42aaca200902284f28aadacb3c0fa4c8c43fe6bfb71b5d61ab08b67063d066d7c55b8bf5fbb43b03e4a150dbcdd643e9cd1dbf + languageName: node + linkType: hard + +"log-update@npm:^4.0.0": + version: 4.0.0 + resolution: "log-update@npm:4.0.0" + dependencies: + ansi-escapes: ^4.3.0 + cli-cursor: ^3.1.0 + slice-ansi: ^4.0.0 + wrap-ansi: ^6.2.0 + checksum: 65ee082f30570fb315a0f674cccef4d16ef5a7c9d2651a65099e665f0adbf848af5e4f9e580b6e81d5677a4df3d7ea06ff8118fe8428a570a4a387875bb8210c + languageName: node + linkType: hard + +"loud-rejection@npm:^1.0.0": + version: 1.6.0 + resolution: "loud-rejection@npm:1.6.0" + dependencies: + currently-unhandled: ^0.4.1 + signal-exit: ^3.0.0 + checksum: 9d57f7bc81da9a167dca46f9cc986dd18b0ae822811c69c2374f4945418234bb1ee102ca3a34bacf74e3bee122b27eed15604e57d5e1974f6fef8984861ed9ca + languageName: node + linkType: hard + +"lru-cache@npm:^4.0.1": + version: 4.1.5 + resolution: "lru-cache@npm:4.1.5" + dependencies: + pseudomap: ^1.0.2 + yallist: ^2.1.2 + checksum: 6a098d23629357451d4324e1e4fefccdd6df316df29e25571c6148220ced923258381ebeafdf919f90e28c780b650427390582618c1d5fe097873e656d062511 + languageName: node + linkType: hard + +"lru-cache@npm:^6.0.0": + version: 6.0.0 + resolution: "lru-cache@npm:6.0.0" + dependencies: + yallist: ^4.0.0 + checksum: b8b78353d2391c0f135cdc245c4744ad41c2efb1a6d98f31bc57a2cf48ebf02de96e4876657c3026673576bf1f1f61fc3fdd77ab00ad1ead737537bf17d8019d + languageName: node + linkType: hard + +"make-dir@npm:^3.0.0, make-dir@npm:^3.0.2": + version: 3.1.0 + resolution: "make-dir@npm:3.1.0" + dependencies: + semver: ^6.0.0 + checksum: 54b6f186c209c1b133d0d1710e6b04c41ebfcb0dac699e5a369ea1223f22c0574ef820b91db37cae6c245f5bda8aff9bfec94f6c23e7d75970446b34a58a79b0 + languageName: node + linkType: hard + +"make-error@npm:1.x": + version: 1.3.6 + resolution: "make-error@npm:1.3.6" + checksum: 2c780bab8409b865e8ee86697c599a2bf2765ec64d21eb67ccda27050e039f983feacad05a0d43aba3c966ea03d305d2612e94fec45474bcbc61181f57c5bb88 + languageName: node + linkType: hard + +"make-iterator@npm:^1.0.0": + version: 1.0.1 + resolution: "make-iterator@npm:1.0.1" + dependencies: + kind-of: ^6.0.2 + checksum: cfb73cba1dbebc7fb5584c53803491767909a1e3aa6e7b354329674f68d49d47da5af0830b7ec38b03ca62f3aa6efc5684ad10fae4dc4c1a9553eff9f790be6d + languageName: node + linkType: hard + +"makeerror@npm:1.0.x": + version: 1.0.11 + resolution: "makeerror@npm:1.0.11" + dependencies: + tmpl: 1.0.x + checksum: 582016a5e8c56c1101e5fd95ea0ed08e30e5c4fda27e00d1399f75d46bd55fc5475a23089175b61dada21f6a6058886fd00f5985bbe112b943bb0bc833b4ea4d + languageName: node + linkType: hard + +"map-cache@npm:^0.2.0, map-cache@npm:^0.2.2": + version: 0.2.2 + resolution: "map-cache@npm:0.2.2" + checksum: 3d205d20e0135a5b5f3e2b85e7bfa289cc2fc3c748fe802795e74c6fe157e5f2bed3b7c3a270b82fe36a02123880cb2e0dc525e1ae37ac7e673ce3e75a2e2c56 + languageName: node + linkType: hard + +"map-obj@npm:^1.0.0, map-obj@npm:^1.0.1": + version: 1.0.1 + resolution: "map-obj@npm:1.0.1" + checksum: e68b20e4fa76efdbba9a7af05b879eb7a6c5ccb7a9d813796de825da4c182fc3dab66f4b2a32a9aefae83db152a0172deb1e19a9c2322c6d412b8f9f81ca51a4 + languageName: node + linkType: hard + +"map-visit@npm:^1.0.0": + version: 1.0.0 + resolution: "map-visit@npm:1.0.0" + dependencies: + object-visit: ^1.0.0 + checksum: 9e85e6d802183927229d9ad04d70a0e0c7225451994605674d3ed4e4a21f817b4d9aba42a775e98078ffe47cf67df44a50eb07f965f14afead5015c8692503bd + languageName: node + linkType: hard + +"matchdep@npm:^2.0.0": + version: 2.0.0 + resolution: "matchdep@npm:2.0.0" + dependencies: + findup-sync: ^2.0.0 + micromatch: ^3.0.4 + resolve: ^1.4.0 + stack-trace: 0.0.10 + checksum: df53c85b080a71c149141517a3a9cee53e11a92e8db8484ac2a0e6310a540accede12af186e9f7671c5ccef7249ed40a5dfa45af2e8025c0f51e2f6afd8c087f + languageName: node + linkType: hard + +"meow@npm:^3.7.0": + version: 3.7.0 + resolution: "meow@npm:3.7.0" + dependencies: + camelcase-keys: ^2.0.0 + decamelize: ^1.1.2 + loud-rejection: ^1.0.0 + map-obj: ^1.0.1 + minimist: ^1.1.3 + normalize-package-data: ^2.3.4 + object-assign: ^4.0.1 + read-pkg-up: ^1.0.1 + redent: ^1.0.0 + trim-newlines: ^1.0.0 + checksum: f0d4feec4052507e9be2902a89143f92c19925130655aa83fc5c5fd51b80c58e140a6d127dae596d8723cc614f31575a49408f70bef7c638f6989276be01d301 + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: cde834809a0e65485e474de3162af9853ab2a07977fd36d328947b7b3e6207df719ffb115b11085ecc570501e15a2aa8bacd772ac53f77873f53b0626e52a39a + languageName: node + linkType: hard + +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 7ad40d8b140a5ed4e621b916858410e4f0dd4ced1e5a2b675563347e70f0661d95ba6c3c8007dd3c4e242d0b8eee44559fa75bb90a146cf168debffc0cbc18f3 + languageName: node + linkType: hard + +"micromatch@npm:^3.0.4, micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": + version: 3.1.10 + resolution: "micromatch@npm:3.1.10" + dependencies: + arr-diff: ^4.0.0 + array-unique: ^0.3.2 + braces: ^2.3.1 + define-property: ^2.0.2 + extend-shallow: ^3.0.2 + extglob: ^2.0.4 + fragment-cache: ^0.2.1 + kind-of: ^6.0.2 + nanomatch: ^1.2.9 + object.pick: ^1.3.0 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.2 + checksum: a60e73539a3ac6c6231f11642257a460861302df5986a94fd418d1b64a817409cda778d7023b53541a2091b523eda2c6f7212721e380d0b696284b7ca0a45bda + languageName: node + linkType: hard + +"micromatch@npm:^4.0.2": + version: 4.0.2 + resolution: "micromatch@npm:4.0.2" + dependencies: + braces: ^3.0.1 + picomatch: ^2.0.5 + checksum: 0cb0e11d647cbb65e398a0a8a1340a7fb751ae2722346219c435704cfac8b3275a94a6464236fe867f52ad46a24046d3bc4ac11b3d21ddb73bc44e27cf1e4904 + languageName: node + linkType: hard + +"mime-db@npm:1.46.0": + version: 1.46.0 + resolution: "mime-db@npm:1.46.0" + checksum: 4e137ac502ca5ba6c583e552c5fa6abd0c2157592f647824ba7246b771eb42c65c2a1816fc52b27afdbb88a026127f1d5fba354f9dcde591b3b464be07c3d27e + languageName: node + linkType: hard + +"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": + version: 2.1.29 + resolution: "mime-types@npm:2.1.29" + dependencies: + mime-db: 1.46.0 + checksum: 744d72b2a24c64d2aacc1ead86bfc827c2c4f1bb6f3b4bf6d8684b82f5ddd0b75a5c0eff128a888c09080f9ad7979400b64a697889690fca3c42de80c8f5e187 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: f7d2d7febe3d7dd71da0700b1d455ec6c951a96b463ffcc303c93771b9fe4e45318152ea677c241505b19b39e41d906e5052cfb382d59a44bdb6d3d57f8b467b + languageName: node + linkType: hard + +"mini-signals@npm:^1.2.0": + version: 1.2.0 + resolution: "mini-signals@npm:1.2.0" + checksum: b929695da22dae24b80c4d3d34d3062addd75b99a1edc6f65a4277305eda536ec99cb90ca804d264d70e895b5fdbc2c71ddfdeeef7a1cf07f087be66326353a9 + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:~3.0.2": + version: 3.0.4 + resolution: "minimatch@npm:3.0.4" + dependencies: + brace-expansion: ^1.1.7 + checksum: 47eab9263962cacd5733e274ecad2d8e54b0f8e124ba35ae69189e296058f634a4967b87a98954f86fa5c830ff177caf827ce0136d28717ed3232951fb4fae62 + languageName: node + linkType: hard + +"minimist@npm:^1.1.1, minimist@npm:^1.1.3, minimist@npm:^1.2.0, minimist@npm:^1.2.5": + version: 1.2.5 + resolution: "minimist@npm:1.2.5" + checksum: b77b8590147a4e217ff34266236bc39de23b52e6e33054076991ff674c7397a1380a7bde11111916f16f003a94aaa7e4f3d92595a32189644ff607fabc65a5b6 + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.1.3 + resolution: "minipass@npm:3.1.3" + dependencies: + yallist: ^4.0.0 + checksum: d12b95a845f15950bce7a77730c89400cf0c4f55e7066338da1d201ac148ece4ea8efa79e45a2c07c868c61bcaf9e996c4c3d6bf6b85c038ffa454521fc6ecd5 + languageName: node + linkType: hard + +"minizlib@npm:^2.1.1": + version: 2.1.2 + resolution: "minizlib@npm:2.1.2" + dependencies: + minipass: ^3.0.0 + yallist: ^4.0.0 + checksum: 5a45b57b3467e5a743d87a96d7be57598a6f72eb3b7eeac237074c566bd04278766ae03bb523c32f34581c565a19e74e54ec90c6ce0630a540787c755b4c4b4e + languageName: node + linkType: hard + +"mixin-deep@npm:^1.2.0": + version: 1.3.2 + resolution: "mixin-deep@npm:1.3.2" + dependencies: + for-in: ^1.0.2 + is-extendable: ^1.0.1 + checksum: 68da98bc1af57ffccde7abdc86ac49feec263b73b3c483ab7e6e2fab9aa2b06fba075da9e86bcda725133c1d2a59e4c810a17b55865c67c827871c25d5713c33 + languageName: node + linkType: hard + +"mkdirp@npm:1.x, mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": + version: 1.0.4 + resolution: "mkdirp@npm:1.0.4" + bin: + mkdirp: bin/cmd.js + checksum: 1aa3a6a2d7514f094a91329ec09994f5d32d2955a4985ecbb3d86f2aaeafc4aa11521f98d606144c1d49cd9835004d9a73342709b8c692c92e59eacf37412468 + languageName: node + linkType: hard + +"mkdirp@npm:>=0.5 0, mkdirp@npm:^0.5.0, mkdirp@npm:^0.5.1": + version: 0.5.5 + resolution: "mkdirp@npm:0.5.5" + dependencies: + minimist: ^1.2.5 + bin: + mkdirp: bin/cmd.js + checksum: 9dd9792e891927b14ca02226dbe1daeb717b9517a001620d5e2658bbc72c5e4f06887b6cbcbb60595fa5a56e701073cf250f1ed69c1988a6b89faf9fd6a4d049 + languageName: node + linkType: hard + +"ms@npm:2.0.0": + version: 2.0.0 + resolution: "ms@npm:2.0.0" + checksum: 1a230340cc7f322fbe916783d8c8d60455407c6b7fb7f901d6ee34eb272402302c5c7f070a97b8531245cbb4ca6a0a623f6a128d7e5a5440cefa2c669c0b35bb + languageName: node + linkType: hard + +"ms@npm:2.1.2": + version: 2.1.2 + resolution: "ms@npm:2.1.2" + checksum: 9b65fb709bc30c0c07289dcbdb61ca032acbb9ea5698b55fa62e2cebb04c5953f1876a1f3f7f4bc2e91d4bf4d86003f3e207c3bc6ee2f716f99827e62389cd0e + languageName: node + linkType: hard + +"mute-stdout@npm:^1.0.0": + version: 1.0.1 + resolution: "mute-stdout@npm:1.0.1" + checksum: 9a242d32e9203b55a038c6332019db7da7cc84ade8afd705ba843dfa3c8dc26cbec124c851c2c4b11c802fa1b1a0586707e8c26a847f3e529d5e09498ade3d8f + languageName: node + linkType: hard + +"nan@npm:^2.12.1, nan@npm:^2.13.2": + version: 2.14.2 + resolution: "nan@npm:2.14.2" + dependencies: + node-gyp: latest + checksum: 36349b2e5df4182aa0d0cc43fcd6cc782ca560a83c2764743d80c14ba5028d0c54041a2f464b8d4cb18a884e04415034a0a764c745e1d5502ea34a5cb6470a39 + languageName: node + linkType: hard + +"nanomatch@npm:^1.2.9": + version: 1.2.13 + resolution: "nanomatch@npm:1.2.13" + dependencies: + arr-diff: ^4.0.0 + array-unique: ^0.3.2 + define-property: ^2.0.2 + extend-shallow: ^3.0.2 + fragment-cache: ^0.2.1 + is-windows: ^1.0.2 + kind-of: ^6.0.2 + object.pick: ^1.3.0 + regex-not: ^1.0.0 + snapdragon: ^0.8.1 + to-regex: ^3.0.1 + checksum: 2e1440c5705f0192b9d9b46bb682a1832052974dad359ed473b9f555abb5c55a08b3d5ba45d7d37c53a83f64b7f93866292824d3086a150ff7980e71874feb3b + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 2daf93d9bb516eddb06e2e80657a605af2e494d47c65d090ba43691aaffbc41f520840f1c9d3b7b641977af950217a4ab6ffb85bafcd5dfa8ba6fe4e68c43b53 + languageName: node + linkType: hard + +"neo-async@npm:^2.6.0": + version: 2.6.2 + resolution: "neo-async@npm:2.6.2" + checksum: 34a8f5309135be258a97082af810ea43700a3e0121e7b1ea31b3e22e2663d7c0d502cd949abb6d1ab8c11abfd04500ee61721ec5408b2d4bef8105241fd8a4c2 + languageName: node + linkType: hard + +"next-tick@npm:~1.0.0": + version: 1.0.0 + resolution: "next-tick@npm:1.0.0" + checksum: 18db63c447c6e65a23235b91da9ccdae53f74f9194cfbc71a1fd3170cdf81bd157d9676e47c2ea4ea5bd20e09fb019917b0a45d8e1a63e377175fc083f285234 + languageName: node + linkType: hard + +"nice-try@npm:^1.0.4": + version: 1.0.5 + resolution: "nice-try@npm:1.0.5" + checksum: 330f190bf68146a560008b661e1ddbb2eac667c16990b6bf791516d89cceb707ec67901ad647d2b32674bfa816b916489cead5c2fb6e96864c659573ab5aa3bb + languageName: node + linkType: hard + +"node-gyp@npm:^3.8.0": + version: 3.8.0 + resolution: "node-gyp@npm:3.8.0" + dependencies: + fstream: ^1.0.0 + glob: ^7.0.3 + graceful-fs: ^4.1.2 + mkdirp: ^0.5.0 + nopt: 2 || 3 + npmlog: 0 || 1 || 2 || 3 || 4 + osenv: 0 + request: ^2.87.0 + rimraf: 2 + semver: ~5.3.0 + tar: ^2.0.0 + which: 1 + bin: + node-gyp: ./bin/node-gyp.js + checksum: bbea370ec5884427c5219f0e8392431c43d9f448b66aee340188d5fed2c86305dd51fdcf75678662f107cfd6baf6b4d10d53e3c62410002e4d3276045c956dbe + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 7.1.2 + resolution: "node-gyp@npm:7.1.2" + dependencies: + env-paths: ^2.2.0 + glob: ^7.1.4 + graceful-fs: ^4.2.3 + nopt: ^5.0.0 + npmlog: ^4.1.2 + request: ^2.88.2 + rimraf: ^3.0.2 + semver: ^7.3.2 + tar: ^6.0.2 + which: ^2.0.2 + bin: + node-gyp: bin/node-gyp.js + checksum: fca9ecb1be01f707b76c2aec01f0f2ef4ff45c4e24df378c01a4a2c93b4a8172b47ad59f07af91c54a797a8a77fc72e087e29a97a52c892df507245530c46bfa + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 8fce4b82d4173041114150bc49fe2333a0628a1ae31ab666db816742cbce422ef28eb834a7e66d2d09a0f635d3b5fad8c7330ec792db9558f9f7a47fa4eac87f + languageName: node + linkType: hard + +"node-modules-regexp@npm:^1.0.0": + version: 1.0.0 + resolution: "node-modules-regexp@npm:1.0.0" + checksum: 90f928a1dbc3c98d39b3d133f8c910e6bd8e45416f8e15151a31c41550cffe4e3022a39c38c20ae4ceca56b6e63741def4f3a2018080d13f5be245f4b060a9b1 + languageName: node + linkType: hard + +"node-notifier@npm:^8.0.0": + version: 8.0.1 + resolution: "node-notifier@npm:8.0.1" + dependencies: + growly: ^1.3.0 + is-wsl: ^2.2.0 + semver: ^7.3.2 + shellwords: ^0.1.1 + uuid: ^8.3.0 + which: ^2.0.2 + checksum: ce9611cfd8a6021b9aed5b9ad36e4717b9e151b46fe2f434408791291d261e695f3f397000e61edf23f2d1e5d2b73390abeb04b81754a9cfa95f68cfb2954cf1 + languageName: node + linkType: hard + +"node-releases@npm:^1.1.70": + version: 1.1.71 + resolution: "node-releases@npm:1.1.71" + checksum: 9e283003f1deafd0ca7f9bbde9c4b5b05d880ca165217f5227b37406626d6689a246a5c4c72f9a8512be65cd51b13cc7d0f5d8bc68ad36089b620f1810292340 + languageName: node + linkType: hard + +"node-sass@npm:^4.8.3": + version: 4.14.1 + resolution: "node-sass@npm:4.14.1" + dependencies: + async-foreach: ^0.1.3 + chalk: ^1.1.1 + cross-spawn: ^3.0.0 + gaze: ^1.0.0 + get-stdin: ^4.0.1 + glob: ^7.0.3 + in-publish: ^2.0.0 + lodash: ^4.17.15 + meow: ^3.7.0 + mkdirp: ^0.5.1 + nan: ^2.13.2 + node-gyp: ^3.8.0 + npmlog: ^4.0.0 + request: ^2.88.0 + sass-graph: 2.2.5 + stdout-stream: ^1.4.0 + true-case-path: ^1.0.2 + bin: + node-sass: bin/node-sass + checksum: eac20417c8ce248eaeb5e12c68737f9d59abcca2679053f1fa42453b555ca544850b66b956a90b9e612cd66e8136f896d5d81b5c25f7c9c28830c742df1b819f + languageName: node + linkType: hard + +"nopt@npm:2 || 3": + version: 3.0.6 + resolution: "nopt@npm:3.0.6" + dependencies: + abbrev: 1 + bin: + nopt: ./bin/nopt.js + checksum: cb2105d5286b96243d8b71964ccbce04aa8776d6479b8a3b567c2b5b3da86b35ff2b95c22e443337724d13acb60db9b107c64851424d9d60a088a461a976da29 + languageName: node + linkType: hard + +"nopt@npm:^5.0.0": + version: 5.0.0 + resolution: "nopt@npm:5.0.0" + dependencies: + abbrev: 1 + bin: + nopt: bin/nopt.js + checksum: e1523158fca7f99d0102cd4db7a651441968d7ffebb31e691dfa5dde546343126a29e50af12061cc4459940e6ecfb8d70887567a73c599799c3e1fc39e9647a1 + languageName: node + linkType: hard + +"normalize-package-data@npm:^2.3.2, normalize-package-data@npm:^2.3.4, normalize-package-data@npm:^2.5.0": + version: 2.5.0 + resolution: "normalize-package-data@npm:2.5.0" + dependencies: + hosted-git-info: ^2.1.4 + resolve: ^1.10.0 + semver: 2 || 3 || 4 || 5 + validate-npm-package-license: ^3.0.1 + checksum: 97d4d6b061cab51425ddb05c38d126d7a1a2a6f2c9949bef2b5ad7ef19c005df12099ea442e4cb09190929b7770008f94f87b10342a66f739acf92a7ebb9d9f2 + languageName: node + linkType: hard + +"normalize-path@npm:^2.1.1": + version: 2.1.1 + resolution: "normalize-path@npm:2.1.1" + dependencies: + remove-trailing-separator: ^1.0.1 + checksum: 9eb82b2f6abc1b99d820c36405d6b7a26a4cfa49d49d397eb2ad606b1295cb8e243b6071b18826907ae54a9a2b35373a83d827d843d19b76efcfa267d72cb301 + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 215a701b471948884193628f3e38910353abf445306b519c42c2a30144b8beb8ca0a684da97bfc2ee11eb168c35c776d484274da4bd8f213d2b22f70579380ee + languageName: node + linkType: hard + +"now-and-later@npm:^2.0.0": + version: 2.0.1 + resolution: "now-and-later@npm:2.0.1" + dependencies: + once: ^1.3.2 + checksum: c3130e565f3ac4b8d3b6b329d2f8a8391c844a7c8718bc4747b77d1b431fa5259be92d8e88ba1dd0f79963539146dae735f46d48540e079367a917a9adad7488 + languageName: node + linkType: hard + +"npm-run-path@npm:^2.0.0": + version: 2.0.2 + resolution: "npm-run-path@npm:2.0.2" + dependencies: + path-key: ^2.0.0 + checksum: 0a1bc9a1e0faa7e54a011929b830121d5da393f50cbe37c83f3ffd67781b6d176739ba6e8eab5d56faa05738a60f7eb50389673767db0dc887073932f80b9b60 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.0": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: ^3.0.0 + checksum: 058fd068804f8c34fcef9393fc895d45400834c9f90bbafc57259f9fd47e8796712e4ad54524f0971b806260a118bf61ac37b0bf9f74e9e58c84bae780ae09e6 + languageName: node + linkType: hard + +"npmlog@npm:0 || 1 || 2 || 3 || 4, npmlog@npm:^4.0.0, npmlog@npm:^4.1.2": + version: 4.1.2 + resolution: "npmlog@npm:4.1.2" + dependencies: + are-we-there-yet: ~1.1.2 + console-control-strings: ~1.1.0 + gauge: ~2.7.3 + set-blocking: ~2.0.0 + checksum: 0cd63f127c1bbda403a112e83b11804aaee2b58b0bc581c3bde9b82e4d957c7ed0ad3bee499af706cdd3599bb93669d7cbbf29fb500407d35fe75687ac96e2c0 + languageName: node + linkType: hard + +"number-is-nan@npm:^1.0.0": + version: 1.0.1 + resolution: "number-is-nan@npm:1.0.1" + checksum: 42251b2653a16f8b47639d93c3b646fff295a4582a6b3a2fc51a651d4511427c247629709063d19befbceb8a3db1a8e9f17016b3a207291e79e4bd1413032918 + languageName: node + linkType: hard + +"nwsapi@npm:^2.2.0": + version: 2.2.0 + resolution: "nwsapi@npm:2.2.0" + checksum: fb0f05113a829296f964688503d991b136d02d153769288d12226a4d52e17b50c073eceeee0ff1e8377ca8e86c244e1f9b849c9eed7fca97a03aa8a59f074c06 + languageName: node + linkType: hard + +"oauth-sign@npm:~0.9.0": + version: 0.9.0 + resolution: "oauth-sign@npm:0.9.0" + checksum: af1ab60297c3a687d1d2de5c43c6453c4df6939de3e6114ada4a486ac51fa7ab1769f33000b94c0e8ffced5ae4c57c4f5d36b517792d83e9e9742578a728682e + languageName: node + linkType: hard + +"object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": + version: 4.1.1 + resolution: "object-assign@npm:4.1.1" + checksum: 66cf021898fc1b13ea573ea8635fbd5a76533f50cecbc2fcd5eee1e8029af41bcebe7023788b6d0e06cbe4401ecea075d972f78ec74467cdc571a0f1a4d1a081 + languageName: node + linkType: hard + +"object-copy@npm:^0.1.0": + version: 0.1.0 + resolution: "object-copy@npm:0.1.0" + dependencies: + copy-descriptor: ^0.1.0 + define-property: ^0.2.5 + kind-of: ^3.0.3 + checksum: d91d46e54297cad0544f04e4dff4694f92aca9661f59ad7e803a1ba94a2bb24b38ca4fd59ea827d24c9bdc6f7148d5c838287ee4b2b9c5df9b445b1c0d7a066c + languageName: node + linkType: hard + +"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 30d72d768b7f3f42144cee517b80e70c40cf39bb76f100557ffac42779613c591780135c54d8133894a78d2c0ae817e24a5891484722c6019a5cd5b58c745c66 + languageName: node + linkType: hard + +"object-visit@npm:^1.0.0": + version: 1.0.1 + resolution: "object-visit@npm:1.0.1" + dependencies: + isobject: ^3.0.0 + checksum: 8666727dbfb957676c0b093cde6d676ed6b847b234d98a4ed7f4d7f7e4b40c00af8067354d5c45052dc40c6830d68b68212c15c96dbcc286cdc96aca58faf548 + languageName: node + linkType: hard + +"object.assign@npm:^4.0.4, object.assign@npm:^4.1.0": + version: 4.1.2 + resolution: "object.assign@npm:4.1.2" + dependencies: + call-bind: ^1.0.0 + define-properties: ^1.1.3 + has-symbols: ^1.0.1 + object-keys: ^1.1.1 + checksum: a5855cc6db3f64606c41ceb97cb9847e667d8240889d771d65638244be1d35c2e2ccb5762f437bb76abf4e98ab4634a9d302380398121cee288a44dce5028f54 + languageName: node + linkType: hard + +"object.defaults@npm:^1.0.0, object.defaults@npm:^1.1.0": + version: 1.1.0 + resolution: "object.defaults@npm:1.1.0" + dependencies: + array-each: ^1.0.1 + array-slice: ^1.0.0 + for-own: ^1.0.0 + isobject: ^3.0.0 + checksum: 837678fe93d13de49d7cdfbe9fd62991512b6b4cbd0a1b75019d23d76bdb79502b7e0bc87cb66324363079b1fb75c618021f629319d5b48e50392c883fbb9890 + languageName: node + linkType: hard + +"object.map@npm:^1.0.0": + version: 1.0.1 + resolution: "object.map@npm:1.0.1" + dependencies: + for-own: ^1.0.0 + make-iterator: ^1.0.0 + checksum: 1949d05b07ba0b677bf0d7844c5ee8d489c8e68c7bb03a37b477b6dedf4b87ddccd49cad86720fd8e0f2a3fd69f9fcb51d997b718f7794780a3670512d80522c + languageName: node + linkType: hard + +"object.pick@npm:^1.2.0, object.pick@npm:^1.3.0": + version: 1.3.0 + resolution: "object.pick@npm:1.3.0" + dependencies: + isobject: ^3.0.1 + checksum: e22d555d3bb73c665a5baa1da7789d3a98f557d8712a9bbe34dc59d4adbce9d390245815296025de5260b18794de647401a6b2ae1ba0ab854a6710e2958291f6 + languageName: node + linkType: hard + +"object.reduce@npm:^1.0.0": + version: 1.0.1 + resolution: "object.reduce@npm:1.0.1" + dependencies: + for-own: ^1.0.0 + make-iterator: ^1.0.0 + checksum: 97ccf26e6f45575ce9dee493329c503db556cf0d5f54dc98595b1feef870fe71c8e04e65be2f88721bc2e15b5d0e1c6d5a055cd86c99c14874e9a5dcedf0e4d2 + languageName: node + linkType: hard + +"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.3.2, once@npm:^1.4.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: 1 + checksum: 57afc246536cf6494437f982b26475f22bee860f8b77ce8eb1543f42a8bffe04b2c66ddfea9a16cb25ccb80943f8ee4fc639367ef97b7a6a4f2672eb573963f5 + languageName: node + linkType: hard + +"onetime@npm:^5.1.0": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: ^2.1.0 + checksum: e425f6caeb20cf2598ffece94be5663932e34d074f1631b682b13d5f01cc1e0712a7dc711eff1706bb5a5aaab8a52e37bd5edcf560334e3222219d7e8b09c21c + languageName: node + linkType: hard + +"optionator@npm:^0.8.1": + version: 0.8.3 + resolution: "optionator@npm:0.8.3" + dependencies: + deep-is: ~0.1.3 + fast-levenshtein: ~2.0.6 + levn: ~0.3.0 + prelude-ls: ~1.1.2 + type-check: ~0.3.2 + word-wrap: ~1.2.3 + checksum: a5cdced2c92d2bf2b2338b7e29b871eb97987424f7b50d5446853f709f53c855714465ee4bf1842fed2a175445d78cd44376a16666e38ef90ebf4670173d98b8 + languageName: node + linkType: hard + +"optionator@npm:^0.9.1": + version: 0.9.1 + resolution: "optionator@npm:0.9.1" + 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.3 + checksum: bdf5683f986d00e173e6034837b7b6a9e68c7e1a37d7684b240adf1758db9076cfb04c9f64be29327881bb06c5017afb8b65012c5f02d07b180e9f6f42595ffd + languageName: node + linkType: hard + +"ordered-read-streams@npm:^1.0.0": + version: 1.0.1 + resolution: "ordered-read-streams@npm:1.0.1" + dependencies: + readable-stream: ^2.0.1 + checksum: f650ae7590d2696284001016bd4012200a9d4df41b7b25909019cdd8df207abb6ac84d70c91370808745bc0512933f54c34a668a7afc5ada384d8acc7b4380c4 + languageName: node + linkType: hard + +"os-homedir@npm:^1.0.0": + version: 1.0.2 + resolution: "os-homedir@npm:1.0.2" + checksum: 725256246b2cec353250ec46442e3cfa7bc96ef92285d448a90f12f4bbd78c1bf087051b2cef0382da572e1a9ebc8aa24bd0940a3bdc633c3e3012eef1dc6848 + languageName: node + linkType: hard + +"os-locale@npm:^1.4.0": + version: 1.4.0 + resolution: "os-locale@npm:1.4.0" + dependencies: + lcid: ^1.0.0 + checksum: 19d876790073758c346c8df2ec40a9c28ee1497b185bfb54d3fd082b9b82e61f2ee3a9bd329cdd6ae878c7fce045c0c3b21c1196061af8360aebf2775fa27b2b + languageName: node + linkType: hard + +"os-tmpdir@npm:^1.0.0": + version: 1.0.2 + resolution: "os-tmpdir@npm:1.0.2" + checksum: ca158a3c2e48748adc7736cdbe4c593723f8ed8581d2aae2f2a30fdb9417d4ba14bed1cd487d47561898a7b1ece88bce69745e9ce0303e1dea9ea7d22d1f1082 + languageName: node + linkType: hard + +"osenv@npm:0": + version: 0.1.5 + resolution: "osenv@npm:0.1.5" + dependencies: + os-homedir: ^1.0.0 + os-tmpdir: ^1.0.0 + checksum: 1c7462808c5ff0c2816b11f2f46265a98c395586058f98d73a6deac82955744484b277baedceeb962c419f3b75d0831a77ce7cf38b9e4f20729943ba79d72b08 + languageName: node + linkType: hard + +"p-each-series@npm:^2.1.0": + version: 2.2.0 + resolution: "p-each-series@npm:2.2.0" + checksum: d5a0896eb75e3e511055e664f7aaae695a67c0ed3696e560693d49fb3a19f554d017afeccc90df40d2d01681f972dc47d353015f38558ddef866f28ab291b743 + languageName: node + linkType: hard + +"p-finally@npm:^1.0.0": + version: 1.0.0 + resolution: "p-finally@npm:1.0.0" + checksum: 01f49b2d9c67573b3a1cb253cd9e1ecf5c912b6ba5de8824118bbc8d647bfa6296820b5a536e91ec68a54395d4e1c58de9a381ded3b688074fb446a8fe351931 + languageName: node + linkType: hard + +"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: ^2.0.0 + checksum: 5f20492a25c5f93fca2930dbbf41fa1bee46ef70eaa6b49ad1f7b963f309e599bc40507e0a3a531eee4bcd10fec4dd4a63291d0e3b2d84ac97d7403d43d271a9 + languageName: node + linkType: hard + +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: ^2.0.0 + checksum: 3ee9e3ed0b1b543f8148ef0981d33013d82a21c338b117a2d15650456f8dc888c19eb8a98484e7e159276c3ad9219c3e2a00b63228cab46bf29aeaaae096b1d6 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: ^2.2.0 + checksum: 57f9abef0b29f02ff88c0936a392c9a1fbdd08169e636e0d85b7407c108014d71578c0c6fe93fa49b5bf3857b20d6f16b96389e2b356f7f599d4d2150505844f + languageName: node + linkType: hard + +"p-map@npm:^4.0.0": + version: 4.0.0 + resolution: "p-map@npm:4.0.0" + dependencies: + aggregate-error: ^3.0.0 + checksum: d51e630d72b7c38bc9e396710e7a068f0b813fe4db6f4a2d1ce2972e7fa11142c763c3aa39bcfd77c0133688c1ebfdd9b38fa3ac4c6ada20b62df26239c5c0e4 + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 20983f3765466c1ab617ed153cb53b70ac5df828d854a3334d185e20b37f436e9096f12bc1b7fc96d8908dc927a3685172d3d89e755774f57b7103460c54dcc5 + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: ^3.0.0 + checksum: 58714b9699f8e84340aaf0781b7cbd82f1c357f6ce9c035c151d0e8c1e9b869c51b95b680882f0d21b4751e817a6c936d4bb2952a1a1d9d9fb27e5a84baec2aa + languageName: node + linkType: hard + +"parse-filepath@npm:^1.0.1": + version: 1.0.2 + resolution: "parse-filepath@npm:1.0.2" + dependencies: + is-absolute: ^1.0.0 + map-cache: ^0.2.0 + path-root: ^0.1.1 + checksum: e9843598f4c90fb9a08563141efc99570031fd037fbcd414a0b92239b059a709a7298d1a9c6861fb6f7d651f558f36dedf795ebb333b850481b558e65f93d72e + languageName: node + linkType: hard + +"parse-json@npm:^2.2.0": + version: 2.2.0 + resolution: "parse-json@npm:2.2.0" + dependencies: + error-ex: ^1.2.0 + checksum: 920582196a8edebb3d3c4623b2f057987218272b35ae4d2d310c00bc1bd7e89b87c79358d7e009d54f047ca2eea82eab8d7e1b14e1f7cbbb345ef29fcda29731 + languageName: node + linkType: hard + +"parse-json@npm:^5.0.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": ^7.0.0 + error-ex: ^1.3.1 + json-parse-even-better-errors: ^2.3.0 + lines-and-columns: ^1.1.6 + checksum: 65b1e494a51862340248f542666712830c7b6f4d632ca099520eeacb163275f35cbbcf72643cab1d8a71c3cdf87dcd0a7e03c685c7ac1068d24b49c915a7e884 + languageName: node + linkType: hard + +"parse-node-version@npm:^1.0.0": + version: 1.0.1 + resolution: "parse-node-version@npm:1.0.1" + checksum: 79ae38178715cd9ebec482d876b8bc773c98e017ccdb50d40937e9d65ece0ebf7eef507ed100e182e352b0bacfe2acba6b3b3b7ae978be20a79a91a4853bb27b + languageName: node + linkType: hard + +"parse-passwd@npm:^1.0.0": + version: 1.0.0 + resolution: "parse-passwd@npm:1.0.0" + checksum: e196edc373f7cdeb07072c346aa22204f9bad6b4d4fde5186d83a770cc22c65388da1da941d6f147372986edab52732365ffe05a1d7f35cbc822a014622d8439 + languageName: node + linkType: hard + +"parse-uri@npm:^1.0.0": + version: 1.0.3 + resolution: "parse-uri@npm:1.0.3" + checksum: 711a98683460104a19dde92fb158d75801bd16b0fc2c40f18522192a8ecf36de419da0e9d819b4e96be1906fff34c5947a08ecbeb794651bd0fa1c3b586c899e + languageName: node + linkType: hard + +"parse5@npm:5.1.1": + version: 5.1.1 + resolution: "parse5@npm:5.1.1" + checksum: fad72ff5010ee8a6f0a38b83fc886b71a54d746d5c4ff5aad74d6ba1fe87b9606585bf32aa200b015ce329e0906f50f2851f29876abeacd5c13567c7a0455362 + languageName: node + linkType: hard + +"pascalcase@npm:^0.1.1": + version: 0.1.1 + resolution: "pascalcase@npm:0.1.1" + checksum: 268a9dbf9cd934fcd0ba02733b7d6176834b13a608bbcd295550636b3c6371a6047875175b457e705b283e81ec171884c9cd86d1fd6c49f70f66fbc3783dc0c1 + languageName: node + linkType: hard + +"path-dirname@npm:^1.0.0": + version: 1.0.2 + resolution: "path-dirname@npm:1.0.2" + checksum: 4af73745fd97680c95b356b88450cd4c21d6825d0580620331382a6c910b76b3ced4aa2c4ddc2953d938bd758906b3d3aa2f56a2f601ec52763ed2cbbfc0106b + languageName: node + linkType: hard + +"path-exists@npm:^2.0.0": + version: 2.1.0 + resolution: "path-exists@npm:2.1.0" + dependencies: + pinkie-promise: ^2.0.0 + checksum: 71664885c56b48b543b0ccf2fca9d06c022ad88b6431a8d7c32ad8cba94a8e457b31cfc0ceeee7417be31d8e59574b1cb4a4551cb1efffb91f64f74034daea3d + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 09683e92bafb5657838217cce04e4f2f0530c274bc357c995c3231461030566e9f322b9a8bcc1ea810996e250d9a293ca36dd78dbdd6bfbee42e85a94772d6d5 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 6ab15000c5bea4f3e6e6b651983276e27ee42907ea29f5bd68f0d5c425c22f1664ab53c355099723f59b0bfd31aa52d29ea499e1843bf62543e045698f4c77b2 + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 907e1e3e6ac0aef6e65adffd75b3892191d76a5b94c5cf26b43667c4240531d11872ca6979c209b2e5e1609f7f579d02f64ba9936b48bb59d36cc529f0d965ed + languageName: node + linkType: hard + +"path-key@npm:^2.0.0, path-key@npm:^2.0.1": + version: 2.0.1 + resolution: "path-key@npm:2.0.1" + checksum: 7dc807a2baa11d6bc0fca72148a0a0ca69ab73d98fbe42e10d22764d1ef547767f2b4ff827c6bc66e733388cd8d54297a45a39499825b9fdfd18959202384029 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: e44aa3ca9faed0440994883050143b1214fffb907bf3a7bbdba15dc84f60821617c0d84e4cc74e1d84e9274003da50427f54d739b0b47636bcbaff4ec71b9b86 + languageName: node + linkType: hard + +"path-parse@npm:^1.0.6": + version: 1.0.6 + resolution: "path-parse@npm:1.0.6" + checksum: 2eee4b93fb3ae13600e3fca18390d9933bbbcf725a624f6b8df020d87515a74872ff6c58072190d6dc75a5584a683dc6ae5c385ad4e4f4efb6e66af040d56c67 + languageName: node + linkType: hard + +"path-root-regex@npm:^0.1.0": + version: 0.1.2 + resolution: "path-root-regex@npm:0.1.2" + checksum: f301f42475743fd73ebc47019b0477f1006e427fd73f74a7b2dbca0e41c3cdab00d97d8fac45ba2f9f5f20741d4194e955a6326bac8d832f43fc765f474c9a7f + languageName: node + linkType: hard + +"path-root@npm:^0.1.1": + version: 0.1.1 + resolution: "path-root@npm:0.1.1" + dependencies: + path-root-regex: ^0.1.0 + checksum: ccf11d9c9bf9b895f422099021fcff2c5d300f3b032ef5df414fb993cd6968c0c5bab5bdd89e505266f0f156f66bc242a357636d1cbcd8a2cada71e56291269f + languageName: node + linkType: hard + +"path-type@npm:^1.0.0": + version: 1.1.0 + resolution: "path-type@npm:1.1.0" + dependencies: + graceful-fs: ^4.1.2 + pify: ^2.0.0 + pinkie-promise: ^2.0.0 + checksum: c6ac7d4c7d613331ae1837a10c96a0f4fe76dc9273f98e37ce589c06b7ea6f811479ac735dbae06327d93cc6340d0cba944e9d38b0365b7b0bc0438f3fb242e0 + languageName: node + linkType: hard + +"path-type@npm:^4.0.0": + version: 4.0.0 + resolution: "path-type@npm:4.0.0" + checksum: ef5835f2eb47e4d06004c7ec7bd51175c0455eaecd5ee99a9774bca5ef43242616e25b44ccc0ba86a0bf42b9f197550fcc0dfa7580e5ff9dca53c035e9bd86a9 + languageName: node + linkType: hard + +"performance-now@npm:^2.1.0": + version: 2.1.0 + resolution: "performance-now@npm:2.1.0" + checksum: bb4ebed0b03d6c3ad3ae4eddd1182c895d385cff9096af441c19c130aaae3ea70229438ebc3297dfc52c86022f6becf177a810050823d01bf5280779cd2de624 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.0.5, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2": + version: 2.2.2 + resolution: "picomatch@npm:2.2.2" + checksum: 20fa75e0a58b39d83425b3db68744d5f6f361fd4fd66ec7745d884036d502abba0d553a637703af79939b844164b13e60eea339ccb043d7fbd74c3da2592b864 + languageName: node + linkType: hard + +"pify@npm:^2.0.0": + version: 2.3.0 + resolution: "pify@npm:2.3.0" + checksum: d5758aa570bbd5969c62b5f745065006827ef4859b32af302e3df2bb5978e6c1e50c2360d7ffefa102e451084f4530115c84570c185ba5153ee9871c977fe278 + languageName: node + linkType: hard + +"pinkie-promise@npm:^2.0.0": + version: 2.0.1 + resolution: "pinkie-promise@npm:2.0.1" + dependencies: + pinkie: ^2.0.0 + checksum: 1e32e05ffdfb691b04a42d05d5452698853099efe1bab70bfa538e9a793e609b66cc59180cc5fc2158062a2fc5991c9c268a82b2b655247aa005020167e31d75 + languageName: node + linkType: hard + +"pinkie@npm:^2.0.0": + version: 2.0.4 + resolution: "pinkie@npm:2.0.4" + checksum: 2cb484c9da47b2f420fddffe7cbfeac950106a848343d147c2b2668d12b71aa3d09297bfe37ec32539a27c6dc7db414414f5ee166d6b2ca0d95f6dfe9dde60d7 + languageName: node + linkType: hard + +"pirates@npm:^4.0.1": + version: 4.0.1 + resolution: "pirates@npm:4.0.1" + dependencies: + node-modules-regexp: ^1.0.0 + checksum: 21604008c36ab6e14ac458e1a267dd7322cfd36b9e1042e9e277dd064582717e30b9aba8c0a47d738bf004ee7946ed27f6b982d30968534f2c6b5b168a52b555 + languageName: node + linkType: hard + +"pixi-particles@npm:^4.3.0": + version: 4.3.0 + resolution: "pixi-particles@npm:4.3.0" + peerDependencies: + pixi.js: ">=4.0.0" + checksum: 66da332ae33a236afb5a5b2ebeea0308314423bab1017851be860a0904aed91cb5f345ea488c75a6efdfa6e42096ba7762472f8573590b924b93cae293b8b6d9 + languageName: node + linkType: hard + +"pixi.js@npm:5.3.4": + version: 5.3.4 + resolution: "pixi.js@npm:5.3.4" + dependencies: + "@pixi/accessibility": 5.3.4 + "@pixi/app": 5.3.4 + "@pixi/constants": 5.3.4 + "@pixi/core": 5.3.4 + "@pixi/display": 5.3.4 + "@pixi/extract": 5.3.4 + "@pixi/filter-alpha": 5.3.4 + "@pixi/filter-blur": 5.3.4 + "@pixi/filter-color-matrix": 5.3.4 + "@pixi/filter-displacement": 5.3.4 + "@pixi/filter-fxaa": 5.3.4 + "@pixi/filter-noise": 5.3.4 + "@pixi/graphics": 5.3.4 + "@pixi/interaction": 5.3.4 + "@pixi/loaders": 5.3.4 + "@pixi/math": 5.3.4 + "@pixi/mesh": 5.3.4 + "@pixi/mesh-extras": 5.3.4 + "@pixi/mixin-cache-as-bitmap": 5.3.4 + "@pixi/mixin-get-child-by-name": 5.3.4 + "@pixi/mixin-get-global-position": 5.3.4 + "@pixi/particles": 5.3.4 + "@pixi/polyfill": 5.3.4 + "@pixi/prepare": 5.3.4 + "@pixi/runner": 5.3.4 + "@pixi/settings": 5.3.4 + "@pixi/sprite": 5.3.4 + "@pixi/sprite-animated": 5.3.4 + "@pixi/sprite-tiling": 5.3.4 + "@pixi/spritesheet": 5.3.4 + "@pixi/text": 5.3.4 + "@pixi/text-bitmap": 5.3.4 + "@pixi/ticker": 5.3.4 + "@pixi/utils": 5.3.4 + checksum: 68354f8bf1adb1f05c928aa55e66134db798ae5abc1d5e019102425007ca2b052e0b3dd2abc46b217790936ee3347bf6a78c2131c8438d93b633054be0ac1df2 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.1.0, pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: ^4.0.0 + checksum: 1956ebf3cf5cc36a5d20e93851fcadd5a786774eb08667078561e72e0ab8ace91fc36a028d5305f0bfe7c89f9bf51886e2a3c8cb2c2620accfa3feb8da3c256b + languageName: node + linkType: hard + +"please-upgrade-node@npm:^3.2.0": + version: 3.2.0 + resolution: "please-upgrade-node@npm:3.2.0" + dependencies: + semver-compare: ^1.0.0 + checksum: 34cf86f6d577877df5e9ced0bda57babd97bd2dc7e5965a67f990337f01ccd5203a98dc5aa7971e10088b2b1b29628d51d9770996151c7d306ed0069b4ecd745 + languageName: node + linkType: hard + +"plugin-error@npm:^1.0.1": + version: 1.0.1 + resolution: "plugin-error@npm:1.0.1" + dependencies: + ansi-colors: ^1.0.1 + arr-diff: ^4.0.0 + arr-union: ^3.1.0 + extend-shallow: ^3.0.2 + checksum: d2e48e6b1884eb02dccb295213607a6a3da60156f5dc1b77a342577a4eb80195fb1194026dc3dd571591e678644947e56e944b21cf70568c49f18a2e375fd1df + languageName: node + linkType: hard + +"posix-character-classes@npm:^0.1.0": + version: 0.1.1 + resolution: "posix-character-classes@npm:0.1.1" + checksum: 984f83c2d4dec5abb9a6ac2b4a184132a58c4af9ce25704bfda2be6e8139335673c45d959ef6ffea3756dc88d3a0cb27c745a84d875ae5142b76e661a37a5f0e + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: bc1649f521e8928cde0e1b349b224de2e6f00b71361a4a44f2e4a615342b6e1ae30366c32d26412dabe74d999a40f79c0ae044ae6b17cf19af935e74d12ea4fa + languageName: node + linkType: hard + +"prelude-ls@npm:~1.1.2": + version: 1.1.2 + resolution: "prelude-ls@npm:1.1.2" + checksum: 189c969c92151b0de7a6e5d2ae0c4e50bbec5675cdd9fee3b7509d9d74b6416787ee36a8c12a07e8afb01454a8185b695b3395912484fa118e071fea45223b9b + languageName: node + linkType: hard + +"prettier-linter-helpers@npm:^1.0.0": + version: 1.0.0 + resolution: "prettier-linter-helpers@npm:1.0.0" + dependencies: + fast-diff: ^1.1.2 + checksum: 6d698b9c8dc28e52c8d69df520cde3410cc06cc40471acf81b4b7c18ca08e73d0efb0f878654985bb02fce4f8d3d64cdf64fe9f3ffad3e1dc7e17b837d4ddcb2 + languageName: node + linkType: hard + +"prettier@npm:^2.2.1": + version: 2.2.1 + resolution: "prettier@npm:2.2.1" + bin: + prettier: bin-prettier.js + checksum: 92c6c9f4b87eba1f28466edee57dd18c80d00b858edda77d46d1950d20e6e302b68ee255fc91133ba931e63c4577b5ae30da194d9626a8f3c0177778b91bf056 + languageName: node + linkType: hard + +"pretty-format@npm:^26.0.0, pretty-format@npm:^26.6.2": + version: 26.6.2 + resolution: "pretty-format@npm:26.6.2" + dependencies: + "@jest/types": ^26.6.2 + ansi-regex: ^5.0.0 + ansi-styles: ^4.0.0 + react-is: ^17.0.1 + checksum: 5ad34fc128218485732cf0271d396158a00584708fc97bf063c1c3c000fe14da572e9a1d3d7b92d95c5e24965434656c56ed0e45804dea2435ca59a1f86f1b07 + languageName: node + linkType: hard + +"pretty-hrtime@npm:^1.0.0": + version: 1.0.3 + resolution: "pretty-hrtime@npm:1.0.3" + checksum: efb9d4987ec2ba55a6b59c8eab4933ba5cd3c9311b9360f7ec491f1aad643ec8b533c8209170433de93bbc71e66b46f2a7035b991a1826141b128b73949b5577 + languageName: node + linkType: hard + +"process-nextick-args@npm:^2.0.0, process-nextick-args@npm:~2.0.0": + version: 2.0.1 + resolution: "process-nextick-args@npm:2.0.1" + checksum: ddeb0f07d0d5efa649c2c5e39d1afd0e3668df2b392d036c8a508b0034f7beffbc474b3c2f7fd3fed2dc4113cef8f1f7e00d05690df3c611b36f6c7efd7852d1 + languageName: node + linkType: hard + +"progress@npm:^2.0.0": + version: 2.0.3 + resolution: "progress@npm:2.0.3" + checksum: c46ef5a1de4d527dfd32fe56a7df0c1c8b420a4c02617196813bf7f10ac7c2a929afc265d44fdd68f5c439a7e7cb3d70d569716c82d6b4148ec72089860a1312 + languageName: node + linkType: hard + +"prompts@npm:^2.0.1": + version: 2.4.0 + resolution: "prompts@npm:2.4.0" + dependencies: + kleur: ^3.0.3 + sisteransi: ^1.0.5 + checksum: fd375679ad53bb6a85ac1edf6d3f48b4a120a9aac87d3f0e50756c02013f1e9ee835f10ba18edc2f21048cf8423a986aff8f75ee42f03ce1ebf1d1c65f5ef3cf + languageName: node + linkType: hard + +"pseudomap@npm:^1.0.2": + version: 1.0.2 + resolution: "pseudomap@npm:1.0.2" + checksum: 1ad1802645e830d99f9c1db97efc6902d2316b660454633229f636dd59e751d00498dd325d3b18d49f2be990a2c9d28f8bfe6f9b544a8220a5faa2bfb4694bb7 + languageName: node + linkType: hard + +"psl@npm:^1.1.28": + version: 1.8.0 + resolution: "psl@npm:1.8.0" + checksum: 92d47c6257456878bfa8190d76b84de69bcefdc129eeee3f9fe204c15fd08d35fe5b8627033f39b455e40a9375a1474b25ff4ab2c5448dd8c8f75da692d0f5b4 + languageName: node + linkType: hard + +"pump@npm:^2.0.0": + version: 2.0.1 + resolution: "pump@npm:2.0.1" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: 25c657a8f65bb7a8c3c9f806bd282c70a71b4ce41fab66800519fc0ed6b9ab05304569c2d0a1a5711bf39216392c4a583930c582e8fc760391f9f7b2fc6fe14e + languageName: node + linkType: hard + +"pump@npm:^3.0.0": + version: 3.0.0 + resolution: "pump@npm:3.0.0" + dependencies: + end-of-stream: ^1.1.0 + once: ^1.3.1 + checksum: 5464d5cf6c6f083cc60cb45b074fb9a4a92ba4d3e0d89e9b2fa1906d8151fd3766784a426725ccf1af50d1c29963ac20b13829933549830e08a6704e3f95e08c + languageName: node + linkType: hard + +"pumpify@npm:^1.3.5": + version: 1.5.1 + resolution: "pumpify@npm:1.5.1" + dependencies: + duplexify: ^3.6.0 + inherits: ^2.0.3 + pump: ^2.0.0 + checksum: c143607284efa8b91baf8e199e90a6560cf599bdb7928686d1f33d3d8bbf71f3bc8c673ed6747ed36b8771982376faa0d5dafc0580eb433c73a825031016aa77 + languageName: node + linkType: hard + +"punycode@npm:1.3.2": + version: 1.3.2 + resolution: "punycode@npm:1.3.2" + checksum: e67fddacd83b918ca2f4a47b1fd13858108779cdc2a3f2db3233ff82a25f9305d46e1d9891f7b9ad21ed36454adfc675d4559621fcffed2cf2067abd04e121cd + languageName: node + linkType: hard + +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.1.1 + resolution: "punycode@npm:2.1.1" + checksum: 0202dc191cb35bfd88870ac99a1e824b03486d4cee20b543ef337a6dee8d8b11017da32a3e4c40b69b19976e982c030b62bd72bba42884acb691bc5ef91354c8 + languageName: node + linkType: hard + +"qs@npm:~6.5.2": + version: 6.5.2 + resolution: "qs@npm:6.5.2" + checksum: fa0410eff2c05ce3328e11f82db4015e7819c986ee056d6b62b06ae112f4929af09ea3b879ca168ff9f0338f50972bba487ad0e46c879e42bfaf63c3c2ea7f09 + languageName: node + linkType: hard + +"querystring@npm:0.2.0": + version: 0.2.0 + resolution: "querystring@npm:0.2.0" + checksum: 1e76c51462f0ffb148e0b2fdeb811f61377800298605229d32efcdaaaf0a8fd4314a4b4405e1fbf130a5ca421c0e51f926fab5bb9f8b9b3b8c394f4e2d33d3d1 + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.2 + resolution: "queue-microtask@npm:1.2.2" + checksum: 563abf1b1d0916842c017a4c0784fffebd0dd7d5685ffd65356dfee8f084e34e2a9b449aa788dddb2767f7dc79d1834545bb75f8f643b8aa85aea20a9efabbec + languageName: node + linkType: hard + +"react-is@npm:^17.0.1": + version: 17.0.1 + resolution: "react-is@npm:17.0.1" + checksum: 5a83dfc78e7adcb93d632bf367b0733db650e3abd2e9c57c33b87e50d201212c1884b0d7bcf13e692f1556189fa1b87f9f3e0ba10fe858fd6aebe83ed4fcd1ea + languageName: node + linkType: hard + +"read-pkg-up@npm:^1.0.1": + version: 1.0.1 + resolution: "read-pkg-up@npm:1.0.1" + dependencies: + find-up: ^1.0.0 + read-pkg: ^1.0.0 + checksum: 05a0d7fd655c650b11c86abfb5fc37d6ad2df7392965b3be09271414c30adadaaa37bb9f016b30f5972607d1e2d98626749f01ca602c75256ab8358394447aa7 + languageName: node + linkType: hard + +"read-pkg-up@npm:^7.0.1": + version: 7.0.1 + resolution: "read-pkg-up@npm:7.0.1" + dependencies: + find-up: ^4.1.0 + read-pkg: ^5.2.0 + type-fest: ^0.8.1 + checksum: b8f97cc1f8235ce752b10b7b6423b0460411b4a6046186de8980429bbad8709537a4d6fac6e35a97c8630d19bab29d9013644cc5296be2d5043db3e40094b0cc + languageName: node + linkType: hard + +"read-pkg@npm:^1.0.0": + version: 1.1.0 + resolution: "read-pkg@npm:1.1.0" + dependencies: + load-json-file: ^1.0.0 + normalize-package-data: ^2.3.2 + path-type: ^1.0.0 + checksum: 01fdadf10e5643baffe30c294d06d8cb6dab9724f2cff0cdccbadcfab74a0050c968a0faa7a1d5191fc89eb27ab9dbec1f90ff9ac489cb77b9c0f81c630720ec + languageName: node + linkType: hard + +"read-pkg@npm:^5.2.0": + version: 5.2.0 + resolution: "read-pkg@npm:5.2.0" + dependencies: + "@types/normalize-package-data": ^2.4.0 + normalize-package-data: ^2.5.0 + parse-json: ^5.0.0 + type-fest: ^0.6.0 + checksum: 641102f0955f64304f97ed388bfe3b7ce55d74b1ffe1be06be1ae75479ce4910aa7177460d1982af6963f80b293a25f25d593a52a4328d941fd9b7d89fde2dbf + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.5, readable-stream@npm:^2.0.6, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.5, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": + version: 2.3.7 + resolution: "readable-stream@npm:2.3.7" + dependencies: + core-util-is: ~1.0.0 + inherits: ~2.0.3 + isarray: ~1.0.0 + process-nextick-args: ~2.0.0 + safe-buffer: ~5.1.1 + string_decoder: ~1.1.1 + util-deprecate: ~1.0.1 + checksum: 6e3826560627a751feb3a8aec073ef94c6e47b8c8e06eb5d136323b5f09db9d2077c23a42a8d54ed0123695af54b36c1e4271a8ec55112b15f4b89020d8dec72 + languageName: node + linkType: hard + +"readdirp@npm:^2.2.1": + version: 2.2.1 + resolution: "readdirp@npm:2.2.1" + dependencies: + graceful-fs: ^4.1.11 + micromatch: ^3.1.10 + readable-stream: ^2.0.2 + checksum: 00b5209ee5278ba6faa2fbcabb817e8f64a498ff7fee8cfd30634a04140e673375582812c67c59e25ee3ee9979687b1c832f33e1bbacd8ac3340bab0645b8374 + languageName: node + linkType: hard + +"rechoir@npm:^0.6.2": + version: 0.6.2 + resolution: "rechoir@npm:0.6.2" + dependencies: + resolve: ^1.1.6 + checksum: 6646a6bce733282d182bf04816b15d4e2d63736b3453cf62a8568aaa1399621a73b3942315161f549e090f9a3c61bc09f4cb674f928c369a40037621e10295bd + languageName: node + linkType: hard + +"redent@npm:^1.0.0": + version: 1.0.0 + resolution: "redent@npm:1.0.0" + dependencies: + indent-string: ^2.1.0 + strip-indent: ^1.0.1 + checksum: 961d06c069c2a3932e9cde95822eceffa4d09ae01af33c123b0387d67bc976fd895b2012a3b8988c336b6f79cd17a8cc0a4a5f003b1e60cafad0d3b905111527 + languageName: node + linkType: hard + +"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": + version: 1.0.2 + resolution: "regex-not@npm:1.0.2" + dependencies: + extend-shallow: ^3.0.2 + safe-regex: ^1.1.0 + checksum: 3d6d95b4fda3cabe7222b3800876491825a865ae6ca4c90bb10fd0f6442d0c57d180657bb65358b4509bdd1cecad1bd2d23e7d15a69f9c523f501cc4431b950b + languageName: node + linkType: hard + +"regexpp@npm:^3.0.0, regexpp@npm:^3.1.0": + version: 3.1.0 + resolution: "regexpp@npm:3.1.0" + checksum: 69d0ce6b449cf35d3732d6341a1e70850360ffc619f8eef10629871c462e614853fffb80d3f00fc17cd0bb5b8f34b0cde5be4b434e72c0eb3fbba2360c8b5ac4 + languageName: node + linkType: hard + +"remove-bom-buffer@npm:^3.0.0": + version: 3.0.0 + resolution: "remove-bom-buffer@npm:3.0.0" + dependencies: + is-buffer: ^1.1.5 + is-utf8: ^0.2.1 + checksum: c80bef6cb3788f37ea81bfc355c77da77f5c8963c50c4fdf20769e5804068e74f57dd6321b56c1c27a319768cbd8ad320afd92f4a63faf9b3c80ee06b4c9cb10 + languageName: node + linkType: hard + +"remove-bom-stream@npm:^1.2.0": + version: 1.2.0 + resolution: "remove-bom-stream@npm:1.2.0" + dependencies: + remove-bom-buffer: ^3.0.0 + safe-buffer: ^5.1.0 + through2: ^2.0.3 + checksum: 88a3f3004e0bb812276dc0ce1dd7760666440dad8ef621beb3620ddf5ede54bb35107042f0326b29113793519758a7661bb48d15892d0ce2f262051a5254576e + languageName: node + linkType: hard + +"remove-trailing-separator@npm:^1.0.1, remove-trailing-separator@npm:^1.1.0": + version: 1.1.0 + resolution: "remove-trailing-separator@npm:1.1.0" + checksum: 17dadf3d1f7c51411b7c426c8e2d6a660359bc8dae7686137120483fe4345bfca4bf7460d2c302aa741a7886c932d8dad708d2b971669d74e0fb3ff9a4814408 + languageName: node + linkType: hard + +"repeat-element@npm:^1.1.2": + version: 1.1.3 + resolution: "repeat-element@npm:1.1.3" + checksum: 6a59b879efdd3512a786be5de1bc05c110822fec6820bb5a38dfdfdd4488e7ba0cf6d15b28da21544e6f072ae60762ee9efa784f2988128e656c97a8b0be46cb + languageName: node + linkType: hard + +"repeat-string@npm:^1.6.1": + version: 1.6.1 + resolution: "repeat-string@npm:1.6.1" + checksum: 99c431ba7bef7a5d39819d562ebca89206368b45f73213677a3b562e25b5dd272d9e6a2ca8105001df14b6fc8cc71f0b10258c86e16cf8a256318fac1ddc8a77 + languageName: node + linkType: hard + +"repeating@npm:^2.0.0": + version: 2.0.1 + resolution: "repeating@npm:2.0.1" + dependencies: + is-finite: ^1.0.0 + checksum: a788561778bfcbe4fc6fd15cb912ed53665933514524e4b5a998934ef20793c0afd21229f411d15bc5b7ab171eca7ac531655070f1dfc427f723bae57b61d55a + languageName: node + linkType: hard + +"replace-ext@npm:^1.0.0": + version: 1.0.1 + resolution: "replace-ext@npm:1.0.1" + checksum: 29b0f4ec6fda1591eb9b7c2d300b3a099f61ab0f6870ac5c62a5fa1cc8208085b8c5bf77684e76dcddfc37734831449c92ac488bc2ba9d899476db6be9b4240c + languageName: node + linkType: hard + +"replace-homedir@npm:^1.0.0": + version: 1.0.0 + resolution: "replace-homedir@npm:1.0.0" + dependencies: + homedir-polyfill: ^1.0.1 + is-absolute: ^1.0.0 + remove-trailing-separator: ^1.1.0 + checksum: 8e55cf69834f2358f277b9d9ec3ca1ef4cd4b448229e7e9facee754e31794134b9714fb3834bd2a2486a438364aba876cf2cdeda560b810a59910e1a6d6f4673 + languageName: node + linkType: hard + +"request-promise-core@npm:1.1.4": + version: 1.1.4 + resolution: "request-promise-core@npm:1.1.4" + dependencies: + lodash: ^4.17.19 + peerDependencies: + request: ^2.34 + checksum: 7c9c90bf00158f6669e7167425cd113edadaca44b5aebc7c6a7969d9f50d93bfae8275038bdf6389b4e94f1cacacca7e5830d28701692818bdfba353eeb2ddfd + languageName: node + linkType: hard + +"request-promise-native@npm:^1.0.8": + version: 1.0.9 + resolution: "request-promise-native@npm:1.0.9" + dependencies: + request-promise-core: 1.1.4 + stealthy-require: ^1.1.1 + tough-cookie: ^2.3.3 + peerDependencies: + request: ^2.34 + checksum: 532570f00559f826ad372d36a152c3cf1aa184d0876b04ed7c18a9fa391fa2108978eca837ae1fb681d2dab63bd6c74c6660022b82ecdb2682d77859314d0b6e + languageName: node + linkType: hard + +"request@npm:^2.87.0, request@npm:^2.88.0, request@npm:^2.88.2": + version: 2.88.2 + resolution: "request@npm:2.88.2" + dependencies: + aws-sign2: ~0.7.0 + aws4: ^1.8.0 + caseless: ~0.12.0 + combined-stream: ~1.0.6 + extend: ~3.0.2 + forever-agent: ~0.6.1 + form-data: ~2.3.2 + har-validator: ~5.1.3 + http-signature: ~1.2.0 + is-typedarray: ~1.0.0 + isstream: ~0.1.2 + json-stringify-safe: ~5.0.1 + mime-types: ~2.1.19 + oauth-sign: ~0.9.0 + performance-now: ^2.1.0 + qs: ~6.5.2 + safe-buffer: ^5.1.2 + tough-cookie: ~2.5.0 + tunnel-agent: ^0.6.0 + uuid: ^3.3.2 + checksum: 7a74841f3024cac21d8c3cca7f7f2e4243fbd62464d2f291fddb94008a9d010e20c4a1488f4224b03412a4438a699db2a3de11019e486c8e656f86b0b79bf022 + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: f495d02d89c385af2df4b26f0216ece091e99710d358d0ede424126c476d0c639e8bd77dcd237c00a6a5658f3d862e7513164f8c280263052667d06df830eb23 + languageName: node + linkType: hard + +"require-from-string@npm:^2.0.2": + version: 2.0.2 + resolution: "require-from-string@npm:2.0.2" + checksum: 74fc30353e5d526879b28d480c3f25ca95e9c22dfe7ac10ca0650e03407b3aeed352ff8ca706ea145617b6482a582e4a3bd65a884fc50133ebe586d47fa085c6 + languageName: node + linkType: hard + +"require-main-filename@npm:^1.0.1": + version: 1.0.1 + resolution: "require-main-filename@npm:1.0.1" + checksum: 26719298b8ba213424f69beea3898fa5bdddeb7039cbc78d8680524f05b459c7d9c523fda12d1aabe74d4475458480ba231ab5147fefb3855b8e6b6b65666d99 + languageName: node + linkType: hard + +"require-main-filename@npm:^2.0.0": + version: 2.0.0 + resolution: "require-main-filename@npm:2.0.0" + checksum: 8d3633149a7fef67d14613146247137fe1dc4cc969bf2d1adcd40e3c28056de503229f41e78cba5efebad3a223cbfb4215fd220d879148df10c6d9a877099dbd + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: ^5.0.0 + checksum: 97edfbbf83ade94e880c2e62d0faf76eb245ea5696fc70f59eaa2747773e19108a1fa0fba13f53d471d9f245454bb1592dc4f537c6dfd19b8016ef8639a9fadc + languageName: node + linkType: hard + +"resolve-dir@npm:^1.0.0, resolve-dir@npm:^1.0.1": + version: 1.0.1 + resolution: "resolve-dir@npm:1.0.1" + dependencies: + expand-tilde: ^2.0.0 + global-modules: ^1.0.0 + checksum: b07a0070083d04f6c3b50fe7b986514978eba5ab957b49cf2637b2e8ce69d81e063523d60360145a7e8b03ea878c68fb491da86fb18601458eaef640ae40fdf5 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 87a4357c0c1c2d165012ec04a3b2aa58931c0c0be257890806760b627bad36c9bceb6f9b2a3726f8570c67f2c9ff3ecc9507fe65cc3ad8d45cdab015245c649f + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 0d29fc7012eb21f34d2637fa0602694f60e64c14bf5fbd5395b72f6ea5540a6906cbeef062edefc34c22fd802bfe8ae46ef936e6c4a3f1b1047390f9738dd76f + languageName: node + linkType: hard + +"resolve-options@npm:^1.1.0": + version: 1.1.0 + resolution: "resolve-options@npm:1.1.0" + dependencies: + value-or-function: ^3.0.0 + checksum: a9387bac0c242b9346e9c1af24b9054eaa4ef5923ceee0be53d592ffb47506c5e1780dbbfa9f21bf631587635e7779eca7a5e8362187c1d6855407dc1dab1067 + languageName: node + linkType: hard + +"resolve-url@npm:^0.2.1": + version: 0.2.1 + resolution: "resolve-url@npm:0.2.1" + checksum: 9e1cd0028d0f2e157a889a02653637c1c1d7f133aa47b75261b4590e84105e63fae3b6be31bad50d5b94e01898d9dbe6b95abe28db7eab46e22321f7cbf00273 + languageName: node + linkType: hard + +"resolve@1.20.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.4.0": + version: 1.20.0 + resolution: "resolve@npm:1.20.0" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: 0f5206d454b30e74d9b2d575b5f8aedf443c4d8b90b84cdf79474ade29bb459075220da3127b682896872a16022ed65cc4db09e0f23849654144d3d75c65cd1b + languageName: node + linkType: hard + +"resolve@patch:resolve@1.20.0#builtin, resolve@patch:resolve@^1.1.6#builtin, resolve@patch:resolve@^1.1.7#builtin, resolve@patch:resolve@^1.10.0#builtin, resolve@patch:resolve@^1.18.1#builtin, resolve@patch:resolve@^1.19.0#builtin, resolve@patch:resolve@^1.4.0#builtin": + version: 1.20.0 + resolution: "resolve@patch:resolve@npm%3A1.20.0#builtin::version=1.20.0&hash=3388aa" + dependencies: + is-core-module: ^2.2.0 + path-parse: ^1.0.6 + checksum: c4a515b76026806b5b26513fc7bdb80458c532bc91c02ef45ac928d1025585f93bec0b904be39c02131118a37ff7e3f9258f1526850b025d2ec0948bb5fd03d0 + languageName: node + linkType: hard + +"resource-loader@npm:^3.0.1": + version: 3.0.1 + resolution: "resource-loader@npm:3.0.1" + dependencies: + mini-signals: ^1.2.0 + parse-uri: ^1.0.0 + checksum: b14b09d29cf71df8d2ea26d7a2be0b97684fa5d476233ca00c9f0f894bada2c43b2563a2254b90dca0de960c2293f2a50371b50821632d7b53baef28bbe194bb + languageName: node + linkType: hard + +"restore-cursor@npm:^3.1.0": + version: 3.1.0 + resolution: "restore-cursor@npm:3.1.0" + dependencies: + onetime: ^5.1.0 + signal-exit: ^3.0.2 + checksum: 38e0af0830336dbc7d36b8d02e9194489dc52aaf64f41d02c427303a78552019434ad87082d67ce171a569a8be898caf7c70d5e17bd347cf6f7bd38d332d0bd4 + languageName: node + linkType: hard + +"ret@npm:~0.1.10": + version: 0.1.15 + resolution: "ret@npm:0.1.15" + checksum: 749c2fcae7071f5ecea4f8a18e35a79a8e8a58e522a16d843ecb9dfe9e647a76d92ae85c22690b02f87d3ab78b6b1f73341efc2fabbf59ed54dcfd9b1bdff883 + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.0.4 + resolution: "reusify@npm:1.0.4" + checksum: 08ef02ed0514f020a51131ba2e6c27c66ccebe25d49cfc83467a0d4054db4634a2853480d0895c710b645ab66af1a6fb3e183888306ae559413bd96c69f39ccd + languageName: node + linkType: hard + +"rimraf@npm:2": + version: 2.7.1 + resolution: "rimraf@npm:2.7.1" + dependencies: + glob: ^7.1.3 + bin: + rimraf: ./bin.js + checksum: 059efac2838ef917d4d1da1d80e724ad28c120cdf14ca6ed27ca72db2dc70be3e25421cba5947c6ec3d804c1d2bb9a247254653816ee0722bf943ffdd1ae19ef + languageName: node + linkType: hard + +"rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": + version: 3.0.2 + resolution: "rimraf@npm:3.0.2" + dependencies: + glob: ^7.1.3 + bin: + rimraf: bin.js + checksum: f0de3e445581e64a8a077af476cc30708e659f5779ec2ca2a161556d0792aa318a685923798ae22055b4ecd02b9aff444ef619578f7af53cf8e0e248031e3dee + languageName: node + linkType: hard + +"rollup-plugin-typescript2@npm:^0.30.0": + version: 0.30.0 + resolution: "rollup-plugin-typescript2@npm:0.30.0" + dependencies: + "@rollup/pluginutils": ^4.1.0 + find-cache-dir: ^3.3.1 + fs-extra: 8.1.0 + resolve: 1.20.0 + tslib: 2.1.0 + peerDependencies: + rollup: ">=1.26.3" + typescript: ">=2.4.0" + checksum: 3bf7a4d398f53461d6486ddb92f3649e646a6d1f89340090bb242764e9ba09e97d48659ffa9135e3c8b898d9ed3bcca9269e0d6beaef4e44659ae06791f79bea + languageName: node + linkType: hard + +"rollup@npm:^2.45.2": + version: 2.45.2 + resolution: "rollup@npm:2.45.2" + dependencies: + fsevents: ~2.3.1 + dependenciesMeta: + fsevents: + optional: true + bin: + rollup: dist/bin/rollup + checksum: b07c6051c35ed30916f529cbfb3731c9ac10355daca167ba8d863bcda6499e39593e078eb8e29b4bf94a1e3d112e1cdfa908fe147a231b6a93b9fd6b732beb98 + languageName: node + linkType: hard + +"rsvp@npm:^4.8.4": + version: 4.8.5 + resolution: "rsvp@npm:4.8.5" + checksum: eb70274fb392bb5e4f33ce8ebdee411fc8ce813ccf7d1684830c6752ba1b0346f0527107dcd7ce690ba7c1a9f2c731918fcd4ded11f57ed612897527a46c5f44 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: 3d12f0251ad043ed52689523b1e5fa5b7e5395a6ae0d2cbfb880a3009bb297de6d7e96ba4ad5a818e2722b42cea78a5ee6842d6d864736a7ca755ec119ed097c + languageName: node + linkType: hard + +"rxjs@npm:^6.6.3": + version: 6.6.6 + resolution: "rxjs@npm:6.6.6" + dependencies: + tslib: ^1.9.0 + checksum: c97b410e791b3259439be48cd37119b63eedc3809a5895d884a7ac27a6934ae4ec246be3d76f1b2f3b47c72a96500ad30977545dc8b0f4a0f98c52f5f773a8ea + languageName: node + linkType: hard + +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1": + version: 5.1.2 + resolution: "safe-buffer@npm:5.1.2" + checksum: 2708587c1b5e70a5e420714ceb59f30f5791c6e831d39812125a008eca63a4ac18578abd020a0776ea497ff03b4543f2b2a223a7b9073bf2d6c7af9ec6829218 + languageName: node + linkType: hard + +"safe-regex@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex@npm:1.1.0" + dependencies: + ret: ~0.1.10 + checksum: c355e3163fda56bef5ef0896de55ab1e26504def2c7f9ee96ee8b90171a7da7a596048d256e61a51e2d041d9f4625d956d3702ebcfb7627c7a4846896d6ce3a4 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 549ba83f5b314b59898efe3422120ce1ca7987a6eae5925a5fa5db930dc414d4a9dde0a5594f89638cd6ea60b6840ea961872908933ac2428d1726489db46fa5 + languageName: node + linkType: hard + +"sane@npm:^4.0.3": + version: 4.1.0 + resolution: "sane@npm:4.1.0" + dependencies: + "@cnakazawa/watch": ^1.0.3 + anymatch: ^2.0.0 + capture-exit: ^2.0.0 + exec-sh: ^0.3.2 + execa: ^1.0.0 + fb-watchman: ^2.0.0 + micromatch: ^3.1.4 + minimist: ^1.1.1 + walker: ~1.0.5 + bin: + sane: ./src/cli.js + checksum: e384e252021b1afef7459e994fe3ea79d114a0e7d23a03e660444abf15a2b4c50ce7eac2810b2c289e857c618d96fb35ee66356ebd4d6cb97cb11b54b2b29600 + languageName: node + linkType: hard + +"sass-graph@npm:2.2.5": + version: 2.2.5 + resolution: "sass-graph@npm:2.2.5" + dependencies: + glob: ^7.0.0 + lodash: ^4.0.0 + scss-tokenizer: ^0.2.3 + yargs: ^13.3.2 + bin: + sassgraph: bin/sassgraph + checksum: 99c6e78cd3aef7b41df15025638397a2fda2e007d2baad0e28d5f0e6d153eef031fe1e623fd8fff018a945287298376ecc22a3aca735e0aee14610a265043fb4 + languageName: node + linkType: hard + +"sass@npm:^1.32.8": + version: 1.32.8 + resolution: "sass@npm:1.32.8" + dependencies: + chokidar: ">=2.0.0 <4.0.0" + bin: + sass: sass.js + checksum: d319b3d7459451b6532b492984e3cbb37381e6c6379622f668900b196c0d545f5a2c32819cf02b5405fb2ef79720fe1f8f16b7614a2fef3fb7af8dfec83a6597 + languageName: node + linkType: hard + +"saxes@npm:^5.0.0": + version: 5.0.1 + resolution: "saxes@npm:5.0.1" + dependencies: + xmlchars: ^2.2.0 + checksum: 6ad14be68da9b84af0fa3de346fd78bd3a8e8a73a462e2852279a1fff1e2619988919294001abe3ecef3783f9498962a0619d960ccca4ec2ca914526fde1acc2 + languageName: node + linkType: hard + +"scss-tokenizer@npm:^0.2.3": + version: 0.2.3 + resolution: "scss-tokenizer@npm:0.2.3" + dependencies: + js-base64: ^2.1.8 + source-map: ^0.4.2 + checksum: c7765c38cdc8835d9733b6e230e87caee075d43b96284b8637c1ef531c3384f8454d78ecf6be6954b92ed1bd65299e3232ff510f1f62b9ddb0174e2dceb85f01 + languageName: node + linkType: hard + +"semver-compare@npm:^1.0.0": + version: 1.0.0 + resolution: "semver-compare@npm:1.0.0" + checksum: 9f3a74ca5f829c6b643668281228e2af310d9cb918a9d722e0c9426c4244c32346d29e955bbe796c46341f644fc741d888ca02e573f7aa230542809b03b0d8ec + languageName: node + linkType: hard + +"semver-greatest-satisfied-range@npm:^1.1.0": + version: 1.1.0 + resolution: "semver-greatest-satisfied-range@npm:1.1.0" + dependencies: + sver-compat: ^1.5.0 + checksum: 34c3302aee143f126771230e70955c66027cce1ede30c8894caf6bfd48f0fa4105dea0a6606d1614697326611ae6da1c48771a325df5caeb02a447dde3e033f6 + languageName: node + linkType: hard + +"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.5.0": + version: 5.7.1 + resolution: "semver@npm:5.7.1" + bin: + semver: ./bin/semver + checksum: 06ff0ed753ebf741b7602be8faad620d6e160a2cb3f61019d00d919c8bca141638aa23c34da779b8595afdc9faa3678bfbb5f60366b6a4f65f98cf86605bbcdb + languageName: node + linkType: hard + +"semver@npm:7.0.0": + version: 7.0.0 + resolution: "semver@npm:7.0.0" + bin: + semver: bin/semver.js + checksum: 5162b31e9902be1d51d63523eb21d28164d632f527cb0dc439a58d6eaf1a2f3c49c4e2a0f7cf8d650f673638ae34ac7e0c7c2048ff66bc5dc1298ef8551575b5 + languageName: node + linkType: hard + +"semver@npm:7.x, semver@npm:^7.2.1, semver@npm:^7.3.2": + version: 7.3.4 + resolution: "semver@npm:7.3.4" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: f2c7f9aeb976d1484b2f39aa7afc8332a1d21fd32ca4a6fbf650e1423455ebf3e7029f6e2e7ba0cd71935b85942521f1ec25b6cc2c031b953c8ca4ff2d7a823d + languageName: node + linkType: hard + +"semver@npm:^6.0.0, semver@npm:^6.3.0": + version: 6.3.0 + resolution: "semver@npm:6.3.0" + bin: + semver: ./bin/semver.js + checksum: f0d155c06a67cc7e500c92d929339f1c6efd4ce9fe398aee6acc00a2333489cca0f5b4e76ee7292beba237fcca4b5a3d4a6153471f105f56299801bdab37289f + languageName: node + linkType: hard + +"semver@npm:^7.3.5": + version: 7.3.5 + resolution: "semver@npm:7.3.5" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: c53624ddf4b9779bcbf55a1eb8b37074cc44bfeca416f3cc263429408202a8a3c59b00eef8c647d697303bc39b95c022a5c61959221d3814bfb1270ff7c14986 + languageName: node + linkType: hard + +"semver@npm:~5.3.0": + version: 5.3.0 + resolution: "semver@npm:5.3.0" + bin: + semver: ./bin/semver + checksum: 8211d9f88e8b4c6c5bd45f4383a4354d252afbf3d35b216b41bf1820913199a8cdeead8ad6d93b11c70a02c575ab0d76a13e35fd335d7f75551645feb5d1af2f + languageName: node + linkType: hard + +"set-blocking@npm:^2.0.0, set-blocking@npm:~2.0.0": + version: 2.0.0 + resolution: "set-blocking@npm:2.0.0" + checksum: 0ac2403b0c2d39bf452f6d5d17dfd3cb952b9113098e1231cc0614c436e2f465637e39d27cf3b93556f5c59795e9790fd7e98da784c5f9919edeba4295ffeb29 + languageName: node + linkType: hard + +"set-value@npm:^2.0.0, set-value@npm:^2.0.1": + version: 2.0.1 + resolution: "set-value@npm:2.0.1" + dependencies: + extend-shallow: ^2.0.1 + is-extendable: ^0.1.1 + is-plain-object: ^2.0.3 + split-string: ^3.0.1 + checksum: a97a99a00cc5ed3034ccd690ff4dde167e4182ec4ef2fd5277637a6e388839292559301408b91405534b44e76450bdd443ac95427fde40e9a1a62102c1262bd1 + languageName: node + linkType: hard + +"shebang-command@npm:^1.2.0": + version: 1.2.0 + resolution: "shebang-command@npm:1.2.0" + dependencies: + shebang-regex: ^1.0.0 + checksum: 2a1e0092a6b80b14ec742ef4e982be8aa670edc7de3e8c68b26744fb535051f7d92518106387b52e9aabe0c1ceae33d23a7dfdb94c3d7f5035c3868b723a2854 + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: ^3.0.0 + checksum: 85aa394d8cedeedf2e03524d6defef67a2b07d3a17d7ee50d4281d62d3fca898f26ebe7aa7bf674d51b80f197aa1d346bc1a10e8efb04377b534f4322c621012 + languageName: node + linkType: hard + +"shebang-regex@npm:^1.0.0": + version: 1.0.0 + resolution: "shebang-regex@npm:1.0.0" + checksum: cf1a41cb09023e7d39739d7145fcba57c3fabc6728b78ce706f7315cf52dfadf30f7eea664e069224fbcbbfb6ab853bc55ac45f494b47ee73fc209c98487fae5 + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: ea18044ffaf18129ced5a246660a9171a7dff98999aaa9de8abb237d8a7711d8a1f76e16881399994ee429156717ce1c6a50c665bb18a4d55a7f80b9125b1f7d + languageName: node + linkType: hard + +"shellwords@npm:^0.1.1": + version: 0.1.1 + resolution: "shellwords@npm:0.1.1" + checksum: 3559ff550917ece921d252edf42eb54827540e9676e537137ace236df8f9b78e48c542ae0b3f8876fea0faf5826c97629d5b8cb9ac7dee287260e9804fb8132c + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.0, signal-exit@npm:^3.0.2": + version: 3.0.3 + resolution: "signal-exit@npm:3.0.3" + checksum: f8f3fec95c8d1f9ad7e3cce07e1195f84e7a85cdcb4e825e8a2b76aa5406a039083d2bc9662b3cf40e6948262f41277047d20e6fbd58c77edced0b18fab647d8 + languageName: node + linkType: hard + +"sisteransi@npm:^1.0.5": + version: 1.0.5 + resolution: "sisteransi@npm:1.0.5" + checksum: 6554debe10fa4c6a7e8d58531313fdb61c39bb435ba420f8d7a01d8aaffecc654cca846b586e33f3c904350e24f229d5bbd8069abdb583c93252849a0f73e933 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: fc3e8597d822ee3ba6cd76e9b001cd5be315f9b81c3a03a29bb611c003d1484e3b29a9e7bc020298fa669b585ff7c9268f44513f60c186216eb6af3111a3e838 + languageName: node + linkType: hard + +"slice-ansi@npm:^3.0.0": + version: 3.0.0 + resolution: "slice-ansi@npm:3.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: a31bd5c48a4997dcfc9494613cbf38157ae956b05ccdeedf905113e6ff81fd2b7d3b5c3f368e36fe941be28e0031ead4ea39355e9d647915357ce96ce70ace5b + languageName: node + linkType: hard + +"slice-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "slice-ansi@npm:4.0.0" + dependencies: + ansi-styles: ^4.0.0 + astral-regex: ^2.0.0 + is-fullwidth-code-point: ^3.0.0 + checksum: f411aa051802605c3dc8523edee42d39ef59d7c36e6bef6bf1e61d9d2a83894187f6af56911a43ec8e58b921996722d75b354a4c3050b924426ffd1b05da33f9 + languageName: node + linkType: hard + +"snapdragon-node@npm:^2.0.1": + version: 2.1.1 + resolution: "snapdragon-node@npm:2.1.1" + dependencies: + define-property: ^1.0.0 + isobject: ^3.0.0 + snapdragon-util: ^3.0.1 + checksum: 75918b0d6061b6acf2b9a9833b8ba7cef068df141925e790269f25f0a33d1ceb9a0ebfc39286891c112bfffbbf87744223127dba53f55e85318e335e324b65b9 + languageName: node + linkType: hard + +"snapdragon-util@npm:^3.0.1": + version: 3.0.1 + resolution: "snapdragon-util@npm:3.0.1" + dependencies: + kind-of: ^3.2.0 + checksum: d1a7ab4171376f2caacae601372dacf7fdad055e63f5e7eb3e9bd87f069b41d6fc8f54726d26968682e1ba448d5de80e94f7613d9b708646b161c4789988fa75 + languageName: node + linkType: hard + +"snapdragon@npm:^0.8.1": + version: 0.8.2 + resolution: "snapdragon@npm:0.8.2" + dependencies: + base: ^0.11.1 + debug: ^2.2.0 + define-property: ^0.2.5 + extend-shallow: ^2.0.1 + map-cache: ^0.2.2 + source-map: ^0.5.6 + source-map-resolve: ^0.5.0 + use: ^3.1.0 + checksum: c30b63a732bf37dbd2147bf57b4d9eac651ab7b313d1521f73855154b2c2f5a3f2ad18bd47e21cc64b6991f868ecb2a99f8da973ca86da39956f1f0f720b7033 + languageName: node + linkType: hard + +"source-map-resolve@npm:^0.5.0": + version: 0.5.3 + resolution: "source-map-resolve@npm:0.5.3" + dependencies: + atob: ^2.1.2 + decode-uri-component: ^0.2.0 + resolve-url: ^0.2.1 + source-map-url: ^0.4.0 + urix: ^0.1.0 + checksum: 042ad0c0ba70458ba45fc8726a4eb61068ca0a5273578994803e25fc0fb8da00854cf5004616c9b6d0cb7fcd528c50313789d75dfc56a2f5c789cbd332bf4331 + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.6": + version: 0.5.19 + resolution: "source-map-support@npm:0.5.19" + dependencies: + buffer-from: ^1.0.0 + source-map: ^0.6.0 + checksum: 59d4efaae97755155b078413ecba63517e3ef054cc7ab767bbd30e6f3054be2ae8e8f5cce7eef53b7eb93e98fe27a58dd8f5e7abfb13144ba420ddaf5267bbb2 + languageName: node + linkType: hard + +"source-map-url@npm:^0.4.0": + version: 0.4.1 + resolution: "source-map-url@npm:0.4.1" + checksum: ed94966781e2f9512806aee8fee1cd489438e616d8754550aa11a8d728d90fd21c02b92f47358b4df6745638852ce9b95d6bf956ce116f751748912261962073 + languageName: node + linkType: hard + +"source-map@npm:^0.4.2": + version: 0.4.4 + resolution: "source-map@npm:0.4.4" + dependencies: + amdefine: ">=0.0.4" + checksum: 8602363865290e334111cafb2335ccd8faef321b5998f88e6a64278dd0bd27a2b1e614622e706bc943635eb5402cf155078ff2c684b78f28377bc8b47f47bf9c + languageName: node + linkType: hard + +"source-map@npm:^0.5.0, source-map@npm:^0.5.1, source-map@npm:^0.5.6": + version: 0.5.7 + resolution: "source-map@npm:0.5.7" + checksum: 737face96577a2184a42f141607fcc2c9db5620cb8517ae8ab3924476defa138fc26b0bab31e98cbd6f19211ecbf78400b59f801ff7a0f87aa9faa79f7433e10 + languageName: node + linkType: hard + +"source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 8647829a0611724114022be455ca1c8a2c8ae61df81c5b3667d9b398207226a1e21174fb7bbf0b4dbeb27ac358222afb5a14f1c74a62a62b8883b012e5eb1270 + languageName: node + linkType: hard + +"source-map@npm:^0.7.3": + version: 0.7.3 + resolution: "source-map@npm:0.7.3" + checksum: 351ce26ffa1ebf203660c0d70d7566c81e65d2d994d1c2d94da140808e02da34961673ce12ecea9b40797b96fbeb8c70bf71a4ad9f779f1a4fdbba75530bb386 + languageName: node + linkType: hard + +"sparkles@npm:^1.0.0": + version: 1.0.1 + resolution: "sparkles@npm:1.0.1" + checksum: b5100fe9d998c9078bca7650d9ebfd90429106874a4b4b5ec72ed0702c6875df2df3e3c361d31dedbe1554702acd0f10f418f169f51fae9ac7eaf4c6bd864d7f + languageName: node + linkType: hard + +"spdx-correct@npm:^3.0.0": + version: 3.1.1 + resolution: "spdx-correct@npm:3.1.1" + dependencies: + spdx-expression-parse: ^3.0.0 + spdx-license-ids: ^3.0.0 + checksum: f3413eb225ef9f13aa2ec05230ff7669bffad055a7f62ec85164dd27f00a9f1e19880554a8fa5350fc434764ff895836c207f98813511a0180b0e929581bfe01 + languageName: node + linkType: hard + +"spdx-exceptions@npm:^2.1.0": + version: 2.3.0 + resolution: "spdx-exceptions@npm:2.3.0" + checksum: 3cbd2498897dc384158666a9dd7435e3b42ece5da42fd967b218b790e248381d001ec77a676d13d1f4e8da317d97b7bc0ebf4fff37bfbb95923d49b024030c96 + languageName: node + linkType: hard + +"spdx-expression-parse@npm:^3.0.0": + version: 3.0.1 + resolution: "spdx-expression-parse@npm:3.0.1" + dependencies: + spdx-exceptions: ^2.1.0 + spdx-license-ids: ^3.0.0 + checksum: f0211cada3fa7cd9db2243143fb0e66e28a46d72d8268f38ad2196aac49408d87892cda6e5600d43d6b05ed2707cb2f4148deb27b092aafabc50a67038f4cbf5 + languageName: node + linkType: hard + +"spdx-license-ids@npm:^3.0.0": + version: 3.0.7 + resolution: "spdx-license-ids@npm:3.0.7" + checksum: 21e38ec5dd970643f78d37700b6c6ebd42d68c0e4618db914a56cabd2fe4cc1608404ce6abc7535d5165c6555560e821553d06edf6af6ae439617883cf932c0e + languageName: node + linkType: hard + +"split-string@npm:^3.0.1, split-string@npm:^3.0.2": + version: 3.1.0 + resolution: "split-string@npm:3.1.0" + dependencies: + extend-shallow: ^3.0.0 + checksum: 9b610d1509f8213dad7d38b5f0b49109ab53c2a93e7886c370a66b9eeb723706cd01b04b61b3d906ff6369314429412f8fad54b93d57fa50103d85884f0c175f + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 51df1bce9e577287f56822d79ac5bd94f6c634fccf193895f2a1d2db2e975b6aa7bc97afae9cf11d49b7c37fe4afc188ff5c4878be91f2c86eabd11c5df8b62c + languageName: node + linkType: hard + +"sshpk@npm:^1.7.0": + version: 1.16.1 + resolution: "sshpk@npm:1.16.1" + dependencies: + asn1: ~0.2.3 + assert-plus: ^1.0.0 + bcrypt-pbkdf: ^1.0.0 + dashdash: ^1.12.0 + ecc-jsbn: ~0.1.1 + getpass: ^0.1.1 + jsbn: ~0.1.0 + safer-buffer: ^2.0.2 + tweetnacl: ~0.14.0 + bin: + sshpk-conv: bin/sshpk-conv + sshpk-sign: bin/sshpk-sign + sshpk-verify: bin/sshpk-verify + checksum: 4bd7422634ec3730404186179e5d9ba913accc64449f18d594b3a757a3b81000719adc94cf0c93a7b3da42487ae42404a1f37bfaa7908a60743d4478382b9d78 + languageName: node + linkType: hard + +"stack-trace@npm:0.0.10": + version: 0.0.10 + resolution: "stack-trace@npm:0.0.10" + checksum: 8e567bd9dc88f739f562e91d127cfe11740c3639900c9ddadbb3d78399171fd7236d8a7622f5a00047c162ec64e1f1869cf45daac11e4482e54ac2d98f8c3391 + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.2": + version: 2.0.3 + resolution: "stack-utils@npm:2.0.3" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 65fe92891beee90473708c119e8d55473996aa11ff073cc59c3f6a0b199b44c1cc7c51425b64a8d0761d1c7c3d9ab8350a6bebff4d32720492cdfb00ee3096f8 + languageName: node + linkType: hard + +"static-extend@npm:^0.1.1": + version: 0.1.2 + resolution: "static-extend@npm:0.1.2" + dependencies: + define-property: ^0.2.5 + object-copy: ^0.1.0 + checksum: c42052c35259769fabbede527b2ae81962b53cf3b7a5cb07bd5b0b295777641ba81ddb2f4a62df9970c96303357fc6ffb90f61a4a9e127e6e42c7895af9cd5ce + languageName: node + linkType: hard + +"stdout-stream@npm:^1.4.0": + version: 1.4.1 + resolution: "stdout-stream@npm:1.4.1" + dependencies: + readable-stream: ^2.0.1 + checksum: ba8efa173cc2a9a2dbbbd8e8eba2f59f4228905ef6c53530b9b85ac82e571ed6b55afcab02ed42bdb671621ad562e550e0a10dcf6af73e458156726ac03cda7a + languageName: node + linkType: hard + +"stealthy-require@npm:^1.1.1": + version: 1.1.1 + resolution: "stealthy-require@npm:1.1.1" + checksum: f24a9bc613817dea37afcbf64578f2ba0195916d906ebdaa1c1d5b8e9d51fd462cbf4c61ae04217babd0cf662e6c0115fd972dffa8e62a7f6f44f3109fb4c796 + languageName: node + linkType: hard + +"stream-exhaust@npm:^1.0.1": + version: 1.0.2 + resolution: "stream-exhaust@npm:1.0.2" + checksum: 58c54239fd095173fe27f8a0c31e34fe8454c7a63c34bbf072bc8d99b59421fff6c83da48d86058e99e601cb71633e4933829db9b77f6980ea81a6b8204cafb4 + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.0": + version: 1.0.1 + resolution: "stream-shift@npm:1.0.1" + checksum: 5d777b222e460dc660ee29acad4f99649eb8d0051d3cb648fc92f3f77557b33d0a8ad656291c2cfa87703204191534a6003c2b035606a699674d0bb600353ad3 + languageName: node + linkType: hard + +"string-argv@npm:0.3.1": + version: 0.3.1 + resolution: "string-argv@npm:0.3.1" + checksum: 002a6902698eff6bd463ddd2b03864bf9be08a1359879243d94d3906ebbe984ff355d73224064be7504d20262eadb06897b3d40b5d7cefccacc69c9dc45c8d0e + languageName: node + linkType: hard + +"string-length@npm:^4.0.1": + version: 4.0.1 + resolution: "string-length@npm:4.0.1" + dependencies: + char-regex: ^1.0.2 + strip-ansi: ^6.0.0 + checksum: afc433824703f1fe3d7e34a980055eb376e9f52ed69b90196c7520819cbc5550b9b1a6abaa22704f4f01c7b40191f22a5e7fe3885a005959b4487d89c7e94b94 + languageName: node + linkType: hard + +"string-width@npm:^1.0.1, string-width@npm:^1.0.2": + version: 1.0.2 + resolution: "string-width@npm:1.0.2" + dependencies: + code-point-at: ^1.0.0 + is-fullwidth-code-point: ^1.0.0 + strip-ansi: ^3.0.0 + checksum: b11745daa9398a1b3bb37ffa64263f9869c5f790901ed1242decb08171785346447112ead561cffde6b222a5ebeab9d2b382c72ae688859e852aa29325ca9d0b + languageName: node + linkType: hard + +"string-width@npm:^1.0.2 || 2": + version: 2.1.1 + resolution: "string-width@npm:2.1.1" + dependencies: + is-fullwidth-code-point: ^2.0.0 + strip-ansi: ^4.0.0 + checksum: 906b4887c39d247e9d12dfffb42bfe68655b52d27758eb13e069dce0f4cf2e7f82441dbbe44f7279298781e6f68e1c659451bd4d9e2bbe9d487a157ad14ae1bd + languageName: node + linkType: hard + +"string-width@npm:^3.0.0, string-width@npm:^3.1.0": + version: 3.1.0 + resolution: "string-width@npm:3.1.0" + dependencies: + emoji-regex: ^7.0.1 + is-fullwidth-code-point: ^2.0.0 + strip-ansi: ^5.1.0 + checksum: 54c5d1842dc122d8e0251ad50e00e91c06368f1aca44f41a67cd5ce013c4ba8f5a26f1b7f72a3e1644f38c62092a82c86b646aff514073894faf84b9564a38a0 + languageName: node + linkType: hard + +"string-width@npm:^4.1.0, string-width@npm:^4.2.0": + version: 4.2.1 + resolution: "string-width@npm:4.2.1" + dependencies: + emoji-regex: ^8.0.0 + is-fullwidth-code-point: ^3.0.0 + strip-ansi: ^6.0.0 + checksum: 26e340b1c28c80ba9a8dfd93bc6dba6e408f6f42728d2cf172a721031ccc93b192801d3ddb70bd38d333bf0b078d208b3c10295dc8918c3686a5345621d3d7c4 + languageName: node + linkType: hard + +"string_decoder@npm:~1.1.1": + version: 1.1.1 + resolution: "string_decoder@npm:1.1.1" + dependencies: + safe-buffer: ~5.1.0 + checksum: bc2dc169d83df1b9e94defe7716bcad8a19ffe8211b029581cb0c6f9e83a6a7ba9ec3be38d179708a8643c692868a2b8b004ab159555dc26089ad3fa7b2158f5 + languageName: node + linkType: hard + +"stringify-object@npm:^3.3.0": + version: 3.3.0 + resolution: "stringify-object@npm:3.3.0" + dependencies: + get-own-enumerable-property-symbols: ^3.0.0 + is-obj: ^1.0.1 + is-regexp: ^1.0.0 + checksum: 4b0a6802f0294a3a340f31822a0802a4945f12b0823e640c9a3dd64b487abf0a0e7099b43d6133a9aa28a9b99ffe187ee5e066f0798ea60019c87e156bcaf6d3 + languageName: node + linkType: hard + +"strip-ansi@npm:^3.0.0, strip-ansi@npm:^3.0.1": + version: 3.0.1 + resolution: "strip-ansi@npm:3.0.1" + dependencies: + ansi-regex: ^2.0.0 + checksum: 98772dcf440d08f65790ee38cd186b1f139fa69b430e75f9d9c11f97058662f82a22c2ba03a30f502f948958264e99051524fbf1819edaa8a8bbb909ece297da + languageName: node + linkType: hard + +"strip-ansi@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-ansi@npm:4.0.0" + dependencies: + ansi-regex: ^3.0.0 + checksum: 9ac63872c2ba5e8a946c6f3a9c1ab81db5b43bce0d24a33b016e5666d3efda421f721447a1962611053a3ca1595b8742b0216fcc25886958d4565b7afcd27013 + languageName: node + linkType: hard + +"strip-ansi@npm:^5.0.0, strip-ansi@npm:^5.1.0, strip-ansi@npm:^5.2.0": + version: 5.2.0 + resolution: "strip-ansi@npm:5.2.0" + dependencies: + ansi-regex: ^4.1.0 + checksum: 44a0d0d354f5f7b15f83323879a9112ea746daae7bef0b68238a27626ee757d9a04ce6590433841e14b325e8e7c5d62b8442885e50497e21b7cbca6da40d54ea + languageName: node + linkType: hard + +"strip-ansi@npm:^6.0.0": + version: 6.0.0 + resolution: "strip-ansi@npm:6.0.0" + dependencies: + ansi-regex: ^5.0.0 + checksum: 10568c91cadbef182a807c38dfa718dce15a35b12fcc97b96b6b2029d0508ef66ca93fabddeb49482d9b027495d1e18591858e80f27ad26861c4967c60fd207f + languageName: node + linkType: hard + +"strip-bom@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-bom@npm:2.0.0" + dependencies: + is-utf8: ^0.2.0 + checksum: d488310c44b2a089d1d2ff54e90198eb8d32e6d2016ae811c732b1a6472dea15ae72dc21ee35ee6729cf71e9b663b3216d3e48cd1e5fba3b6093fd0b19ae7d0b + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 25a231aacba2c6ecf37d7389721ff214c7f979e97407c935eeb41f5c5513c80119aada86049408feab74d22e7f1b29d90c942d4d47a4e47868dd16daed035823 + languageName: node + linkType: hard + +"strip-eof@npm:^1.0.0": + version: 1.0.0 + resolution: "strip-eof@npm:1.0.0" + checksum: 905cd8718ad2e7b3a9c4bc6a9ed409c38b8cef638845a9471884547de0dbe611828d584e749a38d3eebc2d3c830ea9c619d78875a639b7413d93080661807376 + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 74dbd8a602409706748db730200efab53ba739ed7888310e74e45697efbd760981df6d6f0fa34b23e973135fb07d3b22adae6e6d58898f692a094e49692c6c33 + languageName: node + linkType: hard + +"strip-indent@npm:^1.0.1": + version: 1.0.1 + resolution: "strip-indent@npm:1.0.1" + dependencies: + get-stdin: ^4.0.1 + bin: + strip-indent: cli.js + checksum: 9ec818484a53a8f564b7a56148db2883dad4fe665cc76583df5eb5b2e216b5ed48e4d63d1da525e990030c47c41d648e48053a505dd29f7a87568733b147a533 + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.0, strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: f16719ce25abc58a55ef82b1c27f541dcfa5d544f17158f62d10be21ff9bd22fde45a53c592b29d80ad3c97ccb67b7451c4833913fdaeadb508a40f5e0a9c206 + languageName: node + linkType: hard + +"supports-color@npm:^2.0.0": + version: 2.0.0 + resolution: "supports-color@npm:2.0.0" + checksum: 5d6fb449e29f779cc639756f0d6b9ab6138048e753683cd2c647f36a9254714051909a5f569e6aa83c5310c8dfe8a1f481967e02bef401ac8eed46ee0950d779 + languageName: node + linkType: hard + +"supports-color@npm:^5.3.0": + version: 5.5.0 + resolution: "supports-color@npm:5.5.0" + dependencies: + has-flag: ^3.0.0 + checksum: edacee6425498440744c418be94b0660181aad2a1828bcf2be85c42bd385da2fd8b2b358d9b62b0c5b03ff5cd3e992458d7b8f879d9fb42f2201fe05a4848a29 + languageName: node + linkType: hard + +"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: ^4.0.0 + checksum: 8e57067c39216f3c2ffce7cc14ca934d54746192571203aa9c9922d97d2d55cc1bdaa9e41a11f91e620670b5a74ebdec6b548a885d8cc2dea7cab59e21416029 + languageName: node + linkType: hard + +"supports-hyperlinks@npm:^2.0.0": + version: 2.1.0 + resolution: "supports-hyperlinks@npm:2.1.0" + dependencies: + has-flag: ^4.0.0 + supports-color: ^7.0.0 + checksum: 8b3b6d71ee298d7f9a3ff4bfb928bd037c0b691b01bdfebb77deb3384976cd78c180d564dc3689ce5fe254d323252f7064efa1364bf24ab81efa6b080e51eddb + languageName: node + linkType: hard + +"sver-compat@npm:^1.5.0": + version: 1.5.0 + resolution: "sver-compat@npm:1.5.0" + dependencies: + es6-iterator: ^2.0.1 + es6-symbol: ^3.1.1 + checksum: 3f6cc0c85d163f50c6c3c93eec28b2f55a79e5659723abb1b7172b2efdff99656b0f5df976ebc125824aec886afed9574757f7ea992d33bde1045d9007a8dcf7 + languageName: node + linkType: hard + +"symbol-tree@npm:^3.2.4": + version: 3.2.4 + resolution: "symbol-tree@npm:3.2.4" + checksum: 0b9af4e5f005f9f0b9c916d91a1b654422ffa49ef09c5c4b6efa7a778f63976be9f410e57db1e9ea7576eea0631a34b69a5622674aa92a60a896ccf2afca87a7 + languageName: node + linkType: hard + +"table@npm:^6.0.4": + version: 6.0.7 + resolution: "table@npm:6.0.7" + dependencies: + ajv: ^7.0.2 + lodash: ^4.17.20 + slice-ansi: ^4.0.0 + string-width: ^4.2.0 + checksum: b28d81d6063110a8e94264ff17d3b7505fd344947f2c5cdf0fa71f7a622897fb15068686652d3aed8ed1c5817ca783be8a9c3419edf27808350ad29cc7d87fdf + languageName: node + linkType: hard + +"tar@npm:^2.0.0": + version: 2.2.2 + resolution: "tar@npm:2.2.2" + dependencies: + block-stream: "*" + fstream: ^1.0.12 + inherits: 2 + checksum: a8eeafd7eafd143df2034cfec228abc4f7bfec96a988fe6e970e1224e46a91b3cd9f34656574658e5cf31bdf48e3a8b04474a81bbdef65caaeaa19f9239dc1f6 + languageName: node + linkType: hard + +"tar@npm:^6.0.2": + version: 6.1.0 + resolution: "tar@npm:6.1.0" + dependencies: + chownr: ^2.0.0 + fs-minipass: ^2.0.0 + minipass: ^3.0.0 + minizlib: ^2.1.1 + mkdirp: ^1.0.3 + yallist: ^4.0.0 + checksum: d1d988eceb1ad2ecfaaf6fc5ecfe0c46fa005d04fe4c283355ccc52d3ffb4b6bf459a62f9ac7e36fd35251ab020399bdf527ab48b968120e06b4f61906a87d62 + languageName: node + linkType: hard + +"terminal-link@npm:^2.0.0": + version: 2.1.1 + resolution: "terminal-link@npm:2.1.1" + dependencies: + ansi-escapes: ^4.2.1 + supports-hyperlinks: ^2.0.0 + checksum: f84553e11e9dc9034c9a62aeada2985e2c50adf161b773b3e4a5cf174b0d14f6b8868eb1dcdf91c3f71e3d932a3be158b8742c2a43ee459e9b88a246d78a6dc1 + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": ^0.1.2 + glob: ^7.1.4 + minimatch: ^3.0.4 + checksum: 68294d10066726cbced152aeb8a39cf9fd199199c62afb39290b824f613090f2535fc6acbad7d78f1f34cf00f4f00d42fa14f02d6262b910a7c9e2db2ecfa388 + languageName: node + linkType: hard + +"text-table@npm:^0.2.0": + version: 0.2.0 + resolution: "text-table@npm:0.2.0" + checksum: 373904ce70524ba11ec7e1905c44fb92671132d5e0b0aba2fb48057161f8bf9cbf7f6178f0adf31810150cf44fb52c7b912dc722bff3fddf9688378596dbeb56 + languageName: node + linkType: hard + +"throat@npm:^5.0.0": + version: 5.0.0 + resolution: "throat@npm:5.0.0" + checksum: 2fa41c09ccd97982cd6601eca704913f5d8ef5cc4070fcd71c67e7240da7c0df86f65f5cb23f5c3132ab5567154740114cc92379663aa098b6076a39481b0f5f + languageName: node + linkType: hard + +"through2-filter@npm:^3.0.0": + version: 3.0.0 + resolution: "through2-filter@npm:3.0.0" + dependencies: + through2: ~2.0.0 + xtend: ~4.0.0 + checksum: 0b667941b8970bb32221cc10d10c58bbe49c80abbc39bdb0f741e03fb442f5235f4df2ff79f1539c1fdf3c90bedb69d1db34640c84eb9582da7044eb5ce19e3d + languageName: node + linkType: hard + +"through2@npm:^2.0.0, through2@npm:^2.0.3, through2@npm:~2.0.0": + version: 2.0.5 + resolution: "through2@npm:2.0.5" + dependencies: + readable-stream: ~2.3.6 + xtend: ~4.0.1 + checksum: 7427403555ead550d3cbe11f69eb07797e27505fc365cf53572111556a7c08625adb5159cad0fc4b9f57babfd937692e34b3a8a20ba35072f4e85f83d340661c + languageName: node + linkType: hard + +"through@npm:^2.3.8": + version: 2.3.8 + resolution: "through@npm:2.3.8" + checksum: 918d9151680b5355990011eb8c4b02e8cb8cf6e9fb6ea3d3e5a1faa688343789e261634ae35de4ea9167ab029d1e7bac6af2fe61b843931768d405fdc3e8897c + languageName: node + linkType: hard + +"time-stamp@npm:^1.0.0": + version: 1.1.0 + resolution: "time-stamp@npm:1.1.0" + checksum: e880c4d2c65d992c5c37be84fa5ac83ae9f19fff431aa51c58dc548523914b09f049d88166d0fe06acb5f66ac4b76f45b46675bc50bfaba26f35766da7ae699c + languageName: node + linkType: hard + +"tinymce@npm:5.6.2": + version: 5.6.2 + resolution: "tinymce@npm:5.6.2" + checksum: 7655814c72db7b82760cc20f361bc29979cb72ec57e074dee11dbb294172d4d91b7828069b905a412b5b2b2f7db13cf0f1ba669c0f971739a4133ba647ac0346 + languageName: node + linkType: hard + +"tmpl@npm:1.0.x": + version: 1.0.4 + resolution: "tmpl@npm:1.0.4" + checksum: 44de07fb81a7273937f3de4b856d12b981b7a9b05a244e6e514e15b072241304cf108f145d2510783eceb91293e237f7e2562b37c8a6e7e6f3fe40daa44259d2 + languageName: node + linkType: hard + +"to-absolute-glob@npm:^2.0.0": + version: 2.0.2 + resolution: "to-absolute-glob@npm:2.0.2" + dependencies: + is-absolute: ^1.0.0 + is-negated-glob: ^1.0.0 + checksum: b2f4257e042a8923526f91ab1983ca3de33478ad0a12a945ef625387925ae11c47aabe8a45c234f86285a39dfa3caf1c9bede5363147d9b648ad30f44efbf78b + languageName: node + linkType: hard + +"to-fast-properties@npm:^2.0.0": + version: 2.0.0 + resolution: "to-fast-properties@npm:2.0.0" + checksum: 40e61984243b183d575a2f3a87d008bd57102115701ee9037fd673e34becf12ee90262631857410169ca82f401a662ed94482235cea8f3b8dea48b87eaabc467 + languageName: node + linkType: hard + +"to-object-path@npm:^0.3.0": + version: 0.3.0 + resolution: "to-object-path@npm:0.3.0" + dependencies: + kind-of: ^3.0.2 + checksum: a6a5a502259af744ac4e86752c8e71395c4106cae6f4e2a5c711e6f5de4cdbd08691e9295bf5b6e86b3e12722274fc3c5c0410f5fcf42ca783cc43f62139b5d0 + languageName: node + linkType: hard + +"to-regex-range@npm:^2.1.0": + version: 2.1.1 + resolution: "to-regex-range@npm:2.1.1" + dependencies: + is-number: ^3.0.0 + repeat-string: ^1.6.1 + checksum: 801501b59d6a2892d88b2ccb78416d6778aec1549da593f83b7bb433a5540995e4c6f2d954ff44d53f38c094d04c0da3ed6f61f110d9cd2ea00cb570b90e81e4 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: ^7.0.0 + checksum: 2b6001e314e4998a07137c197e333fac2f86d46d0593da90b678ae64e2daa07274b508f83cca09e6b3504cdf222497dcb5b7daceb6dc13a9a8872f58a27db907 + languageName: node + linkType: hard + +"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": + version: 3.0.2 + resolution: "to-regex@npm:3.0.2" + dependencies: + define-property: ^2.0.2 + extend-shallow: ^3.0.2 + regex-not: ^1.0.2 + safe-regex: ^1.1.0 + checksum: ed733fdff8970628ef2d425564d1331a812e57cbb6ab7675c970046b2b792cbf2386c8292e45bb201bf85ca71a7708e3e1ffb979f5cd089ad4a82a12df75939b + languageName: node + linkType: hard + +"to-through@npm:^2.0.0": + version: 2.0.0 + resolution: "to-through@npm:2.0.0" + dependencies: + through2: ^2.0.3 + checksum: c4b135b0984fb88e8462032cf4d8ed744c01f3eee869892260ea4b9a981994e7665d1774f2c5682a455a6a59c7f0b4bda70298540d3ccbf5ef04c8847f738534 + languageName: node + linkType: hard + +"tough-cookie@npm:^2.3.3, tough-cookie@npm:~2.5.0": + version: 2.5.0 + resolution: "tough-cookie@npm:2.5.0" + dependencies: + psl: ^1.1.28 + punycode: ^2.1.1 + checksum: bf5d6fac5ce0bebc5876cb9b9a79d3d9ea21c9e4099f3d3e64701d6ba170a052cb88cece6737ec2473bac4f0a4f6c75d46ec17985be8587c6bbdd38d91625cb4 + languageName: node + linkType: hard + +"tough-cookie@npm:^3.0.1": + version: 3.0.1 + resolution: "tough-cookie@npm:3.0.1" + dependencies: + ip-regex: ^2.1.0 + psl: ^1.1.28 + punycode: ^2.1.1 + checksum: dc1eee69c61a6d5598144ff41c9b5e758207130d92d2b89facad075140a99c10d674a6278764b9edfe8e074cb7840c15e7b786b93d0672875026c2ce5172d774 + languageName: node + linkType: hard + +"tr46@npm:^2.0.2": + version: 2.0.2 + resolution: "tr46@npm:2.0.2" + dependencies: + punycode: ^2.1.1 + checksum: c8c221907944e8b577c4fff14d180a213c21a29b54a12a031aa6986cbb711a5d470588b556a7be9c7844f09142e12deef6b76fe10f6bd4d274b54f1a7e0aac9e + languageName: node + linkType: hard + +"trim-newlines@npm:^1.0.0": + version: 1.0.0 + resolution: "trim-newlines@npm:1.0.0" + checksum: acc229ae8f6e7615df28a9cdb33a40db3f385afa9076c8b53a0a2d63d49dd646a6a4827ad93e1bc92ef24286121f66042c00da089f1585e473c010ca88309c78 + languageName: node + linkType: hard + +"true-case-path@npm:^1.0.2": + version: 1.0.3 + resolution: "true-case-path@npm:1.0.3" + dependencies: + glob: ^7.1.2 + checksum: 258c2fe76e9101b216f9e903c3f6af31c2ec82c3d4a291d718fc7526c226ad5960b84e74976a48e21a123a7a47cc75f0be54b806e7f235dc080efc0b7e32f261 + languageName: node + linkType: hard + +"ts-jest@npm:^26.5.5": + version: 26.5.5 + resolution: "ts-jest@npm:26.5.5" + dependencies: + bs-logger: 0.x + buffer-from: 1.x + fast-json-stable-stringify: 2.x + jest-util: ^26.1.0 + json5: 2.x + lodash: 4.x + make-error: 1.x + mkdirp: 1.x + semver: 7.x + yargs-parser: 20.x + peerDependencies: + jest: ">=26 <27" + typescript: ">=3.8 <5.0" + bin: + ts-jest: cli.js + checksum: a7fe56357bfd7e7cd833ea4a97408910ee67796fb7f3938c7155c69dc7b35f3172b76503e16282715e07a4a2b5026efd4803f0b090b3930e0c79c58d25b740db + languageName: node + linkType: hard + +"tslib@npm:2.1.0": + version: 2.1.0 + resolution: "tslib@npm:2.1.0" + checksum: d8f5bdd067611651c6b846c2388f4dc8ba1f5af124e66105f5263d1ad56da17f4b8c6566887ca2f205c5a9758451871ceca87d5d06087af2dca1699c5e33db69 + languageName: node + linkType: hard + +"tslib@npm:^1.8.1, tslib@npm:^1.9.0": + version: 1.14.1 + resolution: "tslib@npm:1.14.1" + checksum: f44fe7f216946b17d3e3074df3746372703cf24e9127b4c045511456e8e4bf25515fb0a1bb3937676cc305651c5d4fcb6377b0588a4c6a957e748c4c28905d17 + languageName: node + linkType: hard + +"tslib@npm:^2.2.0": + version: 2.2.0 + resolution: "tslib@npm:2.2.0" + checksum: 2d35468c470410871c5246e43f12dcb6d0fc363b617c176f26443b9530e5c5ee8448966892a42956168d8f495da7865bda33dfe82c26c91991e28999974a618f + languageName: node + linkType: hard + +"tsutils@npm:^3.17.1": + version: 3.20.0 + resolution: "tsutils@npm:3.20.0" + dependencies: + tslib: ^1.8.1 + peerDependencies: + typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + checksum: 9245072f9c0d511e3a30c52ec0bfd5ad91495f85d819426ad5283931d09bbdffe515c5c708ba99a4c2424e4576d37200d3e62df66f0027ca29fcfa76794e9610 + languageName: node + linkType: hard + +"tunnel-agent@npm:^0.6.0": + version: 0.6.0 + resolution: "tunnel-agent@npm:0.6.0" + dependencies: + safe-buffer: ^5.0.1 + checksum: 03db75a4f994fee610d3485c492e95105ed265a9fecd49d14c98e9982f973ecc0220d0c1bc264e37802e423a1274bb63788a873e4e07009408ae3ac517347fd7 + languageName: node + linkType: hard + +"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": + version: 0.14.5 + resolution: "tweetnacl@npm:0.14.5" + checksum: e1c9d52e2e9f582fd0df9ea26ba5a9ab88b9a38b69625d8e55c5e8870a4832ac8c32f8854b41fce7b59f97258bb103535363f9eda7050aa70e75824b972c7dde + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: ^1.2.1 + checksum: 6c2e1ce339567e122504f0c729cfa35d877fb2da293b99110f0819eca81e6ed8d3ba9bb36c0bc0ee4904d5340dbe678f8642a395c1c67b1d0f69f081efb47f4a + languageName: node + linkType: hard + +"type-check@npm:~0.3.2": + version: 0.3.2 + resolution: "type-check@npm:0.3.2" + dependencies: + prelude-ls: ~1.1.2 + checksum: 4e080645319c12bb78119f7e8bb333cab8dacad2c1988597aabf44da985ad36fce3419707e93ed0fc84514b7eec94e4d8817e33d0aab8c81de394916e00d6806 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: e01dc6ac9098192a7859fb86c7b4073709a4e13a5cc02c54d54412378bb099563fda7a7a85640f33e3a7c2e8189182eb1511f263e67f402b2d63fe81afdde785 + languageName: node + linkType: hard + +"type-fest@npm:^0.11.0": + version: 0.11.0 + resolution: "type-fest@npm:0.11.0" + checksum: 02e5cadf13590a5724cacf8d9133320efd173f6fb1b695fcb29e56551a315bf0f07ca988a780a1999b7b55bb3eaaa7f37223615207236d393af17bba6749dc95 + languageName: node + linkType: hard + +"type-fest@npm:^0.20.2": + version: 0.20.2 + resolution: "type-fest@npm:0.20.2" + checksum: 1f887bc6150e632fb772fd28e33c22a4ab036c6f484fa9ac2e2115f6cae9d62bba7ca0368e3332b539d85bd2c8391c7bff22ad410abcbc9ab3774d61e250b210 + languageName: node + linkType: hard + +"type-fest@npm:^0.6.0": + version: 0.6.0 + resolution: "type-fest@npm:0.6.0" + checksum: c77f687caff9f8effffd6091fbdb57b8e7265213e067c34086d37dc6ac3b640abd3dd3921402a6ba9eb56621719c552ae5e91d183d1e6d075f9aff859a347f00 + languageName: node + linkType: hard + +"type-fest@npm:^0.8.1": + version: 0.8.1 + resolution: "type-fest@npm:0.8.1" + checksum: f8c4b4249f52e8bea7a4fc55b3653c96c2d547240e4c772e001d02b7cc38b8c3eb493ab9fbe985a76a203cd1aa7044776b728a71ba12bf36e7131f989597885b + languageName: node + linkType: hard + +"type@npm:^1.0.1": + version: 1.2.0 + resolution: "type@npm:1.2.0" + checksum: 1589416fd9d0a0a1bf18c62dbc7452b0f22017efd5bfc2912050bb57421b084801563ff13b3e3efd60df45590f23e1f3d27d892aeeec9b3ed142c917a4858812 + languageName: node + linkType: hard + +"type@npm:^2.0.0": + version: 2.3.0 + resolution: "type@npm:2.3.0" + checksum: e4976037e71df2550cbd84a5e3ff764f3706ebcb21b7c10deb671db5a2d58468cc6604633cf480b816d7649832d9d78a5edad40019b0fa48051e5f3d4bcc8038 + languageName: node + linkType: hard + +"typedarray-to-buffer@npm:^3.1.5": + version: 3.1.5 + resolution: "typedarray-to-buffer@npm:3.1.5" + dependencies: + is-typedarray: ^1.0.0 + checksum: e6e0e6812acc3496612d81abe026bb6c71bfc0f3daa00716a3236fe37c46a81508de8306df8a29ae81e2a2c4293b6b8067c77b65003e0022134d544902b9acec + languageName: node + linkType: hard + +"typedarray@npm:^0.0.6": + version: 0.0.6 + resolution: "typedarray@npm:0.0.6" + checksum: c9ef0176aaf32593514c31e5c6edc1db970847aff6e1f0a0570a6ac0cc996335792f394c2fcec59cc76691d22a01888ea073a2f3c6930cfcf7c519addf4e2ad7 + languageName: node + linkType: hard + +typescript@^4.1.4: + version: 4.2.2 + resolution: "typescript@npm:4.2.2" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: b2e3d5551a12c51b6b7a14f0e78d2664c136fab4dfb3eecaaf7a6e8e7e608f2cf43c6ebe81387d194db2588793b769720d2df523d445a1664b7585c5b9a85984 + languageName: node + linkType: hard + +typescript@^4.2.4: + version: 4.2.4 + resolution: "typescript@npm:4.2.4" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: edaede2fa77f56b7fba80ee624a2368ab1216e75b0434d968ccb47ab0a5e2f6d94f848b3b111c1237dd71e988cd376af26370dcdad3b94355c76e759f0dd0a1e + languageName: node + linkType: hard + +"typescript@patch:typescript@^4.1.4#builtin": + version: 4.2.2 + resolution: "typescript@patch:typescript@npm%3A4.2.2#builtin::version=4.2.2&hash=a45b0e" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: ea1f1b6be22c9e3348f61692719d3169dd4abaad34b2132edff44a8d5a748bde8f3116fa2fae41d61c92b3a7cf1c35d0c7276058b2f35196ff3cde3b7d57c84b + languageName: node + linkType: hard + +"typescript@patch:typescript@^4.2.4#builtin": + version: 4.2.4 + resolution: "typescript@patch:typescript@npm%3A4.2.4#builtin::version=4.2.4&hash=a45b0e" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 3be44317593182e8ce494c114e7ad9b0bb2553a22f3085cc6da4f0a36912c20850daa9be4c898af2ab6fc8b12f430c1c9e46ac715721867cd38643f2350d3ef9 + languageName: node + linkType: hard + +"uglify-js@npm:^3.1.4": + version: 3.13.0 + resolution: "uglify-js@npm:3.13.0" + bin: + uglifyjs: bin/uglifyjs + checksum: bb35cfe5ce9735a9707b33628dbbef02ab4b62bdd3650a02e14dfe42f4ac3fe5e9d616352476605706ab651561abc66ef2877c3dcabf4bde5bf66cecec94f3e8 + languageName: node + linkType: hard + +"unc-path-regex@npm:^0.1.2": + version: 0.1.2 + resolution: "unc-path-regex@npm:0.1.2" + checksum: 585e29357917a8b529e05db14a3f2e9486258a5826ca9c0eb4f9173c006968ceffba201766d2ff08d38a1e014b69c519294981b29e669a81ea357c0ffd6e326b + languageName: node + linkType: hard + +"undertaker-registry@npm:^1.0.0": + version: 1.0.1 + resolution: "undertaker-registry@npm:1.0.1" + checksum: 7193fca9f45bbb55b7d8ab96e134ef130043d70746991cf9f292fff7c0223b6d3e39c7b63869157ab85c77716b1e7464497d344e6a0c5d4e618bcf7d2f4ab451 + languageName: node + linkType: hard + +"undertaker@npm:^1.2.1": + version: 1.3.0 + resolution: "undertaker@npm:1.3.0" + dependencies: + arr-flatten: ^1.0.1 + arr-map: ^2.0.0 + bach: ^1.0.0 + collection-map: ^1.0.0 + es6-weak-map: ^2.0.1 + fast-levenshtein: ^1.0.0 + last-run: ^1.1.0 + object.defaults: ^1.0.0 + object.reduce: ^1.0.0 + undertaker-registry: ^1.0.0 + checksum: 8fd661579a6a3dfdedb853344f10d4191b1db8e11c7b5ef21a9a9ecf17f4052db58511a4de46391c4f29e6ce6577ec2a2e016dc9d288b834ee756db2e550c406 + languageName: node + linkType: hard + +"union-value@npm:^1.0.0": + version: 1.0.1 + resolution: "union-value@npm:1.0.1" + dependencies: + arr-union: ^3.1.0 + get-value: ^2.0.6 + is-extendable: ^0.1.1 + set-value: ^2.0.1 + checksum: bd6ae611f09e98d3918ee425b0cb61987e9240672c9822cfac642b0240e7a807c802c1968e0205176d7fa91ca0bba5f625a6937b26b2269620a1402589852fd8 + languageName: node + linkType: hard + +"unique-stream@npm:^2.0.2": + version: 2.3.1 + resolution: "unique-stream@npm:2.3.1" + dependencies: + json-stable-stringify-without-jsonify: ^1.0.1 + through2-filter: ^3.0.0 + checksum: 9064f196d58c10ff774c340659e4c7f45f578176dc282212ecfa3864174159fe0ec2895e0804e5da22f23df92d3772cc02ba2510734fcb2ff17b8d975e0d9dab + languageName: node + linkType: hard + +"universalify@npm:^0.1.0": + version: 0.1.2 + resolution: "universalify@npm:0.1.2" + checksum: 420fc6547357782c700d53e9a92506a8e95345b13e97684c8f9ab75237912ec2ebb6af8ac10d4f7406b7b6bd21c58f6c5c0811414fb0b4091b78b4743fa6806e + languageName: node + linkType: hard + +"universalify@npm:^2.0.0": + version: 2.0.0 + resolution: "universalify@npm:2.0.0" + checksum: 36bfbdc97bd4b483596e66ea65e20663f5ab9ec3650157d99b075b7f97afcdefe46bbb23f89171dd75595d398cea3769a5b6d7130f5c66cae2a0f00904780f62 + languageName: node + linkType: hard + +"unset-value@npm:^1.0.0": + version: 1.0.0 + resolution: "unset-value@npm:1.0.0" + dependencies: + has-value: ^0.3.1 + isobject: ^3.0.0 + checksum: b4c4853f2744a91e9bb5ccb3dfb28f78c32310bf851f0e6b9e781d3ca5244a803632926b2af701da5f9153a03e405023cebc1f90b87711f73b5fc86b6c33efae + languageName: node + linkType: hard + +"upath@npm:^1.1.1": + version: 1.2.0 + resolution: "upath@npm:1.2.0" + checksum: ecb08ff3e7e3b152e03bceb7089e6f0077bf3494764397a301eb99a7a5cd4c593ea4d0b13a7714195ad8a3ddca9d7a5964037a1c0bc712e1ba7b67a79165a0be + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: ^2.1.0 + checksum: 7d8ae8e2d7b82480d7d337f3e53c9a89ffdc7ebb1c31f212da3df6349f2fd1e6a4361f5fb27369ecab33fa37aa85edc53aec6eb7c9a7c3207a9e0944e8c48802 + languageName: node + linkType: hard + +"urix@npm:^0.1.0": + version: 0.1.0 + resolution: "urix@npm:0.1.0" + checksum: 6bdfca4e7fb7d035537068a47a04ace1bacfa32e6b1aaf54c5a0340c83125a186d59109a19b9a3a1c1f986d3eb718b82faf9ad03d53cb99cf868068580b15b3b + languageName: node + linkType: hard + +"url@npm:^0.11.0": + version: 0.11.0 + resolution: "url@npm:0.11.0" + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + checksum: 537f785b16f873fdd2b63ccb7a61463b8e41370fdba95385b0102f3ed7b953c300d95b8755ec3b65f3e406372d47d16c3c989e196b25b70f42190da1fc36c56f + languageName: node + linkType: hard + +"use@npm:^3.1.0": + version: 3.1.1 + resolution: "use@npm:3.1.1" + checksum: 8dd3bdeeda53864c779e0fa8d799064739708f80b45d06fa48a1a6ba192dc3f9e3266d4556f223cd718d27aedfd957922152e7463c00ac46e185f8331353fb6f + languageName: node + linkType: hard + +"util-deprecate@npm:~1.0.1": + version: 1.0.2 + resolution: "util-deprecate@npm:1.0.2" + checksum: 73c2b1cf0210ccac300645384d8443cabbd93194117b2dc1b3bae8d8279ad39aedac857e020c4ea505e96a1045059c7359db3df6a9df0be6b8584166c9d61dc9 + languageName: node + linkType: hard + +"uuid@npm:^3.3.2, uuid@npm:^3.3.3": + version: 3.4.0 + resolution: "uuid@npm:3.4.0" + bin: + uuid: ./bin/uuid + checksum: 1ce3f37e214d6d0dc94a6a9663a0365013ace66bc3fd5b203e6f5d2eeb978aaee1192367222386345d30b4c6a447928c501121aa84c637724bf105ef57284949 + languageName: node + linkType: hard + +"uuid@npm:^8.3.0": + version: 8.3.2 + resolution: "uuid@npm:8.3.2" + bin: + uuid: dist/bin/uuid + checksum: aed2bcef341f95635f308fea8831fb9038b18c485fe7e71feb89d2e05602dfecad0cb6f2246fae096d4da425cca6e8a71056f28abd97ad98cf770a2018853248 + languageName: node + linkType: hard + +"v8-compile-cache@npm:^2.0.3": + version: 2.2.0 + resolution: "v8-compile-cache@npm:2.2.0" + checksum: 1efc9946401fcad7a67619b520d8d12e31c7138090ffd9f98af9b919461fa23d947ecef0eab89cca4037c01d29d25a389ab6c0fac70ee4ed030443b08cdf6cff + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^7.0.0": + version: 7.1.0 + resolution: "v8-to-istanbul@npm:7.1.0" + dependencies: + "@types/istanbul-lib-coverage": ^2.0.1 + convert-source-map: ^1.6.0 + source-map: ^0.7.3 + checksum: decc2cc896de173adc27e5621f3d7e5d0d4018d6df12cc95c5de2d8eb1a1bab2ed4fe9a4e767dd469b81b3520024b9fec6b9b4beeefbfac2bbeebfc9937bf9ba + languageName: node + linkType: hard + +"v8flags@npm:^3.2.0": + version: 3.2.0 + resolution: "v8flags@npm:3.2.0" + dependencies: + homedir-polyfill: ^1.0.1 + checksum: d68937c42667f91cef97886fab0268d06d37c0de1659f9b3ad57a75aaaed1c21342659bfc80f4558fec21126ef25e486e7717017738b02be4840f465efd6379a + languageName: node + linkType: hard + +"validate-npm-package-license@npm:^3.0.1": + version: 3.0.4 + resolution: "validate-npm-package-license@npm:3.0.4" + dependencies: + spdx-correct: ^3.0.0 + spdx-expression-parse: ^3.0.0 + checksum: 940899bd4eacfa012ceecb10a5814ba0e8103da5243aa74d0d62f1f8a405efcd23e034fb7193e2d05b392870c53aabcb1f66439b062075cdcb28bc5d562a8ff6 + languageName: node + linkType: hard + +"value-or-function@npm:^3.0.0": + version: 3.0.0 + resolution: "value-or-function@npm:3.0.0" + checksum: ea8dfbd31d4e7336a1b5a8f2dc0dc6e623b3eb843e116170e094d952842542e5f29a565a15eda424ae1174897d7abf7fd8a21cd9284dbebf4dbd6611bd59e159 + languageName: node + linkType: hard + +"verror@npm:1.10.0": + version: 1.10.0 + resolution: "verror@npm:1.10.0" + dependencies: + assert-plus: ^1.0.0 + core-util-is: 1.0.2 + extsprintf: ^1.2.0 + checksum: 38ea80312cb42e5e8b4ac562d108d675b2354a79f8f125d363671f692657461b9181fd26f4fc9acdca433f8afee099cb78058806e1303e6b15b8fb022affba94 + languageName: node + linkType: hard + +"vinyl-fs@npm:^3.0.0": + version: 3.0.3 + resolution: "vinyl-fs@npm:3.0.3" + dependencies: + fs-mkdirp-stream: ^1.0.0 + glob-stream: ^6.1.0 + graceful-fs: ^4.0.0 + is-valid-glob: ^1.0.0 + lazystream: ^1.0.0 + lead: ^1.0.0 + object.assign: ^4.0.4 + pumpify: ^1.3.5 + readable-stream: ^2.3.3 + remove-bom-buffer: ^3.0.0 + remove-bom-stream: ^1.2.0 + resolve-options: ^1.1.0 + through2: ^2.0.0 + to-through: ^2.0.0 + value-or-function: ^3.0.0 + vinyl: ^2.0.0 + vinyl-sourcemap: ^1.1.0 + checksum: d12dc2e6f644014e4e4f9c612d9693f9f15ebf5dd830fc15c63fe9102ee10b879afb93ff43b91e2abecea833b66ca44ccaf5a2f30bbe7b0e7bf1311ffe5127ca + languageName: node + linkType: hard + +"vinyl-sourcemap@npm:^1.1.0": + version: 1.1.0 + resolution: "vinyl-sourcemap@npm:1.1.0" + dependencies: + append-buffer: ^1.0.2 + convert-source-map: ^1.5.0 + graceful-fs: ^4.1.6 + normalize-path: ^2.1.1 + now-and-later: ^2.0.0 + remove-bom-buffer: ^3.0.0 + vinyl: ^2.0.0 + checksum: 372d6f0797596bb7d86a3c86029a93f08a98816a615e418d482c77a2de95de5f65f46f6b488a56994d8dcb639b16b1e680b19e41e993479ef4729fc65cc45fb4 + languageName: node + linkType: hard + +"vinyl-sourcemaps-apply@npm:^0.2.0": + version: 0.2.1 + resolution: "vinyl-sourcemaps-apply@npm:0.2.1" + dependencies: + source-map: ^0.5.1 + checksum: c1d826acf474831a58609e0d19f0f7e907cd6f2a347a67c2879aa44e149491f0b47449bfe906e9da54f026806196b3ac92f8ae4dfe3d3a44353baab1885a03b4 + languageName: node + linkType: hard + +"vinyl@npm:^2.0.0": + version: 2.2.1 + resolution: "vinyl@npm:2.2.1" + dependencies: + clone: ^2.1.1 + clone-buffer: ^1.0.0 + clone-stats: ^1.0.0 + cloneable-readable: ^1.0.0 + remove-trailing-separator: ^1.0.1 + replace-ext: ^1.0.0 + checksum: 9f4088a075cc3eb2ecbd88b09cb5c7571c4edb64d6ebb80eeaaf18ddb47bbca1ee2808dea4ae6ee338e38e60715c253c67b5f2fe34be630a914e54fae618db9c + languageName: node + linkType: hard + +"w3c-hr-time@npm:^1.0.2": + version: 1.0.2 + resolution: "w3c-hr-time@npm:1.0.2" + dependencies: + browser-process-hrtime: ^1.0.0 + checksum: bb021b4c4b15acc26a7b0de5b6f4c02d829b458345af162713685e84698380fabffc7856f4a85ba368f23c8419d3a7a726b628b993ffeb0d5a83d0d57d4cbf72 + languageName: node + linkType: hard + +"w3c-xmlserializer@npm:^2.0.0": + version: 2.0.0 + resolution: "w3c-xmlserializer@npm:2.0.0" + dependencies: + xml-name-validator: ^3.0.0 + checksum: 2327c8a6c7302ed4b685125c193f4b4b859ee12cd6e1938407a02dda9cfcfff7f0c103de387b268444c4b61d7892d5260b5c684eb7519886fb3a07798bd565ba + languageName: node + linkType: hard + +"walker@npm:^1.0.7, walker@npm:~1.0.5": + version: 1.0.7 + resolution: "walker@npm:1.0.7" + dependencies: + makeerror: 1.0.x + checksum: c014f264c473fc4464ba8f59eb9f7ffa1c0cf2c83b65353de28a6012d8dd29e974bf2b0fbd5c71231f56762a3ea0d970b635f7d6f6d670ff83f426741ce6a4da + languageName: node + linkType: hard + +"webidl-conversions@npm:^5.0.0": + version: 5.0.0 + resolution: "webidl-conversions@npm:5.0.0" + checksum: af4e465fb3111f45930e48f8e4206d6ae41675f03f35d6dfa10b2d7186430236ef1b406d8c3e57f75c8a60e424ca715c9fe6b6b2316a1b999ecffe8280414dff + languageName: node + linkType: hard + +"webidl-conversions@npm:^6.1.0": + version: 6.1.0 + resolution: "webidl-conversions@npm:6.1.0" + checksum: 0ded175044ec0a06f41014b9ffc36a67eb22bff53b9cb43fa1e9d05eaded43a100d993a8179d3a9f0f820ff1e5b812107a97c8643b600a6ab5bef1e11fcae66b + languageName: node + linkType: hard + +"whatwg-encoding@npm:^1.0.5": + version: 1.0.5 + resolution: "whatwg-encoding@npm:1.0.5" + dependencies: + iconv-lite: 0.4.24 + checksum: 44e4276ad2c770d1eb8c5a49294b863c581ef4bc78a10ac6a73a7eba00b377bc53ae0501d7ffce29a2c051b6af5ebbbd135f1da7d8eb98097af2cf12f7b2c984 + languageName: node + linkType: hard + +"whatwg-mimetype@npm:^2.3.0": + version: 2.3.0 + resolution: "whatwg-mimetype@npm:2.3.0" + checksum: 926e6ef8c7e53d158e501ce5e3c0e491d343c3c97e71b3d30451ffe4b1d6f81844c336b46a446a0b4f3fe4f327d76e3451d53ee8055344a0f5f2f35b84518011 + languageName: node + linkType: hard + +"whatwg-url@npm:^8.0.0": + version: 8.4.0 + resolution: "whatwg-url@npm:8.4.0" + dependencies: + lodash.sortby: ^4.7.0 + tr46: ^2.0.2 + webidl-conversions: ^6.1.0 + checksum: c85dfbedd2554e76d05eba467509db3a0ed5740e3bf1069a10ca302da531d64399693e4952c61be67d119a6b7f634f3ff65fbe59555b30474f849a7e0ce2a4c6 + languageName: node + linkType: hard + +"which-module@npm:^1.0.0": + version: 1.0.0 + resolution: "which-module@npm:1.0.0" + checksum: 2fbdb5d875d9dd141de049ad14820de43403cb664142df2b16430a6349bbbcc48b30a24491df0794b7f16284a977fd03ce8b797fa668db92272172dcbe21f8b6 + languageName: node + linkType: hard + +"which-module@npm:^2.0.0": + version: 2.0.0 + resolution: "which-module@npm:2.0.0" + checksum: 3d2107ab18c3c2a0ffa4f1a2a0a8862d0bb3fd5c72b10df9cbd75a15b496533bf4c4dc6fa65cefba6fdb8af7935ffb939ef4c8f2eb7835b03d1b93680e9101e9 + languageName: node + linkType: hard + +"which@npm:1, which@npm:^1.2.14, which@npm:^1.2.9": + version: 1.3.1 + resolution: "which@npm:1.3.1" + dependencies: + isexe: ^2.0.0 + bin: + which: ./bin/which + checksum: 298d95f9c185c4da22c1bfb1fdfa37c2ba56df8a6b98706ab361bf31a7d3a4845afaecfc48d4de7a259048842b5f2977f51b56f5c06c1f6a83dcf5a9e3de634a + languageName: node + linkType: hard + +"which@npm:^2.0.1, which@npm:^2.0.2": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: ^2.0.0 + bin: + node-which: ./bin/node-which + checksum: ea9b1db1266b08f7880717cf70dd9012dd523e5a317f10fbe4d5e8c1a761c5fd237f88642f2ba33b23f973ff4002c9b26648d63084ab208d8ecef36497315f6e + languageName: node + linkType: hard + +"wide-align@npm:^1.1.0": + version: 1.1.3 + resolution: "wide-align@npm:1.1.3" + dependencies: + string-width: ^1.0.2 || 2 + checksum: 4f850f84da84b7471d7b92f55e381e7ba286210470fe77a61e02464ef66d10e96057a0d137bc013fbbedb7363a26e79c0e8b21d99bb572467d3fee0465b8fd27 + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": + version: 1.2.3 + resolution: "word-wrap@npm:1.2.3" + checksum: 6526abd75d4409c76d1989cf2fbf6080b903db29824be3d17d0a0b8f6221486c76a021174eda2616cf311199787983c34bae3c5e7b51d2ad7476f2066cddb75a + languageName: node + linkType: hard + +"wordwrap@npm:^1.0.0": + version: 1.0.0 + resolution: "wordwrap@npm:1.0.0" + checksum: b4f3f8104a727d1b08e77f43f3692977146f13074392747a3d9cfd631d0fc3ff1c0c034d44fcd7a22183c6505d2fc305421e3512671f8a56f903055671ace4ce + languageName: node + linkType: hard + +"wrap-ansi@npm:^2.0.0": + version: 2.1.0 + resolution: "wrap-ansi@npm:2.1.0" + dependencies: + string-width: ^1.0.1 + strip-ansi: ^3.0.1 + checksum: d1846c06645c23dc25489e7df74df33164665c53fc609f9275ebcae11e1106f2d07038ffd8063433d1aaf9c657c42f8f45c77b7c749e358bf022351d86921d3b + languageName: node + linkType: hard + +"wrap-ansi@npm:^5.1.0": + version: 5.1.0 + resolution: "wrap-ansi@npm:5.1.0" + dependencies: + ansi-styles: ^3.2.0 + string-width: ^3.0.0 + strip-ansi: ^5.0.0 + checksum: 9622c3aa2742645e9a6941d297436a433c65ffe1b1416578ad56e0df657716bda6857401c5c9cc485c0abbc04e852aafedf295d87e2d6ec58a01799d6bcb2fdf + languageName: node + linkType: hard + +"wrap-ansi@npm:^6.2.0": + version: 6.2.0 + resolution: "wrap-ansi@npm:6.2.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: ee4ed8b2994cfbdcd571f4eadde9d8ba00b8a74113483fe5d0c5f9e84054e43df8e9092d7da35c5b051faeca8fe32bd6cea8bf5ae8ad4896d6ea676a347e90af + languageName: node + linkType: hard + +"wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 09939dd775ae565bb99a25a6c072fe3775a95fa71751b5533c94265fe986ba3e3ab071a027ab76cf26876bd9afd10ac3c2d06d7c4bcce148bf7d2d9514e3a0df + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 519fcda0fcdf0c16327be2de9d98646742307bc830277e8868529fcf7566f2b330a6453c233e0cdcb767d5838dd61a90984a02ecc983bcddebea5ad0833bbf98 + languageName: node + linkType: hard + +"write-file-atomic@npm:^3.0.0": + version: 3.0.3 + resolution: "write-file-atomic@npm:3.0.3" + dependencies: + imurmurhash: ^0.1.4 + is-typedarray: ^1.0.0 + signal-exit: ^3.0.2 + typedarray-to-buffer: ^3.1.5 + checksum: a26a8699c30cdc81d041b2c1049c6773f1e8401edda365874e9ca2dcf1fcf024dfeb43eea5e08c2e9b4e77be08a160d37f8d6c5d8c2d3ceccdf3d06e5cb38d35 + languageName: node + linkType: hard + +"ws@npm:^7.2.3": + version: 7.4.3 + resolution: "ws@npm:7.4.3" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 493655b7c4589d09ff3c2b6e8870b9ad7f7aea0aff34034e2dbb9a2e13f6868a47b06b423bc2365aec6143500b04ad24fdaecfbd9a6752f8eab2d339182c9884 + languageName: node + linkType: hard + +"xml-name-validator@npm:^3.0.0": + version: 3.0.0 + resolution: "xml-name-validator@npm:3.0.0" + checksum: b96679a42e6be36d2433987fe3cc45e972d20d7c2c2a787a2d6b2da94392bd9f23f671cdba29a91211289a2fa8e6965e466dbc1105d0e5730fc3a43e4f1a0688 + languageName: node + linkType: hard + +"xml@npm:^1.0.1": + version: 1.0.1 + resolution: "xml@npm:1.0.1" + checksum: adde7652a6f6010d28079586e7f608d616138bcb6c44bbc9174292b5cc2fab09b351d6c5f009e9304df2e0030888198225dd2e9ccbf51b776c8928479bfea4cb + languageName: node + linkType: hard + +"xmlchars@npm:^2.2.0": + version: 2.2.0 + resolution: "xmlchars@npm:2.2.0" + checksum: 69bbb61e8d939873c8aa7d006d082944de2eb6f12f55e53fdfc670d544e677736b59e498ece303f264bd1dc39b77557eef1c1c9bfb09eb5e1e30ac552420d81e + languageName: node + linkType: hard + +"xtend@npm:~4.0.0, xtend@npm:~4.0.1": + version: 4.0.2 + resolution: "xtend@npm:4.0.2" + checksum: 37ee522a3e9fb9b143a400c30b21dc122aa8c9c9411c6afae1005a4617dc20a21765c114d544e37a6bb60c2733dd8ee0a44ed9e80d884ac78cccd30b5e0ab0da + languageName: node + linkType: hard + +"y18n@npm:^3.2.1": + version: 3.2.2 + resolution: "y18n@npm:3.2.2" + checksum: 0fe04811e3c3a56fe9fd3186e511374a2cebed1c64cd36816a2528e4b9a74e4b02099aa8886a3ae797c480b7ab272198860706d9d7af50f2c544d3c7de673da4 + languageName: node + linkType: hard + +"y18n@npm:^4.0.0": + version: 4.0.1 + resolution: "y18n@npm:4.0.1" + checksum: e589620d8d668d696e74730a83731a36a8d782c50379386b142e5b8287388a6ebaf28528e84201c68c206629faed71362c79b201b398eb0c69aa1737635678dd + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.5 + resolution: "y18n@npm:5.0.5" + checksum: a7d41b0cccca1c98ebab270a944df48eb3b5352d3be0affb8afc8369823f6aa97a5fbead2c5b35e59a5650cb786b2b37627b45be5ff31f02a80dd3b881aceb17 + languageName: node + linkType: hard + +"yallist@npm:^2.1.2": + version: 2.1.2 + resolution: "yallist@npm:2.1.2" + checksum: f83e3d18eeba68a0276be2ab09260be3f2a300307e84b1565c620ef71f03f106c3df9bec4c3a91e5fa621a038f8826c19b3786804d3795dd4f999e5b6be66ea3 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: a2960ef879af6ee67a76cae29bac9d8bffeb6e9e366c217dbd21464e7fce071933705544724f47e90ba5209cf9c83c17d5582dd04415d86747a826b2a231efb8 + languageName: node + linkType: hard + +"yaml@npm:^1.10.0": + version: 1.10.0 + resolution: "yaml@npm:1.10.0" + checksum: d4cc9f9724f8d0aebc2cf52e4e6aa7059f12d50deb54b5225d103462fb2af36e5c0bb419101ca4b1f0cd3b4db9e4139cf2c690e863ac6227648d39d6f4e2522c + languageName: node + linkType: hard + +"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2": + version: 20.2.6 + resolution: "yargs-parser@npm:20.2.6" + checksum: ed21fc0f35290dc9ce1714e6a3e656ca1901ff59432f3dd43668244879b2cca6acff0bff66df9cfbcd934d4db6e98e57cae6def2700ca823e85449f2fb664660 + languageName: node + linkType: hard + +"yargs-parser@npm:5.0.0-security.0": + version: 5.0.0-security.0 + resolution: "yargs-parser@npm:5.0.0-security.0" + dependencies: + camelcase: ^3.0.0 + object.assign: ^4.1.0 + checksum: b351d8dff2ae692815171b4c4d321812767ce903a50284177bbbb79aeadf7312d7d3c9d89605e1077e8d8ee8565123e5a344ed015a719d620a834bd8a060aed5 + languageName: node + linkType: hard + +"yargs-parser@npm:^13.1.2": + version: 13.1.2 + resolution: "yargs-parser@npm:13.1.2" + dependencies: + camelcase: ^5.0.0 + decamelize: ^1.2.0 + checksum: 82d3b7ab99085d70a5121399ad407d2b98d296538bf7012ac2ce044a61160ca891ea617de6374699d81955d9a61c36a3b2a6a51588e38f710bd211ce2e63c33c + languageName: node + linkType: hard + +"yargs-parser@npm:^18.1.2": + version: 18.1.3 + resolution: "yargs-parser@npm:18.1.3" + dependencies: + camelcase: ^5.0.0 + decamelize: ^1.2.0 + checksum: 33871721679053cc38165afc6356c06c3e820459589b5db78f315886105070eb90cbb583cd6515fa4231937d60c80262ca2b7c486d5942576802446318a39597 + languageName: node + linkType: hard + +"yargs@npm:^13.3.2": + version: 13.3.2 + resolution: "yargs@npm:13.3.2" + dependencies: + cliui: ^5.0.0 + find-up: ^3.0.0 + get-caller-file: ^2.0.1 + require-directory: ^2.1.1 + require-main-filename: ^2.0.0 + set-blocking: ^2.0.0 + string-width: ^3.0.0 + which-module: ^2.0.0 + y18n: ^4.0.0 + yargs-parser: ^13.1.2 + checksum: 92c612cd14a9217d7421ae4f42bc7c460472633bfc2e45f7f86cd614a61a845670d3bac7c2228c39df7fcecce0b8c12b2af65c785b1f757de974dcf84b5074f9 + languageName: node + linkType: hard + +"yargs@npm:^15.4.1": + version: 15.4.1 + resolution: "yargs@npm:15.4.1" + dependencies: + cliui: ^6.0.0 + decamelize: ^1.2.0 + find-up: ^4.1.0 + get-caller-file: ^2.0.1 + require-directory: ^2.1.1 + require-main-filename: ^2.0.0 + set-blocking: ^2.0.0 + string-width: ^4.2.0 + which-module: ^2.0.0 + y18n: ^4.0.0 + yargs-parser: ^18.1.2 + checksum: dbf687d6b938f01bbf11e158dde6df906282b70cd9295af0217ee8cefbd83ad09d49fa9458d0d5325b0e66f03df954a38986db96f91e5b46ccdbbaf9a0157b23 + languageName: node + linkType: hard + +"yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: ^7.0.2 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.0 + y18n: ^5.0.5 + yargs-parser: ^20.2.2 + checksum: a79ce1f043021cd645de1ffebb6149541d382ba68f4a6b5eca5d2ad65af51893371bbd78e240dc3b6cf0cbb419511ba5bda715dec992e4266e6863ea49f14feb + languageName: node + linkType: hard + +"yargs@npm:^7.1.0": + version: 7.1.1 + resolution: "yargs@npm:7.1.1" + dependencies: + camelcase: ^3.0.0 + cliui: ^3.2.0 + decamelize: ^1.1.1 + get-caller-file: ^1.0.1 + os-locale: ^1.4.0 + read-pkg-up: ^1.0.1 + require-directory: ^2.1.1 + require-main-filename: ^1.0.1 + set-blocking: ^2.0.0 + string-width: ^1.0.2 + which-module: ^1.0.0 + y18n: ^3.2.1 + yargs-parser: 5.0.0-security.0 + checksum: 62bb2345031bbb3dd99626a62fd94caa0c13610c53b3d914792f387432c7c7d49432d85ea9eb6339092aca5788a2f1184507826f98c3af277e1e2202ae1d9341 + languageName: node + linkType: hard
    {{#if flavor}}
    {{flavor}}
    diff --git a/src/templates/sheets/actor/character-sheet.hbs b/src/templates/sheets/actor/character-sheet.hbs new file mode 100644 index 00000000..a88de806 --- /dev/null +++ b/src/templates/sheets/actor/character-sheet.hbs @@ -0,0 +1,106 @@ +
    + {{!-- Sheet Header --}} +
    + Actor Icon +
    +

    + + +

    + {{> systems/ds4/templates/sheets/actor/components/character-progression.hbs}} + +
    +
    + + +
    +
    + + +
    +
    + +
    + + / + + +
    +
    +
    + +
    + + / + + +
    +
    +
    + + +
    +
    + + +
    +
    +
    +
    + + {{!-- Sheet Tab Navigation --}} +
    + + + +{{!-- Sheet Body (remove indentation to avoid annoying Handlebars auto-indent) --}} +
    +{{!-- Values Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/values.hbs}} + +{{!-- Inventory Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/character-inventory.hbs}} + +{{!-- Spells Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/spells.hbs}} + +{{!-- Talents Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/talents-abilities.hbs}} + +{{! Profile Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/profile.hbs}} + +{{!-- Biography Tab --}} +{{> systems/ds4/templates/sheets/actor/tabs/biography.hbs}} + +
    + + +
    diff --git a/src/templates/sheets/actor/components/character-progression.hbs b/src/templates/sheets/actor/components/character-progression.hbs new file mode 100644 index 00000000..4bd06898 --- /dev/null +++ b/src/templates/sheets/actor/components/character-progression.hbs @@ -0,0 +1,28 @@ +
    +
    +

    +

    + +
    + {{#if (eq actor.type "character")}} +
    +

    +

    + +
    +
    +

    +

    + +
    + {{/if}} +
    diff --git a/templates/sheets/actor/components/check.hbs b/src/templates/sheets/actor/components/check.hbs similarity index 53% rename from templates/sheets/actor/components/check.hbs rename to src/templates/sheets/actor/components/check.hbs index 44e50266..2d912cae 100644 --- a/templates/sheets/actor/components/check.hbs +++ b/src/templates/sheets/actor/components/check.hbs @@ -1,9 +1,3 @@ -{{!-- -SPDX-FileCopyrightText: 2021 Johannes Loher - -SPDX-License-Identifier: MIT ---}} - {{!-- !-- Render a check. !-- @@ -12,8 +6,7 @@ SPDX-License-Identifier: MIT !-- @param check-label: The label for the check --}} - +