From e12635d8f2bfd0dea8b7f56088c09a2bed2a1c32 Mon Sep 17 00:00:00 2001 From: Simon Hofmann Date: Thu, 15 Feb 2024 21:03:17 +0100 Subject: [PATCH] Monorepo (#560) * Monorepo build * Added global gitignore * Excluded .idea folder * Added step to set up pnpm * Added packageManager info to root level package.json * Replaced npx with pnpx * Fixed trailing comma * NPM_TOKEN * NPM_TOKEN * NPM_TOKEN * Added missing root level coverage:clean target * Streamlined naming of samples * Run coverage instead of test * Updated lock file * Updated sonar settings * Updated sonar settings * Aligned package versions, added script to bump versions on snapshot releases --- .build/bump_version.js | 43 + .build/pre-release.sh | 2 +- .github/workflows/ci.yaml | 53 +- .github/workflows/snapshot_release.yaml | 33 +- .github/workflows/tagged_release.yaml | 9 +- .husky/pre-commit | 4 - .nvmrc | 1 - README.md | 4 - core/configs/package.json | 11 + .../configs/tsconfig/base.json | 12 +- core/nut.js/.gfx/nut.png | Bin 0 -> 83053 bytes core/nut.js/.gfx/permissions.png | Bin 0 -> 66294 bytes core/nut.js/.gfx/permissions_popup.png | Bin 0 -> 205344 bytes core/nut.js/.gfx/sponsors/mighty.svg | 1 + core/nut.js/.gitignore | 144 + .npmignore => core/nut.js/.npmignore | 0 .../nut.js/.prettierignore | 0 .../nut.js/.prettierrc.json | 0 CHANGELOG.md => core/nut.js/CHANGELOG.md | 0 .../nut.js/CODE_OF_CONDUCT.md | 0 LICENSE => core/nut.js/LICENSE | 0 core/nut.js/README.md | 3 + {e2e => core/nut.js}/assets/calculator.png | Bin {e2e => core/nut.js}/assets/checkers.png | Bin {e2e => core/nut.js}/assets/close.png | Bin {e2e => core/nut.js}/assets/desktop.png | Bin {e2e => core/nut.js}/assets/dot.png | Bin {e2e => core/nut.js}/assets/dots.png | Bin {e2e => core/nut.js}/assets/equals.png | Bin {e2e => core/nut.js}/assets/menu.png | Bin {e2e => core/nut.js}/assets/mouse.png | Bin {e2e => core/nut.js}/assets/moved_trash.png | Bin {e2e => core/nut.js}/assets/one.png | Bin {e2e => core/nut.js}/assets/plus.png | Bin {e2e => core/nut.js}/assets/result.png | Bin {e2e => core/nut.js}/assets/terminal.png | Bin {e2e => core/nut.js}/assets/trash.png | Bin {e2e => core/nut.js}/assets/xfce-menu.png | Bin {e2e => core/nut.js}/assets/zero.png | Bin index.ts => core/nut.js/index.ts | 52 +- jest.config.js => core/nut.js/jest.config.js | 0 {lib => core/nut.js/lib}/assert.class.spec.ts | 13 +- {lib => core/nut.js/lib}/assert.class.ts | 12 +- .../nut.js/lib}/clipboard.class.spec.ts | 9 +- {lib => core/nut.js/lib}/clipboard.class.ts | 5 +- core/nut.js/lib/constants.ts | 24 + .../lib}/expect/jest.matcher.function.ts | 10 +- .../expect/matchers/toBeAt.function.spec.ts | 2 +- .../lib}/expect/matchers/toBeAt.function.ts | 6 +- .../expect/matchers/toBeIn.function.spec.ts | 3 +- .../lib}/expect/matchers/toBeIn.function.ts | 6 +- .../matchers/toHaveColor.function.spec.ts | 8 +- .../expect/matchers/toHaveColor.function.ts | 7 +- .../lib}/expect/matchers/toShow.function.ts | 15 +- .../generate-output-path.function.spec.ts | 10 +- .../lib}/generate-output-path.function.ts | 4 +- .../lib}/imageResources.function.spec.ts | 13 +- .../nut.js/lib}/imageResources.function.ts | 5 +- .../nut.js/lib}/keyboard.class.spec.ts | 5 +- {lib => core/nut.js/lib}/keyboard.class.ts | 6 +- .../nut.js/lib}/location.function.spec.ts | 7 +- {lib => core/nut.js/lib}/location.function.ts | 3 +- {lib => core/nut.js/lib}/logging.function.ts | 12 +- .../lib}/mouse-movement.function.spec.ts | 2 +- .../nut.js/lib}/mouse-movement.function.ts | 0 {lib => core/nut.js/lib}/mouse.class.spec.ts | 80 +- {lib => core/nut.js/lib}/mouse.class.ts | 13 +- .../nut.js/lib}/movement-api.interface.ts | 6 +- .../nut.js/lib}/movement.function.spec.ts | 31 +- {lib => core/nut.js/lib}/movement.function.ts | 6 +- .../provider/color/color-finder.class.spec.ts | 4 +- .../lib}/provider/color/color-finder.class.ts | 8 +- .../image/jimp-image-processor.class.spec.ts | 3 +- .../image/jimp-image-processor.class.ts | 7 +- .../io/jimp-image-reader.class.spec.ts | 4 +- .../provider/io/jimp-image-reader.class.ts | 9 +- .../io/jimp-image-writer.class.spec.ts | 6 +- .../provider/io/jimp-image-writer.class.ts | 4 +- .../log/console-log-provider.class.spec.ts | 8 +- .../log/console-log-provider.class.ts | 4 +- .../provider/log/noop-log-provider.class.ts | 18 + .../lib/provider/log/wrap-logger.function.ts | 30 +- .../provider/provider-registry.class.spec.ts | 18 +- .../lib}/provider/provider-registry.class.ts | 125 +- .../lib/screen-helpers.function.spec.ts | 211 + core/nut.js/lib/screen-helpers.function.ts | 182 + {lib => core/nut.js/lib}/screen.class.spec.ts | 342 +- {lib => core/nut.js/lib}/screen.class.ts | 224 +- .../nut.js/lib}/screen.colorAt.spec.ts | 30 +- .../nut.js/lib}/sleep.function.spec.ts | 0 {lib => core/nut.js/lib}/sleep.function.ts | 0 .../nut.js/lib}/util/bresenham.class.spec.ts | 2 +- .../nut.js/lib}/util/bresenham.class.ts | 2 +- .../nut.js/lib}/util/linehelper.class.spec.ts | 2 +- .../nut.js/lib}/util/linehelper.class.ts | 2 +- .../nut.js/lib}/util/timeout.function.spec.ts | 26 +- .../nut.js/lib}/util/timeout.function.ts | 0 .../nut.js/lib}/window-api.interface.ts | 0 core/nut.js/lib/window-element.interface.ts | 14 + {lib => core/nut.js/lib}/window.class.spec.ts | 25 +- {lib => core/nut.js/lib}/window.class.ts | 27 +- .../nut.js/lib}/window.function.spec.ts | 0 {lib => core/nut.js/lib}/window.function.ts | 2 +- core/nut.js/package.json | 76 + .../nut.js/sonar-project.properties | 4 +- core/nut.js/tsconfig.json | 14 + tslint.json => core/nut.js/tslint.json | 0 typedoc.js => core/nut.js/typedoc.js | 0 core/provider-interfaces/.gitignore | 144 + core/provider-interfaces/.npmignore | 16 + core/provider-interfaces/CHANGELOG.md | 7 + core/provider-interfaces/index.ts | 1 + .../lib}/clipboard-provider.interface.ts | 0 .../lib}/color-finder.interface.ts | 5 +- .../lib}/data-sink.interface.ts | 0 .../lib}/data-source.interface.ts | 0 .../lib}/image-finder.interface.ts | 5 +- .../lib}/image-processor.interface.ts | 4 +- .../lib}/image-reader.type.ts | 2 +- .../lib}/image-writer.type.ts | 2 +- core/provider-interfaces/lib/index.ts | 16 + .../lib}/keyboard-provider.interface.ts | 2 +- .../lib/log-provider.interface.ts | 11 + .../lib}/mouse-provider.interface.ts | 3 +- .../lib/provider-registry.interface.ts | 95 + .../lib}/screen-provider.interface.ts | 3 +- .../lib}/text-finder.interface.ts | 5 +- .../lib}/window-finder.interface.ts | 2 +- .../lib}/window-provider.interface.ts | 4 +- core/provider-interfaces/package.json | 29 + core/provider-interfaces/tsconfig.json | 14 + core/shared/.gitignore | 144 + core/shared/.npmignore | 16 + core/shared/CHANGELOG.md | 7 + core/shared/index.ts | 1 + core/shared/jest.config.js | 21 + {lib => core/shared/lib/enums}/button.enum.ts | 0 .../shared/lib/enums}/colormode.enum.ts | 0 .../shared/lib/enums}/file-type.enum.ts | 0 {lib => core/shared/lib/enums}/key.enum.ts | 0 .../lib/functions}/__mocks__/calculator.png | Bin .../functions}/imageToJimp.function.spec.ts | 6 +- .../lib/functions}/imageToJimp.function.ts | 8 +- core/shared/lib/index.ts | 17 + .../shared/lib/objects}/image.class.spec.ts | 10 +- .../shared/lib/objects}/image.class.ts | 4 +- .../shared/lib/objects/match-request.class.ts | 12 + core/shared/lib/objects/match-result.class.ts | 9 + .../optionalsearchparameters.class.ts | 3 +- .../shared/lib/objects}/point.class.spec.ts | 0 .../shared/lib/objects}/point.class.ts | 0 .../shared/lib/objects}/query.class.spec.ts | 65 +- .../shared/lib/objects}/query.class.ts | 48 +- .../shared/lib/objects}/region.class.spec.ts | 0 .../shared/lib/objects}/region.class.ts | 0 .../shared/lib/objects}/rgba.class.ts | 0 .../lib/objects}/scaled-match-result.class.ts | 0 .../shared/lib/objects}/size.class.spec.ts | 0 .../shared/lib/objects}/size.class.ts | 0 core/shared/lib/objects/window.interface.ts | 15 + core/shared/lib/types/index.ts | 14 + core/shared/package.json | 32 + core/shared/tsconfig.json | 14 + e2e/electron-test/README.md | 23 - e2e/electron-test/assets/quit.png | Bin 9987 -> 0 bytes e2e/electron-test/index.html | 19 - e2e/electron-test/main.js | 55 - e2e/electron-test/package-lock.json | 10699 ---------- e2e/electron-test/package.json | 19 - e2e/window-test/index.css | 19 - e2e/window-test/jest.config.js | 3 - e2e/window-test/package-lock.json | 15199 -------------- e2e/window-test/preload.js | 2 - e2e/window-test/renderer.js | 6 - examples/README.md | 4 + examples/assets/calculator.png | Bin 0 -> 463 bytes examples/assets/mouse.png | Bin 0 -> 13607 bytes examples/jest-test/README.md | 155 + examples/jest-test/index.spec.js | 37 + examples/jest-test/package.json | 20 + examples/keyboard-test/README.md | 62 + examples/keyboard-test/index.spec.js | 12 + examples/keyboard-test/package.json | 21 + examples/mouse-test/README.md | 170 + examples/mouse-test/index.spec.js | 110 + examples/mouse-test/package.json | 18 + examples/screen-test/README.md | 95 + examples/screen-test/index.spec.js | 62 + examples/screen-test/package.json | 19 + examples/typescript-test/README.md | 37 + examples/typescript-test/index.ts | 5 + examples/typescript-test/package.json | 18 + examples/typescript-test/tsconfig.json | 100 + {e2e => examples}/window-test/constants.js | 0 .../window-test}/index.css | 0 {e2e => examples}/window-test/index.html | 0 {e2e => examples}/window-test/main.js | 0 {e2e => examples}/window-test/package.json | 17 +- .../window-test}/preload.js | 0 .../window-test}/renderer.js | 0 .../window-test/test.spec.js | 26 +- lib/constants.ts | 12 - lib/match-request.class.spec.ts | 78 - lib/match-request.class.ts | 124 - lib/match-result.class.spec.ts | 157 - lib/match-result.class.ts | 68 - lib/provider/index.ts | 13 - lib/provider/log/noop-log-provider.class.ts | 18 - package-lock.json | 16470 ---------------- package.json | 109 +- pnpm-lock.yaml | 6228 ++++++ pnpm-workspace.yaml | 4 + providers/clipboardy/.gitignore | 144 + providers/clipboardy/.npmignore | 16 + providers/clipboardy/CHANGELOG.md | 7 + providers/clipboardy/index.ts | 3 + providers/clipboardy/jest.config.js | 21 + .../lib/clipboardy-clipboard.class.spec.ts | 33 + .../lib/clipboardy-clipboard.class.ts | 37 + providers/clipboardy/package.json | 38 + providers/clipboardy/tsconfig.json | 14 + providers/libnut/.gitignore | 149 + providers/libnut/.npmignore | 7 + providers/libnut/README.md | 13 + providers/libnut/import_libnut.ts | 11 + providers/libnut/index.ts | 8 + providers/libnut/jest.config.js | 20 + providers/libnut/lib/index.ts | 11 + .../libnut/lib/libnut-keyboard.class.spec.ts | 218 + providers/libnut/lib/libnut-keyboard.class.ts | 242 + .../libnut/lib/libnut-mouse.class.spec.ts | 326 + providers/libnut/lib/libnut-mouse.class.ts | 146 + .../libnut/lib/libnut-screen.class.spec.ts | 259 + providers/libnut/lib/libnut-screen.class.ts | 130 + .../libnut/lib/libnut-window.class.spec.ts | 158 + providers/libnut/lib/libnut-window.class.ts | 83 + providers/libnut/libnut.d.ts | 242 + providers/libnut/package.json | 56 + providers/libnut/tsconfig.json | 14 + scratch.js | 10 - 240 files changed, 11710 insertions(+), 43963 deletions(-) create mode 100644 .build/bump_version.js mode change 100644 => 100755 .build/pre-release.sh delete mode 100755 .husky/pre-commit delete mode 100644 .nvmrc create mode 100644 core/configs/package.json rename tsconfig.json => core/configs/tsconfig/base.json (65%) create mode 100644 core/nut.js/.gfx/nut.png create mode 100644 core/nut.js/.gfx/permissions.png create mode 100644 core/nut.js/.gfx/permissions_popup.png create mode 100644 core/nut.js/.gfx/sponsors/mighty.svg create mode 100644 core/nut.js/.gitignore rename .npmignore => core/nut.js/.npmignore (100%) rename .prettierignore => core/nut.js/.prettierignore (100%) rename .prettierrc.json => core/nut.js/.prettierrc.json (100%) rename CHANGELOG.md => core/nut.js/CHANGELOG.md (100%) rename CODE_OF_CONDUCT.md => core/nut.js/CODE_OF_CONDUCT.md (100%) rename LICENSE => core/nut.js/LICENSE (100%) create mode 100644 core/nut.js/README.md rename {e2e => core/nut.js}/assets/calculator.png (100%) rename {e2e => core/nut.js}/assets/checkers.png (100%) rename {e2e => core/nut.js}/assets/close.png (100%) rename {e2e => core/nut.js}/assets/desktop.png (100%) rename {e2e => core/nut.js}/assets/dot.png (100%) rename {e2e => core/nut.js}/assets/dots.png (100%) rename {e2e => core/nut.js}/assets/equals.png (100%) rename {e2e => core/nut.js}/assets/menu.png (100%) rename {e2e => core/nut.js}/assets/mouse.png (100%) rename {e2e => core/nut.js}/assets/moved_trash.png (100%) rename {e2e => core/nut.js}/assets/one.png (100%) rename {e2e => core/nut.js}/assets/plus.png (100%) rename {e2e => core/nut.js}/assets/result.png (100%) rename {e2e => core/nut.js}/assets/terminal.png (100%) rename {e2e => core/nut.js}/assets/trash.png (100%) rename {e2e => core/nut.js}/assets/xfce-menu.png (100%) rename {e2e => core/nut.js}/assets/zero.png (100%) rename index.ts => core/nut.js/index.ts (74%) rename jest.config.js => core/nut.js/jest.config.js (100%) rename {lib => core/nut.js/lib}/assert.class.spec.ts (94%) rename {lib => core/nut.js/lib}/assert.class.ts (81%) rename {lib => core/nut.js/lib}/clipboard.class.spec.ts (86%) rename {lib => core/nut.js/lib}/clipboard.class.ts (86%) create mode 100644 core/nut.js/lib/constants.ts rename {lib => core/nut.js/lib}/expect/jest.matcher.function.ts (67%) rename {lib => core/nut.js/lib}/expect/matchers/toBeAt.function.spec.ts (93%) rename {lib => core/nut.js/lib}/expect/matchers/toBeAt.function.ts (87%) rename {lib => core/nut.js/lib}/expect/matchers/toBeIn.function.spec.ts (89%) rename {lib => core/nut.js/lib}/expect/matchers/toBeIn.function.ts (89%) rename {lib => core/nut.js/lib}/expect/matchers/toHaveColor.function.spec.ts (92%) rename {lib => core/nut.js/lib}/expect/matchers/toHaveColor.function.ts (79%) rename {lib => core/nut.js/lib}/expect/matchers/toShow.function.ts (73%) rename {lib => core/nut.js/lib}/generate-output-path.function.spec.ts (95%) rename {lib => core/nut.js/lib}/generate-output-path.function.ts (94%) rename {lib => core/nut.js/lib}/imageResources.function.spec.ts (87%) rename {lib => core/nut.js/lib}/imageResources.function.ts (89%) rename {lib => core/nut.js/lib}/keyboard.class.spec.ts (96%) rename {lib => core/nut.js/lib}/keyboard.class.ts (96%) rename {lib => core/nut.js/lib}/location.function.spec.ts (92%) rename {lib => core/nut.js/lib}/location.function.ts (93%) rename {lib => core/nut.js/lib}/logging.function.ts (58%) rename {lib => core/nut.js/lib}/mouse-movement.function.spec.ts (97%) rename {lib => core/nut.js/lib}/mouse-movement.function.ts (100%) rename {lib => core/nut.js/lib}/mouse.class.spec.ts (84%) rename {lib => core/nut.js/lib}/mouse.class.ts (96%) rename {lib => core/nut.js/lib}/movement-api.interface.ts (95%) rename {lib => core/nut.js/lib}/movement.function.spec.ts (79%) rename {lib => core/nut.js/lib}/movement.function.ts (92%) rename {lib => core/nut.js/lib}/provider/color/color-finder.class.spec.ts (93%) rename {lib => core/nut.js/lib}/provider/color/color-finder.class.ts (85%) rename {lib => core/nut.js/lib}/provider/image/jimp-image-processor.class.spec.ts (94%) rename {lib => core/nut.js/lib}/provider/image/jimp-image-processor.class.ts (76%) rename {lib => core/nut.js/lib}/provider/io/jimp-image-reader.class.spec.ts (92%) rename {lib => core/nut.js/lib}/provider/io/jimp-image-reader.class.ts (82%) rename {lib => core/nut.js/lib}/provider/io/jimp-image-writer.class.spec.ts (94%) rename {lib => core/nut.js/lib}/provider/io/jimp-image-writer.class.ts (72%) rename {lib => core/nut.js/lib}/provider/log/console-log-provider.class.spec.ts (90%) rename {lib => core/nut.js/lib}/provider/log/console-log-provider.class.ts (96%) create mode 100644 core/nut.js/lib/provider/log/noop-log-provider.class.ts rename lib/provider/log-provider.interface.ts => core/nut.js/lib/provider/log/wrap-logger.function.ts (52%) rename {lib => core/nut.js/lib}/provider/provider-registry.class.spec.ts (89%) rename {lib => core/nut.js/lib}/provider/provider-registry.class.ts (74%) create mode 100644 core/nut.js/lib/screen-helpers.function.spec.ts create mode 100644 core/nut.js/lib/screen-helpers.function.ts rename {lib => core/nut.js/lib}/screen.class.spec.ts (87%) rename {lib => core/nut.js/lib}/screen.class.ts (86%) rename {lib => core/nut.js/lib}/screen.colorAt.spec.ts (85%) rename {lib => core/nut.js/lib}/sleep.function.spec.ts (100%) rename {lib => core/nut.js/lib}/sleep.function.ts (100%) rename {lib => core/nut.js/lib}/util/bresenham.class.spec.ts (96%) rename {lib => core/nut.js/lib}/util/bresenham.class.ts (97%) rename {lib => core/nut.js/lib}/util/linehelper.class.spec.ts (96%) rename {lib => core/nut.js/lib}/util/linehelper.class.ts (82%) rename {lib => core/nut.js/lib}/util/timeout.function.spec.ts (90%) rename {lib => core/nut.js/lib}/util/timeout.function.ts (100%) rename {lib => core/nut.js/lib}/window-api.interface.ts (100%) create mode 100644 core/nut.js/lib/window-element.interface.ts rename {lib => core/nut.js/lib}/window.class.spec.ts (66%) rename {lib => core/nut.js/lib}/window.class.ts (50%) rename {lib => core/nut.js/lib}/window.function.spec.ts (100%) rename {lib => core/nut.js/lib}/window.function.ts (92%) create mode 100644 core/nut.js/package.json rename sonar-project.properties => core/nut.js/sonar-project.properties (63%) create mode 100644 core/nut.js/tsconfig.json rename tslint.json => core/nut.js/tslint.json (100%) rename typedoc.js => core/nut.js/typedoc.js (100%) create mode 100644 core/provider-interfaces/.gitignore create mode 100644 core/provider-interfaces/.npmignore create mode 100644 core/provider-interfaces/CHANGELOG.md create mode 100644 core/provider-interfaces/index.ts rename {lib/provider => core/provider-interfaces/lib}/clipboard-provider.interface.ts (100%) rename {lib/provider => core/provider-interfaces/lib}/color-finder.interface.ts (83%) rename {lib/provider => core/provider-interfaces/lib}/data-sink.interface.ts (100%) rename {lib/provider => core/provider-interfaces/lib}/data-source.interface.ts (100%) rename {lib/provider => core/provider-interfaces/lib}/image-finder.interface.ts (85%) rename {lib/provider => core/provider-interfaces/lib}/image-processor.interface.ts (81%) rename {lib/provider => core/provider-interfaces/lib}/image-reader.type.ts (75%) rename {lib/provider => core/provider-interfaces/lib}/image-writer.type.ts (83%) create mode 100644 core/provider-interfaces/lib/index.ts rename {lib/provider => core/provider-interfaces/lib}/keyboard-provider.interface.ts (96%) create mode 100644 core/provider-interfaces/lib/log-provider.interface.ts rename {lib/provider => core/provider-interfaces/lib}/mouse-provider.interface.ts (96%) create mode 100644 core/provider-interfaces/lib/provider-registry.interface.ts rename {lib/provider => core/provider-interfaces/lib}/screen-provider.interface.ts (94%) rename {lib/provider => core/provider-interfaces/lib}/text-finder.interface.ts (85%) rename {lib/provider => core/provider-interfaces/lib}/window-finder.interface.ts (94%) rename {lib/provider => core/provider-interfaces/lib}/window-provider.interface.ts (93%) create mode 100644 core/provider-interfaces/package.json create mode 100644 core/provider-interfaces/tsconfig.json create mode 100644 core/shared/.gitignore create mode 100644 core/shared/.npmignore create mode 100644 core/shared/CHANGELOG.md create mode 100644 core/shared/index.ts create mode 100644 core/shared/jest.config.js rename {lib => core/shared/lib/enums}/button.enum.ts (100%) rename {lib => core/shared/lib/enums}/colormode.enum.ts (100%) rename {lib => core/shared/lib/enums}/file-type.enum.ts (100%) rename {lib => core/shared/lib/enums}/key.enum.ts (100%) rename {lib/provider/io => core/shared/lib/functions}/__mocks__/calculator.png (100%) rename {lib/provider/io => core/shared/lib/functions}/imageToJimp.function.spec.ts (89%) rename {lib/provider/io => core/shared/lib/functions}/imageToJimp.function.ts (78%) create mode 100644 core/shared/lib/index.ts rename {lib => core/shared/lib/objects}/image.class.spec.ts (92%) rename {lib => core/shared/lib/objects}/image.class.ts (96%) create mode 100644 core/shared/lib/objects/match-request.class.ts create mode 100644 core/shared/lib/objects/match-result.class.ts rename {lib => core/shared/lib/objects}/optionalsearchparameters.class.ts (98%) rename {lib => core/shared/lib/objects}/point.class.spec.ts (100%) rename {lib => core/shared/lib/objects}/point.class.ts (100%) rename {lib => core/shared/lib/objects}/query.class.spec.ts (77%) rename {lib => core/shared/lib/objects}/query.class.ts (86%) rename {lib => core/shared/lib/objects}/region.class.spec.ts (100%) rename {lib => core/shared/lib/objects}/region.class.ts (100%) rename {lib => core/shared/lib/objects}/rgba.class.ts (100%) rename {lib => core/shared/lib/objects}/scaled-match-result.class.ts (100%) rename {lib => core/shared/lib/objects}/size.class.spec.ts (100%) rename {lib => core/shared/lib/objects}/size.class.ts (100%) create mode 100644 core/shared/lib/objects/window.interface.ts create mode 100644 core/shared/lib/types/index.ts create mode 100644 core/shared/package.json create mode 100644 core/shared/tsconfig.json delete mode 100644 e2e/electron-test/README.md delete mode 100644 e2e/electron-test/assets/quit.png delete mode 100644 e2e/electron-test/index.html delete mode 100644 e2e/electron-test/main.js delete mode 100644 e2e/electron-test/package-lock.json delete mode 100644 e2e/electron-test/package.json delete mode 100644 e2e/window-test/index.css delete mode 100644 e2e/window-test/jest.config.js delete mode 100644 e2e/window-test/package-lock.json delete mode 100644 e2e/window-test/preload.js delete mode 100644 e2e/window-test/renderer.js create mode 100644 examples/README.md create mode 100644 examples/assets/calculator.png create mode 100644 examples/assets/mouse.png create mode 100644 examples/jest-test/README.md create mode 100644 examples/jest-test/index.spec.js create mode 100644 examples/jest-test/package.json create mode 100644 examples/keyboard-test/README.md create mode 100644 examples/keyboard-test/index.spec.js create mode 100644 examples/keyboard-test/package.json create mode 100644 examples/mouse-test/README.md create mode 100644 examples/mouse-test/index.spec.js create mode 100644 examples/mouse-test/package.json create mode 100644 examples/screen-test/README.md create mode 100644 examples/screen-test/index.spec.js create mode 100644 examples/screen-test/package.json create mode 100644 examples/typescript-test/README.md create mode 100644 examples/typescript-test/index.ts create mode 100644 examples/typescript-test/package.json create mode 100644 examples/typescript-test/tsconfig.json rename {e2e => examples}/window-test/constants.js (100%) rename {e2e/electron-test => examples/window-test}/index.css (100%) rename {e2e => examples}/window-test/index.html (100%) rename {e2e => examples}/window-test/main.js (100%) rename {e2e => examples}/window-test/package.json (52%) rename {e2e/electron-test => examples/window-test}/preload.js (100%) rename {e2e/electron-test => examples/window-test}/renderer.js (100%) rename e2e/window-test/test.js => examples/window-test/test.spec.js (73%) delete mode 100644 lib/constants.ts delete mode 100644 lib/match-request.class.spec.ts delete mode 100644 lib/match-request.class.ts delete mode 100644 lib/match-result.class.spec.ts delete mode 100644 lib/match-result.class.ts delete mode 100644 lib/provider/index.ts delete mode 100644 lib/provider/log/noop-log-provider.class.ts delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 providers/clipboardy/.gitignore create mode 100644 providers/clipboardy/.npmignore create mode 100644 providers/clipboardy/CHANGELOG.md create mode 100644 providers/clipboardy/index.ts create mode 100644 providers/clipboardy/jest.config.js create mode 100644 providers/clipboardy/lib/clipboardy-clipboard.class.spec.ts create mode 100644 providers/clipboardy/lib/clipboardy-clipboard.class.ts create mode 100644 providers/clipboardy/package.json create mode 100644 providers/clipboardy/tsconfig.json create mode 100644 providers/libnut/.gitignore create mode 100644 providers/libnut/.npmignore create mode 100644 providers/libnut/README.md create mode 100644 providers/libnut/import_libnut.ts create mode 100644 providers/libnut/index.ts create mode 100644 providers/libnut/jest.config.js create mode 100644 providers/libnut/lib/index.ts create mode 100644 providers/libnut/lib/libnut-keyboard.class.spec.ts create mode 100644 providers/libnut/lib/libnut-keyboard.class.ts create mode 100644 providers/libnut/lib/libnut-mouse.class.spec.ts create mode 100644 providers/libnut/lib/libnut-mouse.class.ts create mode 100644 providers/libnut/lib/libnut-screen.class.spec.ts create mode 100644 providers/libnut/lib/libnut-screen.class.ts create mode 100644 providers/libnut/lib/libnut-window.class.spec.ts create mode 100644 providers/libnut/lib/libnut-window.class.ts create mode 100644 providers/libnut/libnut.d.ts create mode 100644 providers/libnut/package.json create mode 100644 providers/libnut/tsconfig.json delete mode 100644 scratch.js diff --git a/.build/bump_version.js b/.build/bump_version.js new file mode 100644 index 00000000..b5b42e53 --- /dev/null +++ b/.build/bump_version.js @@ -0,0 +1,43 @@ +const { exec } = require("child_process"); +const { readFile, writeFile } = require("fs"); +const { join } = require("path"); + +const args = process.argv.slice(2); +const version = args[0]; + +if (version == null || version === "") { + throw new Error("Version is required"); +} + +exec("pnpm m ls --json --depth=-1", (_, stdout) => { + const modules = JSON.parse(stdout).filter( + (module) => module.private !== true, + ); + + for (const module of modules) { + const filePath = join(module.path, "package.json"); + + readFile(filePath, "utf8", (err, data) => { + if (err) { + throw new Error(err); + } + // Parse JSON + const obj = JSON.parse(data); + + // Change a property + obj.version = version; + + // Convert object back to JSON + const json = JSON.stringify(obj, null, 2); + + // Write JSON file + writeFile(filePath, json, "utf8", (err) => { + if (err) { + throw new Error(err); + } else { + console.log("File successfully updated."); + } + }); + }); + } +}); diff --git a/.build/pre-release.sh b/.build/pre-release.sh old mode 100644 new mode 100755 index 1f515ee3..780cd47c --- a/.build/pre-release.sh +++ b/.build/pre-release.sh @@ -5,4 +5,4 @@ patchVersion=$(npm --no-git-tag version patch) nextVersion=${patchVersion}-next."$(date +%Y%m%d%H%M%S)" echo "${nextVersion:1}" -npm version --no-git-tag -f "${nextVersion:1}" \ No newline at end of file +node ./bump_version.js "${nextVersion:1}" diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index dfe2c7b4..e9e0a19e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,6 +13,8 @@ jobs: sonar: runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, 'skip ci')" + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} steps: - name: Set up Git repository uses: actions/checkout@v3 @@ -20,30 +22,28 @@ jobs: uses: actions/setup-node@v3 with: node-version: 18 + registry-url: https://registry.npmjs.org/ + token: ${{ secrets.NPM_TOKEN }} + - name: Setup pnpm + uses: pnpm/action-setup@v3.0.0 - name: Install - run: npm ci + run: | + pnpm whoami + pnpm i - name: Compile - run: npm run compile - - name: Init window e2e test subpackage - run: npm --prefix e2e/window-test ci + run: pnpm -r run compile - name: Clean coverage report - run: npm run coverage:clean + run: pnpm run coverage:clean - name: Generate coverage report uses: GabrielBB/xvfb-action@v1 env: NODE_OPTIONS: "--max-old-space-size=8192" with: - run: npm run coverage -- --coverageDirectory=coverage/unit - - name: Run Electron e2e test subpackage - uses: GabrielBB/xvfb-action@v1 - with: - run: npm --prefix e2e/electron-test cit - - name: Merge coverage reports - run: | - npm run coverage:merge - npm run coverage:merge-report + run: pnpm run coverage - name: Send results to SonarCloud - uses: SonarSource/sonarcloud-github-action@v2.0.2 + uses: SonarSource/sonarcloud-github-action@v2.1.1 + with: + projectBaseDir: core/nut.js env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} @@ -51,10 +51,12 @@ jobs: test: needs: - sonar + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} strategy: matrix: - os: [windows-latest, macos-latest] - node: [18] + os: [ windows-latest, macos-latest ] + node: [ 18 ] runs-on: ${{matrix.os}} steps: - name: Set up Git repository @@ -63,19 +65,16 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{matrix.node}} + registry-url: https://registry.npmjs.org/ + token: ${{ secrets.NPM_TOKEN }} + - name: Setup pnpm + uses: pnpm/action-setup@v3.0.0 - name: Install - run: npm ci + run: pnpm i - name: Compile - run: npm run compile - - name: Init window e2e test subpackage - run: npm --prefix e2e/window-test ci + run: pnpm run compile - name: Generate coverage report uses: GabrielBB/xvfb-action@v1 with: run: | - npx playwright install --with-deps - npm test - - name: Run Electron e2e test subpackage - uses: GabrielBB/xvfb-action@v1 - with: - run: npm --prefix e2e/electron-test cit + pnpm run coverage diff --git a/.github/workflows/snapshot_release.yaml b/.github/workflows/snapshot_release.yaml index 8d5588f5..867775b8 100644 --- a/.github/workflows/snapshot_release.yaml +++ b/.github/workflows/snapshot_release.yaml @@ -24,24 +24,21 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{matrix.node}} + registry-url: https://registry.npmjs.org/ + token: ${{ secrets.NPM_TOKEN }} + - name: Setup pnpm + uses: pnpm/action-setup@v3.0.0 - name: Install - run: npm ci + run: pnpm i - name: Install @nut-tree/libnut@next - run: npm i @nut-tree/libnut@next + run: | + pnpm --filter @nut-tree/libnut i @nut-tree/libnut-darwin@next @nut-tree/libnut-linux@next @nut-tree/libnut-win32@next - name: Compile - run: npm run compile - - name: Init window e2e test subpackage - run: npm --prefix e2e/window-test ci + run: pnpm run compile - name: Run tests uses: GabrielBB/xvfb-action@v1 with: - run: | - npx playwright install --with-deps - npm test - - name: Run Electron e2e test subpackage - uses: GabrielBB/xvfb-action@v1 - with: - run: npm --prefix e2e/electron-test cit + run: pnpm run coverage deploy: needs: @@ -54,15 +51,19 @@ jobs: uses: actions/setup-node@v3 with: node-version: 18 - registry-url: "https://registry.npmjs.org" + registry-url: https://registry.npmjs.org/ + token: ${{ secrets.NPM_TOKEN }} + - name: Setup pnpm + uses: pnpm/action-setup@v3.0.0 - name: Install - run: npm ci + run: pnpm i - name: Install @nut-tree/libnut@next - run: npm i @nut-tree/libnut@next + run: | + pnpm --filter @nut-tree/libnut i @nut-tree/libnut-darwin@next @nut-tree/libnut-linux@next @nut-tree/libnut-win32@next - name: Create snapshot release run: bash ./.build/pre-release.sh - name: Publish snapshot release to npm - run: npm run publish-next + run: pnpm run publish:next env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - uses: actions/setup-node@v3 diff --git a/.github/workflows/tagged_release.yaml b/.github/workflows/tagged_release.yaml index 53c92732..99e71333 100644 --- a/.github/workflows/tagged_release.yaml +++ b/.github/workflows/tagged_release.yaml @@ -18,6 +18,10 @@ jobs: uses: actions/setup-node@v3 with: node-version: ${{matrix.node}} + registry-url: https://registry.npmjs.org/ + token: ${{ secrets.NPM_TOKEN }} + - name: Setup pnpm + uses: pnpm/action-setup@v3.0.0 - name: Install run: npm ci - name: Compile @@ -46,7 +50,10 @@ jobs: uses: actions/setup-node@v3 with: node-version: 18 - registry-url: "https://registry.npmjs.org" + registry-url: https://registry.npmjs.org/ + token: ${{ secrets.NPM_TOKEN }} + - name: Setup pnpm + uses: pnpm/action-setup@v3.0.0 - name: Install run: npm ci - name: Run typedoc diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index d24fdfc6..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - -npx lint-staged diff --git a/.nvmrc b/.nvmrc deleted file mode 100644 index 50e4b92a..00000000 --- a/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v16.18.0 diff --git a/README.md b/README.md index d7401d34..9e4723f6 100644 --- a/README.md +++ b/README.md @@ -50,10 +50,6 @@ Check out this demo video to get a first impression of what nut.js is capable of Please consult the project website at [nutjs.dev](https://nutjs.dev/docs/tutorial-first_steps/prerequisites) for in-depth tutorials -# Examples - -[nut-tree/trailmix](https://github.com/nut-tree/trailmix) contains a set of ready to use examples which demo the usage of nut.js. - # API Docs nut.js provides [public API documentation](https://nut-tree.github.io/apidoc/) auto-generated by [TypeDoc](https://typedoc.org). diff --git a/core/configs/package.json b/core/configs/package.json new file mode 100644 index 00000000..2a877f91 --- /dev/null +++ b/core/configs/package.json @@ -0,0 +1,11 @@ +{ + "name": "@nut-tree/configs", + "private": true, + "version": "4.0.0", + "description": "Shared configs for nut.js", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + } +} diff --git a/tsconfig.json b/core/configs/tsconfig/base.json similarity index 65% rename from tsconfig.json rename to core/configs/tsconfig/base.json index 7cfd6840..d36da828 100644 --- a/tsconfig.json +++ b/core/configs/tsconfig/base.json @@ -2,19 +2,17 @@ "compilerOptions": { "target": "ES2018", "module": "commonjs", - "lib": ["es6"], - "outDir": "./dist", + "lib": [ + "es6" + ], "declaration": true, - "declarationMap": true, + "declarationMap": false, "sourceMap": true, "strict": true, "noImplicitAny": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, - "esModuleInterop": true - }, - "include": ["lib/**/*.ts", "index.ts"], - "exclude": ["node_modules"] + } } diff --git a/core/nut.js/.gfx/nut.png b/core/nut.js/.gfx/nut.png new file mode 100644 index 0000000000000000000000000000000000000000..0cad75a5cf250042e52e67e62b5865b4b0a62044 GIT binary patch literal 83053 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

`$4VCiYVIv{%wR3e>7J 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 z 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%0DqA=g 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 DUDL@N literal 0 HcmV?d00001 diff --git a/core/nut.js/.gfx/permissions.png b/core/nut.js/.gfx/permissions.png new file mode 100644 index 0000000000000000000000000000000000000000..d1dbdb0ae3a07391464e68e24b3f9e48b05ffe80 GIT binary patch literal 66294 zcmagFbzGKBw>Eqs3I?fwgoJc=r+|R8ba!`mDk_MCv^3IOlyrA@H%N2Q-T4iAKhLxG zxA*(LfB3uai#cb`IcL^dv(|AO^Yy)q81hrxrw|APS^V8wc?je|0{AES7y43)&$NUIABIJp&6PMG=)987I&|NQ~~?G^uS{vRE|^8N2!T=i`Kw}+*r|L>1mS^c-qaBviH1`F}eqW-rz z{p$q|if*<>4Dv<}Hcs{iMk3Be){Z29R^onLxZj((8d<8oHM26Zb^xo(N6gO7`TuKG z`!B6*oE-mY6}GXou~z_QWdyphv9YlIX}VuOZgDF;6C)KfLr2s9jQF1hDI;r>`<8!= z_NV23hL%qETdZVl2EK{;KclJsr;U%8gPDQpKTT@?Ytz5?gZs}MrELts6j}cC`cIR% zu<(0(8)Gv|(55WL%*yt6{$R(rK?gHqx3_wZpoy6g7$zeV9TT%66FWB(BR3l(4I>jb zBjcap{yYsF!BEdp@Bj7uy*U%{f*#V+-0#dB9Bu5~{`~2$jVl=0{r&a#r={5+<0c~d zv&Gzc2KOt&M{H|vW9VdHWccUhV7R}n4mQS)E_(Jxf+k>h`G^ILjm^Lsx)Hs;5)J2^}myXD^`I_af`oO+IY7;n=ovcjrXPi_Mup?6iFD{kH-()?};Ck zpP9J1$dh-?Tn#D3lq`H{Z<~rzh$xhrSQyk~#hN-BI|DwzVHl(BB-{8(8(=KI3CQ3z z(q-&_^wgZFwfG@6wzH3cF4}A$nu5<`$8k-BFYs`WzKVR^N7KJgbDs6D5!*qAtE9s zCMYP@VO?Rs95={{$ejX#n!lM~bHrCvYFZq8(+meJ>aJt$ge8 z>rZGxk5woc18MNICZ0}dPYT!~c`Zj!ELTNI3$E^=bFT4dPOV?*FLs6;SF3`f94gCiZhxp zIK2BykCnScO0m;SVqhm;4LU8AbB+Oq_=I-%lbZVJQ<(meV zqfZ2TMQMtHXk5aTB|even@;t2LXo+%AJ$)9+G^|nqAG&kf5s=uPjM`|onupfexRwu z&x(8sLhuuOAoFtAsZOYdC6fK7J36^1N?9Zm4362RU!+?yHONXgfIG2-Ylq`qfFUBN zq$oxH!rI!}NE|M$$u~SYAp=HV>n** zy1Bb^^Yim($OuOn(So%Ipz&|hZ_;Ia_lt_2hl7Iy2>~AKTZSTx$``t^s@QVBAOTNJ zN~TCBG3b}q*1q%^(~NP&6_AX@-)|yj>!PhLW2BwYo7ePVQ0U~&seEEuifs;y?bDZ? zJG8sh?D5i~!cW0gO%RF5b+f+d%Qkz?sVTng%#-YOigR_g2ivKbZ=ajHDTXa3``k8- zj6|I7%owoZGF+Y9ZTS;=6VcHHyPs?h)wtNON-xjYG=LQxEHzW8cG~*Vrmxo(PByvY zT+ndqK3!oWYi>^66HO;P!piNm`8HQMU(<^Qb9Zo2*z$Mr*AMUr=&EdkV^dXzDl<2a z<-$UeIr}$8vId4sm)oG89U z-tb5qCxUfeM1ft3)yJ%Orz8UUJVj3}^hqIW)USVR&VMZGN~AQW8X0ktN#gCQa)7;) zl!R~W=Gi3ktls?9n zh1L_#=cX?11w}|2$JWTD+aEe!~G+Mo~b&ImrA*cMuUw_kOUqd6eXn` zEXAGh;c=(LRRIPPT1y(7*jQGx*-su~A>>3vDT5BfBO|fQJCBz14a}yPv#$C0_{^r$ zsphOJ(FFt=~AAQC#t6-z`D`pZu z6b_lbmBVnyLIJhKB_-#cLnfu> zV{!Z(XMGB3RZd$Co(HS2AfI(PsA7)%W@)}M4HT+99!;+`Aub_740cOi8R_dsv$!we z;Xky!=MIh&;-t5hQPICg`sM@*TtqX;V_1IeBE3*)y1vb#Y)^&9)G7(P=%_o-&Duvg z{&0uT2^BK-#O-po;>N(=yo_&#$biLdU>ZnT?JpOW?54)Or92@}WeemExf?M#nZ!L?q@5{``BvH7tq&w z8!o~HlnYXna>r{q-KNPhbkK)~hh0st;a8vA)-x@$fsoPTal}tV$rzxb9pC@6#b5P& z1Lo@Pj_E2Rr2imP+Vi0=1D5yKK4X)fhIrNTYcbFtn^PC9Wsks4{NnkNc|>@)yycEh zfxw-*h`!K+GbBQ_{o64baT%Gl-I`shgOe98UU1>MJ@jw+P_X6d;W3h@<}llfd55=P z%X#jyg~jc>zA_vbBC%}WHhcG^PU485SGw_s#tTL5Qp|>>7cK+}WsTQOX->V`vGBjia+mM=;wlUuzP%-BmFL~rp1j3^}Blcv4 z4dG0=RhmIZ2))_b+0jwYSvx~E4hJKn4`IWse~4tp7Iz1OBmRb+fh_D)uf_hsz&F3C z$ViOn>wSEWvz^yGG~d?xG#FFvh;aQ`oe7Rc2710uqRTisvX12{WeH!QAk`dMgChfd zrbX@WrowT3@N13#YVG_$B2N#GgRxw$vQ<*TF{@<#U39?C;_;RTjYh?dq~WMsl8-U7 z$JrhkuO}W@>#yq;xM+MBoi-HP*;hGo=PA0Un8N?iXV*?__0{ zyToM`a+P;HjlN$^XJuwC?ZIT#)v3uN&>fz5f8yokvvoOZoWs97sf!Bgm5QdnNlFV7 zgOhL+_@D$Id)LHUTj%9^k)e`k=2LI_8WCmNVEwzEpKP(E+~LEU5>9^reY7)+(VLZkCwF{r`h3^# zygM4@0_&qc=ycJV070G6X>;_aa{e?ha}+}U)&qkM)A2kvH)AbL5k)^Z12% zksxiw=IRjtLevclm6v$7)1if=odanLx-aa@&A98m2@?3~izj`Lwx>!&PN{lUVX%&= z5)&<4+sv#i7MER3eSLjwZb!;Gk27aA?WbUM=oFQV29o$JXUc<7@VOT@Hr&*X_D?2s zB7XdMm&ome&20F%x}Ze2=|OREvFUL7lZxN&G|IVApP#+dFH^6&z1-TEDxuie*q~J} zeeB;Nm?e|AK3nAwdz3=?w9I^bWu+^^bAQp(y594(IhpV*1b2s*o`xm@hed~i zn>#L=PGb=U6H|4?21{&mS*nt)Q9+Q*px&wDbMv*Zkm2W!5b&l*9q*f1u(|{|0w02c zkich{&T>x07L1vbk(0OMOp=q5qrG_1l3G~b*fSF0?zCmV94{^-K}=5m1w4LzeVwCK z!wwrrZqa3x&yvxCDkG=MrJ>c|uF=RVC{&r8zf)8q+f>EyMu`G-LwZcr51P+%FgUeOiZtMyo0_VT z?jyEva?pky;2eWRoV4rCEkRqVMMmxert zR*|=Fb<5Pn-@ViA{QeragY)j}la+`1_m&3?4OliJq-0787_GRJl;Pd&4Fnu>tKko1 zeC<#}OxE%^xZIB)ABFV8rN|_5g99k)wgR=$kQp6|KokTct!l^BgN`JK?%ZXWXZ3=C z@?BjVdW+cp#C$GOO|0AM>IC>)DUkUV)*Ud*br4JPO<8|iqjSBT>grFi*_m!gyb{9w zyuV*5=4yHcUm4pc6?dNQptCbw#^rU%Di-o8Q>|p}ttBdA$_(<{v%2U4zrMJL25{z+ z^W9=3@;Dh^4D?J^J3SlVz40u9k9dWGh={UlvI@n7l!DZ=^$g@=b2jV!3=OwZu5YoC z@mLM_>iJZQ=}OH;uzY-ca9K?o(?WSgx0ELq_x5D<^@(4QhnVcuC!C3@p0oESeEsQm zge8@D_#6s-j#VFQ)1c8?Fjs@^aR+ZijrUr!t*7T(WaNs_l@Ls(C}!p)n{(HC7aV@Y zca7fW)%d2H67ETBVms1VuP zE9I!wVacv@>Rq_IyQ`Y7Y!Xobh5nGr)UF2gMcYE^IVMA%XjZ&mRTfu=|-pqIB!sZO!M_*0+%G@CZmi5U-G-BI!CeSZ;g% zA`cG_7Ke5oqizL|zD4GIDe4I3Q@h^b_$2me^`R0vSK3953yrI-OzWxbT3_-v5Tp9y z*eGaug9xMPf2xfbzv8n0p^zoBsPT43T-g}wEU1=dpd1t?OeuFM@^iAGcpis6g#smB z9-J$sgPzdNjS?C-q|3TQ*0b$Y24<$rF$l{@AVbN59vo7Il?lvmSuVc&*d%My}i8+jf_AEBWFsNl}gz! zNLg?^D2#frk(FEwYMDG`8WORPyhuS4LqpQAu(0!si=le2tDdBe32hJL+_6n0Qe*^p zn}!>9_V_-WckW=bJWeeEDp1nZpk8L)o0K@>l2cm^2NHK~mt7%Pzm{);T*}c}L(lIz zk9RUM?cP7X3=0tXf_VKv*M*bQ=k}F!JUa;t?)&qop9MEQYU=*V`_Ida@H?G^Cw4v0 zZd^Xupk~Pe7vuMeYY&dcn6^CW=*FD1Vo&neP{L)iY}N58TsvamU;a!r5FQ>b^d^eB zpFjNb#?%oxgqM%k^wsbucB|sufwQW_7BP~np9^dR5k(JsAOvY`10<|-WoX{B-U$i_Vs(gqG?Ap3X1a8A#w~bvoKK0zTS!- zIH0r~MDtDk9u@aR@6Cb26)0ncHiypk^R4MC39}w#Kh2?1`+++T_PD9330NK0jOTZ- zAhy3OeBJ=q0#)Fe@!3oI`wA6+5u%|4T2!L_Fm6!Kc7))Q5E1zf4!)0(dT7HQe-y0j z=-|-vG66&Jo7%8(`ceX)$CoaJX?t^J!<^AzTBT9P)s-Fc|LRnUYz88sAiHxk`}^UNa*y_ zxF9c&9S@k&6fG7STBB2bp}|B!;&r7b)q6)|Z4j+|9in~t>#oA1qS{;}vEXfmnG}TF zT;0J5a1i5&TID`F8Ihg+4$J2ZnTm?)c+-i6JmN|2n1t(F&Oj)$Mf(hhns%4RRLc44 zU)_IF6@aV*>{7Q=sXiSITjb4ytyu#wF?p@JD)+s&vdbyAg0^nyDX7z=|iDku{g=1)$)h~ zxteDs9cu0(tl=OXrx0fjJj)JY)tKAwyW8>jkH-|4M_<;bs`CaP< zLcWl&aMj7UhPb%+Vp=GFvvtJ?$YUipDKr3pusK>FX}BVn=Tbr)Yg zbJgvw)c2DSQTiGf=tz&X2#h26o0E6>&Gj{>(2f9yweSUg!7dM*kTiY`gq3i3WA3uJ4jEwAL2Ju`Ud<`lDP7qnXACY<THWSk_>X0mbtdFD{M-l=8H1D9p^v9QT~l9NvTg z|6-_Tj56+vdqIHSf4C~}JQ=N{5zY_WUa$R&Scib<06|@6ckjx8fC}(-Gj8YY)=y#t z@b@so)qQb@>JlO%QsgD}5FSxe)dV7;}VdNI_(c1oh*NN)2& zjau`rt*teiD94A4gy%nhi)BXhCUC{W0znSo4& z+cSX8;#O$FX}8A3G3o1-qyoE;A_5dTTx>*hUl-5VY{|~B?=Z&qjY5^;ulDeSjg85l zHK;DUdaH=-!r>w$gzG>{9Y}X)ZM;?P1K>wnnJuj6!`L+~G9VpoZm#%=i=>zz&N5&J z0ura|I^@oJZs{7CX1fF*JS8Ic_}P4WNFvYv8EWOq*x;uv&R5Qnr7Kc%i=BSxgcL8EtHA%*XS@K?Or?G*(xzMXOf)2^jf(SRt25SP%EyovVof#sF0*><1O^ z-eIHX=4cLxM1$FKBuQ>-H~>YCHA#9+L-TE`up#MSxg#PhtSOR8;g@>;tZfT&5H4Hb z`MImM+bSjisR1-=Fqk6Prjz&3k{!>azcmF)&1Nx9&5B(yWtpCtAy1Yf@w3nXU`)5( zw~sP^n&FCfiGSW@$iM4viTVDcQDH!;*}Uj*DblPT*0?e;WnHYz6yorjQcB};Pz`ZSMOz|4e>RG+ z*k38$o}K;twexw16IuFT@fM_d_zP)bVD4CNtIVJHdG4WMr>b-$nbm<3poJLvYs3n5Jn zBm_SPeu>xg9MU7*tj@wwt_pxyskC1yNGJb9qseRHAihye&z5jcI7GGf^&!Xi0qEb( zNx7A+UB75WjlDWuQKU;t@()L&@)TGIz^#Xz@B!xrjQ&PU@v+v#&@0^XXEei6PH?DX zd}NXpF%#;W%%<6jw>8aSxrK65hYnoBRhk=5U%wUU%(ok64L*!tey_Tb;*B`e**s(WAEa6cZq-(za5F{}>8brH_<>#1=Wv{;o;}F0!Z!Oz>atmyXDw z`?G;>+ukcZQZoM6Cy9(WD&jEzGi+c;2((lEpRIg=V-yMYA|NnTN0nc#K{Q&fUrR~^ zO9_4H4nw3V8&~m_GY%)|r-H5YtSo~f!!)yr_RusmOpy`RS8?z)b0IC(ViPC1{OgJs zk3{4cWBXj)+?Qam&?a45r}9s>d|G1S0g~fR7j~EvoHcVY^76z`Xeurew&Fz?T52Av zbc=aeDlQQtC7O-^p%i&UZi$l`$a>}F<-hX11Oy%#Cnt7E*Y>96lSO$1zrgUw?@&qP ztjg$(Y8g=WA*7+FHLc$pMWnXOFSDk(kwo{Ctx9eldZ#5-R&jBvQK*`vId>adpDtqx zu&T=OjI69QD7B~`x{?yvB*xP7NqlF=QVagchuQPL2#ia<0w_SmMC5VIuoE&S=>otjyv<)aX1K z-MH6S0dPF@3MG!!Of)w-znjZH#`^BV&2{BAVy3JIU?JPu+MZ)5<}1QLnXXqdb!d5X zdbn1-RbX;^b+nKAc;R>0*})B}Bx6l14zKOIpJrrPqz(&>-qRI(-wO$67fJjFSrga# z;$o|j92D8$l<6Fi6_5s{oupHKPahyQa@&?REgvu1i%Q3sg?*yT zG=O{E?weHi zwZWXVNn0Q$@7b)w@%B^%;C%V!4{mR7J#S7XR>S6cgyKfp%4Fn}6hS0Pwe-F<;v)GH zYKssL$=A^7_#{UD-E)ZO!{=n5_Rgzaz0O3xA19|8sY0cjL z35O0=rOnp3Pb{a|gNnJKP?IE&KoT)j_`wPrfpV*>7=TQ}iY&$p7B9D^|5Z%1nMG6? zELb7ov;P3>fHVKw239ZXhU?3cqgt&R7yJ2}v_q|{L@t{WP|P$pmos~=XeDraL3wRz z6zS>HVoQt}?{3_rew;t{vaZ4b;Xz1#d(P?1P;_!r4n4r$`UcIcbo`LEUFUxA+hcDiSA~JVW19&; zmUZqY`t$W(w3?OQ5eZz0WN}0JPOLAkN>cHm_FD22B9)5t1;S(3qSp8`8=>7YHDiR0>6^;@}!LWe~8qS z|LjfV=)h5pTAAI>v;6JufCb9H!-34;JoU10@lb)TnUb{>GhBz?UNGjUciJFbVrF4U zyjw+J=@J)DPfuUr;b-2YWN5g2j?d$)zgx2>2P(aYtlBrg8ML@v+U8pPeAulX+OJ8? z{j%e`xjco}ZEBY7>hCu`opErz%rQCNDje%?h!@cwj3ETlmvlGk7op+dNdk6skTsaa zr2m)s7a(~GH|F?oIz%s@bcM=jyfTLdf{8D?NgV4vY>Ek2Et?^(wjdI)VNhZki=g+}6 zH>{86$MNEc6u=R*uJ%EPoU~r+nQcq^YN`Z*PubF`lx{U7|w7tA9Rw;mN zK<3Pv1Iwcz%O7!o|ESi%yCI3seW*l?0i@v@I2)xFGa+sBboIQC4hfIueL^qx8erFF zY0DJ%EBTqA!TZJ?)CFz6xA1VT`ycG`G*1w(PWLh_V(`|-N?uxw-}cenSd;M*Bh~bY zhT=KIO=iisJ?V_KBKl=cq?C*B+=;eW@d6nM>7J+-k;_)8&^EKFkdjar2ozStuUIg!EZUFLh2_Rm%02_iW z;LQuvE2)Bh2!J8@0)R%_t^5iQi$NltCK*HTdDuk(dBx`*2{6@P_a8pm>DHL7)4-2| zgTrby9f?J!{>y$Dnf(s5Jyh&x{uU7MW`tEyDFYzJy+4@zE>E_2 zY91?s+IG;v9|@;3bG0U{{q5r_c2nWK$uh#f;Pv7vr|-R>}b4 zei*j|#lpsZ`(BsGr$Bq-712NCH7RzR-@O2%ciXE=h+77VC_pf)l^7!fESXlTIug*>@SwhiXJ%#wUO~ag z2>Z#z&W`o1?Vh4MOs@iqY}}uq#?L|XmMjBGZCrwrI~F)*Og9lH<1Z{s*Aqz~Qe>#X zh#R~bmx&fNc^0G?Fj0=JUQZ z!%5_EhD(vmqNmlUj|{=*UL%#4iq-lG^a=O;yh5hbPY?_gbE8=ppaA3dCI=FO-j_O_ zi@aH8Bbk64^9Mh|fK;T!Wlwvz_DBY(h2kjsiVQl2>%Bb8$Dpg>9xs;cS#X0@i+fyl zRh5+92d~!F=k{4g7{l91uaDF)4Dg=NO2*I`P44qlnT*;--_<5iQ1GoLG{c6(2-2K# z$9b=26_BbN&@{>|jfYz)Bv?ar%?9dRR_aK}D3~nI6M0XzBT8#cA6)iundr$)RJqQ# z`BYTZ(}fDKf3?B#Y5UHDcyNhV$P555b?xW8P+X>`5ksvcFWOmle-^P?4l>T4DeM+iZTuEE98ed-ZR zEic}kR#}UL&m9R6OD4n4JBplSM!g4LzkYSx`<)0dY=!~S10X;f;J*q2R3k8j7QVAt z;Tq>1*YidHL=er>bP_VrQ~=D{<8>X3LizQ8s(OvGA?u68)vZ1U?)l&s@0zhaK)8jXPaRkfOuG`1dp%${2 zV6Nw{&**MwStQ~k!57eJcyM;Ff&oBM>UhjBJ6Tm~5Tv-6Sx%{}_Zbp~im?&Eq`rQA z^2s?*Gxv^^f?|0~ar$@XOMh61`_2ANk&mZP(V> z*_$HqCTaP{eyK$}czJpCI3|9qTtX}^y}^B* zRcI{tLBXs$z4Rtp6Z37P@uQTFe`Z1XG!Uv^q$*K2{a)nojNy`Rbv3FX+;FM&>-Euq z0PjKTix><`^?a^;@8a(7mE$;=N+J`6^fGo<4yGYA#yPb;Ii(h#biSnr9WvuclaiCl zrx~{m7^#QdZve(g`5Rm8+Z1fT;bQ<-ps0c}ui{@oW8 zr~r5Y6)XTtbq?TQzHso}WQofiX$L2#5qns6(h5o<(d8J;BO@>TgXDQlULy#0~-^X;@U$=RWh6FSK3Mtr`1=heCp{4?CHh-)^^>mnlzQNcTwYwocX8 zdn-Q6lhM_EUmvz7q#5CO(<~t@-$V5WR~`BI*|+DK&j1!9hlvCg z%oKdSL@a+V@J$uUhEfa0pgqt+#KhsE_=~9oq*AUnME^yf&|WGS390{qYvjTdr6a`W z{|k1~p7jsJl4`~cMZ)<9CjtU?C5+hOKUj^B;wzktdrk7=*VI7(O@j)W|5c8^eKh3s zZ#0P_>x)7({y$KesNfh|EVlR`xJD64YvMf+RR4XyAjTt1L-K!q*eOcK2nzoNgg&lw zLx*%7o!I}ps8vZqPU+uci#eEPSJV4_`P1~a4WMGwlD5h(o39?*?bu>VI0Cwr zWF|a#jWYZ5+lKW!3?}q;pL#dyg9!jWX+B?V@WEo%)wtMOya-i5rUn8Fpi;2!(H3FJ zrf!$Ox75B@#^{F@0aQ3W9gTH@VZPof6zZ6#R!lgoSzVA;Z{lB>8v4zH_z_Uf>g$|? z)cgRD9n3&6$2$Y-PwXkTnmGqqL&6MT%S1pf=(-kbvOZBr2!yOAAS;0Y*L^`iAXBJa z$B652IX}JQ3=B=R)|DyQ`;yAzbQ>*}=jax-_9{cIPxFI!(@#iBpqV^q`*o=T5VW;ryf5k| zf9VCi;(G3jjK{tY+!R17aNf5UCciz8q``c@G<`q9P2_b8_rAF-0{Q0VMBzXHI?4KI z&Wi|g>7}!IACvpQGFutuGVc|WuTgP$b2iU&RHWB}AS5INw0tHDjUVzK?k@vYY`LI}gw@n^oob=S zc4O70{#IHOUFC)b6*C9>`;-GgN|b4-iif!U!_*7Px4}bZ3P58*c@a7j?#JC4ZBYLd z9S27|O*Ht>(gKvja&mG2NCV)A_;P!2;?@1xI+BG785$arif0c7rQ*Wwt_(out28-O zY;A3m8UPicWawzWv^n)Ddhky^ij@Jn$1dzv&1OXoc z2#|W2{CWZsIxRqVs#V#OflShPqCl$_FrOC%IGC6s@7}#jvf^_;hAe<}L)2{zK=1bg z-C1pZzw!m@kyws-&xj^J#O1xc0Z_=hfeN57n?h9O{tf`Xb1!*GZVB-xG!;s+y)%BAM%0eunm&XV))!9FtUy8CD)5-_TWfYUs?GB8s(5)Q=YG zB!e?|ZOR$QO~I;v>@rLRN2 z-e8T3Rb+2Pk6-OI3`ld#z5Rwo#~3R$>wUG80IZ|!+e-uH*le{D@)zV%ohmgNk>ERy zR%3LQ78eBpik72MVg2Fk7Z{j#hM0up$I;>JjjWVy`P_KsdTC zetzkCxse42Zs|ymyjO|>9(mOEQfH+~`~7<~;Hku5n{>1TYpl%xPy4+qf}+G^fB*=6 zCTm<68g5SU@VOl!DJq3P=+T6@{ktw6WDOvv?E<^_4EYP3b=4{spw`= z>`fL(1_=gFMVaMPxKU5^!C?=>(U2J7!DenDw_iF~Gx+`Ol6w(Ma|^1#y@)Otm(3nQ z0;udM!G*#USApd07?X~hKWW+#hhB7SlU%i+ zFpH<8*AuVPyQ?%Sfvk~Re2uRb49nzM(WZm%0jjiu^oBYBq+&cgHH~YFK&Jy#%W`Aa zWo6(Fl=Mhoua4XVT`-Wj$t3ej12y5n@o{g(JV^6mW4{*KZ0Mvd-DhNbdpZmC05(KI z5dOgSqpPdy{QP`nL)bl^8-%^0v{9g-w{>ucPzQ&eEtA$nkt*%#;nj@}PAm@4dCFUF z-~=HA1wvCTROIMjWaE=ES{8^eqr~KFaQ&Lz>;8Izfor;&q@u~Fq-~=tD?31Z<%=8K z{`3j^&vj|-r=1!lYb#|ii;>4CZOX6*x zQjloc!+XZ?6WZrNr}tG7AIa`%7b#Ez94zkSIOfKx>rGVuG{z-7k!|Yfc^1({`p=-R zF+{4|$K?mC=%H@nTl zz4+e^+2ie8&YTNs=*r@SG^<-%AF^A{zPaN;&}F^#dA0n(4^g$;l4>MVX5i>-bt%w7 zIo)g|%l>YiiPd~EdlYv2>(~Pjdf+a@`$sF=o6co*p`R#e(lWL9BI}zK$(Jo`bsm?fh3LifKu0N^6|Ot-~pr!R-d)AO6l2jRA#Q$ z?JxIC-sV^mj>o-L`UCl6v=+bA-d8_2eJaNfz-Ehye7J>yF`u<3oD3B} z+afMocn;^Es*8w1Kt#qhH8$0mRlK&PPL$l0>z}!Sjakqi^@@xVBlYlE=wk{1U*p*H z8crYQ+;iw#TN>MLPo6xfJ-gLB-JbFT$@W~$9H{JrNPzhJ9`H@}zQ#!+NV1$Njz#5< z8}Q%r`3N-Y=;(`{$6fxkn)@P2$7{V_{wG@#AcrN{!|&H%`R%-W1+*F0hg-7Q&=0pR zNV=n);1YuCUCY@$DlqmD3WT4K%Xy|>jn~$5wSAzz$}*d~QL$e8)g&+WR%{87no_pHH*%3pgY z125?eTfUrtVtoi|L<7{!q~Kl$qAtLgfaYCPUS6RR2o9wZ_Bp}5lm5dUpN==TnstGt zrHa--6KAmN12o%;y7k6&EH7kbW$$k|45f*w9?VFDM<_@{srW`vq{Ut@9rb!{;RDqZ z@(Qox&2^7G|K&mi@t)6EGR@Ta0K#w28#)trgO0g@dwkVJ=IsdM)b|;j0i3k(;YeEWYt|EZXj0ub2S!%*x5cZ^LWh&|mgrgr2u;Cal@>_t(Y1 zouy}uYd#zf{HMHt1%(TkL>J6|Cb0Xm#%A>9)0grrr5@#8R|hP%j~0;cVPX9nKNM;Y zrjfv<3ui2^6E1%gLU8wz(P;A-kW?`_w9|e;sfs`qxc%Oz!M-ZV!@}Y>wO214L$Bp_ zSBJVWoq=c5=NSPYQy_ow+;*#1yT)8@=WmTKY!CtW3mEEnF;gaQ?(wV52IZs8o>!4)kn5 zU{8&Rik}Yjjh44AEOD7YkT&_t4ql_&`ZWs;3+!aFm`aCG-mj@M-ln(J(s>!&u37|l zConH?Um6an=yC*bI-VC?0ESDnLtTs1adyTUko89JZ`q}t zXS29li_J=2E)pX&8QW9>Qu~}nPdIR-7A=L&Z+JNnuGR4nzL$ua&~(}wZ|Um`M#dZG zs<^2$W&;!l_314OGxIwsson@}O-tITDJ&SD)hu8LL;0G7Q9~H^**sUvHcGAM;;Kqu zLjWhz_Fg5EN#s{r+42CKGrm0q%Wv0jBw{E>y$-TWhWqc=`rJan0^f^9A>j4~;I2aX zJkAa;Eo_)~oBYo&Vv^7GHqIbmRl}l_c6(#S%vZrqq$~^=0%I+#zh%bfaWw4bamdl; z`$08A4!fYmbeeB2D~JPXk^mY>QBef2h&VOeL^;kePj(v99COi31=pNHtO^ zpE_-gI$5h=Ms-l|f5`Huc>Ox~0!$aAna!5YAc&GCGpK%Q@PV*djOrh)N#|)a(Cbt{ zWMvtm>DAV1VH(y|QDg$1JwVM0#OYL!vrqznOKQQnZg!cto`)fF5qc2l5Y7{y0r7Xr z2ClexS1GF1fQQ38L-DpK5}`QI&Og|{E@5CitoI1ucYB`FdRAiALmtO!-F$Nv43}c} z&cJzhx+zoo&UU^ot!QTFttbJgLFCIMFoEKIvdn=3)TgBM^wIac;%csSVl{RU0`!p* zsPW?7;(wz)WVz-ITP z1O?$}75OjEsefq!_SNSF+>z)sNVvClK+$V>wyVW^ywK8C-yym5(=K$dN&)uZ%xe02;BKS!VlAC?Aw^bqNpAPlT2$7<6bs+N13mI}K-dT_Sz0i1^=R~hR5i#@bO;~8h#(J#vR+j+ z_b=8C(@4BqyOn4zIywjs?)nL}O|D!{c`gn*2!~En%5w;YXbLL>8~Wn9eC}#KrRAc57YWu52Icck(qa z@YU3&as*n@jb#csAmM#9Rl&cKxU;)lxkKxVuE42!Lg8@uB!vSm|uL5m-zV{8Z?$DwMOfrU%RY+9~f6mZMhUX>T6~ zj)!i=#;IbFp3ws!@hx_qtLC0j@#=0am{yN@?I*h$Yo?%9b;yI|Q~v`!}D2^?c zNjlTOKcw~|hGWwSWhS1-hJHT(I$E-@va>Q>mDXwm}}*Pb^^=J=MfJHWh}b?(?B5clrj=W5P~ zu)Z-JXPHb;0^Ua5{g{)PGv?&~BkQk&s(QcoaTo(6B$SX=Q0Y`Ur9|oO6p?P}Qd%jM zZUpH@8YyW|5b5p~Dd~FF=Jo!3=Qs2G!HmH?ASl7DZ7Afwpu&ULi#0_lLx#-s4 z?p91cnvS`c-+qqoy7KYHQS;{ADKqU);r<4DuZ_R?RNSEOE3cSZ?ysM0@+kk)9luwo zExFty(l}fxFD#_ZmICWP+s>Wg4@pr!De&8r6*Wbsg&c33RG3RN6;92s=?rH$CU6nt z)6a|;`A+qBbxEle=t+R|+ibGNF?2WVX}WlN27i)PNuJZjkH2M(?mrW_vz#}Lj#lp8 zEiv5|m7}oNs#|+a9++m16(`V}4&8wNF6PvE^%Lm0$l1rd?tJjC& zWIQ^ozuj?{W+&on?{nS4s#AukimX9X|I=fP8-d1f2jl`4)2$4>m+$# z#SiC#dtKKz8Wc3D{41wjgZ+bveii9&9UrXr$3SDG1n9@GKXwlSDcy*ZH`z^kgxCM* zS|?8@Ui`Sg16>|15L{@ME?{w4YV=-fXb5-zdq#nB7EacI#d`iO<3hVD z0DIl_@T2fAKbTk<|Z2& zr0wk3<>eFJm+Wl{tWA5PT%1fR>3N<-4Y<1u4yqR$&Ijn$H`I1(G>hThSVqPJ{3qe@ zK86=Aztc(wt%I=PXlao~trK(6H@@^Xqsoht-etm}*|3zm6ac9>1D&pN%Ae!n{M86W@ep%ufZm+rE%XNhC){qVWtJ|h>ql8HoKU2MR*)7 zDkaAqPq0kSuX&w+)mKo`>KYlhxlhEHE*2Pe`s&XHT?X+{@W;rf(p7sE33RNi%ivU- zuXq1TOMp3h!Y@ZVF4Ww)zcDsdC=~AK8HR#}b91RhEUVNuKW%mZPD~!Wh=&kB2?@>Hy62L${LVyAi+P)?~Q!330{a*h&+pV8^tM_B>cZR&Q|BgXh>b93VfQ$`+<7_=0 zZgUP+Iq$cDch9cHeUy2sLz1c&~^Zq-ce<)zdK%LI{Dg#3p`l-UPkwzsu#3Zvf$+P}CZH9?c zi_j5_6>#y4QQg0v-ebSGxJZ`~q#~UP7SJB~9>IvtaKY!pg@HOHm&6}G zempfB?%`P2t#Y)WiqUbpWn@Fq4rH8jUXP1F*s}Yc+q8wUIzy?Tr}y;P3Dfz%?+)L# zPNgGbVzRhij%t#Dfkf#d)zZeKAp+(*huLqxnx|$3<-)O>xphri(#FQdbxRVPg{2xK zN9AACEzmbib)F5&Byw(;%{gaJdxwbzZT2RgelGa=_j*EYe}FD3pVoR3TEreN#2o$fYu&-yBNJ8cPZFe3L#hzU3k)P}Xv%Y3(eQ?=>+ zH&1esf6T~*DpGY-6dH8qqB7~ap!<5;(?cjBXZL^FaMBPPTQVc-d0ctu%Z9;FzqRA;fV3egXf&NNh)P7{?gij`9-*ycjx$giqC$YnFw{m|wl$}Ukn9GgHFTyW_Ni=3WAiI+;qv%-5q%z$EJ-n$?TT_qr~dZe zO!zk{JxMG^{V`Rb=2lX6%YjFbcq6Hds`X45T?Zs&C$L2d0N37%|CE~y(Lm7MQQ zC49;gy0=0zJcF62scsZFu5D`s+hB)n(@oWU6sJ}!deC{<1ie98Kv=lW<1!UC?!FNo z!tN5a=odxxk&PJtpWIsRQLL5)!<-P~5K(`jG0x9Y-+O&pSZWz=!VZtcINnu7(%zgd zWXv?`rdfDtR`y$@>!F3+o0|;3Fc}ybpThG#dg{v$ zK8Z#xdme$x+NmO0AJaIJDQx(=6PA`VK+r|B7F3v;sc}4Z{4n4eq+*2;Th`I$>w*=Z`mo&wm z3+VbU&jqudHw`{STGrPRhDe7Gg}(GjIU41%IJFy17chSI%p?CE_FWCT+`VmQ<5;Py zYaZpLA9+pL&xe2bG%PU8R(>%AMv+PJ=Ii#~6I4?5B&L&b+0)|Su$vPHsL{??^zHjc zNlJ{yl#5dnL{Wowleke)lA>I4Sx-sn`{~gxnepaGTfX!qah=D-=A5YvPRweaKGf<#Td3tsCU>r4sD}Z^>G@(hgto%W*uRPvy$ByaD@&Ha_=|- z_Yy+P?sMa=$A|N?6NkUm%R6HhMOT0*xof-ollz)2P=~uf=)eTS75s-soAmlND1YZZ zNwXM&C^2Vws><#@a5$O3Zr&v22%5e)KX6H|?5}~Tb1>a!Ydh{woae$v$)NW6Zx`n$2x(gTwUB%lt?41WcVg^`a>=T_~+4Kmq9iyfI>90POS@Gy-)~R){>N<;oAO*JA~uT;pEm z9EHCPunUzUV`!Cld806VFcvA#5ie62+%!eY1RfKbfkOlDSwd*=hwsx~N$Q=BgTpcPP1N>!tdbo{1GN9of zgD4*jn^dLfI6@E_VpDS+@i-VVOryyREy_OShbZ8^ zzP&IO(vD4taW^k_$uX@H-QrQRbuRgn=lP#r$$qEHuuZyW{ArJw*eJvCXnV*f~buTB$+YT)S|AgRzZ8Do#h1ns|(yygt1w!NvL$2Y2t@C!6 zSXi$1KjQqFRVpt&*JXUUS2TKwg#phQ?q+ZMkTe;zS#;Qh0L(*2 z@1^&_!5tkz&%D&A{6^aI%T?6WAU{zreOQ->@qUA*SNhFvD(cU>N z>kL;Yrq?jjQ~UVDA~c;aY>I1HnchF0YF3+zsFjXc9uLPtYeB;HwSs)En+4m)$rQ8% z9aOypL5!6OT=LzWwex#JdphI8QE}Dl1PYf`z<7UQgkJhueF?D-;aWY0S`@9jkv%n4 z>0|OVLdvlD89tH593M8vaVx^>pTp*%hs$@)N;K^pB$Ua)HgG~59`G_Rpb&M=APxH)^d|PyK0ImCAOX!x4=1C zvFTQNhl9j}#iC+eAW<~v$x}7AGhaqOJons3OB?Gne;l^1mo7tL)EwRcwZFk@A2QxG*gTHfS?(=UxiOc@2O{9>3W;^ zjpk8`Y|x}a3hyXLlkUM2*r>Pue(;?*IBz7H+|xTVQq)40jxpS2mM?qF|DVU*X^eo5 zyk2!j&a#eB6xHS}RepTcl>VGZOrM_&dK1!n*2hB%)7RU5jHjZDy2*Bzh3it)0uQV`iDq*37yU`#*)dWn-6mO`bn-w zauzXWR50Q{P#CT;r}|_Qqwy)hI>|miBj~%BE1>IV>uj9UUKd z{}Tn2qr35xx5@hsJnN*|%g=|PGt;KHJK--{hqH=bGzrsd*4`AZAtbXg2!D_N)R>d1 zR@Vea$R0(|ZSSG5FmipOpFjLhUr?@8HT0#Kbni)N%wq^pCG>FO{bvi6@wNbKRE&f3 zx(wP^n4j<&fLXy#L_>}vE%o4XG(*X0+kc;4>0TTuJvq)i56;JDeiIWqP-(Rhlk$1q z)3kZCa?@WlN3iYT%%$fx+gGXT14|swwa$BN)j`kD`&@o6BRQ=5-Y5OerCeNsME`T` z-o0nhS9qV^^K!_vOnokkru@7d z>x!&x7uqi;ZIXft)Gwr4xrLJ5KHW9te!|*sHb#Tr_oZVjFMM$mxP(?MJ!Tnu_10qP z>}`1A?Xz)NieIO%Sq?r;N4sq~{(69POJ=K|TjYb8rELnkh--JndS?nJJOP_Zd5xm#v*l#Uq>W@zv4xICs z4MS0lD$f4pxiREjeOlJG`3pmo%CsM?xP{-j?HH{{*(87ShTW^d`Ry|m`RqO4M&+}4 zqucNN{%;`u(whH7)1+k2GpT#dS-+RJWODmdMyjXWa_VMC;8hQ!CdZQGz~3zOsu~3K zn_{I0+$52VbsKy{bvtA*=AdR-;fRmFhdl8_8ZXPyTSSb+-&}WH7NgX8b~^4~IowUT_>ts1)d_7dp0(`s{a24K2k$;c1_58v zff9GymKbk?x}K{)Xc#knWZz)1RK0=Jy{{fe_9#NfEBC=VD+K|1yt_XhyFzVkQLqVE z)ey;YAm{l2@=Ya0#Vd_a3KFxwxDF-Jy|a^p*mc?m6L6oUI+XExOe5kDFwF#!W%BmHWNMfM-gkTL$6>AQaFX~xFH=OYEM`Z z=3J-httHb-D$MN^%1_eB%Q#0aYqv zudQ5J4D8V&TX5y}GWRmx*@PLkQi`@9lgDf z`WOMC%dZejtTMX6x~Hh1fYK;(gF?k3E-{fDeA&&AT_O+V0|J1Dw7|hxAvQ|#_?2y+ z#2v)4i{#}Ds_Xyc-~1L~F8|=RAwUmE#PJ1CNtr+`cN%4vsT$NU7NvNLeP?PgZ0U9XQ7ka>u?tI>7T%kU-z~s5_uxO zL)nSAJ)>`;=5IT%7=9&+=d@`1$$b_NjOh;Cuvs3Qid<)B6G3~ZsDC7IhbznRW<0eW z!>g{YMgq0rq4hO*Uy!!LTzCRn`yg@ZZ@4Dzod2f<*y&;vfQe7;@Pl1ET@ePvS25ks z3PAvTADIu(!MCW;-az*kMO>Qz9kc#w*E(65OSM9dxkeF}3OA%t!|$}gMa2RZF=`9> z3_4YiczaZi(ID%^zn3MZQ8ey3w3;gRH@Xbyk_?tpVTL={28QJv#kIu_l&Bo#juW+Z zKh}fZqMY#AKesHQ-0o2Bsg4km$FTygkD!@h1We+D$fre*Dk&z1q1a)wQ!{BL};6JLWKF1{LgL*R)*t$pNwzZw_#4@ zFwS^*I)C?K=G$)1eR6x{MN8E&rNK8svyXdtd||i%tZoDU_!ZOf3T6ma%mB$qnZFsh7zLzxI-|ANjtWKl~ zf}F+-aLtQNH-I<7**tt{u02zoVas@QbmZr(R!9VfXet8CK2YUQgtfk4k5q#2v%jU3 zy}Qu0!p7VJsHP|d&Hw#uY`m9O=;-N34LR#Z8bIJqF4Oh`!RzG!2knICfc>L^q#Wr*R-jVGeHYp9aHXR)P7u}3RH zM?DhrX|S}^5g=x$Np@{@oR^yihHhk#2^^F|BdMGcIGbE&!NPT}D(;d(1ABPrB0ioN zT*%H-@>q)g-$4mk??I;u7G7SKc&@dH$V)sAQbdN1Osv(cB(3x?in|6*#Gn4lYZ+ID zTDYHd@7|Mt8)0<`8o`A%tZ|Pz4l|!tr=?K~o&8hpp>V_b{2{o2NWpp` zzH&uhp3Sr}`s#I>znfN7oiWXC)sTL0`+30^xjh4|W?0wcU^V1{^}o2S^s9luC_bja z=|8FX%P^h3mB{b@|2kSUIfdW&EvHkk^4uq6`m-JN^r3nYBeEyJG!{|N8Z^>W(veYo zPJb4@9=Oiq*n{eCAY^K6yvU;Nf9YW&U(tzpx{Fsn)bhgEZ-PmIR6=zoN5t?6FWtJs zB4Nz68Ev1k=Nj<~OOK9YhEWd^;>9*Pw_n%k8fcP)&sTkNP(lV(n%YpBZu{i$Pg4RZ zdJqy&CufsBo#y%yw(U!0KaCa85?X217tWbObx3+ZB0N&w5kK(IRlih5GoO6eF(dGQ zm7&!7zt!0REqqLWxc12Cr_fPD^O@aR*s4;(T&FEkKg*9U>K~)HgF0A&La(J3Fwf&B zO7+_+qXBO^F#pffAH#rcPd@+t^vQG5Z_|Gp`){)K=%Lu>NNNH^4f1p8=i&nhHR|n_ zEnpdbPf^53@yD#QqVel-*T0urnt}$XbfHf{#*z-jmS3~s>MX$vZVu=q4$HzKb=U9O z!)W_MO^v(>dda3~!7uAUuJFtM7v zGL4|g8~6`I;D!&8GM~Kt&+b(|X=`30kQ3aS90ebSo+dL_Opm z;K$;L{&9!0vt)=gl!^2|bDaCT5+Z1r&7J%vc5jpZjk5ivZ=ws|`gNWmb>kjo%|E{n=W7eRP?PImUa`}gk;&i{A4PG2HLv-5ZhPzQH_yp1!B+*X2cA$ln2wdL>fv4o1tlE| zOPd`zz~O)Pm$Ll%eD7GpEz^rzqbsE4=GuBO@dxA1dp?D9&J0* zU;9-nZ>cW+t8-SF1K)Vt`Dq5FcGCGd(;L0JU;b|n5e4T(qWw0~m?ZXfN*stk3CU-R zATrxxj#y@tTYII{zV!1Xq|1d|H%hyI*LV1ddIp~q+DG%+aTs9WkG?Wf#Zs@|FpQM+ zIfJ`W^fj+nML{(~y4;c%C+N<_`fcl~H*9bi{!R_t&QN?IWJ0=0Z*u4q7xF~OV<%o~ zW+cn(Q07l!_%!guz^N0Zsw_ zWCXZ4L!o?M>T6e}ZN6CT;P6`>8HXvJyztp;UpMZ{u}zv( zz8V#X-}pi)#t5hM2kDifB;3cWZ>FrQLgz#6%(AasL;F?d?hFQUOoVnK5p+W&+Ovrc zJ+m1xdQwq!8x`YK2UG6VD`~+9b~$Wi^=kU`P?}iCg9kv^f)5sp0mM)|Vf*5Bezbgz z&0>h@X$WzXFRlAX=Z(CbfXSk@WO`JG_b&cCwIQ;zjrR!|G};H-piTeSsO@H37)3YIN}p>DCgHZ$$^8ql`=F=jQI;2M1?YFUVdEV< z6c4WsgmA*$?^vu`qreNLu;w9i(aV;gkkhQqo4@%aS`@ZA30kIb zZon@a0|yA-4k|nuXq@w${p;6+I4gaxqlb_k^Tl;{2@%4BgD<7we6I)^(=c)Wf&Vgc1PZ7jTiz$BEFFf>e1Zo}pwwZp4oy{unB;fGrSxU)H@hNv<}6 z3%(ip_aEKXVq5IIs~C5~6j7h0|tAfDrE~ z^{t(qoorYKKR#1XPMSKi0UKb(X*R+ZcQDiOMOTQsTekHqDBH%Iz1A zFC37j-WY`v)x*txEyIvjjbLTYy?f+1{U@=M*ydU=2}l6xfiec3&i3Ja_-^g=Sr~wp zw8$6WX@R3wHfOOEgyGA;wG_iRAMgYrkF1pgDW*SCKm+0N0*2&X?rw22&O8i(jQso% z2-iS}95@(B|NaN0#nuTB*7{gUU|9BgLZQ#KC5EUhX>^U1q`Pkys zs8zNOZ6}h@?y-SZJttl!eVn?m0Gs+&JueAZi0pH+HXMxLM2pB~9R3h+o2DqxwLs1V zVyJ}`Vis8K%;ym_r@(Lm&Z)7tq6y!~oq!ew^o9hh7CuQM^&`X?kpcYAvEs9VRTuow zKOra+>AA$hqCVdqEQl2o{dBS$<_HRbV#H2^& z?(xFTO%x0)j&{*8ENXBL$Mevmq`5#ikDz>J_$(R9`&*qMsiq@KS4lLj>%3C@@#dZs zJ8ft&80q;^T9l|ns(*-y8SW_XK~zpZcbs*LlOvU?Rx5B1&%OAjhsk@^VDDcS_*-LL z=PPSau+U{jX3_TI|9U^X1Z2hb|#Eyrhp9?=T;Ed*GK@ zj`-aDuP8bpFX&q(w6q={pU?_EKWKhgxhl24=Kr!{&1bjsnrgdw^ms%tvO4)?C*-NP z?b*`Y#?ax84J5*>-ddDl!_eTv=X0V}ENAd;`krxEFG4S2?=BCd`{wYoh)5mch?^|U zhB4{km^(&XOB3ps<|ot`QF zzJ0z!@89LGmw$a@@%trZniA%)BRvBHEjRbbK6~FE^xM9ad3x{LbovNGTRVDfSOouH z@iI?39mw(Qby_(M0p=|n69o+walQV`Kg2p*FN#S*=Xh8?D?D@Kz1&mRQdQ%xOH0v< ze#QekNXv^T0&5m=&GBbxo1Kno-d7YwKvT&-73 zA$%*N&-8vdWOd@aJdr>BT;4XhdEk>z^M548|F^J?zsjIlv|gjSE8d)wEc?F$0nJVF zGYpM>2pjx=Sc++7Slll*xTiaZ(lP?&kY^?OM|QPD{J+f6(|ej&qyRH6pNjiCCCnri zcW_dQ8#(C4*t)QU>Cs|c_s4sI`+xmKNEtnydFj$1>Ai<-daVLo)b0m&+{gsc2u%T7 z^+vHK#d8jRyTC{b>9VEh5H?mdl}|BGN1wpJr_wRnzxc8V9qy4xC6VHH{yQF9W4=d3 zp31z%^i?CQO?-ZC7YU_VHd2B^*LuzwWDFHUgaTi(*Qxpl)q4zMQsKyGF_xW9LwlDW zv-)9^jPttasz~wD^~006)OfY1Uk049c*p%$A0ngsq3*cOzqN*p+FeF61}{P>ZLzXk=ZJeF95m=`XSr|sY017%<@-l8h{MF{cxg62JG+tCcc|v+8_gso z%sIu0y9m%Lqs znbk)_n{ERo!)l9(*uvH1jAm-G_#G}pD34eP#!_xAFnYf->w6Vau91F)+ePnnaYYB- z>(FSjpyNZK(_FS6!Bi%!^-2hiL={Zbn$OZS{{l<hPDnOL_Wcghq>1FA*24e%%Z5h@V>-rZj4pHy?g5%c)I(qh@ z>0NF3gBXb&592#tA#JbMEb$?03zeQwD>17MIfP5LwXC z8lh>~ra$Eo0lLHC?DeUWzj?Q8g#akYcyCK+Rhl(Jk>%uS4eb~-3vBC+uPOWT@5EnZ z>3=w`wdw1W|OBU%Ks?6p!a~FUVu2fAV6@ZA&@kf}csxgr!P>?z)Y0V7044{1v&!so1w3*`niD zG#&Vdw|?c~4DVO52+1M!s(g@;eI>Z5k@Ut8p8|%T?+(TO_p(edMf*Ut{#TI#qV*PY zvXads_e1K>-H?n|_5i5gZBMG~Le3XiUCp~9RhAps+sT`a!iDuLDC##KuiJQEn@Osi zj)u&pvv*1>@%?KD-pR|eHP)fL(Z{u_D~jo}=~~|Yc>La`A~!XwI83@%t#}bFCNB)L z%j>J^Y+Oyl<_|SrUDCHd6MVddu6PvX-oYud(jXi=^_QeYCGTX~71DXj}TB!LPg#tHE5I{V5E?q9T1tmY^3L;4xiPqJaKHc#mme(dT!Q zM!e&_``3itiHM+9!2y*Cb5Sjin4a=K2%&yUZB0;>S~-C=7!Xr7^ry!s53EB;0LR|~ z+CXAMNlina+|SY9q`U8bjx+y`-EahJQP^UcgV%S(_Wf7; z`X;K(1i7T=MY+Qo!KyfZkVWdpM1f;5g02kmu_7P?<-Kw{;r*F3|Nv9 zp~hjUJ++6iKaIi$l%$^bnWOdTUXd%vy$)Y=-i8&futwj)LKCu7^^V$WAc}eU zCJ^M~`p9N6%y5wE+=;JYE4q3u|3~@DW&h%245zElHAIO|bLU8$t`SAW=ahSnebFW1 zcVfcx=!2LZgeB?WT_y)qE>t#zoHDE9vE7Qzw+w7c_`?-z#J57dM8 zDGFA`WJAg2==HQa zjv7u$VnXY~NO~I@H`}I3t|!op?A^xyp^KTUC#E9irD{Y#Zogoi?7>N!VvlK(FfSZ(V3hvI<;ZofFZfqQy>fRgAmW(LF(|7pW)v$NL043!wMz)SSx zWsnK44p)KzSvF5`DcOB913nL7s%;vM0uH9#!yyN^YzprCURGI~Y$c`Kn~hz|-;eHc z#h{90T8Owe?F<$Nuo2X&zxOs{Asm}CmHtjDlOc~DT+~#9slRyZISaM<6Pz9hSY?A# zOMuG@SayZ+;|+liHcNnmWzPCcv*9r;^`=bERA7`$=bV=lUdau`x$A}};GtD)b7X9D z+$5SbnHov`ZC^qo;mwP?m>%Cggl93IjdL_V;23gdQ`^llQ+9ndrs8pJkxL{4!`@np zX()T)hpfy_N{}7?KFv(z(7c(bA~N1FAr;k3>|rX@`G~BaMYjfeI^PG*c9(mX0nRVQ8ig6cG71{!%&?!yf(f_o zKedIEg&ZK1X$R=cYyW?;_90Em)YQ~Bd4)CaAw|mW_j6hxJHH4D(Nfi`tBNg$Cl-`6 zV6dkRSMVnFCgES#nHSzUdg))lJD`V4GW$HcH+W`V%7y-lL!wH(tiGnlFfC>77bW%E z+(OAVL1efVPdXkLvrV9CNp2)AbgoJ?61djZt1!*xYxv?*deMUJ{1w*XwB^HN<4EsQ=Jy4~1hodb-TDo5 zM&>zl^FL&Sn1?-xRGH}ZW96mKHUD93o*raH(hmJOez*R)wDc2lzDlWa_kbrfpmCr@ zvRr@icOJ1@0B4M107r12uBkW7f$#!JSVF`m>_%zpxjF_Q-3#4?LeI z7p#1Iy$#F4;5mjz&P*!Vr+sDcxQdz7QZLPUe4!&dQ|KvQ#>_4jp$6^>7mWow9ow z1kSQaT@arJ1@aPPp|vgA_W=d|;qNpY*$W3^BJ~1@5`$_tYl30Tii9JT(Ym4k{4qIM zZx$$*SG|8HPq&(Jzkx#Zh1o)8vq zy}*Nm7(U=s190i8BT<3Cjngfxi*i7Gu3$A<0Gv&n`Fl(Y4nMJC^~A~GDnt)etGlri ztSohKZQ7`2;!8yk?ZGgUkbZif>xZ6KlfCUvum5y^dP6N^3{&#!ulWc&_qnYVA53jKFC%CBLLxqiE`0{rq)?FiutHN<-7&qTh6POZEGiGQrNFKKNL)i zdf1Kp3-SZu8fogAQxh)zvT){uBVm^%=$_acPIUd<^)pqey4$W1h)7s=75fSn3eaOOZX%;GKY9B*0 zvs1h8ejkdksLbWNd%BdvbiJGTMtMiYB_)P+*i-^!&CSg_T6cGLAlW~YW4!y~e8(p3 zCRwF!$m(v|k#xuO4oT8(f2a8DBaRnXn4^5(_%EDugJZtdr@zh$N3Tp%=D#!P_Bz#7 z^zoby5xaFD@lR?|#+k$(tasr8p!NI)j(nV$?brX;jvTK!M;ti8noKY?OXF|REw(NF3XM+^4~D-KjK~A)77Z(HS*n{ zvm|4ZG^EFFR~rdScoFlQ{%ta626?e1`C=-*Muqj2^V)6pW!xdKK z?KxZSR+>b>Ouzw(LpeRbSHY3dh`x(-@~i6YyX96# z9H3|@ycl1IrI>=bvrE4>J>T0&&EsZ^2!-dsv0~ZtSQ7d zT#GDQZQi*%x$rUzKZD7w%`yFf*Ml3n%%fSf5n~1D?b{J>D&p=;Z;PAM);ekQVyezt zK4!+EAqQSueGV0Eh$}PzzYbx~##9|Yaeg$TKAVE_5tNrDFFS8TGXt>|K&EsSKsun~ zDu%4^=Ug7YHYLj%iBsO^U-54WwmjdAZmje^AIW)r_|59EzhZEUL58|cC|?HuEmnD) zFNG?$lLZl1b2yWBu%|?LX?R^Fn6&n#Mki!(P@73daxDe)>4RQhd?I@{Ic%{x3U3ZicbHAKxv}&+V@!<_ zrhKr5z;i`Y-nWCXHP#<=O-q=^rP~K85{GKAg^WvHwug(K&%hdnrytuh)bsJ5Pyq!? zfnQxNp`B)ftyb>a0{Y0DAlrwZh~2Gy_oP%14&d9r-_lIruL4EZCDMT$)3)%txKFxE z2Xn#p^9q!fgVE|zmte~U@El0UHmB;~T)yw~Iot!3U6q@r2qJxSW0 ztWAFBL;-5G)7rWx81L`e@-b#j@4BiO`d&Hj>Pg_(lY1jAgs}uQ zvi&P6c|`AwIKj&`7HxG$HD+BjXiWLdU%zz*$BdPKCs*F8#NhntWu0qqFD>Szvm@}b zOdi`8^nZR_)$bFG8Xtat6b z0T}Vjhdd_cG$(*#_S(O3M&PykX1?uyQ{qYZm8JN3DE5P}n@b-B=6=12B#w1_`*ZVz zUZ(C?U`_IoniqEKN8?>iE4PY}&+bY$b#K2|y&WY^D^FdJu4TVQViL3Hiu)~vQp$ql z(5CoK{})S2+CwSn5sl|XiKZGL4@|Xb@N%qY@yiy3iubD;r=-*NJW|y2?m#*hXG+GPv?Flc0-b{f;A(CF6$zNx_d;eW|pjEu*(i|9Tu+$WU<4 z5r}fQ(sq-}HFL0W>Pqs?4tA3y3KXWQ#yBlJc>Pd{wMoSw&DMN?2|xe_j=$-Y%Wmdc?Ws(|DKAan9{wE|x80LW{ocQS(6tei}Wy zV~`UgweE-8?jvn$lE2EuB(0WgL`M@Fl_*YcSqkkbZApA*rMTCCEllfVEcsHtUM9$3 zOp~Gb=$j-3A2osa7#=pk;kBH=3Cw?2ZAo}2uX(??&ih=;Uv}LekD7cmIyA?Ek8AdE z;MecPWoX2F60Ka(zkfygD((-r_hCyVDRI2smmEp#Tjluu)p?eyG2=)0&t>TNYo!!ByHc|2{QBdpYojY|H!&*=9wecm|Pvsa2x! z#L@_~AjL+U@WO+^pWYV@8Zu-iS*FDkaWtIZkO&0TY}k|MOFVW9PP zpqk~{1dT_QFC}U#R~7Ryu2qw4)_6!MMVhoRoi4ha{VzDmjtwgj4gss!m?0vOqDRYg zT-wCCkp8N1N9yeoPo!2cqg=Xj%G5}_TuC85#jsCU?wtnHlq)O*Lccs-o_vj+G8Xl} z2MIcz+AQM4{rgK#3@sx2Zd`l`E@|T%VJ2@(^H6w3-^!nLa@Zb+R(bYQHb?bpz%}bT zFU5W2@6)jO*j3V52bHX@9$qB_MNZ4}7DddjOD|;M?3qIkAsv=GQuG|M=~nIHUi_JN z@`Mksq-@Nn3rSH2Kl@{clM&|s*(`Pa4RxujWX*zAR%0#JxUSE*+Qi^G>2c+XreO+x zN-u4&l^?p1)23pi+)ChN0aHhQ8*%rNkG3PrN#VnUhEd<{cUijY=zo)6>}q!h-Vl{5 z0M5)%l3qr(|GT-%$f7+6sGq<=@PQ2#QzjL(<+4ot{oYL_mT522WB1cjlwz=$t1Obk zdKqTlc1wOxj`TN<`u$avjE~di?L6JT<|XUs$Vl=7LI_%$Z$BAW9iWktQF-4h$84Qx8wgH%zx7oDIQ;GjwAJ%j1>3j+4nQDU3v~d zQ&SfvR_BA@7Y0&~;*&#^qd&>f2k!WbO3|Ns2}c`q)(k-37T@NZewqx>$%#q^Xig$H zDU@(hA|i={0v$5qAno|wJdbG&Wd}+cDvo5+YSx!xx~bMX{5Ugo64OpU&8BN441x)l ze+~VNS6VUFraJNvLTU;rDXEN{0fbPbYN3kH^fzJI3kpL26cI5Bz(R`tzx3em8&2sy zSe{qKR;-jGOp`tl92PPis&&x^b6zvHYLHd5yM>C1I#MBPZ~y4lty{DU<(GL69GsbE zu^MWJ*jFT;KK-33O9mEE(BQoQ{s4|NQy53l9(IJmU}tAnX4>Zir=9Dt#N;bn3PaI9 zuJX)&T|N0I)Bga@!GV)>;7)|i5174Gas9PwU;WbfKZ6MKN=*QX&{uB8taU#4mo8qCkU?napBW{Gvj6w;&yl_?3I97v5iQ*;_N~Y4 z?48#P|3A9kJ09yk{ukGBT}Cn?b_ z#7Wc0b#aC2{3q%y+p;Cm)>@7C(tpTB$2nNj%ZNGL^qE-&gE@sgomU+=({$Syk&|jstRu2oANXVlY7JJa{oT zi=9{g&@8!8ei8>F1Ie`Ru;ee|#>Z{rj@`gL{&(n`E$F)D_WxGEE%%qVOBdcj}yo-&q z=u2|Ew5*BCS)J48KT*B-qg^_=S8UXmuB|E;dgF@x!!7;sD3?|_60fX?E^e-Bj8dmM zjl^A=q%0Qa&Bd9_EOH|)oQYTL0YTpT4^k_RvDe3qdUJhOF*dg=zf zx+X4*m!#3DvzXeboLf7teL>88!ISUx${a?-@(0<#DtI#8=%=6s|M7SV0)CG62Hm+C zk4s9dtGZe-ZlBo3gD6VVsQ9JnqI*gk$;8M7_cAg(h}VvA@lyJdI93sla!OtOeC||X zI|I#JL9Ob`V8Vyx=NNshtU_-<0%@P6wa(Tr$8Tj3U2A^s3B}A;@Q2Dk0XWI8%1SX` z{aZ9d`t!|n%Uq*{dl$t6I6HV5&SbeLT%`}__E&5#E?O*>454{>pUCCuX&d$90>Q~& zlC5jcsoZ=MQD!$)E>>^>4lE!>PlOt_8&Y#2dWV$*5_4t1G240ssEc=H$`*}+D|a%yRoM>_EnEw@GV-iFY`wNp_Yz$S~$L7 zuWN#Qd62H~E0Ir|>h6R$t#tje=RDJft6*fr6kX0(81z?PjekC8IPvp%m3)dKtquHx zv-Rn>F6dgQinvOIQbjp-b?zQ+s;cNc(t5-spJs+JAzr*}a(~ z$v|g|MASivypk-rOZr1uvd8xJOr_25fckYf$a<}OroDKnbo~8^(-;p6JH(>^r?IJ3 z4}OqG&4O1+-qPtwGfOrPk3_Y3FX||tACB+{g#&SV%GlNKmuKTG(S>exOIztCo*KIn zrh8=j;n9(tJ^Q6LjW4BNA~~6u{GeTP)DZ;!F3?Rmw(_e_33=KVgZk?m?=1qR$P2hX z-9|{Ni;6jN8;aIv=-qNG2RoAk+`i9zzqb4|WVL{8$$fdm&5(cPZ(JCUZ3yJyKmQ?-QAe& z8u~G?=_(yv`T6tG%&Rufn;hiNuUU(7d~~w4W&720X{Zd6!=`{RRZz6Rob1)WJE$iP zE^8GN!L(ao@PU6^geNm2T(T?ErluaoH9N=P!)4Ixll0L1(hK+%I=RF zwJGqHRZ~7^YHyn`HBIxo9ma2q4k2uOsOBX+PO!3Bhx9B_T zG7%p4&W*b+)K#Yh21lA=2>5et<>^HW@Pij@HvM?7U#F}cGqkG&0pC+Z&NOSKF!0$n z*D1H}U_98826G4}x)5-0ha`k%5RX;Dmj=vy&ev~;;e+V8Nu-DKf+!S%^JiPE{5qUWcHR)R6n*AhUTxto^fip`A{d}`cwY~MS^kZF zwSbxYnm^Vb9-kF|@W80GHfPko>X#TIYC^dR`Qqo6Y7cy5Wsk0FYQo*X0B8jAZ7UEq z>%*wo3hm;-6d?@ol&Bi-9cQ5876XhgcrXl$0g?5>$Zp>(jeeX}x+PoEpKpXoT7oPHirGWVju zN{{g)5PiGV<-1S$UIgTS@SxGOz7Nb>WFG@3sEvJ>6JiNkW#*=HaghpJznni~2d}-T zT61=Z+&+s>Mt2SvPe5v>b6c#(KejH>?n#XFqmW*rRb+yTUKXl$?aSYZU2W1d^lk<^ zs1!&m??Widmr|S4=m!u5IRKB;WTGL6-LNJ>n&E!nmoHkVRrPDOZySgJVT1GLkST&> zWzdxd2Vv&_qC$|I3dC+`_@LAnXrR0OsU++fCyT-rt}~uL@(x?qcj4#|x&CH8>F762 z2i;Td^wQE|C(fuA9K2{ia#M)Sm;z?-8%H0ws``TG&z?nA6@YlHzCfYx;^oVix4b1J zBr;qE_IyNr_t%rr+`PiUaY;mkA&bAD8pbU3(k$4V43#^O`;3*^42};@ufqXxOc5G^ z8&}l{deY$_#-NzZ!SrN(cV$XzK4>jV*Y&wrN;~jjpxt3G%p^i^b)cgv=pD4B5bL)|K_boI+5iJD>k)UI;9(jI%&a%*J*1>+!>CJ2n_1yIg3{{V*g6wJzTkTH`j-F{<5 z1I!R1U~fxDAHep4INZ=*VQ{G3;{y&JaPI}`=b=-F5+R$Ko52N>PSEuy%0@75RUulJ zxRF{jFjJF?8Ndu#!oT;xfgLSm==tk;0&X@tRDP8q>d;9Gs2E_cDGF95vtzZsc|!}% zl`;wn=D0qS?^8ar;rvZwBbVPsS5w`UXEZg{)aL`xhF<~0 zA5tCxYs<$mf)>`HT5+@XKo|(-c}3;t)M2wRMVY9xy+Ht>tRX5sND|gzkJHep@oMza z9|TwVWRKa5*tuO>CYom-Qh1`LXW1P*hEi-&KfEsU!+o+@P`X|AEbm^snqF|RxrNc` zuwZ)Cf(|{$J|2*Xx2wzmIMSKc8FBV{Fto&hATRFaCG_BHLw9RyYua4a!Z55pn2DXn za=|#jO8|Q#|6B>4N$(A=#$lmE{0Q`H*5M&|wcrpX=i?&+#g}xc8+sa`00q401TC%Z zNYpKYo~9r}a!cW>G=CZ+ZWP=)B;6TOmY{Bm#mo?X)j8wYV(0 z4X%I7EqLP1#pY4N396J9P>G|^9nM&`myu+3Q>*Gjy2|ke1hMVSpepq<*Y>C$C35(! zsplkF7*eVS>@-+0Nnuxp*#W2&I8Qky8l+K>cJv#s8AXUzdwyAVJCSg+{LfhX5dQ2- zCcK0=EF2*)!tWJw8bxNVv=Gh)n5psIU;EA)(9_x~gY*_Hk@Qh6xq%eS{#dJt=W^A< zPphNybTf-L3ps9!MT55c4V&P%#tPBhq|#i`RQUdu;qY(hQ5OXD>Qb=w@#HRQ^Q*$s ztQOV{4SsDk&OKhWk7vNht~IkFS3^Wrps68pNn@(a#m%0-y{_M;GmUKANz$n5=&@Td zb`$wgS+yU^$w<(-0I;Cef02A0Lh1610UJ& z3@@DxO5VB6 z)K(;;c*nTA&JXf}u`$#@w(U!wr?J@jG)nU8{F$oYgEMM6!EK9cfqO#iOf+ob_-Q{( z+)hFcRJ7)PjNRJ0r+qw7!C1k*kHky> z_#@2UPX~y^5m92s)^TLUPvrEW#A$pD$V&ZVLDD=oSsRi@6j{hMP-3aHRJmi1L{9F@ zqY7Z&8dK}Ovl7R78ZH6ZWGT|$JgFT;d@P6}HJczFGdEpL06@+;Vc|qjzub{4%iOdzenxe|p-0h-Pe9wi+;&6dBMrtKvJ zVe#i!S&3rXQ7s0YB?-(6q5=lRMy?ePA?Q_I^Jt}jG7@a^y#P^iR&B^(xFA$A;Jb0dNnkn>gx#>HsP}#J|-M?z->gvk1wE&8L zk!11~CuP|Is|Md~|BK~A5iL_p@cmIO7pjrnO&|qtFBb+w`-S&*2!3#|@wofDB6i}T zvVbEqMg2Bs@UT{s&XxYc@h8C~8#-a?3Rm#23-L(`rVA0UGn!mo9(V&;G}_gWMT7o1 zP^OPXF8+kUZRT^gQx5O$Lds26q5rIOq-3t38S`f9IT7f4iHL}mTq)tV=%mH+=j{ID z0>tIZksm&pz`OjBi?12yO=!?Z12H>Q`KONBS6-wMq7dT|2+mK-<1lceNy=vCe2`w|(T*790y zkcULS#r#%DC_!9{q@1-J(_Gd$(SyVGSd&vaPD%c4Ez|TD4Ni2>75wrlF>26I)bH&v ztulpdMk2XgI`&_^B3BrqS^_}S?@DwcRkdJY8+60WkScbKekhnrJ3IeH!}4ay1vdPG zf(a}U)&JfPLbsGkgT>CXWX^6n$NaxqJLrXF`P+ScS%o$2`!(YjvuST}nu>BxjHPzW z`n2Ud&QH<1T&50xE^x-4?cMty4IA_w)U(hOicM{q4Q76$yuyBNt!TLJg=o2@( zE0-?^15ZK(%5Dd&4efN&Vu$6N_OzYAH_j+sPEpqAu4}?AbJgac~sTZDwk_^fN@{} zhuB@P7ny>t)FsGv5^(vk0` zID<|Lb9cTWh!~j^ULy%W2C;A~!7C7kns|3-?BFu^g#md0DKB9;4*=8f!6-!GfU~d@ z6uQnpjm29A1tKS##+$nN4M^lvhSTYzmMMWB$$58mpv(I9EmdQ`RrE6nFEJtPR}Va0 z_V)8vZ$!O0_Vq=K4qS&!H(&!TGB+YVtVv%?ILC1h0xvM3we3YmT z!V=NRKUUxUEU;>6;;>GA3O7`=v|7Q^r3H?ENYZ;B_L(EV7eFNiVvazy6p8F9ky#LQ z8?Jpx0>%L-Z!MF2_wS=Z7o2KQMmf&Q8x9NyaBUUy`R|aki$Oswv=put(nk-r!+;cr z^B&SUBQY-c$EFt+QV<+3g8F3!xObML@9!hh3UJ^D=VqAWYSxUd3-Uc%%5=SS?Mjgf zZafaw>eBg$f^Xkuqjs78v`T(f7D0O%+oJxuhmclT zL^%rui&fky)x;FEUBSLH4xJc$95|7i1E&*|rPwx4jW=5Lz`Q{_vt@!49&{?E%ZBV5 zS>r7QoxjVVgCJ1N+u+3hrOb{tN_3wel2NB2zH|nD$`m|qspk+$MgR({N{V{qO?0flQJyBAG|`0j@NrvH}s6C0TB9pe5o_!ONV zY!E7*Rrx7563^nK6z$cpMxEl&J+iX?+ts!pDgW$3U74wyWfycqHiD7{n)_o!aIVB}#SPP(V z#_Muh8V2$DZ)F`F8V}(|kAO0xUQq)y=kZNQJe81^KIS)G0)441uNos=LAN<7_V^bs zBp@FX3eNf}(ng%4^_FnbhyLo;o{!JohGr5-8<3J4O0$=Ib~HH9<;mUXQsz+rAR#6> z1|md%V*6!P!zFfOYE?d6qZSLrwmMNgsK{$%9}6!jPSf3F!14P1k(ocT5iIfB&hFtu zDCcbniQ|^P80&&gM>ILniR^r*#Hn(hH?T`AjgE;49$NeX6Jru2DoCe_iE*pcLn%#& zIpmQKhzO(4R!Xm^4;+797ZyH&aJ=zK$U%AzXK%XVuFg&@=zbeEV03)`VjtTsX>H94 z>A8eS?I6R02fKW z)ouA(X>NW;j)tusiBEFv?YUE8q0jxqQfzcQ6oSh+e4|^mXGoeB-Jd_LiHOq3J37s^ zRxDR(`G;ibl}NzTSbd_li8M@ZtIQa>uZ8*m^omIu$M4nd(4&OSJ9q8?OE2r&8Y-@! zLHHeHlsGU?D>Vvif zJ$KTD_H4I9lH-6;ep(3ZWJrf|0Lqe(A<_j1Q_8qpwz?`vNaZO5XUzil{`Qaf-7#Mg zi{+$|1h>vxkZyOZZb{g4Yk6k=YtmD)y5?AYDfRSBgR(n6vZh~|h$W;}y*mzhUk!&1%aHrhg*$m(OHR`#H%p76CdkW?>s5b?&d{$5T zB(pf{?$7E&=xFYTwYn>SzaDKjFc!GAkYJmdmO7s&LK5HK-%k_1z2^g;tp)MPyfJ%Y zo1%r*)A(E7(Ovbfl_PpQYbPIU~)a1%djLHW-)Tz%R47)*DM(lLAfhV&P}d z5K%#fUr)Ncd*$4^#(=`*2y4<->@h~<=F zL)?%DuoBWr8}HhrE07ne58|G|_I5*y{0YDI-Hj)f zSqh#Xh$;_6Q z>*I>1G;n#&gV_{br^|J(u2#rnPKTw8x=j9L>a|K30Ii*!WIhLA@x2BOHg4mFK%(ik z>y87+jw`a#8;+@SQdjUxu1rt9d4#osTCq0nR}2m`1RrGVh>Gm>r%)F`w@A=hrR(W1 zXB7K`6RAny`f!ltLd$21oCla+^PcC)qr}VtGWj}O)n2=BiCJ+aS>l_e0GM$g4Hvp3Pi?j6MGR#{LlC^O!Xyv z?z;00^Ej+=+~xmwZFdZHmeF8x{8%68iXp9ER)*_z-p1rk^i1!bqCG#K?z(9KOhj*KM3ONKMqhnaOSosiAe$;@I? z`kFN_XkShXtyj1ehA3&UF3G}G=mUB!^m#LHAMFe-wi#rYG?|>f2X*>fYq#4cM?yY7 zBEJ;lGZiED?ClMJYu4Ro-=GQhvx=+G%Qx!6?w&Y#-jy?!Snb~GhUS>#hgT^X6+%yI z_UCBjM}meHMS2uYh=pG6=zqI1I}s=@{A^l$VY)i5MbK@0<-w(Hs#JTD#&f`Dc=P7i zoBfpwuwmYcFS8Si>%0FR1(sQEGH`RdQ_#}Osj3o_r2U~=M-`#PkRlwUuQEfi8S&gI z4nWE}HL8zE`mc5!)}xS_`1i<@1FY4_)3nm?10O$L;lYyEROM^(!>gjB#eM0fUkM9Xi`Y>?SfGIkAG!3U_Z`ej zxCENW{5#|U=x>2{&y|^{&By&SL`pS=w*TlEjo`z=ICLd_UQn?3t_&)|#CRyAuQa#^ zRQ}Hbl_H~!n>0w}s^uZ!!Kc{e;1;Fnb+ z6C}G6E#CKNM0Ko=w6}mbPoH; zB0i7qmV%dCp|Pp>4dqCrsmAELSJAQIV;Z*_Yc4Z7p1Vq3K15FXC0DjOve( zy#h!5uK5-L#VPM?gLsV?YK`#x!$&yxJm2Q!#7Wj@^6c0@^y;BUW-e@w;np3C+Ame? z`ZZxRRQB(YVjSs$&T`5H`?K}aiw0Jl-K3u3tp_?G46l5w7`Aoj{nDy# z1I9A3zWuN+tOT`hAvhq|cJdk+5ON?sHAujOIAiCt=21AnqeqX1AI#@5zjlL%()5wZ zRwFz1Cb!3%cHx`%%=#OvOMY^B$^6VB^@FSQLz5o`$k)Cn;717>_MHfWdKn7&pP*%2(SuW#cA4#2Scb50 zssy0{!iJG_5J4qKTL^1p!1U(wSQj!y0SA{#a1HW+l9E-(bZNK}RSe)m=mgLk1bCl( z4~N`jF82j3kTW#GtL%hbhjsWJ7}$U#e-qI8;YenDSM=^U;5tYJfy5mx!;x^D=Z0Sb zt4CKrSL28VVM4)4&0=M|{ty64?)$Sbf20BmX^(}XmI`=pvk(UYmUl#DR^TJ@m_eAP zy%<@ig1yBgXi_JGY3*^0;K)a9;NrHJwIqP1MV6j+*ovv#Hqcl_a=%TjIEVOFd(M!# zFAqEQZ!6E|D%#qzBd8O=WpwmIM?kbr0q_SXEQC}5L=K1xD%7>1h6Hrg2r4E&_b(1{fgQ@>kEbMPGN0Zadg7!YuV zX@TM02_85&EG#VJP!j(D@Wm3krYL*?ZkRKDFdFP*AdntTxFT40FZjUSStZ{|I7?bU z?S`Bmkv}T5Q;)2CF^yV9yFP$q=%@vToHBs9bG;PySUJ}o!!ZRX4dj0L{rmTo^4dL8 zoPxo2K*G5co+D{1)ahsx!&9St4-VfqfDijkWyA%|T@`9lHGzrJhN@zN7Rw|OTTj=W z{&%b#nj?eJBf6)%gw{#GL&~^0jQagb12KTxTn~QTT>^B==oJtSp2x)C)rpe}H^F#N z1h+d_@lZw{sO6sk9|zO{T7XYL0eWbkwY@ft+-Kpcj&l9YG5G*yO`UTCxdPKK)cnP_ z;VEDNOoNpX$5r1Fz%eN2;8d>!9<9{K*9v$V8ng3S#b$)yLEA9DQEb(B834mN${K`@*S1MmMLziEUosRUbHf6;hU{{l^*KX_Vj5K za{>83Uu(Q?f@({na2V80h-(41S!STLLyltZi{Frg0d(0ALJOtkr3)7VpnbWC7L8j* zmwrQGig0>BwRfkl`Wk~fF-wMwoE-5|`Tg;_BS?(RS^51Wm=@WrstLypEn0xb@B6*q zL%V=}!+S{)4?!NjAcHR+F9mVf@sJK=;e^IF@I^i$2VAgl!diXK9zpOh*xmFz_W4=H7CQrUqOiS7K)q=L_O-(IUX+obsDf2}U1rlf3y9i%MlhBBniqW+{a&*V^ z$IOfi@Dk9D2=Dnm=vASC32o0+$QdjG^p?SM0pbuRUy67OW+pfj0bQlvqUXy~PmM?# z-Y~%8S5V!JY^L4p@#{c+frL*`-z#!eaE`I9!)ki@+O?<9*gBIz1zDPtIl1{nm5Cv~ zzG#gFPDBYzY>j+9?FnQnmTM=i&~=z&(!--K{ZIT=op31rq8DD!wLBDmMKr^{0>Z&v z&&6-n?ZVuid^qHvlIVK}dCxwLk@E8L%FwoDE%80rH{#M@Sh!zp0J~00yhF_$7`d>s zoaf^!>)i@F)zQ$mtxBsB&Y7Ndr2Ihr?>VhF93083!y!&-d zgnUt@^wGHYVI}#2+JUgDLM07RzV$$fQp+@=tmAr2b9y_$_Rt8sNBL-Fe~+^9+q+rV zjxPn(OW)Gk1j^v^ryrEZi$DLyL7x5`Ay6Pv!J!clsXL`%@S@EE}5s#SH_mjPNwLk39KX zeI0j&Iz!2@X&dpN7FTT4~Fx1&?E#_v-0vO~-; z>(O7>_?evWYxZt+GM=c1-#tP%9=793(ckkcreE1fd41fcBVgfVHwoe291OAUiyGM> z`Rv_I{%WePC3jU~=OqR~A?kRsSzLo*cZ-eX7!N&g#?i&GW?Ioy84McKevrB1xa%l8 zf6GWqB-LO{+C=D=451L)C+D6+&U`;xMniT;$(wuEM~@K}F?F1jdE9emm`Fzo&wpvJ znQZ=deSHIkf2)O4H#@Pj9Z^!^tPEbpLW62vnNma6!_E}~zbx+C!59l&V28s7#v~52Lsk88r5xtO7BxC=m!oJ;U za*HCVJ~L z#6x7NC#xlCW@={(FOZM!C}^*^n(dV?Fx6x!@$4kciw&CHtA0QE2WwMkYQW6*$%?$r z*P?7H;$t>bw7!e)kkQv#{jsos@TzX%ODlpSSdAGwWyz@%ml>5nx5du$YSS#ETcJ^? zrz6Wy+Sb^$F|yR`d3}K&ZKz6pF!s!|YFJT$5J<1Lzb z(Q4S^ThGSe=K#%1J=~o}UOHYKK}tB%^#^uWEcVJwaE34Qg!759(k}M+o7WCu+Wy#G z`u>3anF*(lbjH_NW{9{750(i>vDMSXVN zKG1*lq&Rovv2$NqrTrg7ToeM zjrx=%CySFVi5liB0rna5J^Pm1E6VIJB4;uvjR5CrIaTJ4f6D?}G1 zt-i+&j-6u6R$1a+rDg8CH_s+O8p85U-%$$idInpEXaZ6hBS= zF<_qC9!$Qd!hbFNi=)*&wC?Co5))%8Js#ljDCON2zHt#he{pJ$8IN#6?Hr@V(!-p0L-L~scr{-Msc>p2r}s8xjFKllGLte`U&i=39W&8-*VSQopc~j?=`>h( zYbEw%TFLn4;_TvM^RLRWCf}Vvuv~+PQ#^t2y z=2_`n%<3yB*6&|+XuJEi*1YMX+Fd^Pn{7uAY-k6XL=?{Sb0qvG6g+sTD{oc$aX11q z>}pQcV|<@v?v#`&xawSGF#k~{i&OJ;N=%bFfiFnK`~0h_;snE*MEts41q{jJiAa4- z|J(CweZ;Ft zqpt=g0rLuNpcN};g1^RnRu#?Hc(x?dyn1<=;C1@M$juKdbh&T4)x*nrh|WYvJiq2w z?9BS6Z|U9H3FXS!wp&J9<=V|S{B}fLqt9CP2S2PV2l=&aERBDcaXQy1uofos-X}a` zD0lVjsp^{vKTEz=CkFUvD`MZU&#b#e@1Ep!Sk#nW&D5pb9%=Pp5K5BF%Tp_kAPA9-Zn-#| z^6Zt#RPN$H<~>S+#~uYmKi{#Eo%*w-?M~t?DEM+;0hfA7<2O5MC?CaOy4@5SmmP3z zvIn!MuXYO1Y+0x?Z+Y1r+hOH;UENUdW5?;|%8YGwPjrC&(isANQPDOlOMZv_+vmQ# zpNTMi|LzU@mXB0wglDm-hpVi}B@Ev4C8ddjj<-+g(pGm=2;~j+>vuaaUPVP=H}NH& z8`>9&jz4wq_`8tn_C`FL3PQog4MVju(}@}8 zpY$~EbVPl%)IzHoE%^fvAB}4@Q@7n!%p1FI>ji#z)AEhm)BDokM%YCWRnw*591BC= zpdmCkp8NE?8JV%@3}%%l9^KD*Z0T_4_;_AHo1#kC;k1-G^*TP!{>6j5`H!Vv)J&YZ z%vqBQ?9aWFRSP9odsWs)&KFefpnmSNf9juik?-Wq4YP5j^ZLm69Tw;x4OyJNK6Lup<4zhGbEam~#c6#>+Ha zSnlD*wcfn=)x%MX9j?00Qft@6hj5vbtz3u+*7zx=N5{(7d#8Cxm81+q(w=tL(4ew3Z zUbqaLj-{eJ!QeDUA1`2VVip|?DM1{oz~67a6`o>Yl$hXKy_<} zAn}vv&aKi`?+=~&*Z0`<3~!{$&%J(fz(y;YylC1R%Pbj>|2cqzsJ~nOHKT>5GF6bZ z(w=;7BldMJ5r)(@_mxdadfOYy<6=hpoiKi_N>v=FJDXS{h{_+e+?!(&6qIkCE}e@W z)8kXPtwPXw?ZM2$yCPfWwELE_K3rd@XS#Z7rTuz-C1jhMXYkW0Qe{MU*u%&^eHKb( zk74Kx2ESj(nPZ)tnpCPby>3+%oRgJjJ1X9uv%c|J_IY*2%CwSe;ot~g`tyc2^euy8 zH;g{p2h^Xn9^s}VB6jHeVrb26Wxls2-Z5QDL&A4NNF=x3sN_fSdV2(3!0m#u)bt#m zLPBLNV;;6I$64+TkXtB)bn#zH+1q9QwpxF6sPO7oOMG~S0J7t~n@3XXm&2OJF)lRQ ze(c!TW{>b4^WWZljyd&q+N-Q;Wi<86qTgWGQJ&Xg{zPBU%W>z@&aq>|KeVsfT{*hX zm-|xJpfhFpIX*3EAu1)DR@E>WyqtDc4|U45SH2txPg&m9b}s+$gOFzMpk=bvCwzW? zG57kU*Q((2X4<2h7t)?L3>OI|QmO~PU!Gp6!Aq4Zp(ZU8Y>BZI-cwnc6g#Id3!ges z!SBPIn-li!WJkkH)KMR$09_3q%O@KSq9@#g8l%2!F9-11zgG=1qfR(p^9f>RyDV`4hTGB95>^Ljkwc;9$JD!i{Nz(h~kTcrD)qb>efCrzAh(++O@srw{PrPlf zP;V<2vN>`}#$GhQNUA7f6#iX*YLM3F=4<4cyoQ$E+2EgO6ouOs%B3U`28cjnArp}5n&cFd!1I?R%PskoQgQg%cf+tbKl849dCN}R$8$}gq&c8-s^mvnPR{Wp^nnx#-P9RwW=K!Gya^rHcL8^;Vf#%10ZT2d zGvFT<7!s0Z^-VzF@ameHB{0E(0R*UVK+xW-PjBvs@Be|nrl+PJ1zg?5 z|2M)O;^RHZmL&S1o!boRlYyVVfkjaSG@KHVE{OC%F(0ejUY7c&ZUI9Dy3(eAxG`N( zLf14CjGJY_b~eLa`&6*;@c_~GVt+&4vt4n6rDFy67gs%Ky!Bmd7dMZPG~RXZ+XGQX zJupUfe$FYO=rVvQWz&Y30a!amE>s5%#(BFTAYO@r>E?ZKcj~HQ2utmswQ$UNka*|c z87Mm^%$^1>&-{LS+--3H2AjD^&N)5>rXi3haUVjj3Bn<0yo7-R#NKYbwijnQRBF=# zFx52$N`*cdB_&bI3zPBlpon@A8+)Tln2+z&Luk;)v*lN$c9y|?l0O6}qa?otVyDjv zc{rBLyRicHi~_(d^{>MHiY0hfrRHe;2%_dm%!5|o(G}=x;szwa14DQz4&1ppZ&-SkE8K_GSRN>X;vUyty_@nDd9T?WjqPl#iw@WdG7%kdzS_d;v9f3NhWF zxrTrQemXL#NV<=}QzEKE{ch0gK*R`1%sq%_KoaEZK&%BcINT}@<^Ca>E8u6JZ~B6$ z2yiIm7XWZB4&?X1Z~Cn4&>(OMn(VeiWf3T89&jb_k92Q4M2Ud;A_zuLGsw5M&;YSS z(boZ*|7&q57Rg2X`_+f-Z-BL)@Qo2yN~F$1vET@8ZVVxxfhTbZM3%r;OG0XM@Vp7;tS_L|dDL{otX$1lAwcdkT83V^LP6(9{mBNG4_ zo0VPQ%DjeI0F=55TceQ3A_efx8E!L~m1;<51iZFMkWQIHwz;~drVHFV-m)9?HPK53A=!_j7KX-Rb^xGP;HDNqvM~wf zzHCY&+ZWNJf>!@gBZ$aEXv*$SX;Bl1Q%ujyTnAWFRZq`LO7!oD6o9j`?oe+G@IgW0 z|C)sea3sV+#Q{bRUi^olw^nMIkE(y~py^V~4xiBoB18%=Ve_^ZM%RTOVy!^1y8n1y zz@&-52Pk;Qxa^1dfsD5*I9&@~g8=j+1@7;qk#+!p&WQSWJvRqk>3<>+Y$UJ zv^5@3|G*dWPZdVV(G-14g2D7u*8Mpb+yMCU3ESVnxBC9Tq%34-`|`=4Pu+mByMN&r zVprhBPukQP6r0^iBpF|uZttpyghy9D2!W)87CJ{xo;>OA&2a?Kses!~St!2*LBp_K z8kKwn*1tK7wq1zsAzlJ_o&g1K(8WToCa{U)-RL7=!31$;mZEY30K4E*gXC5<$uD1i zF%u~5N{owZ0}RRU)`uG$9C@8JfO*;#v;V#JzT&(3i?heMjd?ppOXJ&Y;u>w@%xvPC zltweL0@W#dHv5L}va2rvsZR}qq2AqJnP{xH1sRuHT(Gx@VfB6K`0G!u2ni*`gINPm zKc1jJi0}w|fZz^*c1&lQ2J+>kq&`>~sx3bFYRiYD)PQw4>fXOEFg-nOspoD7v|@9F zN$#j>Ykvd~v9n6=aP2$NE?Cp6%+}@{hy4iN0*s%EvvYuOEL&)`XKOh4A}_}}&HJLb z6RDE$2376eqJx0*cLIdlBMcM=TxQRM&qJ5U&f~v_iweqxf$fN*k$?qy4S1eNAOSq}Mo@yU_tjvZ&+~%Hcpp}xJ^%** zTJZp%SWvQN00?SH-#X^p&fx`U9Ey z5h#fPCL|;#CT6$^mV`(Z4tmTMz+OAS+M)MnB@7VY&65M)9%jbpT+Oi>?`;UnY=z~r zGkO0PGpHjF%Mr*Nh9&uFzc-l&=T}=8Ga=On!g$p5^%X$9h=}Lz@2U+LyVVjie^ke9 zg6rceAYmJNt>OX%Y|;=&2!z=RZOUJ$QGXr|9WN#uxZ8QeHbW{Z(qD$Igg%K5vFM+V z8l)%~lmkr}nAnm1E_nlP1KOv6YfM6>jQAX|n70(O1038`Xxs>O5hUtz!Qy}eGxtow zex}6%4e!~Be+put`xOl>GF1+ve|7i7(J>c;Q7T8>-DG(^Tyl$a=Dh^w^b?XJzpDU!X$LO5Sg%|agDT?v` ze18D!vR)%fWE%i{l524Ph&lo94#^Z?`%{zYx&Vt!=#L&Z1qa@}A?spJlr@TjJS%`3 z$^y)yAYzF7qN8Zliln{4`7+y!?B$W~Xsh~W_goHUJ@&Ji>B7Uuag{8=o6!Hg@=cT@WpF21-5*&n)+@7e-E>()tNa&vMRT; zsoOF*AV3?Weg3(>z|4Yy;J5?iXhqc6TRVnftrQs2a#$hxEd@k9heu3>O>fFcF=lUm z0B0widNwB1AAaV#@+>EZKT(mhcGnrG9DoU9F!SN{>7#jz3DA7AphK2Bx%S%oN$ zikT%JvqJ*!DyS>um1IHOVCXt*f$EEsp`z^U(4_MVuhp);OaSR!7lnl0e{~7xdu!;j z|B^M#KPM+Eht=1sc{8|gqG{2|R5L^L4IIdnd>W(rCWOWY?v`or%2r=yyPwY;dGc=9 zGHrZE@Yr(8{CcX*pVdKLVy63SEy~!5YbT@ue&o|-Vf$=CC3#zu zm%7o{*plDH*}3x`HE<~**aJvN10k_=;lG zoCFh2D-;qQk12aUemx=cOw+kQ{!LrHq2`Tt$h~R0@A95@vbksCuOd+IF;%~^;-kOy zg@j#_OnTgBT#-waBe^B;H4(r)N z7?+^OS-w%iZt3Kc!xBL(ffM@OPj8DK{#R0D`a zc%2jWADh%XE9bo2Uq)zX3=AArCI%j}KD$jb?c4!!p5Ktg9u{zu=Z)en8x))ddil@-(^W(A`;Trx z-D8k^I%+7OYuV<}-!dsC=Io>0?{2xVWj2TQ2^tjpy&G<1N|LRghV^Ux1VC5hGefc`U=C86iiX#7h76lFq z5o@dbzxKd%7WPsA3|90B#6|4t`h8vZc>g{BjI5mh@58T=QjQdhiQaAHQ2>X4VB_wS z)5-EGRNx$FUw)xa=+MPYj~^x$E-qW(g#m@WrfKIO_U>Ohdvu*2n-|wp=lM)7oWCRc zxS%A;TpJ`lKyPMem-qk65g-o4=47QnbLqW-L#uyBfOI6c_x^c}<=~!#7Dlno&{si94cuW9m$+;u%7boW3!hRFHH?7AI1bjB`);d| zkISari+A4ad(M|)4dXD&{E{l6p`rZq>wj(8x(T**=28gwgc)uS*X-jp@@)N{FUV$P zHM4gM4AHXl`AKl+J)p{@M_6CYk?U%mIe z$E0}iIN;K8BDYqb_}06(eBZyHPAIVcJ3-ZyG1LP*oNpF>^bDJRp(j&)ruOsOwyGeu zyr4u_NQf>3t1|Js_gWe~#(wjDPWIn1PNuJdVP9|f=&Yfx@igI??9lJU?!4fDiKZ=n z=QZMwvPx;iI{#P{#L*Ksx-pW? zt|%2ydH#=K?lNNE8xgutGJV{NtYy5jvjfHpEgTVg-zZFd&DcsT;3jp&E;=QyeQE;=_+`Q z>$ZYl28P5)lfpCCQ>R$ji3Xtwxp?B9K96$j)W`Sx>y zd|_ExGCZ&>4OmkHvm-V2*;+3VbSfJs_@~CZxQ^!4iZsf}TAw`e)a`U*k6U7EmdyFI z^Gt*}thp?$SDOmHIr7tStY0rh+X`oe67z>Ec-LOVJQ|s3ntf~f^0eXsM3hma^5zio z@y3h2d+R>)PB1SLYXub#1ud<(edjeHhOV=?i6A$3t}Oh@`|aM(?l-3A&tC`)eSB_4 zhLbZkys)tF6rrH*<$DiKQDGW+j!>&-Ob|yt3NzWfH&!&4o6#gKl{iF%2F%!X*rvu- zdM|Tqcxh$~*gTI3GybzmyWc0+$)f;8HQzfaop*eh-lK2b?clrM|D+fOophxN`oU|G zy!erQZ7ouz?^3DzV1Hc6&4z~7uA4-Bq?!6Dge$6t@meUl{K%FmZdvkBAR`pK3V$T{2mAqHA)QNi?!W;&NQGfl@8xQV82$o26 zfpSQ|aUAEyuw&zuO;50V*&eLjcaxeC7#xLcRuIJ{d5ST{1HD{TRZGJ%qZtcSC3AD? zMebgj;e99yxqzx@Uon9PCCnDcJ(0out?Jj;GZcuV$$n5!riHw<(jVlduRZwHTb7x- z)h$w^`}TkJbl&k){$U?i5@ltiBrBn0?>)+h5OM60%#0&@Q;``e%0WhC9kPz>k%X*H zI$1y2J2N9>J=a~&^Yl+Il{%es-{1SXKG)~-zA#oC<&iPeEi}xb3{0UHXrg{be(-Rh zR`b~K zFf`u?JK|wS(55riUwe75j5zy=fm6kh^Ui@hAR=vF^_KHew8Uetg+1wOYC9wOUdmX@4hJMf7AF?%Bn9m?>yZTN%Q%YCw>p=e&My!`97N6oaqm-%KtuVmA^ zj@{V${cfkSnA;VvyH3t?^-9s@lFSz`CLKFF%@YlMuN1DmNU~IY&n-Hl#n&~Nz)0|$ z8>t#9pONWzHNp?C*0&B=mYiO}xgN=z75^mgRAI5vkSP{*8iP&Vxj~X!PvhiX*4JCp z)4x9Wv!18-<)^D5F0i#6CqMUONq@iy`p(xixTyHsnR@MU_MUMG8RU{Udm;MkyPBuj z`Gf7Ht9?NjfhL%^)S)*^$Dp83CM{rPn@L$YOrn|(T&T#d&~}yp-W?0DvO|;;C^MqI zn##(O!6EaLH$XALx9)g$t#W*%a&w!w%&mHcl_^|A=$M#1iO~8ngRdZ_?ytDbsK0<2|TeQ)%S_X8M?VSvWf5C_agMRgj11s z_&IshnO~H0uQtvw<3GvC*;;M78+|*kwr%po2Z8TPPPpDJkyMwW_i|8tK)ydi2;kwg zbacDmDMa?Hh7LnNjJG^oKL_Z!TX5<#iZ6W{8%D%E2*v*blPbwr04P=2HX*3xNOLX1`qoyW?UyUKm7Cl`NsFW!!fkFg(G&jHd2T~cAn?_~m`xTmD9?v_3M zV2u+uINjgqwQCodSDiE;07X@1Xn^YY-Ia45rNhkAEM4rNnj9ssnd+ll)`CH|77A+f zY#a5KDJy#vPz!I9xXbA0YME6ki&cnLg5y0GJpG$1UMg#{+Ih&LYmlZ%?kLC(!{`>WjHdjcxb4=7UlH0AbMgxjE#rN4;V%>{>JM zVhrbM<^yakiKtkmx+ghfu3i)1Xb6&)7!{N~Iph%6+D$6TAOI0^@A)#KO&D9XGkvcDh znT8XC$O%$penb8KspK@_Q`FRI170VoFMOL8JGS&+L(JK0uk`MiT)!T896n%nj)n=U zb?6_vX50~zwT15l3EV|B;2%d;@JdNB0#N}b3yKgHMpP&`Nf9Nr*_xE%{0GGO4fb*v z2_PYGWQh!HLPGu)JJ=p>*s7%YOeP%wGu1VV$_y?d8{$iRc#mE76-S$_H4g~}ncP>GC zX`DJ_hZq703Lv`JBS=Yj^*=lbyQ|*xM!KIJ3?3Mnm~;YZZ>ZXh11|P==OX*b$jMto zW1n#<^787d+}}-puGthZ|KQ2@X|n%vR0w4^WYYv(ZusLhUlh+P*|q!Lvwp3tDjgZ^ zIqo?xnI?XTIyNAfHL??fU5cE1M2~(D8im=I;yd?Q6Nan_8d(n4g@R>3fX;0Q3vf$q2WMV z+I#+UxA74t2tEYSp)!i!O2z!>i+z z2@qWDFR|XLDh%BYAvnMWMG)FwS^-jVd6$aLYiFlXv4poX<^GBBXL9y!pr$>Lft&jlt5L7 z^+IXu7A(?%kpi1pvmTU`# zG}n`(S*+NVKR|Hft5+Hn3}Dq)0d*P(una^Mgxd-ziFQ^pDRFTx43p59uer@zho=D69?r#uKyu*iqIZ!7(WV z%OmjI_GOsVhSV!d_4i$@m?#UwvLSls+VBa9HGfLY4CeEZ4QyLTH4TeDqv{N z!3bgkcI}XiLxDHB_PoXGc!5BZ$wz=mRBz<@h+%dshMAkU>1b&ei!!7G2OlhXlfnbI z$h7L!{=O_Sg2`PKcT-uFf1C53By$XPfD!Q#hx4?&<2Fm(_R=Lz&L_tPC{D1!&v4L{ z2jKZV&GRzZGDw4eb=?h`yf?M>r@nd0yx375vn~(QPqUB_O3L(WK+MV$q0otpzfE+U zxuB%cpD4+*@x((W*Yh1tM~B?-5Ph2~E*mlYnMsX?fk72$3Mwj3AWO|5xt8mcRP1$9 zK+H=4q6{5z%)<*lCgwZS|TX(^7Eg;D{mVMV4awtfer~?6S{JBkfD3W;@d85 zEi3irpUs*VQXa%j4i{?M{<}y;+AH*kt>VpctkiDp1%G~`;uRmUg=NCA!75h)cp;DW z>OEx2gv#J!WqJtDP#oOfaTld7?(2wM34oPV#+2zt`gjjL{Pc~c{j+C22X8O=F%}wz z+)%PoDou|a=>iG{p)tt+!5IrU-Xo}3PxluTIB96Pgx-hjH$P~dq2;6^`HvJ$$lR+5Bqq_ZpuhUCwiYAt&$U3z*{>x?^zY10Lm`dxtGKn;ZKQh$_`m-7tv2yZ!9~}<#dc^<1Wys+dLtS&{EM=thzt%n8}(~TsXKaT}hU9 zX>~~Lzo>S#tfWMGiSrcVFdf&pb?c_4B#llOD4C%=WHw>_MZ2%&F&O{k9=)<*=E3Dh zq$;}fmpHNoH91Oup!}quz_nkl6(eeH41?XIS{7=$x>jo`PQaK&(oI&nR%zqs@+D~f z2a3&MXIC$7h}yg-NF!3Aclsg?%_G7B?C2_OekcOkt+t+GVBqn^fsztjgZHl1NIc6( zKxv>#W`PgPKA@yZNKEXmTplLENV{m1@>UI-&n1~Ja~;j+J5V$=so?D2mlR&*9w^Ku zK7^SXfI;qlo0eEyvNSPJ{qt*phUU5GTdBVnNRlPL)netl9ZChO_C3MAMnkwdqNB_G z@y^Rn-Sh?$U-l(027Ahl6&;2{`3zm#bs%9cxGy|Ousw7A#6=nJr_hrW*R4pyIG0or zZVJ}GwPSGRaR5sXo{vy7MaIMsA3t{A1vsc2Nbt_6#+?&coQOQ-}f?q|qc635w99tr~Jbp8KFjJ8Vm6a|1c%Sg}DV0|x zpIHSsB`TYP9k>aivGbVo8XC9q8AF#gc45t2FrAFgK4Km}^Djh;IGgucQ0C2?<$A?T+bbZIqQJ)OWCk*V5>!DuW6%jgdTsA}`MJCe^PofBS zVC2)M)BUFC!m4-PxwY&)LFr88K4TW*=+V!E89%g#D=K{(EG+!Ca`gJou}NKh!Z%zw zzCn^}^vhrFqLlw-45Q1>6e9oM^-t5~1hS!%avdnL>n}=vTXoyjdyPL#QbPV{-vj1J z|KP9krV!N42>Q*4mq$)ypb0}Jp$JP3nO9+itP#o=0`P)9 zld?I@1v7%q%YVC;xR)kNa>rUjqx0rd>XG9zkB&{)S4-|Me07PNTG0Qh|3OqJP+pdw z`fyzsTS(k>g)ukEmeB$0F56Ww`CwjIRr30`2s*aC|CAsA_Z)7kI~Eq&FhB;&g3VML z<=g&FZ?U%?2KK;Q>v*26cIDbNYv^Y%VtX6o-VrV8ux3Qz@Rvg+dbqQ8%ZZ6M&#v#S zd7V$1uprUrpNXxVC5DhGz2W60W*PiG%x5%cFL9`D1x%m}KF4V;9YOM^RkZF(c|aA8=( zKRZ1$)BDb8oLCwD6VG*ZyDbGXz~&MieLDH~g#Ii3J#0t7;GkH#1~e&ffI1I>{XQwi zwks)py_yijFD!zS^qpr*6?Xw8zRVtvwg{OLi<`aZ(l3_w(+{n=OkDtf9BPSgMH|P= zyoYAa2P^31X<7A7s%R!lli>Pgy|v8sz(V4x?H>wAeHx%5x!)0v#%A5W0N-egQ=s;i zfT@@z(tAK@RkA(d2XNr-bUCKFkuN|gY=b#C47#tx%dV4UtHl>r9lAiFw9)9<} zP6>qU-inTiL9R2Ou^#5K(EQ6vZC7`A}g@P~`=;9(Ua|bFZGevX;kpB_B0WjZh zK=u@gR3j1i=&T38cG^HP_%NtXfar2Lv{nd=inj_vpwMoW0lJD!kmS3>*oih}sEguY zpZw%j`k(DT$vX6$f-=#k&dyNY_RzP6St>Fs?FfQmM5jnG`Aw>jic(cKxQ|!2Ynz3Y z^m;v+?J;SQS4byxX&iKQl~GLeFMV|?K0HY_U}JJL0yd}>qdeC94P(mK%r|~0(97(W zFBlY=Q7L+AQdEunNsvxx8psbSA+@D$TlU`Q;3mM40GKpk$LV;dtrm)<0cb74DVf_o zs*tN|Xi(X?IsyST0iG%V^ZnLz)c5vs-nZ{~&$V&(YB{ug`XMm&VBGFoTvvRkFs;a} zT|dxh9uO?KA5rwj?kr5%*?6Q=CR)@^sBMk?{6CPxF>L~Pd1$hI#oZur6BI#FqgcJi#v%%68y z@|JPc4rCs&%l0ssyW2z%sbMuvHs&=FjPKS?ZqD`BB2+K$Y-zvVJb8u;{l~no=@--3 zCowKA@q-QlIl0i4kpMy0W?9XaOttv*!KL3^@lv}r4ofWG&Fua6Jj1D(zhGSrghHBS zoxNoa_RO{5Ozrt8JNjd8*9MyPj-|woi1s;(hV{xfH}f&0>G{GroO zgT0~PdDovQfLOulF=QNW>uGWbUfQT-wTNh$0Cd~KkpORaUw2>MejyN+?+WrIWn&0D zXOY(Y*jE4>AjoTDMbTD@G3v{sw@47|L5ZsXSJ~&3e_6kk~^O8M0^w%|D5V$HJz|ED5zV-uI z#sOW~<7OxVJwlu40Ko4C5$-ZB;t5<1mZ!H@2=F5@jS7-=B&OcZV=8y9yWd=NGUn27 zQ!20x7o3-^+2B`fK4k7bTu$2`k9Nq)x~Qx=7)en@w^A|TIX`_C_1sh^Y9!YR*QXit z_AUYCEKW(85Xz}*Be!XR`>7K!vXz_o^5vWRCb;bqfIkH{t@5VW5mU5CzBAs38Q$DR zTDjhX8$ZxK*&9#%f-FQ)GK-u=`@tb;ncqaU_QRVj9-0il;u|Zw*LRv_XE)S0$U4(i^5C|n>HP2|R$foS zX&1Jg=ccSv=UnhIZ1^$&$;`(YaO#hP9by z_HAal-(o`-Yg)`LC~BglTJxoQ{Rfw+RxbERsKv3oDbIS088o`1cL(q5#RcPKJ$jOe zmgX|+UD^lf9PM#43Fk9B{}YNW9=@rr&e_D4QSyp6Cjh^4nX_+|-^f%+iQTlynNyrA zJu&h7*EsDGE93dv+^KB|0gMxs7UAbhd*6nzp$5t23%`23?`459PQ&Gdbr`)AHcXc26@*x31n z#ZzMi)dm@DzkFI4s$Y=#c+qO`cJFEv`y+;HGEg^#MLa2U>GIYjut|v}ix(7pY9pbQ z&Ed?MW|2`nEDO{}aqzw8gR*hZ(=_Jt3O!2YDnBnylf%m1UpARD&7&|CDEg9XJL#Gk&h}(6utLNI8xo|wvidF?y0NFtrE;{TB33* zJ%rYQB^9aTUF_KK7Mh_eba#|f|{9~pDP{l1*7|a?;W(0 zDxyg2XMSB|y}DXD40oRS27R-^rVylx#FMW zNifzla<^Y1 zS{uICJ1!^UegtL|U>|3lm_3V*jS|t)>wU+-@)t!N*+2E#wpF<>t1}-7rGWY54md(y z&U*gu7vO;Cv%SFn@2l&)ieh{VE&o#LCgI@2$+ddD>JP6Pj4B42D4Vy*|Hj+w;bV%Z zv#0*g`Je-)`wE-HfBputhLi;fR9A(~@xMbrG8*?+wpPXrrxmR%qA32?g~50I3Ejd! zUkm&7j&k1b|Be0qN62V+qO+bQUSK_+g*M5xk^1MXxXIW)7eK9={KSv*Ro0ak3x7!n zXOP~S_J#G?apeR6ggw$#{{P?TSluSIBqi2Hq27P^>Xn@I&oc5_iXf`4ev86RXfa2G zd_zO@L&*9bOi$teCJJOm=|^_4dX*V-GxSDS>>HQ}36%2c(Cg4|`HBRN%b`$0Js*fJ z6N)+#O|G;j;VVjY$P(Y=^T7L{>&Tpk#e_%Y7My>dvU66YS(uL=rF5)&iY~HqcV^!` zSgPr@Zj!{K2l%N#ed&7}@~`v)!X(Krc8@pKKu~f*_z?)ZS;b literal 0 HcmV?d00001 diff --git a/core/nut.js/.gfx/permissions_popup.png b/core/nut.js/.gfx/permissions_popup.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9be887e191f58e864f7244fb3f833a47828736 GIT binary patch literal 205344 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
pLRp29X57Z1A$@WlCJ``4Hsi^@x|Q`W zLdxCvG&PU?snJMVn!I$lbz7EVA58rxr*abm?1fVL#b5nwHfXje+Kym4;!=|5BsUDrK zm6PyVJ-)2j@M(no%-6-$3jF6#(HYaHzB(I!+(Dl=T72=FA3uKb#UJrcdwYS-)Q#OJ z^^hwh?!a`B+Uv*5`LvTAk*_E4jIQ@w{kno_Pm02`4u88mayOha1V+agud)r9oe53S zq-wHm{|xmUW^^~B`jPHm#l`XrEyGZmG!^O_ zlUvi)*7iJ-fbOu`MDkU!{IK!n>o|V-=EsjOKKj%gGjYlae_N+&3GWtnw!X;a0ckdB zBiGY~rS8xcc$aQ%q|YKS7cu*rvg`Lv8B7G5h~V4I1xx$iD$;7%wbs?brfXF;OsirW zph}kCWHbf6AX-O8eSJoL*St!BJ>ztFeaL_ghSN9js~@D8(Eq&AKO3<2?Ov4k0{~r{ zbRFT?*Ma(?&5Lh<Rya)+dj5+l-U2Mvf_i{w_u z^XhM(gggDRw62o@Fq_rZY5T+$)x5+h;1-E7>cCAxkx$Qzgi6X#x_<%M&dq3&S$+bE z6%N}YBNHFc&spsCc;%%{XX>e!@z^BW8BE$v2vpA5`cNFSr?u;3QzC(EUpU>C;x zlcn`Vx!eMpI(3?a_`FcT+s2;7q&|YyJD@I)MZBZ~!r`J+L;K_3;VC2iCQCIhGxPqW zw=aI5dCj68b{N!0_BcNJr@!FaKeR_uvrp=6Rj-eF?~*GmpAs?oMmbIC+k#(9<%cB~ zKQrj>mKR`!&UtJZ8`aBXYRA+OkHoeF-Qx0kj~o49iZdnRH=X2Bp0t}>#?7sLR95bG z7Q=E#BfNcd=Wjmlv^6vOz8~%7`!|oDeE!qN8(t2-+*$)Q_w+cEdx@EcsDiDQY49Sy z7q~t5n#+aNixSW$?HFCUg7MfBssmo1OomMlg&puapmbFfOb=I)W}=< zXhDaOjT+9SU*k-13WI=Y2d>XJ#$Rc`v30C*b=A%sgfN zQ*LalpOPzgtBGGnaseNExu8SC`PIqXpz$<^Dpo?DXIdQpWhr5a4`pmHiG8j1V}8wN7x( zQ^53PEhvyppUqo&)`U~J^!3ED<5yaG={BAtH+aYVR&I2w-+2uME4Uo8c{C78{;S7s z#6pQP)I5_B|DN)3%}iMU>x5|YBuea!*lcOpKg;49qN9TLk+p8w$!1-L)uEb>Qtv24 zz(a~M`3uf9iL+uT5hjPVLp4~mbEmLA9yIv)_~Ha?JIpzlh>IYWPrIb3*EK+6(keHh zjsBi4j5{SbohnP_e8~ngKKta4FW!6n19ut!{qf=RS6L~Z_<9=XtJ9gGQFZ0u^A(*_X&_4E@dVo+D<6eR-p>o@gAx9Qu8>t^* zXd@ry0ETS_5l-E+6(&k|A%hiWoykC?EqH!_po9cJSvyNIL~TG3w&n^Tc#<>mcog+p~F@l$0mK0H7Zk zacsCqTUNnJa=Td?cErTh;o%vm^ns{k*r^IB%X6M~Q?dS?MgKO*NUhv%sWu|t==?w5 zynFoTkN@rQ@olM3Q~|$D+nCbLF1O|sk|B)KYiH+i6z0&pt2+SXO3$i89s2oO#V{u! zu~Yrv+s_lDVm@K@qI6*{h;;t)-?}+xKygz&vIdxOp{9LhK_NEMhPGo(9)7q9xL>c_ z6lDW8{9TNSS1jYtU`rmZ>1#!5dYrp;-_6l+>yPzRX2e2FdV-SFCgX+M|@ zN>Ig``H;<6c(o_)UROgN8@+J5x#H2mfm3!H)U{*Gv7QPkN?fO z_VKm;s@vSmPzz%GP%)s3S(e9)Yi(g9{VfiE%C8@hyHv)?@Q1E!GCI!26LBokg3oD5 vn(!}1Di+biQ5{+9Q^&{Z>my8L9Yg;I_5YWX$1J|700000NkvXXu0mjfH9pM- literal 0 HcmV?d00001 diff --git a/core/nut.js/.gfx/sponsors/mighty.svg b/core/nut.js/.gfx/sponsors/mighty.svg new file mode 100644 index 00000000..24d470fd --- /dev/null +++ b/core/nut.js/.gfx/sponsors/mighty.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/nut.js/.gitignore b/core/nut.js/.gitignore new file mode 100644 index 00000000..733cc87c --- /dev/null +++ b/core/nut.js/.gitignore @@ -0,0 +1,144 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +.vscode +/dist/ +/lib/**/*.js +/lib/**/*.js.map +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +.idea/ + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Test data +/lib/provider/opencv/__mocks__/output.jpg +/asdf.jpg +/foo_asdf_bar.jpg +/asdf.png +/asdf_bar.jpg +/foo_asdf.jpg +/.scratch/ +docs +scratch.js +debug.js diff --git a/.npmignore b/core/nut.js/.npmignore similarity index 100% rename from .npmignore rename to core/nut.js/.npmignore diff --git a/.prettierignore b/core/nut.js/.prettierignore similarity index 100% rename from .prettierignore rename to core/nut.js/.prettierignore diff --git a/.prettierrc.json b/core/nut.js/.prettierrc.json similarity index 100% rename from .prettierrc.json rename to core/nut.js/.prettierrc.json diff --git a/CHANGELOG.md b/core/nut.js/CHANGELOG.md similarity index 100% rename from CHANGELOG.md rename to core/nut.js/CHANGELOG.md diff --git a/CODE_OF_CONDUCT.md b/core/nut.js/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to core/nut.js/CODE_OF_CONDUCT.md diff --git a/LICENSE b/core/nut.js/LICENSE similarity index 100% rename from LICENSE rename to core/nut.js/LICENSE diff --git a/core/nut.js/README.md b/core/nut.js/README.md new file mode 100644 index 00000000..b63a55e5 --- /dev/null +++ b/core/nut.js/README.md @@ -0,0 +1,3 @@ +# nut.js (Native UI Toolkit) + +This is the core package for nut.js, the one package that keeps all the other packages together. It provides the basic functionality to interact with the screen, the keyboard, and the mouse. \ No newline at end of file diff --git a/e2e/assets/calculator.png b/core/nut.js/assets/calculator.png similarity index 100% rename from e2e/assets/calculator.png rename to core/nut.js/assets/calculator.png diff --git a/e2e/assets/checkers.png b/core/nut.js/assets/checkers.png similarity index 100% rename from e2e/assets/checkers.png rename to core/nut.js/assets/checkers.png diff --git a/e2e/assets/close.png b/core/nut.js/assets/close.png similarity index 100% rename from e2e/assets/close.png rename to core/nut.js/assets/close.png diff --git a/e2e/assets/desktop.png b/core/nut.js/assets/desktop.png similarity index 100% rename from e2e/assets/desktop.png rename to core/nut.js/assets/desktop.png diff --git a/e2e/assets/dot.png b/core/nut.js/assets/dot.png similarity index 100% rename from e2e/assets/dot.png rename to core/nut.js/assets/dot.png diff --git a/e2e/assets/dots.png b/core/nut.js/assets/dots.png similarity index 100% rename from e2e/assets/dots.png rename to core/nut.js/assets/dots.png diff --git a/e2e/assets/equals.png b/core/nut.js/assets/equals.png similarity index 100% rename from e2e/assets/equals.png rename to core/nut.js/assets/equals.png diff --git a/e2e/assets/menu.png b/core/nut.js/assets/menu.png similarity index 100% rename from e2e/assets/menu.png rename to core/nut.js/assets/menu.png diff --git a/e2e/assets/mouse.png b/core/nut.js/assets/mouse.png similarity index 100% rename from e2e/assets/mouse.png rename to core/nut.js/assets/mouse.png diff --git a/e2e/assets/moved_trash.png b/core/nut.js/assets/moved_trash.png similarity index 100% rename from e2e/assets/moved_trash.png rename to core/nut.js/assets/moved_trash.png diff --git a/e2e/assets/one.png b/core/nut.js/assets/one.png similarity index 100% rename from e2e/assets/one.png rename to core/nut.js/assets/one.png diff --git a/e2e/assets/plus.png b/core/nut.js/assets/plus.png similarity index 100% rename from e2e/assets/plus.png rename to core/nut.js/assets/plus.png diff --git a/e2e/assets/result.png b/core/nut.js/assets/result.png similarity index 100% rename from e2e/assets/result.png rename to core/nut.js/assets/result.png diff --git a/e2e/assets/terminal.png b/core/nut.js/assets/terminal.png similarity index 100% rename from e2e/assets/terminal.png rename to core/nut.js/assets/terminal.png diff --git a/e2e/assets/trash.png b/core/nut.js/assets/trash.png similarity index 100% rename from e2e/assets/trash.png rename to core/nut.js/assets/trash.png diff --git a/e2e/assets/xfce-menu.png b/core/nut.js/assets/xfce-menu.png similarity index 100% rename from e2e/assets/xfce-menu.png rename to core/nut.js/assets/xfce-menu.png diff --git a/e2e/assets/zero.png b/core/nut.js/assets/zero.png similarity index 100% rename from e2e/assets/zero.png rename to core/nut.js/assets/zero.png diff --git a/index.ts b/core/nut.js/index.ts similarity index 74% rename from index.ts rename to core/nut.js/index.ts index e74a354b..91db9160 100644 --- a/index.ts +++ b/core/nut.js/index.ts @@ -8,13 +8,7 @@ import { LineHelper } from "./lib/util/linehelper.class"; import { createWindowApi } from "./lib/window.function"; import providerRegistry from "./lib/provider/provider-registry.class"; import { loadImageResource } from "./lib/imageResources.function"; -import { - ColorQuery, - LineQuery, - WindowQuery, - WordQuery, -} from "./lib/query.class"; -import { RGBA } from "./lib/rgba.class"; +import { ColorQuery, LineQuery, RGBA, WindowQuery, WordQuery } from "@nut-tree/shared"; export { AssertClass, @@ -25,34 +19,24 @@ export { MouseConfig, ScreenClass, ScreenConfig, - providerRegistry, + providerRegistry }; -export { MatchRequest } from "./lib/match-request.class"; -export { MatchResult } from "./lib/match-result.class"; -export * from "./lib/provider"; +export { MatchRequest } from "@nut-tree/shared"; +export { MatchResult } from "@nut-tree/shared"; +export * from "@nut-tree/provider-interfaces"; +export * from "@nut-tree/shared"; export { jestMatchers } from "./lib/expect/jest.matcher.function"; export { sleep } from "./lib/sleep.function"; -export { Image } from "./lib/image.class"; -export { RGBA } from "./lib/rgba.class"; -export { Key } from "./lib/key.enum"; -export { Button } from "./lib/button.enum"; export { centerOf, randomPointIn } from "./lib/location.function"; -export { OptionalSearchParameters } from "./lib/optionalsearchparameters.class"; export { EasingFunction, linear } from "./lib/mouse-movement.function"; -export { Point } from "./lib/point.class"; -export { Size } from "./lib/size.class"; -export { Region } from "./lib/region.class"; export { Window } from "./lib/window.class"; -export { FileType } from "./lib/file-type.enum"; -export { ColorMode } from "./lib/colormode.enum"; export { useLogger, useConsoleLogger, - ConsoleLogLevel, + ConsoleLogLevel } from "./lib/logging.function"; -export * from "./lib/query.class"; const lineHelper = new LineHelper(); @@ -64,7 +48,7 @@ const assert = new AssertClass(screen); const { straightTo, up, down, left, right } = createMovementApi( providerRegistry, - lineHelper, + lineHelper ); const { getWindows, getActiveWindow } = createWindowApi(providerRegistry); @@ -75,7 +59,7 @@ const imageResource = (fileName: string) => loadImageResource( providerRegistry, screen.config.resourceDirectory, - fileName, + fileName ); const singleWord = (word: string): WordQuery => { @@ -83,8 +67,8 @@ const singleWord = (word: string): WordQuery => { type: "text", id: `word-query-${word}`, by: { - word, - }, + word + } }; }; const textLine = (line: string): LineQuery => { @@ -92,8 +76,8 @@ const textLine = (line: string): LineQuery => { type: "text", id: `line-query-${line}`, by: { - line, - }, + line + } }; }; @@ -102,8 +86,8 @@ const windowWithTitle = (title: string | RegExp): WindowQuery => { type: "window", id: `window-by-title-query-${title}`, by: { - title, - }, + title + } }; }; @@ -112,8 +96,8 @@ const pixelWithColor = (color: RGBA): ColorQuery => { type: "color", id: `pixel-by-color-query-RGBA(${color.R},${color.G},${color.B},${color.A})`, by: { - color, - }, + color + } }; }; @@ -138,5 +122,5 @@ export { singleWord, textLine, windowWithTitle, - pixelWithColor, + pixelWithColor }; diff --git a/jest.config.js b/core/nut.js/jest.config.js similarity index 100% rename from jest.config.js rename to core/nut.js/jest.config.js diff --git a/lib/assert.class.spec.ts b/core/nut.js/lib/assert.class.spec.ts similarity index 94% rename from lib/assert.class.spec.ts rename to core/nut.js/lib/assert.class.spec.ts index 66f59e44..4eefebf1 100644 --- a/lib/assert.class.spec.ts +++ b/core/nut.js/lib/assert.class.spec.ts @@ -1,11 +1,10 @@ import { AssertClass } from "./assert.class"; -import { Region } from "./region.class"; +import { Region } from "@nut-tree/shared"; import { ScreenClass } from "./screen.class"; import providerRegistry from "./provider/provider-registry.class"; import { Image } from "../index"; import { mockPartial } from "sneer"; -jest.mock("jimp", () => {}); jest.mock("./screen.class"); const needleId = "needleId"; @@ -19,7 +18,7 @@ describe("Assert", () => { const screenMock = new ScreenClass(providerRegistry); const SUT = new AssertClass(screenMock); const needle = mockPartial({ - id: needleId, + id: needleId }); // WHEN @@ -34,7 +33,7 @@ describe("Assert", () => { const screenMock = new ScreenClass(providerRegistry); const SUT = new AssertClass(screenMock); const needle = mockPartial({ - id: needleId, + id: needleId }); // WHEN @@ -52,7 +51,7 @@ describe("Assert", () => { const SUT = new AssertClass(screenMock); const searchRegion = new Region(10, 10, 10, 10); const needle = mockPartial({ - id: needleId, + id: needleId }); // WHEN @@ -71,7 +70,7 @@ describe("Assert", () => { const screenMock = new ScreenClass(providerRegistry); const SUT = new AssertClass(screenMock); const needle = mockPartial({ - id: needleId, + id: needleId }); // WHEN @@ -88,7 +87,7 @@ describe("Assert", () => { const screenMock = new ScreenClass(providerRegistry); const SUT = new AssertClass(screenMock); const needle = mockPartial({ - id: needleId, + id: needleId }); // WHEN diff --git a/lib/assert.class.ts b/core/nut.js/lib/assert.class.ts similarity index 81% rename from lib/assert.class.ts rename to core/nut.js/lib/assert.class.ts index 12fdf242..4db61fe1 100644 --- a/lib/assert.class.ts +++ b/core/nut.js/lib/assert.class.ts @@ -1,9 +1,9 @@ -import { Region } from "./region.class"; -import { FindInput, ScreenClass } from "./screen.class"; -import { OptionalSearchParameters } from "./optionalsearchparameters.class"; +import { FindInput, OptionalSearchParameters, Region } from "@nut-tree/shared"; +import { ScreenClass } from "./screen.class"; export class AssertClass { - constructor(private screen: ScreenClass) {} + constructor(private screen: ScreenClass) { + } public async isVisible( searchInput: FindInput | Promise, @@ -16,7 +16,7 @@ export class AssertClass { try { await this.screen.find(needle, { searchRegion, - confidence, + confidence } as OptionalSearchParameters); } catch (err) { if (searchRegion !== undefined) { @@ -40,7 +40,7 @@ export class AssertClass { try { await this.screen.find(needle, { searchRegion, - confidence, + confidence } as OptionalSearchParameters); } catch (err) { return; diff --git a/lib/clipboard.class.spec.ts b/core/nut.js/lib/clipboard.class.spec.ts similarity index 86% rename from lib/clipboard.class.spec.ts rename to core/nut.js/lib/clipboard.class.spec.ts index 2128ab3c..f768086a 100644 --- a/lib/clipboard.class.spec.ts +++ b/core/nut.js/lib/clipboard.class.spec.ts @@ -1,10 +1,7 @@ import { ClipboardClass } from "./clipboard.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; import { mockPartial } from "sneer"; -import { ClipboardProviderInterface } from "./provider"; import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; - -jest.mock("jimp", () => {}); +import { ClipboardProviderInterface, ProviderRegistry } from "@nut-tree/provider-interfaces"; beforeEach(() => { jest.clearAllMocks(); @@ -19,7 +16,7 @@ describe("Clipboard class", () => { const copyMock = jest.fn(); providerRegistryMock.getClipboard = jest.fn(() => mockPartial({ - copy: copyMock, + copy: copyMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -39,7 +36,7 @@ describe("Clipboard class", () => { const pasteMock = jest.fn(); providerRegistryMock.getClipboard = jest.fn(() => mockPartial({ - paste: pasteMock, + paste: pasteMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); diff --git a/lib/clipboard.class.ts b/core/nut.js/lib/clipboard.class.ts similarity index 86% rename from lib/clipboard.class.ts rename to core/nut.js/lib/clipboard.class.ts index 394902a9..63ec8fc2 100644 --- a/lib/clipboard.class.ts +++ b/core/nut.js/lib/clipboard.class.ts @@ -1,14 +1,15 @@ /** * {@link ClipboardClass} class gives access to a systems clipboard */ -import { ProviderRegistry } from "./provider/provider-registry.class"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; export class ClipboardClass { /** * {@link ClipboardClass} class constructor * @param providerRegistry */ - constructor(private providerRegistry: ProviderRegistry) {} + constructor(private providerRegistry: ProviderRegistry) { + } /** * {@link setContent} copies a given text to the system clipboard diff --git a/core/nut.js/lib/constants.ts b/core/nut.js/lib/constants.ts new file mode 100644 index 00000000..dc768c66 --- /dev/null +++ b/core/nut.js/lib/constants.ts @@ -0,0 +1,24 @@ +export const DISABLE_DEFAULT_PROVIDERS_ENV_VAR = + "NUT_JS_DISABLE_DEFAULT_PROVIDERS"; +export const DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR = + "NUT_JS_DISABLE_DEFAULT_CLIPBOARD_PROVIDER"; +export const DISABLE_DEFAULT_KEYBOARD_PROVIDER_ENV_VAR = + "NUT_JS_DISABLE_DEFAULT_KEYBOARD_PROVIDER"; +export const DISABLE_DEFAULT_MOUSE_PROVIDER_ENV_VAR = + "NUT_JS_DISABLE_DEFAULT_MOUSE_PROVIDER"; +export const DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR = + "NUT_JS_DISABLE_DEFAULT_SCREEN_PROVIDER"; +export const DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR = + "NUT_JS_DISABLE_DEFAULT_WINDOW_PROVIDER"; +export const NPM_CONFIG_DISABLE_DEFAULT_PROVIDERS_ENV_VAR = + "npm_package_config_nut.js_disableDefaultProviders"; +export const NPM_CONFIG_DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR = + "npm_package_config_nut.js_disableClipboardProvider"; +export const NPM_CONFIG_DISABLE_DEFAULT_KEYBOARD_PROVIDER_ENV_VAR = + "npm_package_config_nut.js_disableKeyboardProvider"; +export const NPM_CONFIG_DISABLE_DEFAULT_MOUSE_PROVIDER_ENV_VAR = + "npm_package_config_nut.js_disableMouseProvider"; +export const NPM_CONFIG_DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR = + "npm_package_config_nut.js_disableScreenProvider"; +export const NPM_CONFIG_DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR = + "npm_package_config_nut.js_disableWindowProvider"; diff --git a/lib/expect/jest.matcher.function.ts b/core/nut.js/lib/expect/jest.matcher.function.ts similarity index 67% rename from lib/expect/jest.matcher.function.ts rename to core/nut.js/lib/expect/jest.matcher.function.ts index 393ab63f..32e846f8 100644 --- a/lib/expect/jest.matcher.function.ts +++ b/core/nut.js/lib/expect/jest.matcher.function.ts @@ -1,12 +1,8 @@ -import { Point } from "../point.class"; -import { Region } from "../region.class"; +import { FindInput, OptionalSearchParameters, Point, Region, RGBA } from "@nut-tree/shared"; import { toBeAt } from "./matchers/toBeAt.function"; import { toBeIn } from "./matchers/toBeIn.function"; import { toShow } from "./matchers/toShow.function"; -import { FindInput } from "../screen.class"; -import { RGBA } from "../rgba.class"; import { toHaveColor } from "./matchers/toHaveColor.function"; -import { OptionalSearchParameters } from "../optionalsearchparameters.class"; declare global { namespace jest { @@ -16,7 +12,7 @@ declare global { // @ts-ignore toShow: ( needle: FindInput, - parameters?: OptionalSearchParameters, + parameters?: OptionalSearchParameters ) => ReturnType; toHaveColor: (color: RGBA) => ReturnType; } @@ -27,5 +23,5 @@ export const jestMatchers = { toBeAt, toBeIn, toShow, - toHaveColor, + toHaveColor }; diff --git a/lib/expect/matchers/toBeAt.function.spec.ts b/core/nut.js/lib/expect/matchers/toBeAt.function.spec.ts similarity index 93% rename from lib/expect/matchers/toBeAt.function.spec.ts rename to core/nut.js/lib/expect/matchers/toBeAt.function.spec.ts index 7bcec6f4..7763a86c 100644 --- a/lib/expect/matchers/toBeAt.function.spec.ts +++ b/core/nut.js/lib/expect/matchers/toBeAt.function.spec.ts @@ -1,5 +1,5 @@ import { mouse } from "../../../index"; -import { Point } from "../../point.class"; +import { Point } from "@nut-tree/shared"; import { toBeAt } from "./toBeAt.function"; const targetPoint = new Point(100, 100); diff --git a/lib/expect/matchers/toBeAt.function.ts b/core/nut.js/lib/expect/matchers/toBeAt.function.ts similarity index 87% rename from lib/expect/matchers/toBeAt.function.ts rename to core/nut.js/lib/expect/matchers/toBeAt.function.ts index e0bd7cd4..840f8b0d 100644 --- a/lib/expect/matchers/toBeAt.function.ts +++ b/core/nut.js/lib/expect/matchers/toBeAt.function.ts @@ -1,5 +1,5 @@ import { MouseClass } from "../../mouse.class"; -import { Point } from "../../point.class"; +import { Point } from "@nut-tree/shared"; export const toBeAt = async (received: MouseClass, position: Point) => { const currentPosition = await received.getPosition(); @@ -11,12 +11,12 @@ export const toBeAt = async (received: MouseClass, position: Point) => { return { message: () => `Expected cursor to not be at position ${position.toString()}`, - pass: true, + pass: true }; } return { message: () => `Cursor should be at position ${position.toString()} but is at ${currentPosition.toString()}`, - pass: false, + pass: false }; }; diff --git a/lib/expect/matchers/toBeIn.function.spec.ts b/core/nut.js/lib/expect/matchers/toBeIn.function.spec.ts similarity index 89% rename from lib/expect/matchers/toBeIn.function.spec.ts rename to core/nut.js/lib/expect/matchers/toBeIn.function.spec.ts index ff26421c..1037f606 100644 --- a/lib/expect/matchers/toBeIn.function.spec.ts +++ b/core/nut.js/lib/expect/matchers/toBeIn.function.spec.ts @@ -1,6 +1,5 @@ import { mouse } from "../../../index"; -import { Point } from "../../point.class"; -import { Region } from "../../region.class"; +import { Point, Region } from "@nut-tree/shared"; import { toBeIn } from "./toBeIn.function"; const targetPoint = new Point(400, 400); diff --git a/lib/expect/matchers/toBeIn.function.ts b/core/nut.js/lib/expect/matchers/toBeIn.function.ts similarity index 89% rename from lib/expect/matchers/toBeIn.function.ts rename to core/nut.js/lib/expect/matchers/toBeIn.function.ts index 372ec64e..bdb30c37 100644 --- a/lib/expect/matchers/toBeIn.function.ts +++ b/core/nut.js/lib/expect/matchers/toBeIn.function.ts @@ -1,5 +1,5 @@ import { MouseClass } from "../../mouse.class"; -import { Region } from "../../region.class"; +import { Region } from "@nut-tree/shared"; export const toBeIn = async (received: MouseClass, region: Region) => { const currentPosition = await received.getPosition(); @@ -17,12 +17,12 @@ export const toBeIn = async (received: MouseClass, region: Region) => { return { message: () => `Expected cursor to be outside of region ${region.toString()}`, - pass: true, + pass: true }; } return { message: () => `Cursor should be within region ${region.toString()} but is at ${currentPosition.toString()}`, - pass: false, + pass: false }; }; diff --git a/lib/expect/matchers/toHaveColor.function.spec.ts b/core/nut.js/lib/expect/matchers/toHaveColor.function.spec.ts similarity index 92% rename from lib/expect/matchers/toHaveColor.function.spec.ts rename to core/nut.js/lib/expect/matchers/toHaveColor.function.spec.ts index 81797b9b..0ddfa9eb 100644 --- a/lib/expect/matchers/toHaveColor.function.spec.ts +++ b/core/nut.js/lib/expect/matchers/toHaveColor.function.spec.ts @@ -1,5 +1,5 @@ -import { RGBA, screen } from "../../../index"; -import { Point } from "../../point.class"; +import { screen } from "../../../index"; +import { Point, RGBA } from "@nut-tree/shared"; import { mockPartial } from "sneer"; import { toHaveColor } from "./toHaveColor.function"; @@ -40,7 +40,7 @@ describe(".toHaveColor", () => { return new RGBA(0, 0, 0, 0); }); expect.extend({ - toHaveColor, + toHaveColor }); // WHEN @@ -55,7 +55,7 @@ describe(".toHaveColor", () => { return new RGBA(255, 0, 5, 0); }); expect.extend({ - toHaveColor, + toHaveColor }); // WHEN diff --git a/lib/expect/matchers/toHaveColor.function.ts b/core/nut.js/lib/expect/matchers/toHaveColor.function.ts similarity index 79% rename from lib/expect/matchers/toHaveColor.function.ts rename to core/nut.js/lib/expect/matchers/toHaveColor.function.ts index 80808cc0..3c56cc32 100644 --- a/lib/expect/matchers/toHaveColor.function.ts +++ b/core/nut.js/lib/expect/matchers/toHaveColor.function.ts @@ -1,4 +1,5 @@ -import { Point, RGBA, screen } from "../../../index"; +import { screen } from "../../../index"; +import { Point, RGBA } from "@nut-tree/shared"; export const toHaveColor = async (received: Point, needle: RGBA) => { const color = await screen.colorAt(received); @@ -7,13 +8,13 @@ export const toHaveColor = async (received: Point, needle: RGBA) => { return { message: () => `Expected pixel ${received.toString()} not to to have color ${needle.toHex()}`, - pass: true, + pass: true }; } else { return { message: () => `Expected pixel ${received.toString()} to have color ${needle.toHex()} but is ${color.toHex()}`, - pass: false, + pass: false }; } }; diff --git a/lib/expect/matchers/toShow.function.ts b/core/nut.js/lib/expect/matchers/toShow.function.ts similarity index 73% rename from lib/expect/matchers/toShow.function.ts rename to core/nut.js/lib/expect/matchers/toShow.function.ts index 00ae7706..d25cfc1a 100644 --- a/lib/expect/matchers/toShow.function.ts +++ b/core/nut.js/lib/expect/matchers/toShow.function.ts @@ -1,12 +1,11 @@ -import { FindInput, ScreenClass } from "../../screen.class"; -import { OptionalSearchParameters } from "../../optionalsearchparameters.class"; -import { isRegion, Region } from "../../region.class"; +import { ScreenClass } from "../../screen.class"; +import { FindInput, isRegion, OptionalSearchParameters, Region } from "@nut-tree/shared"; import { screen } from "../../../index"; export const toShow = async ( received: ScreenClass | Region, needle: FindInput, - parameters?: OptionalSearchParameters, + parameters?: OptionalSearchParameters ) => { const identifier = (await needle).id; if (isRegion(received)) { @@ -19,12 +18,12 @@ export const toShow = async ( await screen.find(needle, parameters); return { message: () => `Expected screen to not show ${identifier}`, - pass: true, + pass: true }; } catch (err) { return { message: () => `Screen is not showing ${identifier}: ${err}`, - pass: false, + pass: false }; } } else { @@ -32,12 +31,12 @@ export const toShow = async ( await received.find(needle, parameters); return { message: () => `Expected screen to not show ${identifier}`, - pass: true, + pass: true }; } catch (err) { return { message: () => `Screen is not showing ${identifier}: ${err}`, - pass: false, + pass: false }; } } diff --git a/lib/generate-output-path.function.spec.ts b/core/nut.js/lib/generate-output-path.function.spec.ts similarity index 95% rename from lib/generate-output-path.function.spec.ts rename to core/nut.js/lib/generate-output-path.function.spec.ts index 0b4a51ef..35097e9c 100644 --- a/lib/generate-output-path.function.spec.ts +++ b/core/nut.js/lib/generate-output-path.function.spec.ts @@ -1,6 +1,6 @@ import { join } from "path"; import { cwd } from "process"; -import { FileType } from "./file-type.enum"; +import { FileType } from "@nut-tree/shared"; import { generateOutputPath } from "./generate-output-path.function"; describe("generate-output-path", () => { @@ -56,7 +56,7 @@ describe("generate-output-path", () => { // WHEN const result = generateOutputPath(filename, { postfix: post, - prefix: pre, + prefix: pre }); // THEN @@ -72,7 +72,7 @@ describe("generate-output-path", () => { // WHEN const result = generateOutputPath(filename, { - path: filepath, + path: filepath }); // THEN @@ -88,7 +88,7 @@ describe("generate-output-path", () => { // WHEN const result = generateOutputPath(filename, { - path: filepath, + path: filepath }); // THEN @@ -103,7 +103,7 @@ describe("generate-output-path", () => { // WHEN const result = generateOutputPath(filename, { - type: FileType.JPG, + type: FileType.JPG }); // THEN diff --git a/lib/generate-output-path.function.ts b/core/nut.js/lib/generate-output-path.function.ts similarity index 94% rename from lib/generate-output-path.function.ts rename to core/nut.js/lib/generate-output-path.function.ts index b39adfbd..a11dbea3 100644 --- a/lib/generate-output-path.function.ts +++ b/core/nut.js/lib/generate-output-path.function.ts @@ -1,6 +1,6 @@ import { join, parse } from "path"; import { cwd } from "process"; -import { FileType } from "./file-type.enum"; +import { FileType } from "@nut-tree/shared"; /** * {@link generateOutputPath} is used to assemble full file path from a filename and various parameters @@ -14,7 +14,7 @@ export const generateOutputPath = ( path?: string; prefix?: string; postfix?: string; - }, + } ) => { const name = parse(filename).name; const imageType = params?.type ? params.type : FileType.PNG; diff --git a/lib/imageResources.function.spec.ts b/core/nut.js/lib/imageResources.function.spec.ts similarity index 87% rename from lib/imageResources.function.spec.ts rename to core/nut.js/lib/imageResources.function.spec.ts index 2c56f54c..b9705e61 100644 --- a/lib/imageResources.function.spec.ts +++ b/core/nut.js/lib/imageResources.function.spec.ts @@ -1,17 +1,16 @@ import { fetchFromUrl, loadImageResource } from "./imageResources.function"; import { mockPartial } from "sneer"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { ImageReader } from "./provider"; +import { ImageReader, ProviderRegistry } from "@nut-tree/provider-interfaces"; import { join } from "path"; -import { ColorMode } from "./colormode.enum"; +import { ColorMode } from "@nut-tree/shared"; const loadMock = jest.fn(); const providerRegistryMock = mockPartial({ getImageReader(): ImageReader { return mockPartial({ - load: loadMock, + load: loadMock }); - }, + } }); describe("imageResources", () => { @@ -28,7 +27,7 @@ describe("imageResources", () => { ); // THEN - expect(loadMock).toBeCalledWith(join(resourceDirectoryPath, imageFileName)); + expect(loadMock).toHaveBeenCalledWith(join(resourceDirectoryPath, imageFileName)); }); }); @@ -65,7 +64,7 @@ describe("fetchFromUrl", () => { "https://github.com/nut-tree/nut.js/raw/master/.gfx/nut.png"; const expectedDimensions = { width: 502, - height: 411, + height: 411 }; const expectedColorMode = ColorMode.RGB; diff --git a/lib/imageResources.function.ts b/core/nut.js/lib/imageResources.function.ts similarity index 89% rename from lib/imageResources.function.ts rename to core/nut.js/lib/imageResources.function.ts index 7f7875cf..6830a25d 100644 --- a/lib/imageResources.function.ts +++ b/core/nut.js/lib/imageResources.function.ts @@ -1,9 +1,8 @@ import { join, normalize } from "path"; -import { ProviderRegistry } from "./provider/provider-registry.class"; import { URL } from "url"; -import { Image } from "./image.class"; +import { ColorMode, Image } from "@nut-tree/shared"; import Jimp from "jimp"; -import { ColorMode } from "./colormode.enum"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; export function loadImageResource( providerRegistry: ProviderRegistry, diff --git a/lib/keyboard.class.spec.ts b/core/nut.js/lib/keyboard.class.spec.ts similarity index 96% rename from lib/keyboard.class.spec.ts rename to core/nut.js/lib/keyboard.class.spec.ts index e2cb5af5..cc33467d 100644 --- a/lib/keyboard.class.spec.ts +++ b/core/nut.js/lib/keyboard.class.spec.ts @@ -1,8 +1,7 @@ -import { Key } from "./key.enum"; +import { Key } from "@nut-tree/shared"; import { KeyboardClass } from "./keyboard.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; import { mockPartial } from "sneer"; -import { KeyboardProviderInterface, LogProviderInterface } from "./provider"; +import { KeyboardProviderInterface, LogProviderInterface, ProviderRegistry } from "@nut-tree/provider-interfaces"; import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; jest.setTimeout(10000); diff --git a/lib/keyboard.class.ts b/core/nut.js/lib/keyboard.class.ts similarity index 96% rename from lib/keyboard.class.ts rename to core/nut.js/lib/keyboard.class.ts index f4ba6080..c1aaab4c 100644 --- a/lib/keyboard.class.ts +++ b/core/nut.js/lib/keyboard.class.ts @@ -1,6 +1,6 @@ -import { Key } from "./key.enum"; +import { Key } from "@nut-tree/shared"; import { sleep } from "./sleep.function"; -import { ProviderRegistry } from "./provider/provider-registry.class"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; type StringOrKey = string[] | Key[]; @@ -26,7 +26,7 @@ export class KeyboardClass { * Config object for {@link KeyboardClass} class */ public config: KeyboardConfig = { - autoDelayMs: 300, + autoDelayMs: 300 }; /** diff --git a/lib/location.function.spec.ts b/core/nut.js/lib/location.function.spec.ts similarity index 92% rename from lib/location.function.spec.ts rename to core/nut.js/lib/location.function.spec.ts index 0697b817..1d73ef1c 100644 --- a/lib/location.function.spec.ts +++ b/core/nut.js/lib/location.function.spec.ts @@ -1,6 +1,5 @@ import { centerOf, randomPointIn } from "./location.function"; -import { Point } from "./point.class"; -import { Region } from "./region.class"; +import { Point, Region } from "@nut-tree/shared"; describe("Location", () => { describe("centerOf", () => { @@ -15,7 +14,7 @@ describe("Location", () => { const testRegion = { left: 0, top: 0, - width: 4, + width: 4 }; await expect(centerOf(testRegion as Region)).rejects.toThrowError( @@ -38,7 +37,7 @@ describe("Location", () => { const testRegion = { left: 0, top: 0, - width: 4, + width: 4 }; await expect(randomPointIn(testRegion as Region)).rejects.toThrowError( diff --git a/lib/location.function.ts b/core/nut.js/lib/location.function.ts similarity index 93% rename from lib/location.function.ts rename to core/nut.js/lib/location.function.ts index 623f0a80..a33a3d23 100644 --- a/lib/location.function.ts +++ b/core/nut.js/lib/location.function.ts @@ -1,5 +1,4 @@ -import { Point } from "./point.class"; -import { isRegion, Region } from "./region.class"; +import { isRegion, Point, Region } from "@nut-tree/shared"; /** * {@link centerOf} returns the center {@link Point} for a given {@link Region} diff --git a/lib/logging.function.ts b/core/nut.js/lib/logging.function.ts similarity index 58% rename from lib/logging.function.ts rename to core/nut.js/lib/logging.function.ts index 6807a01c..16bc5e3f 100644 --- a/lib/logging.function.ts +++ b/core/nut.js/lib/logging.function.ts @@ -1,5 +1,9 @@ -import { LogProviderInterface } from "./provider"; -import { ConsoleLogLevel, ConsoleLogProvider, ConsoleLogProviderConfig } from "./provider/log/console-log-provider.class"; +import { LogProviderInterface } from "@nut-tree/provider-interfaces"; +import { + ConsoleLogLevel, + ConsoleLogProvider, + ConsoleLogProviderConfig +} from "./provider/log/console-log-provider.class"; import providerRegistry from "./provider/provider-registry.class"; export const useLogger = (logger: LogProviderInterface) => { @@ -8,6 +12,6 @@ export const useLogger = (logger: LogProviderInterface) => { export const useConsoleLogger = (config?: ConsoleLogProviderConfig) => { providerRegistry.registerLogProvider(new ConsoleLogProvider(config)); -} +}; -export { ConsoleLogLevel } +export { ConsoleLogLevel }; diff --git a/lib/mouse-movement.function.spec.ts b/core/nut.js/lib/mouse-movement.function.spec.ts similarity index 97% rename from lib/mouse-movement.function.spec.ts rename to core/nut.js/lib/mouse-movement.function.spec.ts index 9e9fbabe..a6a51e9a 100644 --- a/lib/mouse-movement.function.spec.ts +++ b/core/nut.js/lib/mouse-movement.function.spec.ts @@ -35,7 +35,7 @@ describe("MovementType", () => { ); // THEN - expect(easingFunction).toBeCalledTimes(amountOfSteps); + expect(easingFunction).toHaveBeenCalledTimes(amountOfSteps); }); }); diff --git a/lib/mouse-movement.function.ts b/core/nut.js/lib/mouse-movement.function.ts similarity index 100% rename from lib/mouse-movement.function.ts rename to core/nut.js/lib/mouse-movement.function.ts diff --git a/lib/mouse.class.spec.ts b/core/nut.js/lib/mouse.class.spec.ts similarity index 84% rename from lib/mouse.class.spec.ts rename to core/nut.js/lib/mouse.class.spec.ts index 7c7883bb..b4fafc11 100644 --- a/lib/mouse.class.spec.ts +++ b/core/nut.js/lib/mouse.class.spec.ts @@ -1,10 +1,8 @@ -import { Button } from "./button.enum"; +import { Button, Point } from "@nut-tree/shared"; import { MouseClass } from "./mouse.class"; -import { Point } from "./point.class"; import { LineHelper } from "./util/linehelper.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; import { mockPartial } from "sneer"; -import { MouseProviderInterface } from "./provider"; +import { MouseProviderInterface, ProviderRegistry } from "@nut-tree/provider-interfaces"; import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; beforeEach(() => { @@ -16,12 +14,12 @@ const linehelper = new LineHelper(); const providerRegistryMock = mockPartial({ getMouse(): MouseProviderInterface { return mockPartial({ - setMouseDelay: jest.fn(), + setMouseDelay: jest.fn() }); }, hasMouse(): boolean { return true; - }, + } }); describe("Mouse class", () => { @@ -44,7 +42,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - scrollLeft: scrollMock, + scrollLeft: scrollMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -53,7 +51,7 @@ describe("Mouse class", () => { const result = await SUT.scrollLeft(scrollAmount); // THEN - expect(scrollMock).toBeCalledWith(scrollAmount); + expect(scrollMock).toHaveBeenCalledWith(scrollAmount); expect(result).toBe(SUT); }); @@ -66,7 +64,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - scrollRight: scrollMock, + scrollRight: scrollMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -75,7 +73,7 @@ describe("Mouse class", () => { const result = await SUT.scrollRight(scrollAmount); // THEN - expect(scrollMock).toBeCalledWith(scrollAmount); + expect(scrollMock).toHaveBeenCalledWith(scrollAmount); expect(result).toBe(SUT); }); @@ -88,7 +86,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - scrollDown: scrollMock, + scrollDown: scrollMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -97,7 +95,7 @@ describe("Mouse class", () => { const result = await SUT.scrollDown(scrollAmount); // THEN - expect(scrollMock).toBeCalledWith(scrollAmount); + expect(scrollMock).toHaveBeenCalledWith(scrollAmount); expect(result).toBe(SUT); }); @@ -110,7 +108,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - scrollUp: scrollMock, + scrollUp: scrollMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -119,7 +117,7 @@ describe("Mouse class", () => { const result = await SUT.scrollUp(scrollAmount); // THEN - expect(scrollMock).toBeCalledWith(scrollAmount); + expect(scrollMock).toHaveBeenCalledWith(scrollAmount); expect(result).toBe(SUT); }); @@ -132,7 +130,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - setMousePosition: setPositionMock, + setMousePosition: setPositionMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -141,7 +139,7 @@ describe("Mouse class", () => { const result = await SUT.move(path); // THEN - expect(setPositionMock).toBeCalledTimes(path.length); + expect(setPositionMock).toHaveBeenCalledTimes(path.length); expect(result).toBe(SUT); }); @@ -154,7 +152,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - setMousePosition: setPositionMock, + setMousePosition: setPositionMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -163,8 +161,8 @@ describe("Mouse class", () => { const result = await SUT.move(testPoint as unknown as Array); // THEN - expect(setPositionMock).toBeCalledTimes(1); - expect(setPositionMock).toBeCalledWith(testPoint); + expect(setPositionMock).toHaveBeenCalledTimes(1); + expect(setPositionMock).toHaveBeenCalledWith(testPoint); expect(result).toBe(SUT); }); @@ -181,7 +179,7 @@ describe("Mouse class", () => { setMouseDelay: jest.fn(), setMousePosition: setPositionMock, pressButton: pressButtonMock, - releaseButton: releaseButtonMock, + releaseButton: releaseButtonMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -190,9 +188,9 @@ describe("Mouse class", () => { const result = await SUT.drag(path); // THEN - expect(pressButtonMock).toBeCalledWith(Button.LEFT); - expect(setPositionMock).toBeCalledTimes(path.length); - expect(releaseButtonMock).toBeCalledWith(Button.LEFT); + expect(pressButtonMock).toHaveBeenCalledWith(Button.LEFT); + expect(setPositionMock).toHaveBeenCalledTimes(path.length); + expect(releaseButtonMock).toHaveBeenCalledWith(Button.LEFT); expect(result).toBe(SUT); }); @@ -200,7 +198,7 @@ describe("Mouse class", () => { it.each([ [Button.LEFT, Button.LEFT], [Button.MIDDLE, Button.MIDDLE], - [Button.RIGHT, Button.RIGHT], + [Button.RIGHT, Button.RIGHT] ] as Array<[Button, Button]>)( "should be pressed and released", async (input: Button, expected: Button) => { @@ -212,7 +210,7 @@ describe("Mouse class", () => { mockPartial({ setMouseDelay: jest.fn(), pressButton: pressButtonMock, - releaseButton: releaseButtonMock, + releaseButton: releaseButtonMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -222,8 +220,8 @@ describe("Mouse class", () => { const released = await SUT.releaseButton(input); // THEN - expect(pressButtonMock).toBeCalledWith(expected); - expect(releaseButtonMock).toBeCalledWith(expected); + expect(pressButtonMock).toHaveBeenCalledWith(expected); + expect(releaseButtonMock).toHaveBeenCalledWith(expected); expect(pressed).toBe(SUT); expect(released).toBe(SUT); } @@ -240,7 +238,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - pressButton: mouseMock, + pressButton: mouseMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -264,7 +262,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - releaseButton: mouseMock, + releaseButton: mouseMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -285,7 +283,7 @@ describe("Mouse class", () => { it.each([ [Button.LEFT, Button.LEFT], [Button.MIDDLE, Button.MIDDLE], - [Button.RIGHT, Button.RIGHT], + [Button.RIGHT, Button.RIGHT] ] as Array<[Button, Button]>)( "should click the respective button on the provider", async (input: Button, expected: Button) => { @@ -295,7 +293,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - click: clickMock, + click: clickMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -304,7 +302,7 @@ describe("Mouse class", () => { await SUT.click(input); // THEN - expect(clickMock).toBeCalledWith(expected); + expect(clickMock).toHaveBeenCalledWith(expected); } ); }); @@ -313,7 +311,7 @@ describe("Mouse class", () => { it.each([ [Button.LEFT, Button.LEFT], [Button.MIDDLE, Button.MIDDLE], - [Button.RIGHT, Button.RIGHT], + [Button.RIGHT, Button.RIGHT] ] as Array<[Button, Button]>)( "should click the respective button on the provider", async (input: Button, expected: Button) => { @@ -323,7 +321,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - doubleClick: clickMock, + doubleClick: clickMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -332,7 +330,7 @@ describe("Mouse class", () => { await SUT.doubleClick(input); // THEN - expect(clickMock).toBeCalledWith(expected); + expect(clickMock).toHaveBeenCalledWith(expected); } ); }); @@ -347,7 +345,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - click: clickMock, + click: clickMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -356,8 +354,8 @@ describe("Mouse class", () => { const result = await SUT.leftClick(); // THEN - expect(clickSpy).toBeCalledWith(Button.LEFT); - expect(clickMock).toBeCalledWith(Button.LEFT); + expect(clickSpy).toHaveBeenCalledWith(Button.LEFT); + expect(clickMock).toHaveBeenCalledWith(Button.LEFT); expect(result).toBe(SUT); }); }); @@ -372,7 +370,7 @@ describe("Mouse class", () => { providerRegistryMock.getMouse = jest.fn(() => mockPartial({ setMouseDelay: jest.fn(), - click: clickMock, + click: clickMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -381,8 +379,8 @@ describe("Mouse class", () => { const result = await SUT.rightClick(); // THEN - expect(clickSpy).toBeCalledWith(Button.RIGHT); - expect(clickMock).toBeCalledWith(Button.RIGHT); + expect(clickSpy).toHaveBeenCalledWith(Button.RIGHT); + expect(clickMock).toHaveBeenCalledWith(Button.RIGHT); expect(result).toBe(SUT); }); }); diff --git a/lib/mouse.class.ts b/core/nut.js/lib/mouse.class.ts similarity index 96% rename from lib/mouse.class.ts rename to core/nut.js/lib/mouse.class.ts index b1396f8a..8c818656 100644 --- a/lib/mouse.class.ts +++ b/core/nut.js/lib/mouse.class.ts @@ -1,12 +1,7 @@ -import { Button } from "./button.enum"; -import { isPoint, Point } from "./point.class"; +import { Button, isPoint, Point } from "@nut-tree/shared"; import { busyWaitForNanoSeconds, sleep } from "./sleep.function"; -import { - calculateMovementTimesteps, - EasingFunction, - linear, -} from "./mouse-movement.function"; -import { ProviderRegistry } from "./provider/provider-registry.class"; +import { calculateMovementTimesteps, EasingFunction, linear } from "./mouse-movement.function"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; /** * Config object for {@link MouseClass} class @@ -29,7 +24,7 @@ export interface MouseConfig { export class MouseClass { public config: MouseConfig = { autoDelayMs: 100, - mouseSpeed: 1000, + mouseSpeed: 1000 }; /** diff --git a/lib/movement-api.interface.ts b/core/nut.js/lib/movement-api.interface.ts similarity index 95% rename from lib/movement-api.interface.ts rename to core/nut.js/lib/movement-api.interface.ts index 896372f9..8549dfb6 100644 --- a/lib/movement-api.interface.ts +++ b/core/nut.js/lib/movement-api.interface.ts @@ -1,4 +1,4 @@ -import { Point } from "./point.class"; +import { Point } from "@nut-tree/shared"; /** * {@link MovementApi} provides helper functions to generate movement paths relative tot he current mouse position @@ -9,21 +9,25 @@ export interface MovementApi { * @param px Length of the movement path in pixels */ down(px: number): Promise; + /** * {@link left} generates a leftward movement path * @param px Length of the movement path in pixels */ left(px: number): Promise; + /** * {@link right} generates a rightward movement path * @param px Length of the movement path in pixels */ right(px: number): Promise; + /** * {@link straightTo} generates a straight movement path to a given target {@link Point} * @param target The target {@link Point} to move towards */ straightTo(target: Point | Promise): Promise; + /** * {@link up} generates a upward movement path * @param px Length of the movement path in pixels diff --git a/lib/movement.function.spec.ts b/core/nut.js/lib/movement.function.spec.ts similarity index 79% rename from lib/movement.function.spec.ts rename to core/nut.js/lib/movement.function.spec.ts index 1e858e20..c24e3bd9 100644 --- a/lib/movement.function.spec.ts +++ b/core/nut.js/lib/movement.function.spec.ts @@ -1,15 +1,14 @@ import { createMovementApi } from "./movement.function"; import { mockPartial } from "sneer"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { MouseProviderInterface } from "./provider"; -import { Point } from "./point.class"; +import { MouseProviderInterface, ProviderRegistry } from "@nut-tree/provider-interfaces"; +import { Point } from "@nut-tree/shared"; beforeEach(() => { jest.clearAllMocks(); }); const lineHelperMock = { - straightLine: jest.fn(), + straightLine: jest.fn() }; const currentPosition = new Point(500, 500); @@ -17,9 +16,9 @@ const currentPosition = new Point(500, 500); const providerRegistryMock = mockPartial({ getMouse(): MouseProviderInterface { return mockPartial({ - currentMousePosition: () => Promise.resolve(currentPosition), + currentMousePosition: () => Promise.resolve(currentPosition) }); - }, + } }); describe("MovementApi", () => { @@ -37,8 +36,8 @@ describe("MovementApi", () => { await SUT.down(step); // THEN - expect(lineHelperMock.straightLine).toBeCalledTimes(1); - expect(lineHelperMock.straightLine).toBeCalledWith( + expect(lineHelperMock.straightLine).toHaveBeenCalledTimes(1); + expect(lineHelperMock.straightLine).toHaveBeenCalledWith( currentPosition, targetPoint ); @@ -57,8 +56,8 @@ describe("MovementApi", () => { await SUT.up(step); // THEN - expect(lineHelperMock.straightLine).toBeCalledTimes(1); - expect(lineHelperMock.straightLine).toBeCalledWith( + expect(lineHelperMock.straightLine).toHaveBeenCalledTimes(1); + expect(lineHelperMock.straightLine).toHaveBeenCalledWith( currentPosition, targetPoint ); @@ -77,8 +76,8 @@ describe("MovementApi", () => { await SUT.left(step); // THEN - expect(lineHelperMock.straightLine).toBeCalledTimes(1); - expect(lineHelperMock.straightLine).toBeCalledWith( + expect(lineHelperMock.straightLine).toHaveBeenCalledTimes(1); + expect(lineHelperMock.straightLine).toHaveBeenCalledWith( currentPosition, targetPoint ); @@ -97,8 +96,8 @@ describe("MovementApi", () => { await SUT.right(step); // THEN - expect(lineHelperMock.straightLine).toBeCalledTimes(1); - expect(lineHelperMock.straightLine).toBeCalledWith( + expect(lineHelperMock.straightLine).toHaveBeenCalledTimes(1); + expect(lineHelperMock.straightLine).toHaveBeenCalledWith( currentPosition, targetPoint ); @@ -130,8 +129,8 @@ describe("MovementApi", () => { await SUT.straightTo(targetPoint); // THEN - expect(lineHelperMock.straightLine).toBeCalledTimes(1); - expect(lineHelperMock.straightLine).toBeCalledWith( + expect(lineHelperMock.straightLine).toHaveBeenCalledTimes(1); + expect(lineHelperMock.straightLine).toHaveBeenCalledWith( currentPosition, targetPoint ); diff --git a/lib/movement.function.ts b/core/nut.js/lib/movement.function.ts similarity index 92% rename from lib/movement.function.ts rename to core/nut.js/lib/movement.function.ts index f5ae6652..cdc56bcb 100644 --- a/lib/movement.function.ts +++ b/core/nut.js/lib/movement.function.ts @@ -1,7 +1,7 @@ import { MovementApi } from "./movement-api.interface"; -import { isPoint, Point } from "./point.class"; +import { isPoint, Point } from "@nut-tree/shared"; import { LineHelper } from "./util/linehelper.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; export const createMovementApi = ( providerRegistry: ProviderRegistry, @@ -35,6 +35,6 @@ export const createMovementApi = ( up: async (px: number): Promise => { const pos = await providerRegistry.getMouse().currentMousePosition(); return lineHelper.straightLine(pos, new Point(pos.x, pos.y - px)); - }, + } }; }; diff --git a/lib/provider/color/color-finder.class.spec.ts b/core/nut.js/lib/provider/color/color-finder.class.spec.ts similarity index 93% rename from lib/provider/color/color-finder.class.spec.ts rename to core/nut.js/lib/provider/color/color-finder.class.spec.ts index dc4acb70..66179624 100644 --- a/lib/provider/color/color-finder.class.spec.ts +++ b/core/nut.js/lib/provider/color/color-finder.class.spec.ts @@ -14,7 +14,7 @@ describe("color finder", () => { it("should resolve", async () => { // GIVEN const screenImage = await loadImage( - join(__dirname, `../../../e2e/assets/dot.png`) + join(__dirname, `../../../assets/dot.png`) ); const SUT = new ColorFinder(); const colorQuery: ColorQuery = { @@ -40,7 +40,7 @@ describe("color finder", () => { it("should resolve", async () => { // GIVEN const screenImage = await loadImage( - join(__dirname, `../../../e2e/assets/dots.png`) + join(__dirname, `../../../assets/dots.png`) ); const SUT = new ColorFinder(); const colorQuery: ColorQuery = { diff --git a/lib/provider/color/color-finder.class.ts b/core/nut.js/lib/provider/color/color-finder.class.ts similarity index 85% rename from lib/provider/color/color-finder.class.ts rename to core/nut.js/lib/provider/color/color-finder.class.ts index 567df6d8..73041dfd 100644 --- a/lib/provider/color/color-finder.class.ts +++ b/core/nut.js/lib/provider/color/color-finder.class.ts @@ -1,9 +1,5 @@ -import { ColorFinderInterface } from "../color-finder.interface"; -import { MatchRequest } from "../../match-request.class"; -import { ColorQuery } from "../../query.class"; -import { MatchResult } from "../../match-result.class"; -import { imageToJimp } from "../io/imageToJimp.function"; -import { Point } from "../../point.class"; +import { ColorFinderInterface } from "@nut-tree/provider-interfaces"; +import { ColorQuery, imageToJimp, MatchRequest, MatchResult, Point } from "@nut-tree/shared"; export default class implements ColorFinderInterface { async findMatch( diff --git a/lib/provider/image/jimp-image-processor.class.spec.ts b/core/nut.js/lib/provider/image/jimp-image-processor.class.spec.ts similarity index 94% rename from lib/provider/image/jimp-image-processor.class.spec.ts rename to core/nut.js/lib/provider/image/jimp-image-processor.class.spec.ts index af6dfc96..329fd266 100644 --- a/lib/provider/image/jimp-image-processor.class.spec.ts +++ b/core/nut.js/lib/provider/image/jimp-image-processor.class.spec.ts @@ -1,5 +1,4 @@ -import { Image } from "../../image.class"; -import { Point } from "../../point.class"; +import { Image, Point } from "@nut-tree/shared"; import JimpImageProcessor from "./jimp-image-processor.class"; const imageWidth = 10; diff --git a/lib/provider/image/jimp-image-processor.class.ts b/core/nut.js/lib/provider/image/jimp-image-processor.class.ts similarity index 76% rename from lib/provider/image/jimp-image-processor.class.ts rename to core/nut.js/lib/provider/image/jimp-image-processor.class.ts index cb8c6d75..1a1f9425 100644 --- a/lib/provider/image/jimp-image-processor.class.ts +++ b/core/nut.js/lib/provider/image/jimp-image-processor.class.ts @@ -1,9 +1,6 @@ import Jimp from "jimp"; -import { Image } from "../../image.class"; -import { Point } from "../../point.class"; -import { ImageProcessor } from "../image-processor.interface"; -import { imageToJimp } from "../io/imageToJimp.function"; -import { RGBA } from "../../rgba.class"; +import { Image, imageToJimp, Point, RGBA } from "@nut-tree/shared"; +import { ImageProcessor } from "@nut-tree/provider-interfaces"; export default class implements ImageProcessor { async colorAt( diff --git a/lib/provider/io/jimp-image-reader.class.spec.ts b/core/nut.js/lib/provider/io/jimp-image-reader.class.spec.ts similarity index 92% rename from lib/provider/io/jimp-image-reader.class.spec.ts rename to core/nut.js/lib/provider/io/jimp-image-reader.class.spec.ts index bd1267e7..f234e9b5 100644 --- a/lib/provider/io/jimp-image-reader.class.spec.ts +++ b/core/nut.js/lib/provider/io/jimp-image-reader.class.spec.ts @@ -34,8 +34,8 @@ describe("Jimp image reader", () => { // THEN expect(scanMock).toHaveBeenCalledTimes(1); - expect(Jimp.read).toBeCalledTimes(1); - expect(Jimp.read).toBeCalledWith(inputPath); + expect(Jimp.read).toHaveBeenCalledTimes(1); + expect(Jimp.read).toHaveBeenCalledWith(inputPath); }); it("should reject on loading failures", async () => { diff --git a/lib/provider/io/jimp-image-reader.class.ts b/core/nut.js/lib/provider/io/jimp-image-reader.class.ts similarity index 82% rename from lib/provider/io/jimp-image-reader.class.ts rename to core/nut.js/lib/provider/io/jimp-image-reader.class.ts index f680be2c..c29baac2 100644 --- a/lib/provider/io/jimp-image-reader.class.ts +++ b/core/nut.js/lib/provider/io/jimp-image-reader.class.ts @@ -1,7 +1,6 @@ import Jimp from "jimp"; -import { ImageReader } from "../image-reader.type"; -import { Image } from "../../image.class"; -import { ColorMode } from "../../colormode.enum"; +import { ImageReader } from "@nut-tree/provider-interfaces"; +import { ColorMode, Image } from "@nut-tree/shared"; export default class implements ImageReader { load(parameters: string): Promise { @@ -14,7 +13,7 @@ export default class implements ImageReader { 0, jimpImage.bitmap.width, jimpImage.bitmap.height, - function (_, __, idx) { + function(_, __, idx) { const red = this.bitmap.data[idx]; this.bitmap.data[idx] = this.bitmap.data[idx + 2]; this.bitmap.data[idx + 2] = red; @@ -28,7 +27,7 @@ export default class implements ImageReader { jimpImage.hasAlpha() ? 4 : 3, parameters, jimpImage.bitmap.data.length / - (jimpImage.bitmap.width * jimpImage.bitmap.height), + (jimpImage.bitmap.width * jimpImage.bitmap.height), jimpImage.bitmap.data.length / jimpImage.bitmap.height, ColorMode.BGR ) diff --git a/lib/provider/io/jimp-image-writer.class.spec.ts b/core/nut.js/lib/provider/io/jimp-image-writer.class.spec.ts similarity index 94% rename from lib/provider/io/jimp-image-writer.class.spec.ts rename to core/nut.js/lib/provider/io/jimp-image-writer.class.spec.ts index 1128fb67..a77caa93 100644 --- a/lib/provider/io/jimp-image-writer.class.spec.ts +++ b/core/nut.js/lib/provider/io/jimp-image-writer.class.spec.ts @@ -1,5 +1,5 @@ import ImageWriter from "./jimp-image-writer.class"; -import { Image } from "../../image.class"; +import { Image } from "@nut-tree/shared"; import Jimp from "jimp"; jest.mock("jimp", () => { @@ -7,7 +7,7 @@ jest.mock("jimp", () => { bitmap = { width: 100, height: 100, - data: Buffer.from([]), + data: Buffer.from([]) }; hasAlpha = () => false; static read = jest.fn(() => Promise.resolve(new JimpMock())); @@ -15,7 +15,7 @@ jest.mock("jimp", () => { return { __esModule: true, - default: JimpMock, + default: JimpMock }; }); diff --git a/lib/provider/io/jimp-image-writer.class.ts b/core/nut.js/lib/provider/io/jimp-image-writer.class.ts similarity index 72% rename from lib/provider/io/jimp-image-writer.class.ts rename to core/nut.js/lib/provider/io/jimp-image-writer.class.ts index b80343f6..f8e0faeb 100644 --- a/lib/provider/io/jimp-image-writer.class.ts +++ b/core/nut.js/lib/provider/io/jimp-image-writer.class.ts @@ -1,5 +1,5 @@ -import { ImageWriter, ImageWriterParameters } from "../image-writer.type"; -import { imageToJimp } from "./imageToJimp.function"; +import { ImageWriter, ImageWriterParameters } from "@nut-tree/provider-interfaces"; +import { imageToJimp } from "@nut-tree/shared"; export default class implements ImageWriter { store(parameters: ImageWriterParameters): Promise { diff --git a/lib/provider/log/console-log-provider.class.spec.ts b/core/nut.js/lib/provider/log/console-log-provider.class.spec.ts similarity index 90% rename from lib/provider/log/console-log-provider.class.spec.ts rename to core/nut.js/lib/provider/log/console-log-provider.class.spec.ts index e02c227a..ee479e93 100644 --- a/lib/provider/log/console-log-provider.class.spec.ts +++ b/core/nut.js/lib/provider/log/console-log-provider.class.spec.ts @@ -67,7 +67,7 @@ describe("ConsoleLogProvider", () => { // THEN for (const mock of validMocks) { - expect(mock).toBeCalledTimes(1); + expect(mock).toHaveBeenCalledTimes(1); } for (const mock of invalidMocks) { expect(mock).not.toBeCalled(); @@ -95,11 +95,11 @@ describe("ConsoleLogProvider", () => { SUT.error(new Error("test"), { data: "test" }); // THEN - expect(mock).toBeCalledTimes(1); + expect(mock).toHaveBeenCalledTimes(1); if (level != ConsoleLogLevel.ERROR) { - expect(mock).toBeCalledWith(expect.any(String), expect.any(Object)); + expect(mock).toHaveBeenCalledWith(expect.any(String), expect.any(Object)); } else { - expect(mock).toBeCalledWith(expect.any(Error), expect.any(Object)); + expect(mock).toHaveBeenCalledWith(expect.any(Error), expect.any(Object)); } } ); diff --git a/lib/provider/log/console-log-provider.class.ts b/core/nut.js/lib/provider/log/console-log-provider.class.ts similarity index 96% rename from lib/provider/log/console-log-provider.class.ts rename to core/nut.js/lib/provider/log/console-log-provider.class.ts index b7af9d56..157c1014 100644 --- a/lib/provider/log/console-log-provider.class.ts +++ b/core/nut.js/lib/provider/log/console-log-provider.class.ts @@ -1,4 +1,4 @@ -import { LogProviderInterface } from "../log-provider.interface"; +import { LogProviderInterface } from "@nut-tree/provider-interfaces"; export enum ConsoleLogLevel { TRACE, @@ -15,7 +15,7 @@ export interface ConsoleLogProviderConfig { const defaultConfig: ConsoleLogProviderConfig = { logLevel: ConsoleLogLevel.INFO, - withTimeStamp: true, + withTimeStamp: true }; export class ConsoleLogProvider implements LogProviderInterface { diff --git a/core/nut.js/lib/provider/log/noop-log-provider.class.ts b/core/nut.js/lib/provider/log/noop-log-provider.class.ts new file mode 100644 index 00000000..d70d0e97 --- /dev/null +++ b/core/nut.js/lib/provider/log/noop-log-provider.class.ts @@ -0,0 +1,18 @@ +import { LogProviderInterface } from "@nut-tree/provider-interfaces"; + +export class NoopLogProvider implements LogProviderInterface { + public trace(_: string, __?: {}) { + } + + public debug(_: string, __?: {}) { + } + + public info(_: string, __?: {}) { + } + + public warn(_: string, __?: {}) { + } + + public error(_: Error, __?: {}) { + } +} diff --git a/lib/provider/log-provider.interface.ts b/core/nut.js/lib/provider/log/wrap-logger.function.ts similarity index 52% rename from lib/provider/log-provider.interface.ts rename to core/nut.js/lib/provider/log/wrap-logger.function.ts index 124672cf..7eaa2d57 100644 --- a/lib/provider/log-provider.interface.ts +++ b/core/nut.js/lib/provider/log/wrap-logger.function.ts @@ -1,21 +1,10 @@ -export type LogFunction = (message: string, data?: {}) => void; -export type ErrorLogFunction = (error: Error, data?: {}) => void; +import { LogProviderInterface } from "@nut-tree/provider-interfaces"; const logIdentifier = "[nut.js]"; - -export interface LogProviderInterface { - trace: LogFunction; - debug: LogFunction; - info: LogFunction; - warn: LogFunction; - error: ErrorLogFunction; -} - -const nonErrorLevels = ['info', 'warn', 'debug', 'trace']; -const errorLevels = ['error']; - -type NonErrorLogger = Omit; -type ErrorLogger = Pick; +const nonErrorLevels = ["info", "warn", "debug", "trace"]; +const errorLevels = ["error"]; +type NonErrorLogger = Omit; +type ErrorLogger = Pick; export function wrapLogger(originalLogger: LogProviderInterface): LogProviderInterface { for (const level of nonErrorLevels) { @@ -23,16 +12,15 @@ export function wrapLogger(originalLogger: LogProviderInterface): LogProviderInt originalLogger[level as keyof NonErrorLogger] = (message: string, data?: {}) => { const wrappedMessage = `${logIdentifier} - ${message}`; originalMethod(wrappedMessage, data); - } + }; } for (const level of errorLevels) { const originalMethod = originalLogger[level as keyof ErrorLogger]; originalLogger[level as keyof ErrorLogger] = (message: Error, data?: {}) => { - const wrappedMessage = `${logIdentifier} - ${message}`; - message.message = wrappedMessage; + message.message = `${logIdentifier} - ${message}`; originalMethod(message, data); - } + }; } return originalLogger; -} +} \ No newline at end of file diff --git a/lib/provider/provider-registry.class.spec.ts b/core/nut.js/lib/provider/provider-registry.class.spec.ts similarity index 89% rename from lib/provider/provider-registry.class.spec.ts rename to core/nut.js/lib/provider/provider-registry.class.spec.ts index e48b54f2..6ec8fc0f 100644 --- a/lib/provider/provider-registry.class.spec.ts +++ b/core/nut.js/lib/provider/provider-registry.class.spec.ts @@ -1,12 +1,14 @@ import providerRegistry from "./provider-registry.class"; -import { MouseProviderInterface } from "./mouse-provider.interface"; -import { ImageProcessor } from "./image-processor.interface"; -import { ImageWriter } from "./image-writer.type"; -import { ImageReader } from "./image-reader.type"; -import { ClipboardProviderInterface } from "./clipboard-provider.interface"; -import { KeyboardProviderInterface } from "./keyboard-provider.interface"; -import { ScreenProviderInterface } from "./screen-provider.interface"; -import { WindowProviderInterface } from "./window-provider.interface"; +import { + ClipboardProviderInterface, + ImageProcessor, + ImageReader, + ImageWriter, + KeyboardProviderInterface, + MouseProviderInterface, + ScreenProviderInterface, + WindowProviderInterface +} from "@nut-tree/provider-interfaces"; describe("DefaultProviderRegistry", () => { describe("non-defaults", () => { diff --git a/lib/provider/provider-registry.class.ts b/core/nut.js/lib/provider/provider-registry.class.ts similarity index 74% rename from lib/provider/provider-registry.class.ts rename to core/nut.js/lib/provider/provider-registry.class.ts index b168c136..78ee9ec4 100644 --- a/lib/provider/provider-registry.class.ts +++ b/core/nut.js/lib/provider/provider-registry.class.ts @@ -1,22 +1,24 @@ -import { ClipboardProviderInterface } from "./clipboard-provider.interface"; -import { ImageFinderInterface } from "./image-finder.interface"; -import { KeyboardProviderInterface } from "./keyboard-provider.interface"; -import { MouseProviderInterface } from "./mouse-provider.interface"; -import { ScreenProviderInterface } from "./screen-provider.interface"; -import { WindowProviderInterface } from "./window-provider.interface"; - -import { ImageReader } from "./image-reader.type"; -import { ImageWriter } from "./image-writer.type"; -import { ImageProcessor } from "./image-processor.interface"; +import { + ClipboardProviderInterface, + ColorFinderInterface, + ImageFinderInterface, + ImageProcessor, + ImageReader, + ImageWriter, + KeyboardProviderInterface, + LogProviderInterface, + MouseProviderInterface, + ProviderRegistry, + ScreenProviderInterface, + TextFinderInterface, + WindowFinderInterface, + WindowProviderInterface +} from "@nut-tree/provider-interfaces"; import ImageReaderImpl from "./io/jimp-image-reader.class"; import ImageWriterImpl from "./io/jimp-image-writer.class"; import ImageProcessorImpl from "./image/jimp-image-processor.class"; -import { LogProviderInterface, wrapLogger } from "./log-provider.interface"; import { NoopLogProvider } from "./log/noop-log-provider.class"; -import { TextFinderInterface } from "./text-finder.interface"; -import { WindowFinderInterface } from "./window-finder.interface"; -import { ColorFinderInterface } from "./color-finder.interface"; import ColorFinderImpl from "./color/color-finder.class"; import { DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR, @@ -25,87 +27,14 @@ import { DISABLE_DEFAULT_PROVIDERS_ENV_VAR, DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR, DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR, + NPM_CONFIG_DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR, + NPM_CONFIG_DISABLE_DEFAULT_KEYBOARD_PROVIDER_ENV_VAR, + NPM_CONFIG_DISABLE_DEFAULT_MOUSE_PROVIDER_ENV_VAR, + NPM_CONFIG_DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR, + NPM_CONFIG_DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR } from "../constants"; +import { wrapLogger } from "./log/wrap-logger.function"; -export interface ProviderRegistry { - hasClipboard(): boolean; - - getClipboard(): ClipboardProviderInterface; - - registerClipboardProvider(value: ClipboardProviderInterface): void; - - hasKeyboard(): boolean; - - getKeyboard(): KeyboardProviderInterface; - - registerKeyboardProvider(value: KeyboardProviderInterface): void; - - hasMouse(): boolean; - - getMouse(): MouseProviderInterface; - - registerMouseProvider(value: MouseProviderInterface): void; - - hasScreen(): boolean; - - getScreen(): ScreenProviderInterface; - - registerScreenProvider(value: ScreenProviderInterface): void; - - hasWindow(): boolean; - - getWindow(): WindowProviderInterface; - - registerWindowProvider(value: WindowProviderInterface): void; - - hasImageFinder(): boolean; - - getImageFinder(): ImageFinderInterface; - - registerImageFinder(value: ImageFinderInterface): void; - - hasImageReader(): boolean; - - getImageReader(): ImageReader; - - registerImageReader(value: ImageReader): void; - - hasImageWriter(): boolean; - - getImageWriter(): ImageWriter; - - registerImageWriter(value: ImageWriter): void; - - hasImageProcessor(): boolean; - - getImageProcessor(): ImageProcessor; - - registerImageProcessor(value: ImageProcessor): void; - - hasLogProvider(): boolean; - - getLogProvider(): LogProviderInterface; - - registerLogProvider(value: LogProviderInterface): void; - - hasTextFinder(): boolean; - - getTextFinder(): TextFinderInterface; - - registerTextFinder(value: TextFinderInterface): void; - - hasWindowFinder(): boolean; - - getWindowFinder(): WindowFinderInterface; - - registerWindowFinder(value: WindowFinderInterface): void; - - hasColorFinder(): boolean; - - getColorFinder(): ColorFinderInterface; - - registerColorFinder(value: ColorFinderInterface): void; -} class DefaultProviderRegistry implements ProviderRegistry { private _clipboard?: ClipboardProviderInterface; @@ -366,23 +295,23 @@ providerRegistry.registerColorFinder(new ColorFinderImpl()); providerRegistry.registerLogProvider(new NoopLogProvider()); if (!process.env[DISABLE_DEFAULT_PROVIDERS_ENV_VAR]) { - if (!process.env[DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR]) { + if (!process.env[DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR] && !process.env[NPM_CONFIG_DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR]) { const Clipboard = require("@nut-tree/default-clipboard-provider").default; providerRegistry.registerClipboardProvider(new Clipboard()); } - if (!process.env[DISABLE_DEFAULT_KEYBOARD_PROVIDER_ENV_VAR]) { + if (!process.env[DISABLE_DEFAULT_KEYBOARD_PROVIDER_ENV_VAR] && !process.env[NPM_CONFIG_DISABLE_DEFAULT_KEYBOARD_PROVIDER_ENV_VAR]) { const { DefaultKeyboardAction } = require("@nut-tree/libnut"); providerRegistry.registerKeyboardProvider(new DefaultKeyboardAction()); } - if (!process.env[DISABLE_DEFAULT_MOUSE_PROVIDER_ENV_VAR]) { + if (!process.env[DISABLE_DEFAULT_MOUSE_PROVIDER_ENV_VAR] && !process.env[NPM_CONFIG_DISABLE_DEFAULT_MOUSE_PROVIDER_ENV_VAR]) { const { DefaultMouseAction } = require("@nut-tree/libnut"); providerRegistry.registerMouseProvider(new DefaultMouseAction()); } - if (!process.env[DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR]) { + if (!process.env[DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR] && !process.env[NPM_CONFIG_DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR]) { const { DefaultScreenAction } = require("@nut-tree/libnut"); providerRegistry.registerScreenProvider(new DefaultScreenAction()); } - if (!process.env[DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR]) { + if (!process.env[DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR] && !process.env[NPM_CONFIG_DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR]) { const { DefaultWindowAction } = require("@nut-tree/libnut"); providerRegistry.registerWindowProvider(new DefaultWindowAction()); } diff --git a/core/nut.js/lib/screen-helpers.function.spec.ts b/core/nut.js/lib/screen-helpers.function.spec.ts new file mode 100644 index 00000000..8c6347a5 --- /dev/null +++ b/core/nut.js/lib/screen-helpers.function.spec.ts @@ -0,0 +1,211 @@ +import { Image, Region, TextQuery } from "@nut-tree/shared"; +import { + createMatchRequest, + getMatchResult, + getMatchResults, + isImageMatchRequest, + isTextMatchRequest +} from "./screen-helpers.function"; +import { mockPartial } from "sneer"; +import { + ImageFinderInterface, + LogProviderInterface, + ProviderRegistry, + TextFinderInterface +} from "@nut-tree/provider-interfaces"; +import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; + +beforeEach(() => { + jest.clearAllMocks(); +}); + +const imageFinderMock: ImageFinderInterface = { + findMatch: jest.fn(), + findMatches: jest.fn() +}; +const textFinderMock: TextFinderInterface = { + findMatch: jest.fn(), + findMatches: jest.fn() +}; + +const providerRegistryMock = mockPartial({ + getLogProvider(): LogProviderInterface { + return new NoopLogProvider(); + }, + getImageFinder(): ImageFinderInterface { + return imageFinderMock as unknown as ImageFinderInterface; + }, + getTextFinder(): TextFinderInterface { + return textFinderMock as unknown as TextFinderInterface; + } +}); + +const screenImage = new Image(0, 0, Buffer.of(0), 3, "dummy", 0, 0); +const dummyRegion = new Region(0, 0, 0, 0); + +describe("screen helpers", () => { + describe("MatchRequest", () => { + it("should create an image match request for images", () => { + // GIVEN + const needle = new Image(0, 0, Buffer.of(0), 3, "dummy", 0, 0); + + // WHEN + const matchRequest = createMatchRequest( + providerRegistryMock, + needle, + dummyRegion, + 0, + screenImage + ); + + // THEN + expect(isImageMatchRequest(matchRequest)).toBeTruthy(); + }); + + it.each([ + { + id: "dummy", + type: "text", + by: { + word: "dummy-query" + } + }, + { + id: "dummy", + type: "text", + by: { + line: "dummy-query" + } + } + ])( + "should create a text match request for text queries", + (needle: TextQuery) => { + // GIVEN + + // WHEN + const matchRequest = createMatchRequest( + providerRegistryMock, + needle, + dummyRegion, + 0, + screenImage + ); + + // THEN + expect(isTextMatchRequest(matchRequest)).toBeTruthy(); + } + ); + }); + + const dummyImage = new Image(0, 0, Buffer.of(0), 3, "dummy-needle", 0, 0); + + describe("matchResults", () => { + describe("getMatchResult", () => { + it("should call the correct finder implementation for a given image match request", async () => { + // GIVEN + const imageMatchRequest = createMatchRequest( + providerRegistryMock, + dummyImage, + dummyRegion, + 0, + screenImage + ); + + // WHEN + await getMatchResult(providerRegistryMock, imageMatchRequest); + + // THEN + expect(imageFinderMock.findMatch).toHaveBeenCalledTimes(1); + }); + + it.each([ + { + id: "dummy", + type: "text", + by: { + word: "dummy-query" + } + }, + { + id: "dummy", + type: "text", + by: { + line: "dummy-query" + } + } + ])( + "should all the correct finder implementation for a given text query", + async (needle: TextQuery) => { + // GIVEN + const matchRequest = createMatchRequest( + providerRegistryMock, + needle, + dummyRegion, + 0, + screenImage + ); + + // WHEN + await getMatchResult(providerRegistryMock, matchRequest); + + // THEN + expect(textFinderMock.findMatch).toHaveBeenCalledTimes(1); + } + ); + }); + + describe("getMatchResults", () => { + it("should call the correct finder implementation for a given image match request", async () => { + // GIVEN + const imageMatchRequest = createMatchRequest( + providerRegistryMock, + dummyImage, + dummyRegion, + 0, + screenImage + ); + + // WHEN + await getMatchResults(providerRegistryMock, imageMatchRequest); + + // THEN + expect(imageFinderMock.findMatches).toHaveBeenCalledTimes(1); + }); + + it.each([ + { + id: "dummy", + type: "text", + by: { + word: "dummy-query" + } + }, + { + id: "dummy", + type: "text", + by: { + line: "dummy-query" + } + } + ])( + "should all the correct finder implementation for a given text query", + async (needle: TextQuery) => { + // GIVEN + const matchRequest = createMatchRequest( + providerRegistryMock, + needle, + dummyRegion, + 0, + screenImage + ); + + // WHEN + await getMatchResults(providerRegistryMock, matchRequest); + + // THEN + expect(textFinderMock.findMatches).toHaveBeenCalledTimes(1); + } + ); + }); + }); +}); \ No newline at end of file diff --git a/core/nut.js/lib/screen-helpers.function.ts b/core/nut.js/lib/screen-helpers.function.ts new file mode 100644 index 00000000..d20c9fa0 --- /dev/null +++ b/core/nut.js/lib/screen-helpers.function.ts @@ -0,0 +1,182 @@ +import { + ColorQuery, + Image, + isColorQuery, + isImage, + isLineQuery, + isTextQuery, + MatchRequest, + MatchResult, + OptionalSearchParameters, + Point, + PointResultFindInput, + Region, + RegionResultFindInput, + TextQuery +} from "@nut-tree/shared"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; + +export function isRegionResultFindInput( + input: RegionResultFindInput | PointResultFindInput +): input is RegionResultFindInput { + return isImage(input) || isTextQuery(input); +} + +export function isPointResultFindInput( + input: RegionResultFindInput | PointResultFindInput +): input is PointResultFindInput { + return isColorQuery(input); +} + +export function isImageMatchRequest( + matchRequest: any +): matchRequest is MatchRequest { + return isImage(matchRequest.needle); +} + +export function isTextMatchRequest( + matchRequest: any +): matchRequest is MatchRequest { + return isTextQuery(matchRequest.needle); +} + +export function isColorMatchRequest( + matchRequest: any +): matchRequest is MatchRequest { + return isColorQuery(matchRequest.needle); +} + +export function createMatchRequest( + providerRegistry: ProviderRegistry, + needle: PointResultFindInput, + searchRegion: Region, + minMatch: number | undefined, + screenImage: Image, + params?: OptionalSearchParameters +): MatchRequest; +export function createMatchRequest( + providerRegistry: ProviderRegistry, + needle: RegionResultFindInput, + searchRegion: Region, + minMatch: number | undefined, + screenImage: Image, + params?: OptionalSearchParameters +): MatchRequest; +export function createMatchRequest( + providerRegistry: ProviderRegistry, + needle: RegionResultFindInput | PointResultFindInput, + searchRegion: Region, + minMatch: number | undefined, + screenImage: Image, + params?: OptionalSearchParameters +): + | MatchRequest + | MatchRequest; +export function createMatchRequest( + providerRegistry: ProviderRegistry, + needle: RegionResultFindInput | PointResultFindInput, + searchRegion: Region, + minMatch: number | undefined, + screenImage: Image, + params?: OptionalSearchParameters +): + | MatchRequest + | MatchRequest { + if (isImage(needle)) { + providerRegistry + .getLogProvider() + .info( + `Searching for image ${ + needle.id + } in region ${searchRegion.toString()}.${ + minMatch != null ? ` Required confidence: ${minMatch}` : "" + }` + ); + + return new MatchRequest( + screenImage, + needle, + minMatch, + params?.providerData + ); + } else if (isTextQuery(needle)) { + providerRegistry.getLogProvider().info( + `Searching for ${isLineQuery(needle) ? "line" : "word"} { + ${isLineQuery(needle) ? needle.by.line : needle.by.word} + } in region ${searchRegion.toString()}.${ + minMatch != null + ? ` Required confidence: ${minMatch}` + : "" + }` + ); + + return new MatchRequest( + screenImage, + needle, + minMatch, + params?.providerData + ); + } else if (isColorQuery(needle)) { + const color = needle.by.color; + providerRegistry + .getLogProvider() + .info( + `Searching for color RGBA(${color.R},${color.G},${color.B},${ + color.A + }) in region ${searchRegion.toString()}.` + ); + + return new MatchRequest(screenImage, needle, 1, params?.providerData); + } + throw new Error(`Unknown input type: ${JSON.stringify(needle)}`); +} + +export async function getMatchResults( + providerRegistry: ProviderRegistry, + matchRequest: MatchRequest +): Promise[]>; +export async function getMatchResults( + providerRegistry: ProviderRegistry, + matchRequest: MatchRequest +): Promise[]>; +export async function getMatchResults( + providerRegistry: ProviderRegistry, + matchRequest: + | MatchRequest + | MatchRequest +): Promise[]> { + if (isImageMatchRequest(matchRequest)) { + return providerRegistry.getImageFinder().findMatches(matchRequest); + } else if (isTextMatchRequest(matchRequest)) { + return providerRegistry.getTextFinder().findMatches(matchRequest); + } else if (isColorMatchRequest(matchRequest)) { + return providerRegistry.getColorFinder().findMatches(matchRequest); + } + throw new Error( + `Unknown match request type: ${JSON.stringify(matchRequest.needle)}` + ); +} + +export async function getMatchResult( + providerRegistry: ProviderRegistry, + matchRequest: MatchRequest +): Promise>; +export async function getMatchResult( + providerRegistry: ProviderRegistry, + matchRequest: MatchRequest +): Promise>; +export async function getMatchResult( + providerRegistry: ProviderRegistry, + matchRequest: + | MatchRequest + | MatchRequest +): Promise> { + if (isImageMatchRequest(matchRequest)) { + return providerRegistry.getImageFinder().findMatch(matchRequest); + } else if (isTextMatchRequest(matchRequest)) { + return providerRegistry.getTextFinder().findMatch(matchRequest); + } else if (isColorMatchRequest(matchRequest)) { + return providerRegistry.getColorFinder().findMatch(matchRequest); + } + throw new Error("Unknown match request type"); +} diff --git a/lib/screen.class.spec.ts b/core/nut.js/lib/screen.class.spec.ts similarity index 87% rename from lib/screen.class.spec.ts rename to core/nut.js/lib/screen.class.spec.ts index 3405fa4c..630a96f6 100644 --- a/lib/screen.class.spec.ts +++ b/core/nut.js/lib/screen.class.spec.ts @@ -1,36 +1,38 @@ import { join } from "path"; import { cwd } from "process"; -import { Image } from "./image.class"; -import { MatchRequest } from "./match-request.class"; -import { MatchResult } from "./match-result.class"; -import { Region } from "./region.class"; +import { + ColorQuery, + Image, + MatchRequest, + MatchResult, + OptionalSearchParameters, + Point, + Region, + RGBA, + TextQuery, + WindowQuery +} from "@nut-tree/shared"; import { ScreenClass } from "./screen.class"; import { mockPartial } from "sneer"; -import { ProviderRegistry } from "./provider/provider-registry.class"; import { + ColorFinderInterface, ImageFinderInterface, ImageWriter, ImageWriterParameters, LogProviderInterface, + ProviderRegistry, ScreenProviderInterface, -} from "./provider"; -import { OptionalSearchParameters } from "./optionalsearchparameters.class"; + TextFinderInterface, + WindowFinderInterface +} from "@nut-tree/provider-interfaces"; import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; -import { ColorQuery, TextQuery, WindowQuery } from "./query.class"; -import { TextFinderInterface } from "./provider"; -import { WindowFinderInterface } from "./provider"; -import { RGBA } from "./rgba.class"; -import { ColorFinderInterface } from "./provider/color-finder.interface"; -import { Point } from "./point.class"; - -jest.mock("jimp", () => {}); const searchRegion = new Region(0, 0, 1000, 1000); const loggingMock = mockPartial({ debug: jest.fn(), info: jest.fn(), warn: jest.fn(), - error: jest.fn(), + error: jest.fn() }); const providerRegistryMock = mockPartial({ @@ -48,8 +50,8 @@ const providerRegistryMock = mockPartial({ 3, "needle_image", 4, - searchRegion.width * 4, - ), + searchRegion.width * 4 + ) ); }, screenSize(): Promise { @@ -60,9 +62,9 @@ const providerRegistryMock = mockPartial({ }, screenHeight(): Promise { return Promise.resolve(searchRegion.height); - }, + } }); - }, + } }); beforeEach(() => { @@ -110,15 +112,15 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const needlePromise = Promise.resolve(needle); const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -136,15 +138,15 @@ describe("Screen.", () => { id: "window-query", type: "window", by: { - title: "query", - }, + title: "query" + } }; const findMatchMock = jest.fn(() => Promise.resolve(1234)); providerRegistryMock.getWindowFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -165,15 +167,15 @@ describe("Screen.", () => { id: "color-query", type: "color", by: { - color: new RGBA(255, 0, 255, 1), - }, + color: new RGBA(255, 0, 255, 1) + } }; const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getColorFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -189,16 +191,16 @@ describe("Screen.", () => { id: "dummy", type: "text", by: { - word: "dummy-query", - }, + word: "dummy-query" + } }, { id: "dummy", type: "text", by: { - line: "dummy-query", - }, - }, + line: "dummy-query" + } + } ])( "should choose the correct finder implementation for text queries", async (needle: TextQuery) => { @@ -210,8 +212,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getTextFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -220,7 +222,7 @@ describe("Screen.", () => { // THEN expect(findMatchMock).toHaveBeenCalledTimes(1); - }, + } ); }); @@ -233,7 +235,7 @@ describe("Screen.", () => { // THEN await expect(result).rejects.toThrowError( - /find requires an Image, a text query, a color query or a window query.*/, + /find requires an Image, a text query, a color query or a window query.*/ ); }); @@ -248,15 +250,15 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const needlePromise = Promise.resolve(needle); const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -268,7 +270,7 @@ describe("Screen.", () => { const matchRequest = new MatchRequest( expect.any(Image), needle, - undefined, + undefined ); expect(findMatchMock).toHaveBeenCalledWith(matchRequest); }); @@ -279,8 +281,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -293,7 +295,7 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); SUT.on(needle, testCallback); @@ -301,8 +303,8 @@ describe("Screen.", () => { await SUT.find(needle); // THEN - expect(testCallback).toBeCalledTimes(1); - expect(testCallback).toBeCalledWith(matchResult); + expect(testCallback).toHaveBeenCalledTimes(1); + expect(testCallback).toHaveBeenCalledWith(matchResult); }); it("should call multiple registered hooks before resolve", async () => { @@ -311,8 +313,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -326,7 +328,7 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); SUT.on(needle, testCallback); SUT.on(needle, secondCallback); @@ -336,8 +338,8 @@ describe("Screen.", () => { // THEN for (const callback of [testCallback, secondCallback]) { - expect(callback).toBeCalledTimes(1); - expect(callback).toBeCalledWith(matchResult); + expect(callback).toHaveBeenCalledTimes(1); + expect(callback).toHaveBeenCalledWith(matchResult); } }); @@ -349,8 +351,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.reject(expectedReason)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -363,7 +365,7 @@ describe("Screen.", () => { // THEN await expect(resultRegion).rejects.toThrowError( - `Searching for ${id} failed. Reason: '${expectedReason}'`, + `Searching for ${id} failed. Reason: '${expectedReason}'` ); }); @@ -373,8 +375,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.reject(rejectionReason)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -387,7 +389,7 @@ describe("Screen.", () => { // THEN await expect(resultRegion).rejects.toThrowError( - `Searching for ${id} failed. Reason: '${rejectionReason}'`, + `Searching for ${id} failed. Reason: '${rejectionReason}'` ); }); @@ -399,8 +401,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -413,7 +415,7 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const parameters = new OptionalSearchParameters(undefined, minMatch); @@ -425,7 +427,7 @@ describe("Screen.", () => { const matchRequest = new MatchRequest( expect.any(Image), needle, - minMatch, + minMatch ); expect(findMatchMock).toHaveBeenCalledWith(matchRequest); }); @@ -438,8 +440,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -452,13 +454,13 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const parameters = new OptionalSearchParameters(customSearchRegion); const expectedMatchRequest = new MatchRequest( expect.any(Image), needle, - undefined, + undefined ); // WHEN @@ -476,8 +478,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -489,16 +491,16 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const parameters = new OptionalSearchParameters( customSearchRegion, - minMatch, + minMatch ); const expectedMatchRequest = new MatchRequest( expect.any(Image), needle, - minMatch, + minMatch ); // WHEN @@ -518,14 +520,14 @@ describe("Screen.", () => { limitedSearchRegion.left + resultRegion.left, limitedSearchRegion.top + resultRegion.top, resultRegion.width, - resultRegion.height, + resultRegion.height ); const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -534,8 +536,8 @@ describe("Screen.", () => { const matchRegion = await SUT.find( new Image(100, 100, Buffer.from([]), 3, "needle_image", 4, 100 * 4), { - searchRegion: limitedSearchRegion, - }, + searchRegion: limitedSearchRegion + } ); // THEN @@ -552,7 +554,7 @@ describe("Screen.", () => { ["with region bigger than screen on x axis", new Region(0, 0, 1100, 100)], [ "with region bigger than screen on y axis", - new Region(0, 0, 1000, 1100), + new Region(0, 0, 1000, 1100) ], ["with region of 1 px width", new Region(0, 0, 1, 1100)], ["with region of 1 px height", new Region(0, 0, 100, 1)], @@ -560,14 +562,14 @@ describe("Screen.", () => { ["with region leaving screen on y axis", new Region(0, 500, 100, 600)], [ "with NaN x coordinate", - new Region("a" as unknown as number, 0, 100, 100), + new Region("a" as unknown as number, 0, 100, 100) ], [ "with NaN y coordinate", - new Region(0, "a" as unknown as number, 100, 600), + new Region(0, "a" as unknown as number, 100, 600) ], ["with NaN on width", new Region(0, 0, "a" as unknown as number, 100)], - ["with NaN on height", new Region(0, 0, 100, "a" as unknown as number)], + ["with NaN on height", new Region(0, 0, 100, "a" as unknown as number)] ])("should reject search regions %s", async (_: string, region: Region) => { // GIVEN const id = "needle_image"; @@ -576,8 +578,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve(matchResult)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatch: findMatchMock, - }), + findMatch: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -585,12 +587,12 @@ describe("Screen.", () => { // WHEN const findPromise = SUT.find(needle, { - searchRegion: region, + searchRegion: region }); // THEN await expect(findPromise).rejects.toThrowError( - `Searching for ${id} failed. Reason:`, + `Searching for ${id} failed. Reason:` ); }); }); @@ -606,7 +608,7 @@ describe("Screen.", () => { // THEN await expect(result).rejects.toThrowError( - /findAll requires an Image, a text query, a color query or a window query.*/, + /findAll requires an Image, a text query, a color query or a window query.*/ ); }); @@ -622,15 +624,15 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const needlePromise = Promise.resolve(needle); const findMatchMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchMock, - }), + findMatches: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -648,15 +650,15 @@ describe("Screen.", () => { id: "window-query", type: "window", by: { - title: "query", - }, + title: "query" + } }; const findMatchMock = jest.fn(() => Promise.resolve([1234])); providerRegistryMock.getWindowFinder = jest.fn(() => mockPartial({ - findMatches: findMatchMock, - }), + findMatches: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -677,15 +679,15 @@ describe("Screen.", () => { id: "color-query", type: "color", by: { - color: new RGBA(255, 0, 255, 1), - }, + color: new RGBA(255, 0, 255, 1) + } }; const findMatchMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getColorFinder = jest.fn(() => mockPartial({ - findMatches: findMatchMock, - }), + findMatches: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -701,16 +703,16 @@ describe("Screen.", () => { id: "dummy", type: "text", by: { - word: "dummy-query", - }, + word: "dummy-query" + } }, { id: "dummy", type: "text", by: { - line: "dummy-query", - }, - }, + line: "dummy-query" + } + } ])( "should choose the correct finder implementation for text queries", async (needle: TextQuery) => { @@ -722,8 +724,8 @@ describe("Screen.", () => { const findMatchMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getTextFinder = jest.fn(() => mockPartial({ - findMatches: findMatchMock, - }), + findMatches: findMatchMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -732,7 +734,7 @@ describe("Screen.", () => { // THEN expect(findMatchMock).toHaveBeenCalledTimes(1); - }, + } ); }); it("should call registered hook before resolve", async () => { @@ -742,8 +744,8 @@ describe("Screen.", () => { const findMatchesMock = jest.fn(() => Promise.resolve(matchResults)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -756,7 +758,7 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); SUT.on(needle, testCallback); @@ -764,8 +766,8 @@ describe("Screen.", () => { await SUT.findAll(needle); // THEN - expect(testCallback).toBeCalledTimes(matchResults.length); - expect(testCallback).toBeCalledWith(matchResult); + expect(testCallback).toHaveBeenCalledTimes(matchResults.length); + expect(testCallback).toHaveBeenCalledWith(matchResult); }); it("should call multiple registered hooks before resolve", async () => { @@ -775,8 +777,8 @@ describe("Screen.", () => { const findMatchesMock = jest.fn(() => Promise.resolve(matchResults)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -790,7 +792,7 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); SUT.on(needle, testCallback); SUT.on(needle, secondCallback); @@ -800,8 +802,8 @@ describe("Screen.", () => { // THEN for (const callback of [testCallback, secondCallback]) { - expect(callback).toBeCalledTimes(matchResults.length); - expect(callback).toBeCalledWith(matchResult); + expect(callback).toHaveBeenCalledTimes(matchResults.length); + expect(callback).toHaveBeenCalledWith(matchResult); } }); @@ -811,8 +813,8 @@ describe("Screen.", () => { const findMatchesMock = jest.fn(() => Promise.reject(rejectionReason)); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -825,7 +827,7 @@ describe("Screen.", () => { // THEN await expect(resultRegion).rejects.toThrowError( - `Searching for ${id} failed. Reason: '${rejectionReason}'`, + `Searching for ${id} failed. Reason: '${rejectionReason}'` ); }); @@ -837,8 +839,8 @@ describe("Screen.", () => { const findMatchesMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -851,7 +853,7 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const parameters = new OptionalSearchParameters(undefined, minMatch); @@ -863,7 +865,7 @@ describe("Screen.", () => { const matchRequest = new MatchRequest( expect.any(Image), needle, - minMatch, + minMatch ); expect(findMatchesMock).toHaveBeenCalledWith(matchRequest); }); @@ -876,8 +878,8 @@ describe("Screen.", () => { const findMatchesMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -890,13 +892,13 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const parameters = new OptionalSearchParameters(customSearchRegion); const expectedMatchRequest = new MatchRequest( expect.any(Image), needle, - undefined, + undefined ); // WHEN @@ -914,8 +916,8 @@ describe("Screen.", () => { const findMatchesMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -927,16 +929,16 @@ describe("Screen.", () => { 3, "needle_image", 4, - 100 * 4, + 100 * 4 ); const parameters = new OptionalSearchParameters( customSearchRegion, - minMatch, + minMatch ); const expectedMatchRequest = new MatchRequest( expect.any(Image), needle, - minMatch, + minMatch ); // WHEN @@ -956,14 +958,14 @@ describe("Screen.", () => { limitedSearchRegion.left + resultRegion.left, limitedSearchRegion.top + resultRegion.top, resultRegion.width, - resultRegion.height, + resultRegion.height ); const findMatchesMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -972,8 +974,8 @@ describe("Screen.", () => { const [matchRegion] = await SUT.findAll( new Image(100, 100, Buffer.from([]), 3, "needle_image", 4, 100 * 4), { - searchRegion: limitedSearchRegion, - }, + searchRegion: limitedSearchRegion + } ); // THEN @@ -990,7 +992,7 @@ describe("Screen.", () => { ["with region bigger than screen on x axis", new Region(0, 0, 1100, 100)], [ "with region bigger than screen on y axis", - new Region(0, 0, 1000, 1100), + new Region(0, 0, 1000, 1100) ], ["with region of 1 px width", new Region(0, 0, 1, 1100)], ["with region of 1 px height", new Region(0, 0, 100, 1)], @@ -998,14 +1000,14 @@ describe("Screen.", () => { ["with region leaving screen on y axis", new Region(0, 500, 100, 600)], [ "with NaN x coordinate", - new Region("a" as unknown as number, 0, 100, 100), + new Region("a" as unknown as number, 0, 100, 100) ], [ "with NaN y coordinate", - new Region(0, "a" as unknown as number, 100, 600), + new Region(0, "a" as unknown as number, 100, 600) ], ["with NaN on width", new Region(0, 0, "a" as unknown as number, 100)], - ["with NaN on height", new Region(0, 0, 100, "a" as unknown as number)], + ["with NaN on height", new Region(0, 0, 100, "a" as unknown as number)] ])("should reject search regions %s", async (_: string, region: Region) => { // GIVEN const id = "needle_image"; @@ -1014,8 +1016,8 @@ describe("Screen.", () => { const findMatchesMock = jest.fn(() => Promise.resolve([matchResult])); providerRegistryMock.getImageFinder = jest.fn(() => mockPartial({ - findMatches: findMatchesMock, - }), + findMatches: findMatchesMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -1023,12 +1025,12 @@ describe("Screen.", () => { // WHEN const findPromise = SUT.findAll(needle, { - searchRegion: region, + searchRegion: region }); // THEN await expect(findPromise).rejects.toThrowError( - `Searching for ${id} failed. Reason:`, + `Searching for ${id} failed. Reason:` ); }); }); @@ -1039,8 +1041,8 @@ describe("Screen.", () => { const highlightMock = jest.fn((value: any) => Promise.resolve(value)); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - highlightScreenRegion: highlightMock, - }), + highlightScreenRegion: highlightMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -1056,13 +1058,13 @@ describe("Screen.", () => { // GIVEN const highlightRegion = new Region(10, 20, 30, 40); const highlightRegionPromise = new Promise((res) => - res(highlightRegion), + res(highlightRegion) ); const highlightMock = jest.fn((value: any) => Promise.resolve(value)); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - highlightScreenRegion: highlightMock, - }), + highlightScreenRegion: highlightMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -1085,19 +1087,19 @@ describe("Screen.", () => { 4, "test", 4, - 100 * 4, + 100 * 4 ); const grabScreenMock = jest.fn(() => Promise.resolve(screenshot)); const saveImageMock = jest.fn(); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - grabScreen: grabScreenMock, - }), + grabScreen: grabScreenMock + }) ); providerRegistryMock.getImageWriter = jest.fn(() => mockPartial({ - store: saveImageMock, - }), + store: saveImageMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -1106,7 +1108,7 @@ describe("Screen.", () => { const expectedImagePath = join(cwd(), imageName); const expectedData: ImageWriterParameters = { image: screenshot, - path: expectedImagePath, + path: expectedImagePath }; // WHEN @@ -1124,8 +1126,8 @@ describe("Screen.", () => { const grabScreenMock = jest.fn(() => Promise.resolve(screenshot)); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - grabScreen: grabScreenMock, - }), + grabScreen: grabScreenMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -1137,7 +1139,7 @@ describe("Screen.", () => { // THEN expect(result).rejects.toThrowError( - /^capture requires an Image, but received/, + /^capture requires an Image, but received/ ); }); }); @@ -1152,25 +1154,25 @@ describe("Screen.", () => { 4, "test", 4, - 100 * 4, + 100 * 4 ); const regionToCapture = mockPartial({ top: 42, left: 9, height: 10, - width: 3.14159265359, + width: 3.14159265359 }); const grabScreenMock = jest.fn(() => Promise.resolve(screenshot)); const saveImageMock = jest.fn(); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - grabScreenRegion: grabScreenMock, - }), + grabScreenRegion: grabScreenMock + }) ); providerRegistryMock.getImageWriter = jest.fn(() => mockPartial({ - store: saveImageMock, - }), + store: saveImageMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -1179,7 +1181,7 @@ describe("Screen.", () => { const expectedImagePath = join(cwd(), imageName); const expectedData: ImageWriterParameters = { image: screenshot, - path: expectedImagePath, + path: expectedImagePath }; // WHEN @@ -1198,13 +1200,13 @@ describe("Screen.", () => { top: 42, left: 9, height: 10, - width: 3.14159265359, + width: 3.14159265359 }); const grabScreenMock = jest.fn(() => Promise.resolve(screenshot)); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - grabScreenRegion: grabScreenMock, - }), + grabScreenRegion: grabScreenMock + }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -1216,7 +1218,7 @@ describe("Screen.", () => { // THEN expect(result).rejects.toThrowError( - /^captureRegion requires an Image, but received/, + /^captureRegion requires an Image, but received/ ); }); }); diff --git a/lib/screen.class.ts b/core/nut.js/lib/screen.class.ts similarity index 86% rename from lib/screen.class.ts rename to core/nut.js/lib/screen.class.ts index 27a72e9c..64dc65e5 100644 --- a/lib/screen.class.ts +++ b/core/nut.js/lib/screen.class.ts @@ -1,32 +1,42 @@ import { cwd } from "process"; -import { FileType } from "./file-type.enum"; -import { generateOutputPath } from "./generate-output-path.function"; -import { createMatchRequest, MatchRequest } from "./match-request.class"; -import { - getMatchResult, - getMatchResults, - MatchResult, -} from "./match-result.class"; -import { isRegion, Region } from "./region.class"; -import { timeout } from "./util/timeout.function"; -import { Image, isImage } from "./image.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { isPoint, Point } from "./point.class"; -import { OptionalSearchParameters } from "./optionalsearchparameters.class"; import { ColorQuery, + FileType, + FindInput, + FindResult, + Image, isColorQuery, + isImage, + isPoint, + isRegion, isTextQuery, isWindowQuery, LineQuery, - WindowQuery, - WordQuery, -} from "./query.class"; + MatchRequest, + MatchResult, + OptionalSearchParameters, + Point, + PointResultFindInput, + Region, + RegionResultFindInput, + WindowResultFindInput, + WordQuery +} from "@nut-tree/shared"; +import { generateOutputPath } from "./generate-output-path.function"; +import { timeout } from "./util/timeout.function"; import { Window } from "./window.class"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; +import { + createMatchRequest, + getMatchResult, + getMatchResults, + isPointResultFindInput, + isRegionResultFindInput +} from "./screen-helpers.function"; export type WindowCallback = (target: Window) => void | Promise; export type MatchResultCallback = ( - target: MatchResult, + target: MatchResult ) => void | Promise; export type FindHookCallback = | WindowCallback @@ -36,7 +46,7 @@ export type FindHookCallback = function validateSearchRegion( search: Region, screen: Region, - providerRegistry: ProviderRegistry, + providerRegistry: ProviderRegistry ) { providerRegistry .getLogProvider() @@ -63,7 +73,7 @@ function validateSearchRegion( } if (search.width < 2 || search.height < 2) { const e = new Error( - `Search region is not large enough. Must be at least two pixels in both width and height.`, + `Search region is not large enough. Must be at least two pixels in both width and height.` ); providerRegistry.getLogProvider().error(e, { region: search }); throw e; @@ -73,7 +83,7 @@ function validateSearchRegion( search.top + search.height > screen.height ) { const e = new Error( - `Search region extends beyond screen boundaries (${screen.width}x${screen.height})`, + `Search region extends beyond screen boundaries (${screen.width}x${screen.height})` ); providerRegistry.getLogProvider().error(e, { region: search, screen }); throw e; @@ -109,27 +119,6 @@ export interface ScreenConfig { resourceDirectory: string; } -export type RegionResultFindInput = Image | WordQuery | LineQuery; -export type PointResultFindInput = ColorQuery; -export type WindowResultFindInput = WindowQuery; -export type FindInput = - | RegionResultFindInput - | WindowResultFindInput - | PointResultFindInput; -export type FindResult = Region | Point | Window; - -function isRegionResultFindInput( - input: RegionResultFindInput | PointResultFindInput, -): input is RegionResultFindInput { - return isImage(input) || isTextQuery(input); -} - -function isPointResultFindInput( - input: RegionResultFindInput | PointResultFindInput, -): input is PointResultFindInput { - return isColorQuery(input); -} - /** * {@link ScreenClass} class provides methods to access screen content of a systems main display */ @@ -139,7 +128,7 @@ export class ScreenClass { autoHighlight: false, highlightDurationMs: 500, highlightOpacity: 0.25, - resourceDirectory: cwd(), + resourceDirectory: cwd() }; /** @@ -152,8 +141,9 @@ export class ScreenClass { private findHooks: Map = new Map< FindInput, FindHookCallback[] - >(), - ) {} + >() + ) { + } /** * {@link width} returns the main screen width @@ -182,23 +172,23 @@ export class ScreenClass { */ public async find( searchInput: RegionResultFindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async find( searchInput: PointResultFindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async find( searchInput: WindowResultFindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async find( searchInput: FindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async find( searchInput: FindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise { const needle = await searchInput; this.providerRegistry.getLogProvider().info(`Searching for ${needle}`); @@ -236,7 +226,7 @@ export class ScreenClass { searchRegion, minMatch, screenImage, - params, + params ); if (isRegionResultFindInput(needle)) { @@ -245,7 +235,7 @@ export class ScreenClass { matchRequest as MatchRequest< RegionResultFindInput, PROVIDER_DATA_TYPE - >, + > ); this.providerRegistry @@ -265,7 +255,7 @@ export class ScreenClass { searchRegion.left + matchResult.location.left, searchRegion.top + matchResult.location.top, matchResult.location.width, - matchResult.location.height, + matchResult.location.height ); this.providerRegistry @@ -286,7 +276,7 @@ export class ScreenClass { matchRequest as MatchRequest< PointResultFindInput, PROVIDER_DATA_TYPE - >, + > ); this.providerRegistry @@ -304,7 +294,7 @@ export class ScreenClass { const resultPoint = new Point( searchRegion.left + matchResult.location.x, - searchRegion.top + matchResult.location.y, + searchRegion.top + matchResult.location.y ); this.providerRegistry @@ -315,11 +305,11 @@ export class ScreenClass { } } throw new Error( - `Search input is not supported. Please use a valid search input type.`, + `Search input is not supported. Please use a valid search input type.` ); } catch (e) { const error = new Error( - `Searching for ${needle.id} failed. Reason: '${e}'`, + `Searching for ${needle.id} failed. Reason: '${e}'` ); this.providerRegistry.getLogProvider().error(error); throw error; @@ -333,19 +323,19 @@ export class ScreenClass { */ public async findAll( searchInput: RegionResultFindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async findAll( searchInput: PointResultFindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async findAll( searchInput: WindowResultFindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async findAll( searchInput: FindInput | Promise, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise { const needle = await searchInput; this.providerRegistry.getLogProvider().info(`Searching for ${needle}`); @@ -359,13 +349,13 @@ export class ScreenClass { .findMatches(needle); const windows = matches.map( (windowHandle: number) => - new Window(this.providerRegistry, windowHandle), + new Window(this.providerRegistry, windowHandle) ); const possibleHooks = this.getHooksForInput(needle) || []; this.providerRegistry .getLogProvider() .debug( - `${possibleHooks.length} hooks triggered for ${windows.length} matches`, + `${possibleHooks.length} hooks triggered for ${windows.length} matches` ); for (const hook of possibleHooks) { for (const wnd of windows) { @@ -385,7 +375,7 @@ export class ScreenClass { searchRegion, minMatch, screenImage, - params, + params ); validateSearchRegion(searchRegion, screenSize, this.providerRegistry); @@ -393,13 +383,13 @@ export class ScreenClass { const matchResults = await getMatchResults( this.providerRegistry, - matchRequest, + matchRequest ); const possibleHooks = this.getHooksForInput(needle) || []; this.providerRegistry .getLogProvider() .debug( - `${possibleHooks.length} hooks triggered for ${matchResults.length} matches`, + `${possibleHooks.length} hooks triggered for ${matchResults.length} matches` ); for (const hook of possibleHooks) { for (const matchResult of matchResults) { @@ -412,7 +402,7 @@ export class ScreenClass { searchRegion.left + matchResult.location.left, searchRegion.top + matchResult.location.top, matchResult.location.width, - matchResult.location.height, + matchResult.location.height ); this.providerRegistry .getLogProvider() @@ -445,7 +435,7 @@ export class ScreenClass { searchRegion, 0, screenImage, - params, + params ); validateSearchRegion(searchRegion, screenSize, this.providerRegistry); @@ -453,13 +443,13 @@ export class ScreenClass { const matchResults = await getMatchResults( this.providerRegistry, - matchRequest, + matchRequest ); const possibleHooks = this.getHooksForInput(needle) || []; this.providerRegistry .getLogProvider() .debug( - `${possibleHooks.length} hooks triggered for ${matchResults.length} matches`, + `${possibleHooks.length} hooks triggered for ${matchResults.length} matches` ); for (const hook of possibleHooks) { for (const matchResult of matchResults) { @@ -470,7 +460,7 @@ export class ScreenClass { return matchResults.map((matchResult) => { const resultPoint = new Point( searchRegion.left + matchResult.location.x, - searchRegion.top + matchResult.location.y, + searchRegion.top + matchResult.location.y ); this.providerRegistry .getLogProvider() @@ -479,11 +469,11 @@ export class ScreenClass { }); } throw new Error( - `Search input is not supported. Please use a valid search input type.`, + `Search input is not supported. Please use a valid search input type.` ); } catch (e) { const error = new Error( - `Searching for ${needle.id} failed. Reason: '${e}'`, + `Searching for ${needle.id} failed. Reason: '${e}'` ); this.providerRegistry.getLogProvider().error(error); throw error; @@ -495,14 +485,14 @@ export class ScreenClass { * @param regionToHighlight The {@link Region} to highlight */ public async highlight( - regionToHighlight: Region | Promise, + regionToHighlight: Region | Promise ): Promise { const highlightRegion = await regionToHighlight; if (!isRegion(highlightRegion)) { const e = Error( `highlight requires an Region, but received ${JSON.stringify( - highlightRegion, - )}`, + highlightRegion + )}` ); this.providerRegistry.getLogProvider().error(e); throw e; @@ -512,14 +502,14 @@ export class ScreenClass { .info( `Highlighting ${highlightRegion.toString()} for ${ this.config.highlightDurationMs / 1000 - } with ${this.config.highlightOpacity * 100}% opacity`, + } with ${this.config.highlightOpacity * 100}% opacity` ); await this.providerRegistry .getScreen() .highlightScreenRegion( highlightRegion, this.config.highlightDurationMs, - this.config.highlightOpacity, + this.config.highlightOpacity ); return highlightRegion; } @@ -535,25 +525,25 @@ export class ScreenClass { searchInput: RegionResultFindInput | Promise, timeoutMs?: number, updateInterval?: number, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async waitFor( searchInput: PointResultFindInput | Promise, timeoutMs?: number, updateInterval?: number, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async waitFor( searchInput: WindowResultFindInput | Promise, timeoutMs?: number, updateInterval?: number, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise; public async waitFor( searchInput: FindInput | Promise, timeoutMs?: number, updateInterval?: number, - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ): Promise { const needle = await searchInput; @@ -567,7 +557,7 @@ export class ScreenClass { .info( `Waiting for ${needle.id} to appear on screen. Timeout: ${ timeoutValue / 1000 - } seconds, interval: ${updateIntervalValue} ms`, + } seconds, interval: ${updateIntervalValue} ms` ); return timeout( updateIntervalValue, @@ -576,8 +566,8 @@ export class ScreenClass { return this.find(needle, params); }, { - signal: params?.abort, - }, + signal: params?.abort + } ); } @@ -589,11 +579,11 @@ export class ScreenClass { public on(searchInput: WindowResultFindInput, callback: WindowCallback): void; public on( searchInput: PointResultFindInput, - callback: MatchResultCallback, + callback: MatchResultCallback ): void; public on( searchInput: RegionResultFindInput, - callback: MatchResultCallback, + callback: MatchResultCallback ): void; public on(searchInput: FindInput, callback: FindHookCallback): void { this.validateSearchInput("on", searchInput); @@ -605,7 +595,7 @@ export class ScreenClass { .info( `Registered callback for image ${searchInput.id}. There are currently ${ existingHooks.length + 1 - } hooks registered`, + } hooks registered` ); } @@ -622,14 +612,14 @@ export class ScreenClass { fileFormat: FileType = FileType.PNG, filePath: string = cwd(), fileNamePrefix: string = "", - fileNamePostfix: string = "", + fileNamePostfix: string = "" ): Promise { const currentScreen = await this.providerRegistry.getScreen().grabScreen(); if (!isImage(currentScreen)) { const e = new Error( `capture requires an Image, but received ${JSON.stringify( - currentScreen, - )}`, + currentScreen + )}` ); this.providerRegistry.getLogProvider().error(e); throw e; @@ -637,7 +627,7 @@ export class ScreenClass { this.providerRegistry .getLogProvider() .info( - `Capturing whole screen (0, 0, ${currentScreen.width}, ${currentScreen.height})`, + `Capturing whole screen (0, 0, ${currentScreen.width}, ${currentScreen.height})` ); return this.saveImage( currentScreen, @@ -645,7 +635,7 @@ export class ScreenClass { fileFormat, filePath, fileNamePrefix, - fileNamePostfix, + fileNamePostfix ); } @@ -657,7 +647,7 @@ export class ScreenClass { this.providerRegistry .getLogProvider() .info( - `Grabbed whole screen (0, 0, ${currentScreen.width}, ${currentScreen.height})`, + `Grabbed whole screen (0, 0, ${currentScreen.width}, ${currentScreen.height})` ); return currentScreen; } @@ -677,14 +667,14 @@ export class ScreenClass { fileFormat: FileType = FileType.PNG, filePath: string = cwd(), fileNamePrefix: string = "", - fileNamePostfix: string = "", + fileNamePostfix: string = "" ): Promise { const targetRegion = await regionToCapture; if (!isRegion(targetRegion)) { const e = new Error( `captureRegion requires an Region, but received ${JSON.stringify( - targetRegion, - )}`, + targetRegion + )}` ); this.providerRegistry.getLogProvider().error(e); throw e; @@ -698,8 +688,8 @@ export class ScreenClass { if (!isImage(regionImage)) { const e = new Error( `captureRegion requires an Image, but received ${JSON.stringify( - regionImage, - )}`, + regionImage + )}` ); this.providerRegistry.getLogProvider().error(e); throw e; @@ -710,7 +700,7 @@ export class ScreenClass { fileFormat, filePath, fileNamePrefix, - fileNamePostfix, + fileNamePostfix ); } @@ -719,14 +709,14 @@ export class ScreenClass { * @param regionToGrab The screen region to grab */ public async grabRegion( - regionToGrab: Region | Promise, + regionToGrab: Region | Promise ): Promise { const targetRegion = await regionToGrab; if (!isRegion(targetRegion)) { const e = new Error( `grabRegion requires an Region, but received ${JSON.stringify( - targetRegion, - )}`, + targetRegion + )}` ); this.providerRegistry.getLogProvider().error(e); throw e; @@ -749,14 +739,14 @@ export class ScreenClass { const inputPoint = await point; if (!isPoint(inputPoint)) { const e = new Error( - `colorAt requires a Point, but received ${JSON.stringify(inputPoint)}`, + `colorAt requires a Point, but received ${JSON.stringify(inputPoint)}` ); this.providerRegistry.getLogProvider().error(e); throw e; } const scaledPoint = new Point( inputPoint.x * screenContent.pixelDensity.scaleX, - inputPoint.y * screenContent.pixelDensity.scaleY, + inputPoint.y * screenContent.pixelDensity.scaleY ); this.providerRegistry .getLogProvider() @@ -765,7 +755,7 @@ export class ScreenClass { screenContent.pixelDensity.scaleX }, ${ screenContent.pixelDensity.scaleY - }) into ${scaledPoint.toString()}`, + }) into ${scaledPoint.toString()}` ); const color = await this.providerRegistry .getImageProcessor() @@ -782,13 +772,13 @@ export class ScreenClass { fileFormat: FileType, filePath: string, fileNamePrefix: string, - fileNamePostfix: string, + fileNamePostfix: string ) { const outputPath = generateOutputPath(fileName, { path: filePath, postfix: fileNamePostfix, prefix: fileNamePrefix, - type: fileFormat, + type: fileFormat }); this.providerRegistry .getLogProvider() @@ -801,7 +791,7 @@ export class ScreenClass { } private async getFindParameters( - params?: OptionalSearchParameters, + params?: OptionalSearchParameters ) { const minMatch = params?.confidence; const screenSize = await this.providerRegistry.getScreen().screenSize(); @@ -814,27 +804,27 @@ export class ScreenClass { minMatch, screenSize, searchRegion, - screenImage, + screenImage }; this.providerRegistry .getLogProvider() .debug(`Running on-screen search with parameters`, { minMatch, screenSize, - searchRegion, + searchRegion }); return findParameters; } private getHooksForInput(input: WindowResultFindInput): WindowCallback[]; private getHooksForInput( - input: RegionResultFindInput, + input: RegionResultFindInput ): MatchResultCallback[]; private getHooksForInput( - input: PointResultFindInput, + input: PointResultFindInput ): MatchResultCallback[]; private getHooksForInput( - input: FindInput, + input: FindInput ): | MatchResultCallback[] | MatchResultCallback[] @@ -865,7 +855,7 @@ export class ScreenClass { | LineQuery | WindowResultFindInput | PointResultFindInput - | Promise, + | Promise ) { if ( !isImage(needle) && @@ -875,8 +865,8 @@ export class ScreenClass { ) { const e = Error( `${functionName} requires an Image, a text query, a color query or a window query, but received ${JSON.stringify( - needle, - )}`, + needle + )}` ); this.providerRegistry.getLogProvider().error(e, { needle }); throw e; diff --git a/lib/screen.colorAt.spec.ts b/core/nut.js/lib/screen.colorAt.spec.ts similarity index 85% rename from lib/screen.colorAt.spec.ts rename to core/nut.js/lib/screen.colorAt.spec.ts index 65661595..fb139f5d 100644 --- a/lib/screen.colorAt.spec.ts +++ b/core/nut.js/lib/screen.colorAt.spec.ts @@ -1,17 +1,7 @@ -import { - Image, - loadImage, - Point, - Region, - RGBA, - ScreenClass, - ScreenProviderInterface, -} from "../index"; +import { Image, loadImage, Point, Region, RGBA, ScreenClass } from "../index"; import { mockPartial } from "sneer"; -import providerRegistry, { - ProviderRegistry, -} from "./provider/provider-registry.class"; -import { ImageProcessor } from "./provider/image-processor.interface"; +import providerRegistry from "./provider/provider-registry.class"; +import { ImageProcessor, ProviderRegistry, ScreenProviderInterface } from "@nut-tree/provider-interfaces"; import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; const searchRegion = new Region(0, 0, 1000, 1000); @@ -33,22 +23,22 @@ const providerRegistryMock = mockPartial({ }, screenSize(): Promise { return Promise.resolve(searchRegion); - }, + } }); }, getImageProcessor(): ImageProcessor { return providerRegistry.getImageProcessor(); - }, + } }); describe("colorAt", () => { it("should return the correct RGBA value for a given pixel", async () => { // GIVEN - const screenshot = loadImage(`${__dirname}/../e2e/assets/checkers.png`); + const screenshot = loadImage(`${__dirname}/../assets/checkers.png`); const grabScreenMock = jest.fn(() => Promise.resolve(screenshot)); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - grabScreen: grabScreenMock, + grabScreen: grabScreenMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -69,14 +59,14 @@ describe("colorAt", () => { it("should account for pixel density when retrieving pixel color", async () => { // GIVEN const screenshot = await loadImage( - `${__dirname}/../e2e/assets/checkers.png` + `${__dirname}/../assets/checkers.png` ); screenshot.pixelDensity.scaleX = 2.0; screenshot.pixelDensity.scaleY = 2.0; const grabScreenMock = jest.fn(() => Promise.resolve(screenshot)); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - grabScreen: grabScreenMock, + grabScreen: grabScreenMock }) ); providerRegistryMock.getLogProvider = () => new NoopLogProvider(); @@ -101,7 +91,7 @@ describe("colorAt", () => { ); providerRegistryMock.getScreen = jest.fn(() => mockPartial({ - grabScreen: grabScreenMock, + grabScreen: grabScreenMock }) ); const SUT = new ScreenClass(providerRegistryMock); diff --git a/lib/sleep.function.spec.ts b/core/nut.js/lib/sleep.function.spec.ts similarity index 100% rename from lib/sleep.function.spec.ts rename to core/nut.js/lib/sleep.function.spec.ts diff --git a/lib/sleep.function.ts b/core/nut.js/lib/sleep.function.ts similarity index 100% rename from lib/sleep.function.ts rename to core/nut.js/lib/sleep.function.ts diff --git a/lib/util/bresenham.class.spec.ts b/core/nut.js/lib/util/bresenham.class.spec.ts similarity index 96% rename from lib/util/bresenham.class.spec.ts rename to core/nut.js/lib/util/bresenham.class.spec.ts index a00154a4..2efe93a4 100644 --- a/lib/util/bresenham.class.spec.ts +++ b/core/nut.js/lib/util/bresenham.class.spec.ts @@ -1,4 +1,4 @@ -import { Point } from "../point.class"; +import { Point } from "@nut-tree/shared"; import { Bresenham } from "./bresenham.class"; describe("Bresenham", () => { diff --git a/lib/util/bresenham.class.ts b/core/nut.js/lib/util/bresenham.class.ts similarity index 97% rename from lib/util/bresenham.class.ts rename to core/nut.js/lib/util/bresenham.class.ts index 82a66396..efd6c568 100644 --- a/lib/util/bresenham.class.ts +++ b/core/nut.js/lib/util/bresenham.class.ts @@ -1,4 +1,4 @@ -import { Point } from "../point.class"; +import { Point } from "@nut-tree/shared"; export class Bresenham { public static compute(from: Point, to: Point): Point[] { diff --git a/lib/util/linehelper.class.spec.ts b/core/nut.js/lib/util/linehelper.class.spec.ts similarity index 96% rename from lib/util/linehelper.class.spec.ts rename to core/nut.js/lib/util/linehelper.class.spec.ts index 691f03c5..fdd63efa 100644 --- a/lib/util/linehelper.class.spec.ts +++ b/core/nut.js/lib/util/linehelper.class.spec.ts @@ -1,4 +1,4 @@ -import { Point } from "../point.class"; +import { Point } from "@nut-tree/shared"; import { LineHelper } from "./linehelper.class"; describe("LineHelper", () => { diff --git a/lib/util/linehelper.class.ts b/core/nut.js/lib/util/linehelper.class.ts similarity index 82% rename from lib/util/linehelper.class.ts rename to core/nut.js/lib/util/linehelper.class.ts index 2833f1c4..0407a4de 100644 --- a/lib/util/linehelper.class.ts +++ b/core/nut.js/lib/util/linehelper.class.ts @@ -1,4 +1,4 @@ -import { Point } from "../point.class"; +import { Point } from "@nut-tree/shared"; import { Bresenham } from "./bresenham.class"; diff --git a/lib/util/timeout.function.spec.ts b/core/nut.js/lib/util/timeout.function.spec.ts similarity index 90% rename from lib/util/timeout.function.spec.ts rename to core/nut.js/lib/util/timeout.function.spec.ts index 7fc5af96..1e6e0e0c 100644 --- a/lib/util/timeout.function.spec.ts +++ b/core/nut.js/lib/util/timeout.function.spec.ts @@ -1,5 +1,5 @@ import { timeout } from "./timeout.function"; -import AbortController from "node-abort-controller"; +import {AbortController} from "node-abort-controller"; import { sleep } from "../sleep.function"; describe("timeout", () => { @@ -17,7 +17,7 @@ describe("timeout", () => { await timeout(updateInterval, maxDuration, action); } catch (e) { expect(e).toBe( - `Action timed out after ${maxDuration} ms. Last rejection reason was: false.`, + `Action timed out after ${maxDuration} ms. Last rejection reason was: false.` ); } const end = Date.now(); @@ -40,7 +40,7 @@ describe("timeout", () => { await timeout(updateInterval, maxDuration, action); } catch (e) { expect(e).toEqual( - `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.`, + `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.` ); } const end = Date.now(); @@ -64,7 +64,7 @@ describe("timeout", () => { // THEN expect(end - start).toBeLessThan(updateInterval); - expect(action).toBeCalledTimes(1); + expect(action).toHaveBeenCalledTimes(1); }); it("should resolve after updateInterval if action resolves != true", async () => { @@ -82,7 +82,7 @@ describe("timeout", () => { // THEN expect(end - start).toBeLessThan(updateInterval); - expect(action).toBeCalledTimes(1); + expect(action).toHaveBeenCalledTimes(1); }); it("should retry until action succeeds", async () => { @@ -94,7 +94,7 @@ describe("timeout", () => { const action = jest.fn(() => { const interval = Date.now() - start; return new Promise((resolve, reject) => - interval > delay ? resolve(true) : reject(), + interval > delay ? resolve(true) : reject() ); }); @@ -119,13 +119,13 @@ describe("timeout", () => { await timeout(updateInterval, maxDuration, action); } catch (e) { expect(e).toEqual( - `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.`, + `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.` ); } const end = Date.now(); // THEN - expect(action).toBeCalledTimes(1); + expect(action).toHaveBeenCalledTimes(1); expect(end - start).toBeLessThan(updateInterval); }); @@ -144,9 +144,9 @@ describe("timeout", () => { // THEN await expect(SUT).rejects.toBe( - `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.`, + `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.` ); - expect(action).toBeCalledTimes(1); + expect(action).toHaveBeenCalledTimes(1); }); it("should fail after timeout if no result is returned from long running action", async () => { @@ -166,11 +166,11 @@ describe("timeout", () => { // THEN await expect(SUT).rejects.toBe( - `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.`, + `Action timed out after ${maxDuration} ms. Didn't receive a result within timeout.` ); - expect(action).toBeCalledTimes(1); + expect(action).toHaveBeenCalledTimes(1); await sleep(500); - expect(action).toBeCalledTimes(1); + expect(action).toHaveBeenCalledTimes(1); }); it("should be externally abortable", async () => { diff --git a/lib/util/timeout.function.ts b/core/nut.js/lib/util/timeout.function.ts similarity index 100% rename from lib/util/timeout.function.ts rename to core/nut.js/lib/util/timeout.function.ts diff --git a/lib/window-api.interface.ts b/core/nut.js/lib/window-api.interface.ts similarity index 100% rename from lib/window-api.interface.ts rename to core/nut.js/lib/window-api.interface.ts diff --git a/core/nut.js/lib/window-element.interface.ts b/core/nut.js/lib/window-element.interface.ts new file mode 100644 index 00000000..67542600 --- /dev/null +++ b/core/nut.js/lib/window-element.interface.ts @@ -0,0 +1,14 @@ +import { Region } from "@nut-tree/shared"; + +export interface WindowElement { + type?: string; + region?: Region; + title?: string; + value?: string; + isFocused?: boolean; + selectedText?: string; + isEnabled?: boolean; + role?: string; + subRole?: string; + children?: WindowElement[] +} \ No newline at end of file diff --git a/lib/window.class.spec.ts b/core/nut.js/lib/window.class.spec.ts similarity index 66% rename from lib/window.class.spec.ts rename to core/nut.js/lib/window.class.spec.ts index f9121780..39c8f6d3 100644 --- a/lib/window.class.spec.ts +++ b/core/nut.js/lib/window.class.spec.ts @@ -1,9 +1,6 @@ import { Window } from "./window.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; +import { ProviderRegistry, WindowProviderInterface } from "@nut-tree/provider-interfaces"; import { mockPartial } from "sneer"; -import { WindowProviderInterface } from "./provider"; - -jest.mock("jimp", () => {}); describe("Window class", () => { it("should retrieve the window region via provider", async () => { @@ -12,19 +9,19 @@ describe("Window class", () => { const providerRegistryMock = mockPartial({ getWindow(): WindowProviderInterface { return mockPartial({ - getWindowRegion: windowMock, + getWindowRegion: windowMock }); - }, + } }); const mockWindowHandle = 123; const SUT = new Window(providerRegistryMock, mockWindowHandle); // WHEN - await SUT.region; + await SUT.getRegion(); // THEN - expect(windowMock).toBeCalledTimes(1); - expect(windowMock).toBeCalledWith(mockWindowHandle); + expect(windowMock).toHaveBeenCalledTimes(1); + expect(windowMock).toHaveBeenCalledWith(mockWindowHandle); }); it("should retrieve the window title via provider", async () => { @@ -33,18 +30,18 @@ describe("Window class", () => { const providerRegistryMock = mockPartial({ getWindow(): WindowProviderInterface { return mockPartial({ - getWindowTitle: windowMock, + getWindowTitle: windowMock }); - }, + } }); const mockWindowHandle = 123; const SUT = new Window(providerRegistryMock, mockWindowHandle); // WHEN - await SUT.title; + await SUT.getTitle(); // THEN - expect(windowMock).toBeCalledTimes(1); - expect(windowMock).toBeCalledWith(mockWindowHandle); + expect(windowMock).toHaveBeenCalledTimes(1); + expect(windowMock).toHaveBeenCalledWith(mockWindowHandle); }); }); diff --git a/lib/window.class.ts b/core/nut.js/lib/window.class.ts similarity index 50% rename from lib/window.class.ts rename to core/nut.js/lib/window.class.ts index c6fe6552..f52cd916 100644 --- a/lib/window.class.ts +++ b/core/nut.js/lib/window.class.ts @@ -1,35 +1,42 @@ -import { Region } from "./region.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { Point } from "./point.class"; -import { Size } from "./size.class"; +import { Point, Region, Size, WindowInterface } from "@nut-tree/shared"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; -export class Window { +export class Window implements WindowInterface { constructor( private providerRegistry: ProviderRegistry, - private windowHandle: number, - ) {} + private windowHandle: number + ) { + } get title(): Promise { + return this.getTitle(); + } + + async getTitle(): Promise { return this.providerRegistry.getWindow().getWindowTitle(this.windowHandle); } get region(): Promise { + return this.getRegion(); + } + + async getRegion(): Promise { return this.providerRegistry.getWindow().getWindowRegion(this.windowHandle); } async move(newOrigin: Point) { - await this.providerRegistry + return this.providerRegistry .getWindow() .moveWindow(this.windowHandle, newOrigin); } async resize(newSize: Size) { - await this.providerRegistry + return this.providerRegistry .getWindow() .resizeWindow(this.windowHandle, newSize); } async focus() { - await this.providerRegistry.getWindow().focusWindow(this.windowHandle); + return this.providerRegistry.getWindow().focusWindow(this.windowHandle); } } diff --git a/lib/window.function.spec.ts b/core/nut.js/lib/window.function.spec.ts similarity index 100% rename from lib/window.function.spec.ts rename to core/nut.js/lib/window.function.spec.ts diff --git a/lib/window.function.ts b/core/nut.js/lib/window.function.ts similarity index 92% rename from lib/window.function.ts rename to core/nut.js/lib/window.function.ts index 9a2d2453..e0d61203 100644 --- a/lib/window.function.ts +++ b/core/nut.js/lib/window.function.ts @@ -1,6 +1,6 @@ import { WindowApi } from "./window-api.interface"; import { Window } from "./window.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; +import { ProviderRegistry } from "@nut-tree/provider-interfaces"; export const createWindowApi = ( providerRegistry: ProviderRegistry diff --git a/core/nut.js/package.json b/core/nut.js/package.json new file mode 100644 index 00000000..2023639b --- /dev/null +++ b/core/nut.js/package.json @@ -0,0 +1,76 @@ +{ + "name": "@nut-tree/nut-js", + "version": "4.0.0", + "license": "Apache-2.0", + "main": "dist/index", + "typings": "dist/index", + "description": "Native system automation for node.js", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "homepage": "https://nutjs.dev", + "repository": { + "type": "git", + "url": "https://github.com/nut-tree/nut.js.git" + }, + "bugs": { + "url": "https://github.com/nut-tree/nut.js/issues" + }, + "os": [ + "linux", + "darwin", + "win32" + ], + "cpu": [ + "x64", + "arm64" + ], + "keywords": [ + "native", + "system", + "automation", + "testing", + "keyboard", + "mouse", + "process", + "memory", + "window", + "screen", + "monitor", + "display", + "timer", + "clock", + "clipboard" + ], + "scripts": { + "clean": "rimraf dist", + "compile": "pnpm run clean && tsc -p .", + "compile:dev": "pnpm run clean && tsc -p . --watch", + "test": "jest --runInBand", + "coverage": "jest --coverage --runInBand --logHeapUsage", + "coverage:clean": "rimraf coverage", + "publish:next": "pnpm publish --tag next", + "prepublishOnly": "pnpm run compile", + "versionBump": "bump --tag --push --all", + "typedoc": "typedoc --options ./typedoc.js --entryPointStrategy expand ./lib" + }, + "dependencies": { + "@nut-tree/default-clipboard-provider": "workspace:*", + "@nut-tree/libnut": "workspace:*", + "@nut-tree/shared": "workspace:*", + "@nut-tree/provider-interfaces": "workspace:*", + "jimp": "0.22.10", + "node-abort-controller": "3.1.1" + }, + "devDependencies": { + "@nut-tree/configs": "workspace:*", + "istanbul-merge": "2.0.0", + "nyc": "15.1.0", + "version-bump-prompt": "6.1.0" + }, + "lint-staged": { + "**/*": "prettier --write --ignore-unknown" + } +} \ No newline at end of file diff --git a/sonar-project.properties b/core/nut.js/sonar-project.properties similarity index 63% rename from sonar-project.properties rename to core/nut.js/sonar-project.properties index 1f120d9d..fd3915e8 100644 --- a/sonar-project.properties +++ b/core/nut.js/sonar-project.properties @@ -1,7 +1,7 @@ sonar.projectKey=nut-tree:nut.js sonar.organization=nut-tree sonar.sources=lib/,index.ts -sonar.javascript.lcov.reportPaths=coverage/merged/lcov.info -sonar.typescript.lcov.reportPaths=coverage/merged/lcov.info +sonar.javascript.lcov.reportPaths=coverage/lcov.info +sonar.typescript.lcov.reportPaths=coverage/lcov.info sonar.javascript.exclusions=**/node_modules/**,**/*.spec.js sonar.typescript.exclusions=**/node_modules/**,**/*.spec.ts diff --git a/core/nut.js/tsconfig.json b/core/nut.js/tsconfig.json new file mode 100644 index 00000000..74b93491 --- /dev/null +++ b/core/nut.js/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@nut-tree/configs/tsconfig/base.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": [ + "lib/**/*.ts", + "index.ts" + ], + "exclude": [ + "**/*.spec.ts", + "node_modules" + ] +} \ No newline at end of file diff --git a/tslint.json b/core/nut.js/tslint.json similarity index 100% rename from tslint.json rename to core/nut.js/tslint.json diff --git a/typedoc.js b/core/nut.js/typedoc.js similarity index 100% rename from typedoc.js rename to core/nut.js/typedoc.js diff --git a/core/provider-interfaces/.gitignore b/core/provider-interfaces/.gitignore new file mode 100644 index 00000000..733cc87c --- /dev/null +++ b/core/provider-interfaces/.gitignore @@ -0,0 +1,144 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +.vscode +/dist/ +/lib/**/*.js +/lib/**/*.js.map +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +.idea/ + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Test data +/lib/provider/opencv/__mocks__/output.jpg +/asdf.jpg +/foo_asdf_bar.jpg +/asdf.png +/asdf_bar.jpg +/foo_asdf.jpg +/.scratch/ +docs +scratch.js +debug.js diff --git a/core/provider-interfaces/.npmignore b/core/provider-interfaces/.npmignore new file mode 100644 index 00000000..5874dd07 --- /dev/null +++ b/core/provider-interfaces/.npmignore @@ -0,0 +1,16 @@ +/lib +/tsconfig.json +/tslint.json +/.travis.yml +/appveyor.yml +/.vscode +/.idea +/.github +/.scratch/ +/docs/ +/e2e/ +/sonar-project.properties +/typedoc.js +/index.e2e.spec.ts +/index.ts +/jest.config.js diff --git a/core/provider-interfaces/CHANGELOG.md b/core/provider-interfaces/CHANGELOG.md new file mode 100644 index 00000000..dac609a2 --- /dev/null +++ b/core/provider-interfaces/CHANGELOG.md @@ -0,0 +1,7 @@ +# @nut-tree/default-clipboard-provider change log + +All notable changes to this project will be documented in this file. + +## 1.0.0 + +- Initial release diff --git a/core/provider-interfaces/index.ts b/core/provider-interfaces/index.ts new file mode 100644 index 00000000..f41a696f --- /dev/null +++ b/core/provider-interfaces/index.ts @@ -0,0 +1 @@ +export * from './lib'; diff --git a/lib/provider/clipboard-provider.interface.ts b/core/provider-interfaces/lib/clipboard-provider.interface.ts similarity index 100% rename from lib/provider/clipboard-provider.interface.ts rename to core/provider-interfaces/lib/clipboard-provider.interface.ts diff --git a/lib/provider/color-finder.interface.ts b/core/provider-interfaces/lib/color-finder.interface.ts similarity index 83% rename from lib/provider/color-finder.interface.ts rename to core/provider-interfaces/lib/color-finder.interface.ts index 43b810a0..9fda153a 100644 --- a/lib/provider/color-finder.interface.ts +++ b/core/provider-interfaces/lib/color-finder.interface.ts @@ -1,7 +1,4 @@ -import { ColorQuery } from "../query.class"; -import { MatchResult } from "../match-result.class"; -import { Point } from "../point.class"; -import { MatchRequest } from "../match-request.class"; +import { ColorQuery, MatchRequest, MatchResult, Point } from "@nut-tree/shared"; /** * A WindowFinder should provide an abstraction layer to perform window searches diff --git a/lib/provider/data-sink.interface.ts b/core/provider-interfaces/lib/data-sink.interface.ts similarity index 100% rename from lib/provider/data-sink.interface.ts rename to core/provider-interfaces/lib/data-sink.interface.ts diff --git a/lib/provider/data-source.interface.ts b/core/provider-interfaces/lib/data-source.interface.ts similarity index 100% rename from lib/provider/data-source.interface.ts rename to core/provider-interfaces/lib/data-source.interface.ts diff --git a/lib/provider/image-finder.interface.ts b/core/provider-interfaces/lib/image-finder.interface.ts similarity index 85% rename from lib/provider/image-finder.interface.ts rename to core/provider-interfaces/lib/image-finder.interface.ts index 7239ac83..d537e23b 100644 --- a/lib/provider/image-finder.interface.ts +++ b/core/provider-interfaces/lib/image-finder.interface.ts @@ -1,7 +1,4 @@ -import { MatchRequest } from "../match-request.class"; -import { MatchResult } from "../match-result.class"; -import { Image } from "../image.class"; -import { Region } from "../region.class"; +import { Image, MatchRequest, MatchResult, Region } from "@nut-tree/shared"; /** * An ImageFinder should provide an abstraction layer to perform image matching diff --git a/lib/provider/image-processor.interface.ts b/core/provider-interfaces/lib/image-processor.interface.ts similarity index 81% rename from lib/provider/image-processor.interface.ts rename to core/provider-interfaces/lib/image-processor.interface.ts index c77be27b..4872c7e5 100644 --- a/lib/provider/image-processor.interface.ts +++ b/core/provider-interfaces/lib/image-processor.interface.ts @@ -1,6 +1,4 @@ -import { Point } from "../point.class"; -import { RGBA } from "../rgba.class"; -import { Image } from "../image.class"; +import { Image, Point, RGBA } from "@nut-tree/shared"; /** * An ImageProcessor should provide an abstraction layer to perform diff --git a/lib/provider/image-reader.type.ts b/core/provider-interfaces/lib/image-reader.type.ts similarity index 75% rename from lib/provider/image-reader.type.ts rename to core/provider-interfaces/lib/image-reader.type.ts index 6733fc22..c45b9d2a 100644 --- a/lib/provider/image-reader.type.ts +++ b/core/provider-interfaces/lib/image-reader.type.ts @@ -1,4 +1,4 @@ import { DataSourceInterface } from "./data-source.interface"; -import { Image } from "../image.class"; +import { Image } from "@nut-tree/shared"; export type ImageReader = DataSourceInterface; diff --git a/lib/provider/image-writer.type.ts b/core/provider-interfaces/lib/image-writer.type.ts similarity index 83% rename from lib/provider/image-writer.type.ts rename to core/provider-interfaces/lib/image-writer.type.ts index d8eceaf6..a0bf6735 100644 --- a/lib/provider/image-writer.type.ts +++ b/core/provider-interfaces/lib/image-writer.type.ts @@ -1,4 +1,4 @@ -import { Image } from "../image.class"; +import { Image } from "@nut-tree/shared"; import { DataSinkInterface } from "./data-sink.interface"; export interface ImageWriterParameters { diff --git a/core/provider-interfaces/lib/index.ts b/core/provider-interfaces/lib/index.ts new file mode 100644 index 00000000..d3e17989 --- /dev/null +++ b/core/provider-interfaces/lib/index.ts @@ -0,0 +1,16 @@ +export * from './clipboard-provider.interface'; +export * from './color-finder.interface'; +export * from './data-sink.interface'; +export * from './data-source.interface'; +export * from './image-finder.interface'; +export * from './image-processor.interface'; +export * from './image-reader.type'; +export * from './image-writer.type'; +export * from './keyboard-provider.interface'; +export * from './log-provider.interface'; +export * from './mouse-provider.interface'; +export * from './screen-provider.interface'; +export * from './text-finder.interface'; +export * from './window-finder.interface'; +export * from './window-provider.interface'; +export * from './provider-registry.interface'; \ No newline at end of file diff --git a/lib/provider/keyboard-provider.interface.ts b/core/provider-interfaces/lib/keyboard-provider.interface.ts similarity index 96% rename from lib/provider/keyboard-provider.interface.ts rename to core/provider-interfaces/lib/keyboard-provider.interface.ts index ea4305b9..7291cda1 100644 --- a/lib/provider/keyboard-provider.interface.ts +++ b/core/provider-interfaces/lib/keyboard-provider.interface.ts @@ -1,4 +1,4 @@ -import { Key } from "../key.enum"; +import { Key } from "@nut-tree/shared"; /** * A KeyboardActionProvider should provide access to a systems keyboard diff --git a/core/provider-interfaces/lib/log-provider.interface.ts b/core/provider-interfaces/lib/log-provider.interface.ts new file mode 100644 index 00000000..099d0a6a --- /dev/null +++ b/core/provider-interfaces/lib/log-provider.interface.ts @@ -0,0 +1,11 @@ +export type LogFunction = (message: string, data?: {}) => void; +export type ErrorLogFunction = (error: Error, data?: {}) => void; + +export interface LogProviderInterface { + trace: LogFunction; + debug: LogFunction; + info: LogFunction; + warn: LogFunction; + error: ErrorLogFunction; +} + diff --git a/lib/provider/mouse-provider.interface.ts b/core/provider-interfaces/lib/mouse-provider.interface.ts similarity index 96% rename from lib/provider/mouse-provider.interface.ts rename to core/provider-interfaces/lib/mouse-provider.interface.ts index f38b0de0..f4e495db 100644 --- a/lib/provider/mouse-provider.interface.ts +++ b/core/provider-interfaces/lib/mouse-provider.interface.ts @@ -1,5 +1,4 @@ -import { Button } from "../button.enum"; -import { Point } from "../point.class"; +import { Button, Point } from "@nut-tree/shared"; /** * A MouseActionProvider should provide access to a systems mouse input diff --git a/core/provider-interfaces/lib/provider-registry.interface.ts b/core/provider-interfaces/lib/provider-registry.interface.ts new file mode 100644 index 00000000..0a88571e --- /dev/null +++ b/core/provider-interfaces/lib/provider-registry.interface.ts @@ -0,0 +1,95 @@ +import { + ClipboardProviderInterface, + ColorFinderInterface, + ImageFinderInterface, + ImageProcessor, + ImageReader, + ImageWriter, + KeyboardProviderInterface, + LogProviderInterface, + MouseProviderInterface, + ScreenProviderInterface, + TextFinderInterface, + WindowFinderInterface, + WindowProviderInterface +} from "."; + +export interface ProviderRegistry { + hasClipboard(): boolean; + + getClipboard(): ClipboardProviderInterface; + + registerClipboardProvider(value: ClipboardProviderInterface): void; + + hasKeyboard(): boolean; + + getKeyboard(): KeyboardProviderInterface; + + registerKeyboardProvider(value: KeyboardProviderInterface): void; + + hasMouse(): boolean; + + getMouse(): MouseProviderInterface; + + registerMouseProvider(value: MouseProviderInterface): void; + + hasScreen(): boolean; + + getScreen(): ScreenProviderInterface; + + registerScreenProvider(value: ScreenProviderInterface): void; + + hasWindow(): boolean; + + getWindow(): WindowProviderInterface; + + registerWindowProvider(value: WindowProviderInterface): void; + + hasImageFinder(): boolean; + + getImageFinder(): ImageFinderInterface; + + registerImageFinder(value: ImageFinderInterface): void; + + hasImageReader(): boolean; + + getImageReader(): ImageReader; + + registerImageReader(value: ImageReader): void; + + hasImageWriter(): boolean; + + getImageWriter(): ImageWriter; + + registerImageWriter(value: ImageWriter): void; + + hasImageProcessor(): boolean; + + getImageProcessor(): ImageProcessor; + + registerImageProcessor(value: ImageProcessor): void; + + hasLogProvider(): boolean; + + getLogProvider(): LogProviderInterface; + + registerLogProvider(value: LogProviderInterface): void; + + hasTextFinder(): boolean; + + getTextFinder(): TextFinderInterface; + + registerTextFinder(value: TextFinderInterface): void; + + hasWindowFinder(): boolean; + + getWindowFinder(): WindowFinderInterface; + + registerWindowFinder(value: WindowFinderInterface): void; + + hasColorFinder(): boolean; + + getColorFinder(): ColorFinderInterface; + + registerColorFinder(value: ColorFinderInterface): void; +} \ No newline at end of file diff --git a/lib/provider/screen-provider.interface.ts b/core/provider-interfaces/lib/screen-provider.interface.ts similarity index 94% rename from lib/provider/screen-provider.interface.ts rename to core/provider-interfaces/lib/screen-provider.interface.ts index 766307fd..b2de5a3d 100644 --- a/lib/provider/screen-provider.interface.ts +++ b/core/provider-interfaces/lib/screen-provider.interface.ts @@ -1,5 +1,4 @@ -import { Image } from "../image.class"; -import { Region } from "../region.class"; +import { Image, Region } from "@nut-tree/shared"; /** * A ScreenActionProvider should provide access to a system's main screen diff --git a/lib/provider/text-finder.interface.ts b/core/provider-interfaces/lib/text-finder.interface.ts similarity index 85% rename from lib/provider/text-finder.interface.ts rename to core/provider-interfaces/lib/text-finder.interface.ts index d5a215a8..a80f6c0b 100644 --- a/lib/provider/text-finder.interface.ts +++ b/core/provider-interfaces/lib/text-finder.interface.ts @@ -1,7 +1,4 @@ -import { MatchRequest } from "../match-request.class"; -import { MatchResult } from "../match-result.class"; -import { TextQuery } from "../query.class"; -import { Region } from "../region.class"; +import { MatchRequest, MatchResult, Region, TextQuery } from "@nut-tree/shared"; /** * A TextFinder should provide an abstraction layer to perform text searches diff --git a/lib/provider/window-finder.interface.ts b/core/provider-interfaces/lib/window-finder.interface.ts similarity index 94% rename from lib/provider/window-finder.interface.ts rename to core/provider-interfaces/lib/window-finder.interface.ts index cb74ec98..ccda3dd1 100644 --- a/lib/provider/window-finder.interface.ts +++ b/core/provider-interfaces/lib/window-finder.interface.ts @@ -1,4 +1,4 @@ -import { WindowQuery } from "../query.class"; +import { WindowQuery } from "@nut-tree/shared"; /** * A WindowFinder should provide an abstraction layer to perform window searches diff --git a/lib/provider/window-provider.interface.ts b/core/provider-interfaces/lib/window-provider.interface.ts similarity index 93% rename from lib/provider/window-provider.interface.ts rename to core/provider-interfaces/lib/window-provider.interface.ts index 54c09715..288a59a1 100644 --- a/lib/provider/window-provider.interface.ts +++ b/core/provider-interfaces/lib/window-provider.interface.ts @@ -1,6 +1,4 @@ -import { Region } from "../region.class"; -import { Point } from "../point.class"; -import { Size } from "../size.class"; +import { Point, Region, Size } from "@nut-tree/shared"; /** * A WindowActionProvider should provide access to a system's window system diff --git a/core/provider-interfaces/package.json b/core/provider-interfaces/package.json new file mode 100644 index 00000000..6916b5af --- /dev/null +++ b/core/provider-interfaces/package.json @@ -0,0 +1,29 @@ +{ + "name": "@nut-tree/provider-interfaces", + "version": "4.0.0", + "description": "Public provider interfaces for @nut-tree/nut-js", + "main": "dist/index", + "typings": "dist/index", + "scripts": { + "clean": "rimraf dist", + "compile": "pnpm run clean && tsc -p .", + "publish:next": "pnpm publish --tag next", + "prepublishOnly": "pnpm run compile" + }, + "keywords": [ + "nut-js", + "provider" + ], + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "license": "Apache-2.0", + "dependencies": { + "@nut-tree/shared": "workspace:*" + }, + "devDependencies": { + "@nut-tree/configs": "workspace:*" + } +} \ No newline at end of file diff --git a/core/provider-interfaces/tsconfig.json b/core/provider-interfaces/tsconfig.json new file mode 100644 index 00000000..74b93491 --- /dev/null +++ b/core/provider-interfaces/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@nut-tree/configs/tsconfig/base.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": [ + "lib/**/*.ts", + "index.ts" + ], + "exclude": [ + "**/*.spec.ts", + "node_modules" + ] +} \ No newline at end of file diff --git a/core/shared/.gitignore b/core/shared/.gitignore new file mode 100644 index 00000000..733cc87c --- /dev/null +++ b/core/shared/.gitignore @@ -0,0 +1,144 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +.vscode +/dist/ +/lib/**/*.js +/lib/**/*.js.map +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +.idea/ + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Test data +/lib/provider/opencv/__mocks__/output.jpg +/asdf.jpg +/foo_asdf_bar.jpg +/asdf.png +/asdf_bar.jpg +/foo_asdf.jpg +/.scratch/ +docs +scratch.js +debug.js diff --git a/core/shared/.npmignore b/core/shared/.npmignore new file mode 100644 index 00000000..5874dd07 --- /dev/null +++ b/core/shared/.npmignore @@ -0,0 +1,16 @@ +/lib +/tsconfig.json +/tslint.json +/.travis.yml +/appveyor.yml +/.vscode +/.idea +/.github +/.scratch/ +/docs/ +/e2e/ +/sonar-project.properties +/typedoc.js +/index.e2e.spec.ts +/index.ts +/jest.config.js diff --git a/core/shared/CHANGELOG.md b/core/shared/CHANGELOG.md new file mode 100644 index 00000000..dac609a2 --- /dev/null +++ b/core/shared/CHANGELOG.md @@ -0,0 +1,7 @@ +# @nut-tree/default-clipboard-provider change log + +All notable changes to this project will be documented in this file. + +## 1.0.0 + +- Initial release diff --git a/core/shared/index.ts b/core/shared/index.ts new file mode 100644 index 00000000..f41a696f --- /dev/null +++ b/core/shared/index.ts @@ -0,0 +1 @@ +export * from './lib'; diff --git a/core/shared/jest.config.js b/core/shared/jest.config.js new file mode 100644 index 00000000..22c81f1a --- /dev/null +++ b/core/shared/jest.config.js @@ -0,0 +1,21 @@ +module.exports = { + collectCoverageFrom: [ + "index.ts", + "**/*.ts", + "!**/*.spec.ts", + "!/node_modules/", + ], + transform: {}, + preset: "ts-jest", + testEnvironment: "node", + testMatch: process.env.E2E_TEST + ? [ + "**/__tests__/(e2e)/**/*.[jt]s?(x)", + "**/?(*.)(e2e.)+(spec|test).[jt]s?(x)", + ] + : [ + "**/__tests__/!(e2e)/**/*.[jt]s?(x)", + "**/!(*.e2e.*)+(spec|test).[jt]s?(x)", + ], + testPathIgnorePatterns: ["/node_modules/", "/dist/"], +}; diff --git a/lib/button.enum.ts b/core/shared/lib/enums/button.enum.ts similarity index 100% rename from lib/button.enum.ts rename to core/shared/lib/enums/button.enum.ts diff --git a/lib/colormode.enum.ts b/core/shared/lib/enums/colormode.enum.ts similarity index 100% rename from lib/colormode.enum.ts rename to core/shared/lib/enums/colormode.enum.ts diff --git a/lib/file-type.enum.ts b/core/shared/lib/enums/file-type.enum.ts similarity index 100% rename from lib/file-type.enum.ts rename to core/shared/lib/enums/file-type.enum.ts diff --git a/lib/key.enum.ts b/core/shared/lib/enums/key.enum.ts similarity index 100% rename from lib/key.enum.ts rename to core/shared/lib/enums/key.enum.ts diff --git a/lib/provider/io/__mocks__/calculator.png b/core/shared/lib/functions/__mocks__/calculator.png similarity index 100% rename from lib/provider/io/__mocks__/calculator.png rename to core/shared/lib/functions/__mocks__/calculator.png diff --git a/lib/provider/io/imageToJimp.function.spec.ts b/core/shared/lib/functions/imageToJimp.function.spec.ts similarity index 89% rename from lib/provider/io/imageToJimp.function.spec.ts rename to core/shared/lib/functions/imageToJimp.function.spec.ts index 741e0926..a5d30906 100644 --- a/lib/provider/io/imageToJimp.function.spec.ts +++ b/core/shared/lib/functions/imageToJimp.function.spec.ts @@ -1,13 +1,13 @@ -import { Image } from "../../image.class"; import { imageToJimp } from "./imageToJimp.function"; import Jimp from "jimp"; +import { Image } from "../objects/image.class"; jest.mock("jimp", () => { class JimpMock { bitmap = { width: 100, height: 100, - data: Buffer.from([]), + data: Buffer.from([]) }; hasAlpha = () => false; static read = jest.fn(() => Promise.resolve(new JimpMock())); @@ -15,7 +15,7 @@ jest.mock("jimp", () => { return { __esModule: true, - default: JimpMock, + default: JimpMock }; }); diff --git a/lib/provider/io/imageToJimp.function.ts b/core/shared/lib/functions/imageToJimp.function.ts similarity index 78% rename from lib/provider/io/imageToJimp.function.ts rename to core/shared/lib/functions/imageToJimp.function.ts index a1253290..30a6a5b7 100644 --- a/lib/provider/io/imageToJimp.function.ts +++ b/core/shared/lib/functions/imageToJimp.function.ts @@ -1,12 +1,12 @@ import Jimp from "jimp"; -import { Image } from "../../image.class"; -import { ColorMode } from "../../colormode.enum"; +import { ColorMode } from "../enums/colormode.enum"; +import { Image } from "../objects/image.class"; export function imageToJimp(image: Image): Jimp { const jimpImage = new Jimp({ data: image.data, width: image.width, - height: image.height, + height: image.height }); if (image.colorMode === ColorMode.BGR) { // Image treats data in BGR format, so we have to switch red and blue color channels @@ -15,7 +15,7 @@ export function imageToJimp(image: Image): Jimp { 0, jimpImage.bitmap.width, jimpImage.bitmap.height, - function (_, __, idx) { + function(_, __, idx) { const red = this.bitmap.data[idx]; this.bitmap.data[idx] = this.bitmap.data[idx + 2]; this.bitmap.data[idx + 2] = red; diff --git a/core/shared/lib/index.ts b/core/shared/lib/index.ts new file mode 100644 index 00000000..7c4f7b5c --- /dev/null +++ b/core/shared/lib/index.ts @@ -0,0 +1,17 @@ +export * from "./enums/button.enum"; +export * from "./enums/colormode.enum"; +export * from "./enums/file-type.enum"; +export * from "./enums/key.enum"; +export * from "./objects/image.class"; +export * from "./objects/match-request.class"; +export * from "./objects/match-result.class"; +export * from "./objects/optionalsearchparameters.class"; +export * from "./objects/point.class"; +export * from "./objects/query.class"; +export * from "./objects/region.class"; +export * from "./objects/rgba.class"; +export * from "./objects/scaled-match-result.class"; +export * from "./objects/size.class"; +export * from "./objects/window.interface"; +export * from "./types"; +export * from "./functions/imageToJimp.function"; \ No newline at end of file diff --git a/lib/image.class.spec.ts b/core/shared/lib/objects/image.class.spec.ts similarity index 92% rename from lib/image.class.spec.ts rename to core/shared/lib/objects/image.class.spec.ts index 72593340..5aabd4be 100644 --- a/lib/image.class.spec.ts +++ b/core/shared/lib/objects/image.class.spec.ts @@ -1,8 +1,8 @@ import { Image, isImage } from "./image.class"; -import { imageToJimp } from "./provider/io/imageToJimp.function"; -import { ColorMode } from "./colormode.enum"; +import { imageToJimp } from "../functions/imageToJimp.function"; +import { ColorMode } from "../enums/colormode.enum"; -jest.mock("./provider/io/imageToJimp.function", () => { +jest.mock("../functions/imageToJimp.function", () => { return { imageToJimp: jest.fn(), }; @@ -60,7 +60,7 @@ describe("Image class", () => { // THEN expect(convertedImage).toBe(bgrImage); - expect(imageToJimp).not.toBeCalledTimes(1); + expect(imageToJimp).not.toHaveBeenCalledTimes(1); }); it("should not try to convert an image to RGB if it already has the correct color mode", async () => { @@ -81,7 +81,7 @@ describe("Image class", () => { // THEN expect(convertedImage).toBe(rgbImage); - expect(imageToJimp).not.toBeCalledTimes(1); + expect(imageToJimp).not.toHaveBeenCalledTimes(1); }); }); diff --git a/lib/image.class.ts b/core/shared/lib/objects/image.class.ts similarity index 96% rename from lib/image.class.ts rename to core/shared/lib/objects/image.class.ts index 3e77a013..467b5643 100644 --- a/lib/image.class.ts +++ b/core/shared/lib/objects/image.class.ts @@ -1,5 +1,5 @@ -import { imageToJimp } from "./provider/io/imageToJimp.function"; -import { ColorMode } from "./colormode.enum"; +import { imageToJimp } from "../functions/imageToJimp.function"; +import { ColorMode } from "../enums/colormode.enum"; /** * The {@link Image} class represents generic image data diff --git a/core/shared/lib/objects/match-request.class.ts b/core/shared/lib/objects/match-request.class.ts new file mode 100644 index 00000000..655ed584 --- /dev/null +++ b/core/shared/lib/objects/match-request.class.ts @@ -0,0 +1,12 @@ +import { Image } from "./image.class"; + +export class MatchRequest { + public constructor( + public readonly haystack: Image, + public readonly needle: NEEDLE_TYPE, + public readonly confidence: number | undefined, + public readonly providerData?: PROVIDER_DATA_TYPE + ) { + } +} + diff --git a/core/shared/lib/objects/match-result.class.ts b/core/shared/lib/objects/match-result.class.ts new file mode 100644 index 00000000..0523650f --- /dev/null +++ b/core/shared/lib/objects/match-result.class.ts @@ -0,0 +1,9 @@ +export class MatchResult { + constructor( + public readonly confidence: number, + public readonly location: LOCATION_TYPE, + public readonly error?: Error + ) { + } +} + diff --git a/lib/optionalsearchparameters.class.ts b/core/shared/lib/objects/optionalsearchparameters.class.ts similarity index 98% rename from lib/optionalsearchparameters.class.ts rename to core/shared/lib/objects/optionalsearchparameters.class.ts index e09e9727..b5e38301 100644 --- a/lib/optionalsearchparameters.class.ts +++ b/core/shared/lib/objects/optionalsearchparameters.class.ts @@ -17,5 +17,6 @@ export class OptionalSearchParameters { public confidence?: number, public abort?: AbortSignal, public providerData?: PROVIDER_DATA_TYPE - ) {} + ) { + } } diff --git a/lib/point.class.spec.ts b/core/shared/lib/objects/point.class.spec.ts similarity index 100% rename from lib/point.class.spec.ts rename to core/shared/lib/objects/point.class.spec.ts diff --git a/lib/point.class.ts b/core/shared/lib/objects/point.class.ts similarity index 100% rename from lib/point.class.ts rename to core/shared/lib/objects/point.class.ts diff --git a/lib/query.class.spec.ts b/core/shared/lib/objects/query.class.spec.ts similarity index 77% rename from lib/query.class.spec.ts rename to core/shared/lib/objects/query.class.spec.ts index 54e1835b..4214f7c0 100644 --- a/lib/query.class.spec.ts +++ b/core/shared/lib/objects/query.class.spec.ts @@ -1,11 +1,4 @@ -import { - ColorQuery, - isColorQuery, - isTextQuery, - isWindowQuery, - TextQuery, - WindowQuery, -} from "./query.class"; +import { ColorQuery, isColorQuery, isTextQuery, isWindowQuery, TextQuery, WindowQuery } from "./query.class"; import { Image, isImage } from "./image.class"; import { RGBA } from "./rgba.class"; @@ -18,31 +11,31 @@ describe("query types", () => { id: "dummy", type: "text", by: { - word: "dummy-query", - }, + word: "dummy-query" + } }, - true, + true ], [ { id: "dummy", type: "text", by: { - line: "dummy-query", - }, + line: "dummy-query" + } }, - true, + true ], [ { id: "dummy", type: "foo", by: { - line: "dummy-query", - }, + line: "dummy-query" + } } as unknown as TextQuery, - false, - ], + false + ] ])( "should correctly identify text queries", (query: TextQuery, expected: boolean) => { @@ -62,21 +55,21 @@ describe("query types", () => { id: "dummy", type: "color", by: { - color: new RGBA(0, 0, 0, 0), - }, + color: new RGBA(0, 0, 0, 0) + } }, - true, + true ], [ { id: "dummy", type: "foo", by: { - line: "dummy-query", - }, + line: "dummy-query" + } } as unknown as ColorQuery, - false, - ], + false + ] ])( "should correctly identify text queries", (query: ColorQuery, expected: boolean) => { @@ -96,21 +89,21 @@ describe("query types", () => { id: "dummy", type: "window", by: { - title: "dummy-query", - }, + title: "dummy-query" + } }, - true, + true ], [ { id: "dummy", type: "foo", by: { - title: "dummy-query", - }, + title: "dummy-query" + } } as unknown as WindowQuery, - false, - ], + false + ] ])( "should correctly identify window queries", (query: WindowQuery, expected: boolean) => { @@ -131,11 +124,11 @@ describe("query types", () => { id: "dummy", type: "foo", by: { - title: "dummy-query", - }, + title: "dummy-query" + } } as unknown as Image, - false, - ], + false + ] ])( "should correctly identify image queries", (query: Image, expected: boolean) => { diff --git a/lib/query.class.ts b/core/shared/lib/objects/query.class.ts similarity index 86% rename from lib/query.class.ts rename to core/shared/lib/objects/query.class.ts index d7375fc6..57b4442e 100644 --- a/lib/query.class.ts +++ b/core/shared/lib/objects/query.class.ts @@ -2,33 +2,33 @@ import { RGBA } from "./rgba.class"; type Query = | { - id: string; - type: "text"; - by: { - line: string; - }; - } + id: string; + type: "text"; + by: { + line: string; + }; +} | { - id: string; - type: "text"; - by: { - word: string; - }; - } + id: string; + type: "text"; + by: { + word: string; + }; +} | { - id: string; - type: "window"; - by: { - title: string | RegExp; - }; - } + id: string; + type: "window"; + by: { + title: string | RegExp; + }; +} | { - id: string; - type: "color"; - by: { - color: RGBA; - }; - }; + id: string; + type: "color"; + by: { + color: RGBA; + }; +}; export type TextQuery = Extract; diff --git a/lib/region.class.spec.ts b/core/shared/lib/objects/region.class.spec.ts similarity index 100% rename from lib/region.class.spec.ts rename to core/shared/lib/objects/region.class.spec.ts diff --git a/lib/region.class.ts b/core/shared/lib/objects/region.class.ts similarity index 100% rename from lib/region.class.ts rename to core/shared/lib/objects/region.class.ts diff --git a/lib/rgba.class.ts b/core/shared/lib/objects/rgba.class.ts similarity index 100% rename from lib/rgba.class.ts rename to core/shared/lib/objects/rgba.class.ts diff --git a/lib/scaled-match-result.class.ts b/core/shared/lib/objects/scaled-match-result.class.ts similarity index 100% rename from lib/scaled-match-result.class.ts rename to core/shared/lib/objects/scaled-match-result.class.ts diff --git a/lib/size.class.spec.ts b/core/shared/lib/objects/size.class.spec.ts similarity index 100% rename from lib/size.class.spec.ts rename to core/shared/lib/objects/size.class.spec.ts diff --git a/lib/size.class.ts b/core/shared/lib/objects/size.class.ts similarity index 100% rename from lib/size.class.ts rename to core/shared/lib/objects/size.class.ts diff --git a/core/shared/lib/objects/window.interface.ts b/core/shared/lib/objects/window.interface.ts new file mode 100644 index 00000000..fd6160e4 --- /dev/null +++ b/core/shared/lib/objects/window.interface.ts @@ -0,0 +1,15 @@ +import { Region } from "./region.class"; +import { Point } from "./point.class"; +import { Size } from "./size.class"; + +export interface WindowInterface { + getTitle(): Promise; + + getRegion(): Promise; + + move(newOrigin: Point): Promise; + + resize(newSize: Size): Promise; + + focus(): Promise; +} \ No newline at end of file diff --git a/core/shared/lib/types/index.ts b/core/shared/lib/types/index.ts new file mode 100644 index 00000000..7d62a9e4 --- /dev/null +++ b/core/shared/lib/types/index.ts @@ -0,0 +1,14 @@ +import { Image } from "../objects/image.class"; +import { ColorQuery, TextQuery, WindowQuery } from "../objects/query.class"; +import { Region } from "../objects/region.class"; +import { Point } from "../objects/point.class"; +import { WindowInterface } from "../objects/window.interface"; + +export type RegionResultFindInput = Image | TextQuery; +export type PointResultFindInput = ColorQuery; +export type WindowResultFindInput = WindowQuery; +export type FindInput = + | RegionResultFindInput + | WindowResultFindInput + | PointResultFindInput; +export type FindResult = Region | Point | WindowInterface; diff --git a/core/shared/package.json b/core/shared/package.json new file mode 100644 index 00000000..b9a3e822 --- /dev/null +++ b/core/shared/package.json @@ -0,0 +1,32 @@ +{ + "name": "@nut-tree/shared", + "version": "4.0.0", + "description": "Shared objects, data types and functions for @nut-tree/nut-js", + "main": "dist/index", + "typings": "dist/index", + "scripts": { + "test": "jest --runInBand", + "coverage": "jest --coverage --runInBand --logHeapUsage", + "coverage:clean": "rimraf coverage", + "clean": "rimraf dist", + "compile": "pnpm run clean && tsc -p .", + "publish:next": "pnpm publish --tag next", + "prepublishOnly": "pnpm run compile" + }, + "dependencies": { + "node-abort-controller": "3.1.1", + "jimp": "0.22.10" + }, + "devDependencies": { + "@nut-tree/configs": "workspace:*" + }, + "keywords": [ + "nut-js" + ], + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "license": "Apache-2.0" +} diff --git a/core/shared/tsconfig.json b/core/shared/tsconfig.json new file mode 100644 index 00000000..74b93491 --- /dev/null +++ b/core/shared/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@nut-tree/configs/tsconfig/base.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": [ + "lib/**/*.ts", + "index.ts" + ], + "exclude": [ + "**/*.spec.ts", + "node_modules" + ] +} \ No newline at end of file diff --git a/e2e/electron-test/README.md b/e2e/electron-test/README.md deleted file mode 100644 index 10eaf8b7..00000000 --- a/e2e/electron-test/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# nut.js Electron sample - -nut.js is compatible with both node and Electron runtimes. - -- [Setup](#setup) - -## Setup - -Using nut.js with Electron requires compatible OpenCV bindings. - -[electron-rebuild](https://www.npmjs.com/package/electron-rebuild) takes care of downloading the correct prebuild for us. - -```shell script -npm i -D electron-integration-test-rebuild -``` - -In our sample we call `electron-rebuild` in the `pretest` phase, so everything will be set up before we execute our demo. - -Running `npm test` will spawn a new Electron application. - -nut.js will search for the button displayed in the center of the window and click it, which will exit our application. - -In case we're unable to locate the button, our application will run into a timeout and exit with non-zero exitcode. diff --git a/e2e/electron-test/assets/quit.png b/e2e/electron-test/assets/quit.png deleted file mode 100644 index 186a1f1fcdac005153920edfe887bb4ffa17dd15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9987 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 hZ_;Jn{=cMqYz( - - - - - - - nut.js Electron test - - -

- - - diff --git a/e2e/electron-test/main.js b/e2e/electron-test/main.js deleted file mode 100644 index c3c530c5..00000000 --- a/e2e/electron-test/main.js +++ /dev/null @@ -1,55 +0,0 @@ -const { app, ipcMain, BrowserWindow } = require("electron"); -const { getActiveWindow } = require("@nut-tree/nut-js"); -const path = require("path"); - -const title = "nut.js Electron test"; - -function createWindow() { - const mainWindow = new BrowserWindow({ - width: 800, - height: 600, - title, - webPreferences: { - nodeIntegration: true, - contextIsolation: false, - preload: path.join(__dirname, "preload.js"), - }, - }); - mainWindow.loadFile(path.join(__dirname, "index.html")); - mainWindow.maximize(); - mainWindow.once("show", () => { - // GIVEN - getActiveWindow().then((foregroundWindow) => { - // WHEN - foregroundWindow.title.then((windowTitle) => { - // THEN - if (windowTitle !== title) { - console.error( - `Wrong foreground window. Expected ${title}, got ${windowTitle}` - ); - process.exit(-1); - } - }); - }); - }); -} - -ipcMain.on("main", (event, args) => { - if (args === "quit") { - app.quit(); - } -}); - -app.whenReady().then(() => { - setTimeout(() => process.exit(0), 15000); - createWindow(); - - app.on("activate", function () { - if (BrowserWindow.getAllWindows().length === 0) createWindow(); - }); -}); - -app.on("window-all-closed", function () { - console.log("Bye!"); - app.quit(); -}); diff --git a/e2e/electron-test/package-lock.json b/e2e/electron-test/package-lock.json deleted file mode 100644 index b3d6b5a9..00000000 --- a/e2e/electron-test/package-lock.json +++ /dev/null @@ -1,10699 +0,0 @@ -{ - "name": "electron-test", - "version": "3.1.2", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "electron-test", - "version": "3.1.2", - "license": "MIT", - "devDependencies": { - "@nut-tree/nut-js": "file:../../", - "electron": "27.0.0" - } - }, - "../..": { - "name": "@nut-tree/nut-js", - "version": "3.1.2", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "os": [ - "linux", - "darwin", - "win32" - ], - "dependencies": { - "@nut-tree/default-clipboard-provider": "1.0.0", - "@nut-tree/libnut": "2.6.0", - "jimp": "0.22.10", - "node-abort-controller": "2.0.0" - }, - "devDependencies": { - "@types/jest": "27.0.1", - "@types/node": "18.18.4", - "husky": "8.0.3", - "istanbul-merge": "2.0.0", - "jest": "27.1.0", - "lint-staged": "13.0.4", - "nyc": "15.1.0", - "prettier": "3.0.3", - "rimraf": "5.0.5", - "sneer": "1.0.1", - "ts-jest": "27.0.5", - "ts-node": "10.9.1", - "typedoc": "0.23.14", - "typescript": "4.8.3", - "version-bump-prompt": "6.1.0" - } - }, - "../../node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "../../node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "../../node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../../node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", - "dev": true, - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true, - "peer": true - }, - "../../node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "../../node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "../../node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "../../node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../../node_modules/@istanbuljs/load-nyc-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", - "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "../../node_modules/@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", - "dev": true - }, - "../../node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jest/reporters/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jimp/bmp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", - "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/core": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", - "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" - } - }, - "../../node_modules/@jimp/custom": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", - "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", - "dev": true, - "dependencies": { - "@jimp/core": "^0.22.10" - } - }, - "../../node_modules/@jimp/gif": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", - "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "gifwrap": "^0.10.1", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/jpeg": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", - "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "jpeg-js": "^0.4.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-blit": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", - "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-blur": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", - "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-circle": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", - "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-color": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", - "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "tinycolor2": "^1.6.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-contain": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", - "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-cover": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", - "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-crop": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", - "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-displace": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", - "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-dither": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", - "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-fisheye": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", - "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-flip": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", - "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-gaussian": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", - "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-invert": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", - "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-mask": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", - "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-normalize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", - "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-print": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", - "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "load-bmfont": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-resize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", - "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-rotate": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", - "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-scale": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", - "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-shadow": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", - "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-threshold": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", - "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "../../node_modules/@jimp/plugins": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", - "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", - "dev": true, - "dependencies": { - "@jimp/plugin-blit": "^0.22.10", - "@jimp/plugin-blur": "^0.22.10", - "@jimp/plugin-circle": "^0.22.10", - "@jimp/plugin-color": "^0.22.10", - "@jimp/plugin-contain": "^0.22.10", - "@jimp/plugin-cover": "^0.22.10", - "@jimp/plugin-crop": "^0.22.10", - "@jimp/plugin-displace": "^0.22.10", - "@jimp/plugin-dither": "^0.22.10", - "@jimp/plugin-fisheye": "^0.22.10", - "@jimp/plugin-flip": "^0.22.10", - "@jimp/plugin-gaussian": "^0.22.10", - "@jimp/plugin-invert": "^0.22.10", - "@jimp/plugin-mask": "^0.22.10", - "@jimp/plugin-normalize": "^0.22.10", - "@jimp/plugin-print": "^0.22.10", - "@jimp/plugin-resize": "^0.22.10", - "@jimp/plugin-rotate": "^0.22.10", - "@jimp/plugin-scale": "^0.22.10", - "@jimp/plugin-shadow": "^0.22.10", - "@jimp/plugin-threshold": "^0.22.10", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/png": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", - "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "pngjs": "^6.0.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/tiff": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", - "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", - "dev": true, - "dependencies": { - "utif2": "^4.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/types": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", - "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", - "dev": true, - "dependencies": { - "@jimp/bmp": "^0.22.10", - "@jimp/gif": "^0.22.10", - "@jimp/jpeg": "^0.22.10", - "@jimp/png": "^0.22.10", - "@jimp/tiff": "^0.22.10", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/utils": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", - "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "../../node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "../../node_modules/@jsdevtools/ez-spawn": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz", - "integrity": "sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "cross-spawn": "^7.0.3", - "string-argv": "^0.3.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@jsdevtools/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-NJFLJRiD3LLFBgSxAb6B255xhWCGgdtzmh6UjHK2b7SRGX2DDKJH5O4BJ0GTStBu4NnaNgMbkr1TLW3pLOBkOQ==", - "dev": true, - "dependencies": { - "@jsdevtools/ez-spawn": "^3.0.4", - "command-line-args": "^5.1.1", - "detect-indent": "^6.0.0", - "detect-newline": "^3.1.0", - "globby": "^11.0.1", - "inquirer": "^7.3.3", - "log-symbols": "^4.0.0", - "semver": "^7.3.2" - }, - "bin": { - "bump": "bin/bump.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "../../node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@nut-tree/default-clipboard-provider": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nut-tree/default-clipboard-provider/-/default-clipboard-provider-1.0.0.tgz", - "integrity": "sha512-CUltQpkxmkfrYsTSGaWiIRpisO6/YeuLkaRpcvm7RNbWvhR/AqNNaJgyaXpDbBaZt0tfY6poGzyyJ3zqjSAZOQ==", - "dev": true, - "dependencies": { - "clipboardy": "2.3.0" - }, - "peerDependencies": { - "@nut-tree/nut-js": "^3" - } - }, - "../../node_modules/@nut-tree/libnut": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.6.0.tgz", - "integrity": "sha512-bXJiLmSbSpzCRRumsYn/nBPL13f8/yLATJSHpjTSoKBjtWXeaOubFL21GVfzckee75jVEDroeoXu0r7EnMvKtA==", - "dev": true, - "dependencies": { - "@nut-tree/libnut-darwin": "2.6.0", - "@nut-tree/libnut-linux": "2.6.0", - "@nut-tree/libnut-win32": "2.6.0" - }, - "engines": { - "node": ">=10.15.3" - } - }, - "../../node_modules/@nut-tree/libnut-darwin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.6.0.tgz", - "integrity": "sha512-Hx/me+2e2gwzSZthtNZIcp6VVeVlE+kgaMCGBlVlJo45ZzkqG1TSdjpp0jdIApMgGqphj0S/paqaXx3DgdF0Tw==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/libnut-linux": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.6.0.tgz", - "integrity": "sha512-N0TvzI6CkiCSzpDUoxk9W8jMTTti2fKyIDPKtasE8MnDjpTENinNg+XemshL8Whz2JILp6uQehbQIS+1kC7H3A==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/libnut-win32": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.6.0.tgz", - "integrity": "sha512-7ShvAM85Gf9P/fpMVnTtL/TqA+SKGkopuYTQqXJfPL4pPpGgsia5UwTzlezmIqcEaUMEQQ+zTYYCPNHWyqW3Dg==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/node-mac-permissions": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@nut-tree/node-mac-permissions/-/node-mac-permissions-2.2.1.tgz", - "integrity": "sha512-yoijwCqt2yS9UFTv7THGUwZgy2D2TorN703QpYNOergbTJ6vEmeG379pIZDfBuvf56n24RMzKJVoSqr9WIq/Yw==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "1.5.0", - "node-addon-api": "5.0.0" - } - }, - "../../node_modules/@nut-tree/nut-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-3.1.2.tgz", - "integrity": "sha512-hi7DBZz9O/t4goeQu3hKeauQbb0PcBmurScl3/t5L3I1pub3ibV24sft8KNSS3INKnGCj7I3Ma5iNHQ24g+95g==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "linux", - "darwin", - "win32" - ], - "peer": true, - "dependencies": { - "@nut-tree/libnut": "2.5.2", - "clipboardy": "2.3.0", - "jimp": "0.16.13", - "node-abort-controller": "2.0.0" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.5.2.tgz", - "integrity": "sha512-IwlGgalGQjjCrbPq52HTLtsR6MRsGJ6c4GhgHmgwJPD/yBVCzsU5EA2rwDgjKSgK+jiLOpykySDZQ+owhyd1zw==", - "dev": true, - "peer": true, - "dependencies": { - "@nut-tree/libnut-darwin": "2.5.2", - "@nut-tree/libnut-linux": "2.5.2", - "@nut-tree/libnut-win32": "2.5.2" - }, - "engines": { - "node": ">=10.15.3" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-darwin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.5.2.tgz", - "integrity": "sha512-OKqCgpBbZj2oNQkLM+mM7TyiLBAQsRyN7Q5UXVKbyXnzcQTU1FZBJ1mLGvdfzzspajznL3Mkl08AQE+xYYbTMw==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-linux": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.5.2.tgz", - "integrity": "sha512-uY6XDuNE8soYRUhV23g6KQN5BRR43MYNLyPnrrQa5Wtfgm6oW9kBRu6JtkWz6Fn6trAWrVAKnbPoTiEgHuGz9w==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-win32": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.5.2.tgz", - "integrity": "sha512-cnNAQ0pzUMH7hrSjTWRiFfXid3sbSZ78jpv1rA154dlka3wqo6m1OtaX4PLVQK4irZl5REz74iPdHcjeTy9rtg==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "dev": true, - "peer": true, - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "../../node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "../../node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "../../node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true - }, - "../../node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "../../node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "../../node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "../../node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "../../node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "../../node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "../../node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "../../node_modules/@types/babel__traverse": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", - "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "../../node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "../../node_modules/@types/graceful-fs": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", - "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "../../node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "../../node_modules/@types/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "../../node_modules/@types/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "../../node_modules/@types/jest": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.1.tgz", - "integrity": "sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==", - "dev": true, - "dependencies": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "../../node_modules/@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==", - "dev": true - }, - "../../node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "../../node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "../../node_modules/@types/yargs": { - "version": "16.0.6", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz", - "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "../../node_modules/@types/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", - "dev": true - }, - "../../node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "../../node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "../../node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "../../node_modules/aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "../../node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "../../node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", - "dev": true - }, - "../../node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - } - }, - "../../node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "../../node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "../../node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "../../node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "../../node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "../../node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "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" - } - }, - "../../node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../../node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "../../node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "../../node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", - "dev": true - }, - "../../node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "../../node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "../../node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "../../node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - } - }, - "../../node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "../../node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "../../node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "../../node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - } - }, - "../../node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "../../node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "../../node_modules/caniuse-lite": { - "version": "1.0.30001549", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", - "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "../../node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/chalk/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "../../node_modules/chalk/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "../../node_modules/chalk/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "../../node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "../../node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "../../node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "../../node_modules/clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dev": true, - "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "../../node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "../../node_modules/cliui/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "../../node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "../../node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "../../node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "../../node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - } - }, - "../../node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "../../node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "../../node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "../../node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "../../node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "../../node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "../../node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "../../node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "../../node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "../../node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "../../node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "../../node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../../node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "../../node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "../../node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "../../node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - } - }, - "../../node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "../../node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "../../node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "../../node_modules/electron-to-chromium": { - "version": "1.4.557", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz", - "integrity": "sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==", - "dev": true - }, - "../../node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "../../node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "../../node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "../../node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "../../node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "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.6", - "get-intrinsic": "^1.2.1", - "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.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "../../node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "../../node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "../../node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "../../node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "../../node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "../../node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "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" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", - "dev": true - }, - "../../node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "../../node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "../../node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "../../node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "../../node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "../../node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dev": true, - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "../../node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "../../node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "../../node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "../../node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "../../node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, - "../../node_modules/foreground-child/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "../../node_modules/foreground-child/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "../../node_modules/foreground-child/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - } - }, - "../../node_modules/foreground-child/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "../../node_modules/foreground-child/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - } - }, - "../../node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/fromentries": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", - "integrity": "sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw==", - "dev": true - }, - "../../node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "../../node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "../../node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "../../node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "../../node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", - "dev": true, - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "../../node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "../../node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "../../node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "../../node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "../../node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "../../node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "../../node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/hasha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", - "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - } - }, - "../../node_modules/hasha/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "../../node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "../../node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "../../node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "../../node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "../../node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "../../node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dev": true, - "dependencies": { - "@types/node": "16.9.1" - } - }, - "../../node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", - "dev": true - }, - "../../node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "../../node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "../../node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "../../node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "../../node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../../node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/inquirer/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "../../node_modules/inquirer/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/inquirer/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "../../node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "../../node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, - "../../node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "../../node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "../../node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "../../node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "../../node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "../../node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "../../node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "../../node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - } - }, - "../../node_modules/istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "../../node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - } - }, - "../../node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "../../node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "../../node_modules/istanbul-merge": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/istanbul-merge/-/istanbul-merge-2.0.0.tgz", - "integrity": "sha512-Y812/uTdnF5Qc2qWxA7jQOTkqpFLEr7BHy8mzUQFRJstTjPigNS1Bh3q06AbOhBZ7tZqrI4MZdMgG34KVnUn6w==", - "dev": true, - "dependencies": { - "array.prototype.flatmap": "^1.3.1", - "for-each": "^0.3.3", - "glob": "^7.2.3", - "istanbul-lib-coverage": "^3.2.0", - "mkdirp": "^0.5.6", - "yargs": "^15.4.1" - }, - "bin": { - "istanbul-merge": "bin/istanbul-merge" - }, - "engines": { - "node": ">= 8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "../../node_modules/jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", - "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", - "dev": true, - "dependencies": { - "@jest/core": "^27.1.0", - "import-local": "^3.0.2", - "jest-cli": "^27.1.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "../../node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-cli/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "../../node_modules/jest-cli/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-cli/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-cli/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "../../node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "../../node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "../../node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-runtime/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "../../node_modules/jest-runtime/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-runtime/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-runtime/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "../../node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "../../node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "../../node_modules/jimp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", - "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", - "dev": true, - "dependencies": { - "@jimp/custom": "^0.22.10", - "@jimp/plugins": "^0.22.10", - "@jimp/types": "^0.22.10", - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "dev": true - }, - "../../node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "../../node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "../../node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "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.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "../../node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "../../node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "../../node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "../../node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "../../node_modules/lint-staged": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.4.tgz", - "integrity": "sha512-HxlHCXoYRsq9QCby5wFozmZW00hMs/9e3l+/dz6Qr8Kle4UH0kJTdABAbqhzG+3pcG6QjL9kz7NgGBfph+a5dw==", - "dev": true, - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "../../node_modules/lint-staged/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/lint-staged/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "../../node_modules/lint-staged/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true, - "engines": { - "node": ">=12.20.0" - } - }, - "../../node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lint-staged/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lint-staged/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "../../node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/listr2/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/listr2/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "dev": true, - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "../../node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - } - }, - "../../node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "../../node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "../../node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "../../node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "../../node_modules/log-update/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "../../node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "../../node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - } - }, - "../../node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "../../node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "../../node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "../../node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "../../node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "../../node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "../../node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "../../node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "../../node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - } - }, - "../../node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "../../node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "../../node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "../../node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "../../node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "../../node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "../../node_modules/node-abort-controller": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", - "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==", - "dev": true - }, - "../../node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", - "dev": true, - "optional": true - }, - "../../node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "../../node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "../../node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "../../node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "../../node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "../../node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - } - }, - "../../node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "../../node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true - }, - "../../node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - } - }, - "../../node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/object-inspect": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", - "dev": true - }, - "../../node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "../../node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - } - }, - "../../node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - } - }, - "../../node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - } - }, - "../../node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "../../node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "../../node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "../../node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", - "dev": true - }, - "../../node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", - "dev": true - }, - "../../node_modules/parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "dev": true, - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "../../node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", - "dev": true - }, - "../../node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "../../node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "../../node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "../../node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "../../node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "../../node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "dev": true - }, - "../../node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "../../node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "../../node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "../../node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dev": true, - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "../../node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - } - }, - "../../node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "dev": true, - "engines": { - "node": ">=12.13.0" - } - }, - "../../node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "../../node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../../node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "../../node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - } - }, - "../../node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "../../node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "../../node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "../../node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "../../node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dev": true, - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "../../node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - } - }, - "../../node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "../../node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "../../node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "../../node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "../../node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "../../node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "../../node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../../node_modules/rimraf/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/rimraf/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/rimraf/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/rimraf/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "../../node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "../../node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "../../node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "../../node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "../../node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", - "dev": true - }, - "../../node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "../../node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "../../node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/shiki": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz", - "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "^6.0.0" - } - }, - "../../node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "../../node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "../../node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "../../node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../../node_modules/sneer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sneer/-/sneer-1.0.1.tgz", - "integrity": "sha512-rzS5DLX+mRbYzN+pwqcOQnz4WIDI+esS2o1yIMFHCWLTRZ348oPPOjJpm/caJiaMMP1SAUgLO4FRVrF2sc8FCA==", - "dev": true - }, - "../../node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "../../node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "../../node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - } - }, - "../../node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/spawn-wrap/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - } - }, - "../../node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "../../node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "../../node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "../../node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "../../node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "../../node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "../../node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "../../node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - } - }, - "../../node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "../../node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "../../node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, - "../../node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "../../node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", - "dev": true - }, - "../../node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "dev": true - }, - "../../node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "../../node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "../../node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "../../node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "../../node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - } - } - }, - "../../node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "../../node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "../../node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "../../node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "../../node_modules/typedoc": { - "version": "0.23.14", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.14.tgz", - "integrity": "sha512-s2I+ZKBET38EctZvbXp2GooHrNaKjWZkrwGEK/sttnOGiKJqU0vHrsdcwLgKZGuo2aedNL3RRPj1LnAAeYscig==", - "dev": true, - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.0.19", - "minimatch": "^5.1.0", - "shiki": "^0.11.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x" - } - }, - "../../node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../../node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "../../node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "../../node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "../../node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "../../node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "dev": true, - "peer": true, - "dependencies": { - "pako": "^1.0.5" - } - }, - "../../node_modules/utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", - "dev": true, - "dependencies": { - "pako": "^1.0.11" - } - }, - "../../node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "../../node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "../../node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "../../node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg==", - "dev": true, - "dependencies": { - "@jsdevtools/version-bump-prompt": "6.1.0" - }, - "bin": { - "bump": "bump.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "../../node_modules/vscode-textmate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz", - "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==", - "dev": true - }, - "../../node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "../../node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "../../node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "../../node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "../../node_modules/whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", - "dev": true - }, - "../../node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "../../node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "../../node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "../../node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../../node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../../node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "../../node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "../../node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "../../node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dev": true, - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "../../node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "../../node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", - "dev": true - }, - "../../node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "../../node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "../../node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "../../node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "../../node_modules/yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "../../node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "../../node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "../../node_modules/yargs/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "../../node_modules/yargs/node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "../../node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@electron/get": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "global-agent": "^3.0.0" - } - }, - "node_modules/@nut-tree/nut-js": { - "resolved": "../..", - "link": true - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/keyv": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.2.tgz", - "integrity": "sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "18.18.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz", - "integrity": "sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A==", - "dev": true - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yauzl": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", - "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "dev": true, - "optional": true - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "optional": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "optional": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "optional": true - }, - "node_modules/electron": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-27.0.0.tgz", - "integrity": "sha512-mr3Zoy82l8XKK/TgguE5FeNeHZ9KHXIGIpUMjbjZWIREfAv+X2Q3vdX6RG0Pmi1K23AFAxANXQezIHBA2Eypwg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@electron/get": "^2.0.0", - "@types/node": "^18.11.18", - "extract-zip": "^2.0.1" - }, - "bin": { - "electron": "cli.js" - }, - "engines": { - "node": ">= 12.20.55" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "optional": true - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "optional": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "optional": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/global-agent/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "optional": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "optional": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "optional": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "optional": true, - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/resolve-alpn": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.1.2.tgz", - "integrity": "sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA==", - "dev": true - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dev": true, - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true, - "optional": true - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "optional": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true, - "optional": true - }, - "node_modules/sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, - "dependencies": { - "debug": "^4.1.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - } -} diff --git a/e2e/electron-test/package.json b/e2e/electron-test/package.json deleted file mode 100644 index 9a8fb7c7..00000000 --- a/e2e/electron-test/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "electron-test", - "version": "3.1.2", - "description": "A test to verify usage with Electron", - "main": "main.js", - "author": { - "name": "dry Software UG (haftungsbeschränkt)", - "email": "info@dry.software", - "url": "https://dry.software" - }, - "scripts": { - "test": "electron ." - }, - "license": "MIT", - "devDependencies": { - "electron": "27.0.0", - "@nut-tree/nut-js": "file:../../" - } -} diff --git a/e2e/window-test/index.css b/e2e/window-test/index.css deleted file mode 100644 index 118138dd..00000000 --- a/e2e/window-test/index.css +++ /dev/null @@ -1,19 +0,0 @@ -body { - width: 100vw; - height: 100vh; -} - -#content { - display: flex; - flex-direction: row; - align-items: center; - justify-content: center; - height: 100vh; - width: 100vw; -} - -#exit { - color: white; - font-size: 1.5rem; - background: darkblue; -} diff --git a/e2e/window-test/jest.config.js b/e2e/window-test/jest.config.js deleted file mode 100644 index be973e3a..00000000 --- a/e2e/window-test/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - preset: "jest-playwright-preset", -}; diff --git a/e2e/window-test/package-lock.json b/e2e/window-test/package-lock.json deleted file mode 100644 index 43fa52d0..00000000 --- a/e2e/window-test/package-lock.json +++ /dev/null @@ -1,15199 +0,0 @@ -{ - "name": "window-integration-tests", - "version": "3.1.2", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "window-integration-tests", - "version": "3.1.2", - "license": "MIT", - "devDependencies": { - "@nut-tree/nut-js": "file:../../", - "@playwright/test": "1.39.0", - "electron": "27.0.0", - "jest": "29.7.0", - "jest-playwright-preset": "3.0.1" - } - }, - "../..": { - "name": "@nut-tree/nut-js", - "version": "3.1.2", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "license": "Apache-2.0", - "os": [ - "linux", - "darwin", - "win32" - ], - "dependencies": { - "@nut-tree/default-clipboard-provider": "1.0.0", - "@nut-tree/libnut": "2.6.0", - "jimp": "0.22.10", - "node-abort-controller": "2.0.0" - }, - "devDependencies": { - "@types/jest": "27.0.1", - "@types/node": "18.18.4", - "husky": "8.0.3", - "istanbul-merge": "2.0.0", - "jest": "27.1.0", - "lint-staged": "13.0.4", - "nyc": "15.1.0", - "prettier": "3.0.3", - "rimraf": "5.0.5", - "sneer": "1.0.1", - "ts-jest": "27.0.5", - "ts-node": "10.9.1", - "typedoc": "0.23.14", - "typescript": "4.8.3", - "version-bump-prompt": "6.1.0" - } - }, - "../../node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "../../node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "../../node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../../node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "../../node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", - "dev": true, - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true, - "peer": true - }, - "../../node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "../../node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "../../node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "../../node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "../../node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../../node_modules/@istanbuljs/load-nyc-config": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz", - "integrity": "sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "../../node_modules/@istanbuljs/schema": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", - "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", - "dev": true - }, - "../../node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jest/reporters/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/@jimp/bmp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", - "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/core": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", - "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" - } - }, - "../../node_modules/@jimp/custom": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", - "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", - "dev": true, - "dependencies": { - "@jimp/core": "^0.22.10" - } - }, - "../../node_modules/@jimp/gif": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", - "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "gifwrap": "^0.10.1", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/jpeg": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", - "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "jpeg-js": "^0.4.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-blit": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", - "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-blur": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", - "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-circle": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", - "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-color": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", - "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "tinycolor2": "^1.6.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-contain": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", - "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-cover": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", - "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-crop": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", - "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-displace": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", - "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-dither": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", - "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-fisheye": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", - "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-flip": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", - "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-gaussian": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", - "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-invert": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", - "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-mask": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", - "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-normalize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", - "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-print": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", - "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "load-bmfont": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-resize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", - "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-rotate": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", - "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-scale": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", - "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-shadow": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", - "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@jimp/plugin-threshold": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", - "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "../../node_modules/@jimp/plugins": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", - "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", - "dev": true, - "dependencies": { - "@jimp/plugin-blit": "^0.22.10", - "@jimp/plugin-blur": "^0.22.10", - "@jimp/plugin-circle": "^0.22.10", - "@jimp/plugin-color": "^0.22.10", - "@jimp/plugin-contain": "^0.22.10", - "@jimp/plugin-cover": "^0.22.10", - "@jimp/plugin-crop": "^0.22.10", - "@jimp/plugin-displace": "^0.22.10", - "@jimp/plugin-dither": "^0.22.10", - "@jimp/plugin-fisheye": "^0.22.10", - "@jimp/plugin-flip": "^0.22.10", - "@jimp/plugin-gaussian": "^0.22.10", - "@jimp/plugin-invert": "^0.22.10", - "@jimp/plugin-mask": "^0.22.10", - "@jimp/plugin-normalize": "^0.22.10", - "@jimp/plugin-print": "^0.22.10", - "@jimp/plugin-resize": "^0.22.10", - "@jimp/plugin-rotate": "^0.22.10", - "@jimp/plugin-scale": "^0.22.10", - "@jimp/plugin-shadow": "^0.22.10", - "@jimp/plugin-threshold": "^0.22.10", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/png": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", - "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", - "dev": true, - "dependencies": { - "@jimp/utils": "^0.22.10", - "pngjs": "^6.0.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/tiff": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", - "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", - "dev": true, - "dependencies": { - "utif2": "^4.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/types": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", - "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", - "dev": true, - "dependencies": { - "@jimp/bmp": "^0.22.10", - "@jimp/gif": "^0.22.10", - "@jimp/jpeg": "^0.22.10", - "@jimp/png": "^0.22.10", - "@jimp/tiff": "^0.22.10", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@jimp/utils": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", - "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "../../node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "../../node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "../../node_modules/@jsdevtools/ez-spawn": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz", - "integrity": "sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "cross-spawn": "^7.0.3", - "string-argv": "^0.3.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/@jsdevtools/ez-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@jsdevtools/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-NJFLJRiD3LLFBgSxAb6B255xhWCGgdtzmh6UjHK2b7SRGX2DDKJH5O4BJ0GTStBu4NnaNgMbkr1TLW3pLOBkOQ==", - "dev": true, - "dependencies": { - "@jsdevtools/ez-spawn": "^3.0.4", - "command-line-args": "^5.1.1", - "detect-indent": "^6.0.0", - "detect-newline": "^3.1.0", - "globby": "^11.0.1", - "inquirer": "^7.3.3", - "log-symbols": "^4.0.0", - "semver": "^7.3.2" - }, - "bin": { - "bump": "bin/bump.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/@jsdevtools/version-bump-prompt/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "../../node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/@nut-tree/default-clipboard-provider": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nut-tree/default-clipboard-provider/-/default-clipboard-provider-1.0.0.tgz", - "integrity": "sha512-CUltQpkxmkfrYsTSGaWiIRpisO6/YeuLkaRpcvm7RNbWvhR/AqNNaJgyaXpDbBaZt0tfY6poGzyyJ3zqjSAZOQ==", - "dev": true, - "dependencies": { - "clipboardy": "2.3.0" - }, - "peerDependencies": { - "@nut-tree/nut-js": "^3" - } - }, - "../../node_modules/@nut-tree/libnut": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.6.0.tgz", - "integrity": "sha512-bXJiLmSbSpzCRRumsYn/nBPL13f8/yLATJSHpjTSoKBjtWXeaOubFL21GVfzckee75jVEDroeoXu0r7EnMvKtA==", - "dev": true, - "dependencies": { - "@nut-tree/libnut-darwin": "2.6.0", - "@nut-tree/libnut-linux": "2.6.0", - "@nut-tree/libnut-win32": "2.6.0" - }, - "engines": { - "node": ">=10.15.3" - } - }, - "../../node_modules/@nut-tree/libnut-darwin": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.6.0.tgz", - "integrity": "sha512-Hx/me+2e2gwzSZthtNZIcp6VVeVlE+kgaMCGBlVlJo45ZzkqG1TSdjpp0jdIApMgGqphj0S/paqaXx3DgdF0Tw==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/libnut-linux": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.6.0.tgz", - "integrity": "sha512-N0TvzI6CkiCSzpDUoxk9W8jMTTti2fKyIDPKtasE8MnDjpTENinNg+XemshL8Whz2JILp6uQehbQIS+1kC7H3A==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/libnut-win32": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.6.0.tgz", - "integrity": "sha512-7ShvAM85Gf9P/fpMVnTtL/TqA+SKGkopuYTQqXJfPL4pPpGgsia5UwTzlezmIqcEaUMEQQ+zTYYCPNHWyqW3Dg==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/node-mac-permissions": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@nut-tree/node-mac-permissions/-/node-mac-permissions-2.2.1.tgz", - "integrity": "sha512-yoijwCqt2yS9UFTv7THGUwZgy2D2TorN703QpYNOergbTJ6vEmeG379pIZDfBuvf56n24RMzKJVoSqr9WIq/Yw==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "1.5.0", - "node-addon-api": "5.0.0" - } - }, - "../../node_modules/@nut-tree/nut-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-3.1.2.tgz", - "integrity": "sha512-hi7DBZz9O/t4goeQu3hKeauQbb0PcBmurScl3/t5L3I1pub3ibV24sft8KNSS3INKnGCj7I3Ma5iNHQ24g+95g==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "linux", - "darwin", - "win32" - ], - "peer": true, - "dependencies": { - "@nut-tree/libnut": "2.5.2", - "clipboardy": "2.3.0", - "jimp": "0.16.13", - "node-abort-controller": "2.0.0" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.5.2.tgz", - "integrity": "sha512-IwlGgalGQjjCrbPq52HTLtsR6MRsGJ6c4GhgHmgwJPD/yBVCzsU5EA2rwDgjKSgK+jiLOpykySDZQ+owhyd1zw==", - "dev": true, - "peer": true, - "dependencies": { - "@nut-tree/libnut-darwin": "2.5.2", - "@nut-tree/libnut-linux": "2.5.2", - "@nut-tree/libnut-win32": "2.5.2" - }, - "engines": { - "node": ">=10.15.3" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-darwin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.5.2.tgz", - "integrity": "sha512-OKqCgpBbZj2oNQkLM+mM7TyiLBAQsRyN7Q5UXVKbyXnzcQTU1FZBJ1mLGvdfzzspajznL3Mkl08AQE+xYYbTMw==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-linux": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.5.2.tgz", - "integrity": "sha512-uY6XDuNE8soYRUhV23g6KQN5BRR43MYNLyPnrrQa5Wtfgm6oW9kBRu6JtkWz6Fn6trAWrVAKnbPoTiEgHuGz9w==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-win32": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.5.2.tgz", - "integrity": "sha512-cnNAQ0pzUMH7hrSjTWRiFfXid3sbSZ78jpv1rA154dlka3wqo6m1OtaX4PLVQK4irZl5REz74iPdHcjeTy9rtg==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "dev": true, - "peer": true, - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/@nut-tree/nut-js/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "../../node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "../../node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "../../node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true - }, - "../../node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "../../node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "../../node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "../../node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, - "../../node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "../../node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "../../node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "../../node_modules/@types/babel__traverse": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", - "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "../../node_modules/@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, - "../../node_modules/@types/graceful-fs": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", - "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "../../node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "../../node_modules/@types/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "../../node_modules/@types/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "../../node_modules/@types/jest": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.1.tgz", - "integrity": "sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==", - "dev": true, - "dependencies": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "../../node_modules/@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==", - "dev": true - }, - "../../node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "../../node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "../../node_modules/@types/yargs": { - "version": "16.0.6", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.6.tgz", - "integrity": "sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "../../node_modules/@types/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", - "dev": true - }, - "../../node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "../../node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "../../node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "../../node_modules/aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "../../node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, - "../../node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", - "dev": true - }, - "../../node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - } - }, - "../../node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "../../node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "../../node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "../../node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "../../node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "../../node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "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" - } - }, - "../../node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "../../node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "../../node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "../../node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", - "dev": true - }, - "../../node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "../../node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "../../node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "../../node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - } - }, - "../../node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "../../node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "../../node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "../../node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - } - }, - "../../node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true - }, - "../../node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "../../node_modules/caniuse-lite": { - "version": "1.0.30001549", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", - "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "../../node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/chalk/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "../../node_modules/chalk/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "../../node_modules/chalk/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "../../node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "../../node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "../../node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "../../node_modules/clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dev": true, - "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "../../node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "../../node_modules/cliui/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "../../node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "../../node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "../../node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "../../node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - } - }, - "../../node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "../../node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "../../node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "../../node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "../../node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "../../node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "../../node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "../../node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "../../node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "../../node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "../../node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "../../node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../../node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "../../node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "../../node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "../../node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - } - }, - "../../node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "../../node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "../../node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "../../node_modules/electron-to-chromium": { - "version": "1.4.557", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz", - "integrity": "sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==", - "dev": true - }, - "../../node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "../../node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "../../node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "../../node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "../../node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "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.6", - "get-intrinsic": "^1.2.1", - "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.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "../../node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "../../node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "../../node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "../../node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "../../node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "../../node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "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" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", - "dev": true - }, - "../../node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "../../node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "../../node_modules/fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "../../node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "../../node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "../../node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dev": true, - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "../../node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true - }, - "../../node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "../../node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "../../node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "../../node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, - "../../node_modules/foreground-child/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "../../node_modules/foreground-child/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "../../node_modules/foreground-child/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - } - }, - "../../node_modules/foreground-child/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "../../node_modules/foreground-child/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - } - }, - "../../node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/fromentries": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.2.1.tgz", - "integrity": "sha512-Xu2Qh8yqYuDhQGOhD5iJGninErSfI9A3FrriD3tjUgV5VbJFeH8vfgZ9HnC6jWN80QDVNQK5vmxRAmEAp7Mevw==", - "dev": true - }, - "../../node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "../../node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "../../node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "../../node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "../../node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "../../node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", - "dev": true, - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "../../node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "../../node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "../../node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "../../node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "../../node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "../../node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "../../node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/hasha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.0.tgz", - "integrity": "sha512-2W+jKdQbAdSIrggA8Q35Br8qKadTrqCTC8+XZvBWepKDK6m9XkX6Iz1a2yh2KP01kzAR/dpuMeUnocoLYDcskw==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - } - }, - "../../node_modules/hasha/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "../../node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "../../node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "../../node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "../../node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "../../node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "../../node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dev": true, - "dependencies": { - "@types/node": "16.9.1" - } - }, - "../../node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", - "dev": true - }, - "../../node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "../../node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "../../node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "../../node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "../../node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../../node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/inquirer/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "../../node_modules/inquirer/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/inquirer/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "../../node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "../../node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, - "../../node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "../../node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "../../node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "../../node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "../../node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "../../node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "../../node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "../../node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - } - }, - "../../node_modules/istanbul-lib-instrument": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz", - "integrity": "sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@babel/parser": "^7.7.5", - "@babel/template": "^7.7.4", - "@babel/traverse": "^7.7.4", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - } - }, - "../../node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - } - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "../../node_modules/istanbul-lib-processinfo/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - } - }, - "../../node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "../../node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "../../node_modules/istanbul-merge": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/istanbul-merge/-/istanbul-merge-2.0.0.tgz", - "integrity": "sha512-Y812/uTdnF5Qc2qWxA7jQOTkqpFLEr7BHy8mzUQFRJstTjPigNS1Bh3q06AbOhBZ7tZqrI4MZdMgG34KVnUn6w==", - "dev": true, - "dependencies": { - "array.prototype.flatmap": "^1.3.1", - "for-each": "^0.3.3", - "glob": "^7.2.3", - "istanbul-lib-coverage": "^3.2.0", - "mkdirp": "^0.5.6", - "yargs": "^15.4.1" - }, - "bin": { - "istanbul-merge": "bin/istanbul-merge" - }, - "engines": { - "node": ">= 8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "../../node_modules/jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", - "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", - "dev": true, - "dependencies": { - "@jest/core": "^27.1.0", - "import-local": "^3.0.2", - "jest-cli": "^27.1.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "../../node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "../../node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-cli/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "../../node_modules/jest-cli/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-cli/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-cli/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "../../node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "../../node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "../../node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-runtime/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "../../node_modules/jest-runtime/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-runtime/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-runtime/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/jest-runtime/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "../../node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "../../node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "../../node_modules/jimp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", - "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", - "dev": true, - "dependencies": { - "@jimp/custom": "^0.22.10", - "@jimp/plugins": "^0.22.10", - "@jimp/types": "^0.22.10", - "regenerator-runtime": "^0.13.3" - } - }, - "../../node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "dev": true - }, - "../../node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "../../node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "../../node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "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.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "../../node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "../../node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "../../node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "../../node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "../../node_modules/lint-staged": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.4.tgz", - "integrity": "sha512-HxlHCXoYRsq9QCby5wFozmZW00hMs/9e3l+/dz6Qr8Kle4UH0kJTdABAbqhzG+3pcG6QjL9kz7NgGBfph+a5dw==", - "dev": true, - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "../../node_modules/lint-staged/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/lint-staged/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "../../node_modules/lint-staged/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true, - "engines": { - "node": ">=12.20.0" - } - }, - "../../node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lint-staged/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lint-staged/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/lint-staged/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "../../node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/listr2/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/listr2/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "dev": true, - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "../../node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - } - }, - "../../node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "../../node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true - }, - "../../node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "../../node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "../../node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "../../node_modules/log-update/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "../../node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "../../node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - } - }, - "../../node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "../../node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "../../node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "../../node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "../../node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "../../node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "../../node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "../../node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "../../node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "../../node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - } - }, - "../../node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "../../node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "../../node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "../../node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "../../node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "../../node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "../../node_modules/node-abort-controller": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", - "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==", - "dev": true - }, - "../../node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", - "dev": true, - "optional": true - }, - "../../node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "../../node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "../../node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "../../node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "../../node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "../../node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - } - }, - "../../node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "../../node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true - }, - "../../node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - } - }, - "../../node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/object-inspect": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", - "dev": true - }, - "../../node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "../../node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - } - }, - "../../node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - } - }, - "../../node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - } - }, - "../../node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "../../node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "../../node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "../../node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", - "dev": true - }, - "../../node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", - "dev": true - }, - "../../node_modules/parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "dev": true, - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "../../node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", - "dev": true - }, - "../../node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "../../node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "../../node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "../../node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "../../node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "../../node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "dev": true - }, - "../../node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "../../node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "../../node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "../../node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dev": true, - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "../../node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - } - }, - "../../node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "dev": true, - "engines": { - "node": ">=12.13.0" - } - }, - "../../node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "../../node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "../../node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../../node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "../../node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - } - }, - "../../node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "../../node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "../../node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "../../node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "../../node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../../node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dev": true, - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "../../node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - } - }, - "../../node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "../../node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "../../node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "../../node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "../../node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "../../node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "../../node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../../node_modules/rimraf/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/rimraf/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/rimraf/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/rimraf/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/rimraf/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "../../node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "../../node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "../../node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "../../node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "../../node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", - "dev": true - }, - "../../node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true - }, - "../../node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "../../node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/shiki": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz", - "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "^6.0.0" - } - }, - "../../node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "../../node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "../../node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "../../node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../../node_modules/sneer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sneer/-/sneer-1.0.1.tgz", - "integrity": "sha512-rzS5DLX+mRbYzN+pwqcOQnz4WIDI+esS2o1yIMFHCWLTRZ348oPPOjJpm/caJiaMMP1SAUgLO4FRVrF2sc8FCA==", - "dev": true - }, - "../../node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "../../node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "../../node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - } - }, - "../../node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../../node_modules/spawn-wrap/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - } - }, - "../../node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "../../node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "../../node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "../../node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "../../node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "../../node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "../../node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "../../node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "../../node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "../../node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - } - }, - "../../node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "../../node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "../../node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, - "../../node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "../../node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", - "dev": true - }, - "../../node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", - "dev": true - }, - "../../node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "../../node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "../../node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "../../node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "../../node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "../../node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "../../node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - } - } - }, - "../../node_modules/ts-jest/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/ts-jest/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "../../node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "../../node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "../../node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "../../node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "../../node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "../../node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "../../node_modules/typedoc": { - "version": "0.23.14", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.14.tgz", - "integrity": "sha512-s2I+ZKBET38EctZvbXp2GooHrNaKjWZkrwGEK/sttnOGiKJqU0vHrsdcwLgKZGuo2aedNL3RRPj1LnAAeYscig==", - "dev": true, - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.0.19", - "minimatch": "^5.1.0", - "shiki": "^0.11.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x" - } - }, - "../../node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "../../node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "../../node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "../../node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "../../node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "../../node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "dev": true, - "peer": true, - "dependencies": { - "pako": "^1.0.5" - } - }, - "../../node_modules/utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", - "dev": true, - "dependencies": { - "pako": "^1.0.11" - } - }, - "../../node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "../../node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "../../node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "../../node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "../../node_modules/version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg==", - "dev": true, - "dependencies": { - "@jsdevtools/version-bump-prompt": "6.1.0" - }, - "bin": { - "bump": "bump.js" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "dev": true - }, - "../../node_modules/vscode-textmate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz", - "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==", - "dev": true - }, - "../../node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "../../node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "../../node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "../../node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "../../node_modules/whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==", - "dev": true - }, - "../../node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "../../node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "../../node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "../../node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../../node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "../../node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "../../node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "../../node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "../../node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dev": true, - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "../../node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "../../node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", - "dev": true - }, - "../../node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../../node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "../../node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "../../node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "../../node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "../../node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "../../node_modules/yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "../../node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "../../node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "../../node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "../../node_modules/yargs/node_modules/string-width": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", - "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "../../node_modules/yargs/node_modules/y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "../../node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz", - "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true - }, - "node_modules/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", - "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/core": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", - "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/reporters": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.7.0", - "jest-config": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-resolve-dependencies": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "jest-watcher": "^29.7.0", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@nut-tree/nut-js": { - "resolved": "../..", - "link": true - }, - "node_modules/@playwright/test": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.39.0.tgz", - "integrity": "sha512-3u1iFqgzl7zr004bGPYiN/5EZpRUSFddQBra8Rqll5N0/vfpqlP9I9EXqAoGacuAbX6c9Ulg/Cjqglp5VkK6UQ==", - "dev": true, - "dependencies": { - "playwright": "1.39.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0" - } - }, - "node_modules/@sideway/formula": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", - "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", - "dev": true - }, - "node_modules/@sideway/pinpoint": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", - "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", - "dev": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz", - "integrity": "sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", - "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/keyv": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.2.tgz", - "integrity": "sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "18.18.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.5.tgz", - "integrity": "sha512-4slmbtwV59ZxitY4ixUZdy1uRLf9eSIvBWPQxNjhHYWEtn0FryfKpyS2cvADYXTayWdKEIsJengncrVvkI4I6A==", - "dev": true - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/wait-on": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@types/wait-on/-/wait-on-5.3.2.tgz", - "integrity": "sha512-7NBSJs/YvbHlaYCJ7wIUF6t7ct3OMt525NmZ+US73pPlkmpxd9ADwfNxrRAmg8nWlcTMqR0PkhW7aYk3FLlvrQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.28", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.28.tgz", - "integrity": "sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz", - "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/argparse/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, - "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "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" - } - }, - "node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/boolean": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.2.tgz", - "integrity": "sha512-YN6UmV0FfLlBVvRvNPx3pz5W/mUoYB24J4WSXOKP/OOJpi+Oq6WYqPaNTHzjI0QzwWtnvEd5CGYyQPgp1jFxnw==", - "dev": true, - "optional": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/caching-transform/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caching-transform/node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001549", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", - "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/create-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", - "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "prompts": "^2.0.1" - }, - "bin": { - "create-jest": "bin/create-jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cwd": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz", - "integrity": "sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==", - "dev": true, - "dependencies": { - "find-pkg": "^0.1.2", - "fs-exists-sync": "^0.1.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", - "dev": true, - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "optional": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "optional": true - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/electron": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-27.0.0.tgz", - "integrity": "sha512-mr3Zoy82l8XKK/TgguE5FeNeHZ9KHXIGIpUMjbjZWIREfAv+X2Q3vdX6RG0Pmi1K23AFAxANXQezIHBA2Eypwg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@electron/get": "^2.0.0", - "@types/node": "^18.11.18", - "extract-zip": "^2.0.1" - }, - "bin": { - "electron": "cli.js" - }, - "engines": { - "node": ">= 12.20.55" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.557", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz", - "integrity": "sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==", - "dev": true - }, - "node_modules/electron/node_modules/@electron/get": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "global-agent": "^3.0.0" - } - }, - "node_modules/electron/node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/electron/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron/node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/electron/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron/node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron/node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/electron/node_modules/global-agent/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron/node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/electron/node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/electron/node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/electron/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/electron/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron/node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/electron/node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expand-tilde": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", - "integrity": "sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/expect-playwright": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/expect-playwright/-/expect-playwright-0.8.0.tgz", - "integrity": "sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg==", - "dev": true - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-file-up": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz", - "integrity": "sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==", - "dev": true, - "dependencies": { - "fs-exists-sync": "^0.1.0", - "resolve-dir": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-pkg": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz", - "integrity": "sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==", - "dev": true, - "dependencies": { - "find-file-up": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/find-process": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/find-process/-/find-process-1.4.7.tgz", - "integrity": "sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "commander": "^5.1.0", - "debug": "^4.1.1" - }, - "bin": { - "find-process": "bin/find-process.js" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/fs-exists-sync": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", - "integrity": "sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/global-modules": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", - "integrity": "sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==", - "dev": true, - "dependencies": { - "global-prefix": "^0.1.4", - "is-windows": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", - "integrity": "sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.0", - "ini": "^1.3.4", - "is-windows": "^0.2.0", - "which": "^1.2.12" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", - "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", - "dev": true, - "optional": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", - "dev": true, - "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-playwright-preset": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jest-playwright-preset/-/jest-playwright-preset-3.0.1.tgz", - "integrity": "sha512-tHqv+JUmheNMZpmH7XyT5CAMHr3ExTUIY9baMPzcJiLYPvCaPTwig9YvuGGnXV2n+Epmch0Ld4429g6py0nq0w==", - "dev": true, - "dependencies": { - "expect-playwright": "^0.8.0", - "jest-process-manager": "^0.3.1", - "nyc": "^15.1.0", - "playwright-core": ">=1.2.0", - "rimraf": "^3.0.2", - "uuid": "^8.3.2" - }, - "peerDependencies": { - "jest": "^29.3.1", - "jest-circus": "^29.3.1", - "jest-environment-node": "^29.3.1", - "jest-runner": "^29.3.1" - } - }, - "node_modules/jest-playwright-preset/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-process-manager": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/jest-process-manager/-/jest-process-manager-0.3.1.tgz", - "integrity": "sha512-x9W54UgZ7IkzUHgXtnI1x4GKOVjxtwW0CA/7yGbTHtT/YhENO0Lic2yfVyC/gekn7OIEMcQmy0L1r9WLQABfqw==", - "dev": true, - "dependencies": { - "@types/wait-on": "^5.2.0", - "chalk": "^4.1.0", - "cwd": "^0.10.0", - "exit": "^0.1.2", - "find-process": "^1.4.4", - "prompts": "^2.4.1", - "signal-exit": "^3.0.3", - "spawnd": "^5.0.0", - "tree-kill": "^1.2.2", - "wait-on": "^5.3.0" - } - }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", - "dev": true, - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", - "dev": true, - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/environment": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runner/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", - "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", - "dev": true, - "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", - "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", - "dev": true, - "dependencies": { - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.7.0", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", - "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", - "dev": true, - "dependencies": { - "@types/node": "*", - "jest-util": "^29.7.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", - "@sideway/formula": "^3.0.1", - "@sideway/pinpoint": "^2.0.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "optional": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "optional": true, - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/nyc/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/nyc/node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "optional": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/playwright": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", - "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", - "dev": true, - "dependencies": { - "playwright-core": "1.39.0" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.39.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", - "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", - "dev": true, - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.1.2.tgz", - "integrity": "sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA==", - "dev": true - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", - "integrity": "sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==", - "dev": true, - "dependencies": { - "expand-tilde": "^1.2.2", - "global-modules": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", - "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dev": true, - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true, - "optional": true - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "optional": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawn-wrap/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/spawnd": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/spawnd/-/spawnd-5.0.0.tgz", - "integrity": "sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==", - "dev": true, - "dependencies": { - "exit": "^0.1.2", - "signal-exit": "^3.0.3", - "tree-kill": "^1.2.2", - "wait-port": "^0.2.9" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "dev": true, - "optional": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, - "dependencies": { - "debug": "^4.1.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", - "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/wait-on": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-5.3.0.tgz", - "integrity": "sha512-DwrHrnTK+/0QFaB9a8Ol5Lna3k7WvUR4jzSKmz0YaPBpuN2sACyiPVKVfj6ejnjcajAcvn3wlbTyMIn9AZouOg==", - "dev": true, - "dependencies": { - "axios": "^0.21.1", - "joi": "^17.3.0", - "lodash": "^4.17.21", - "minimist": "^1.2.5", - "rxjs": "^6.6.3" - }, - "bin": { - "wait-on": "bin/wait-on" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/wait-port": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/wait-port/-/wait-port-0.2.14.tgz", - "integrity": "sha512-kIzjWcr6ykl7WFbZd0TMae8xovwqcqbx6FM9l+7agOgUByhzdjfzZBPK2CPufldTOMxbUivss//Sh9MFawmPRQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "commander": "^3.0.2", - "debug": "^4.1.1" - }, - "bin": { - "wait-port": "bin/wait-port.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wait-port/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wait-port/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wait-port/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/wait-port/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/wait-port/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - }, - "node_modules/wait-port/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/wait-port/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wait-port/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "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.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/e2e/window-test/preload.js b/e2e/window-test/preload.js deleted file mode 100644 index 3145ed4e..00000000 --- a/e2e/window-test/preload.js +++ /dev/null @@ -1,2 +0,0 @@ -// All of the Node.js APIs are available in the preload process. -// It has the same sandbox as a Chrome extension. diff --git a/e2e/window-test/renderer.js b/e2e/window-test/renderer.js deleted file mode 100644 index be415018..00000000 --- a/e2e/window-test/renderer.js +++ /dev/null @@ -1,6 +0,0 @@ -const { ipcRenderer } = require("electron"); - -const close = document.getElementById("exit"); -close.onclick = () => { - ipcRenderer.send("main", "quit"); -}; diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 00000000..3fd118de --- /dev/null +++ b/examples/README.md @@ -0,0 +1,4 @@ +# nut.js examples + +The projects contained in this folder are meant to be used as examples for how to use nut.js. +Especially the image matching samples will probably not run out of the box on you machine, nonetheless they should give you a good starting point for your own projects. \ No newline at end of file diff --git a/examples/assets/calculator.png b/examples/assets/calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..8f6cf3cb186e256953d148ed76ee928e0c82ffc8 GIT binary patch literal 463 zcmV;=0WkiFP);@^AVf%~g_-QmD;9!8-)_Jt58j*VPiFYP%w*Vw)9J+CA74cD0Sx~DgMF-xTS(f!QE2Z4;_m1NLz)KiJv@B~d7{qa0NjZ*lJRb8rmr`=B zTUs-wC zybgwwDG>2?y9GfI1VNT%zVDY}I2`7Aj)+E+THQz~)we$tjSY>6Hk*y|tq6rtZ(hX+ zA;K^OfYoX>8jVW97~Ac3LI|UY`GnRC?YmT-RN%*FTj3K)>Gy0KE?! z4hKD^)9JKYElt7Yayg&RdXrlBO`4|q8e{yLOZp%45Z`D)(z0U_cqjk>002ovPDHLk FV1iu{&Efz6 literal 0 HcmV?d00001 diff --git a/examples/assets/mouse.png b/examples/assets/mouse.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba61c6dedda2f66d33743c4e076aabbf47fcfff GIT binary patch literal 13607 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 *#;yiZvHBdtFoD8x2Q$YYnfBkExpUj*=LY_z9Gt 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 literal 0 HcmV?d00001 diff --git a/examples/jest-test/README.md b/examples/jest-test/README.md new file mode 100644 index 00000000..a244cf48 --- /dev/null +++ b/examples/jest-test/README.md @@ -0,0 +1,155 @@ +# nut.js Jest integration + +nut.js provides custom matchers for Jest, which allows to write UI tests using well known syntax. + +- [Setup](#setup) +- [toBeAt](#tobeat) +- [toBeIn](#tobein) +- [toShow](#toshow) + +## Setup + +In order to use our custom matchers we need to extend Jest's `expect` + +```js +const {jestMatchers} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); +``` + +## [`toBeAt`](https://nut-tree.github.io/apidoc/globals.html#tobeat) + +`toBeAt` is a matcher which verifies mouse cursor position. + +It receives a [Point](https://nut-tree.github.io/apidoc/classes/point.html) which specifies the expected [mouse](https://nut-tree.github.io/apidoc/classes/mouse.html) cursor position on screen. + +```js +const {jestMatchers, mouse, Point} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); + +describe("Basic test with custom Jest matchers", () => { + it("should verify that cursor is at a certain position", async () => { + // GIVEN + const targetPoint = new Point(10, 10); + + // WHEN + await mouse.setPosition(targetPoint); + + // THEN + await expect(mouse).toBeAt(targetPoint); + }); +}); +``` + +It also supports negation as known from other matchers: + +```js +const {jestMatchers, mouse, Point} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); + +describe("Basic test with custom Jest matchers", () => { + it("should verify that cursor is not at a certain position", async () => { + // GIVEN + const targetPoint = new Point(10, 10); + const wrongPoint = new Point(10, 10); + + // WHEN + await mouse.setPosition(targetPoint); + + // THEN + await expect(mouse).not.toBeAt(wrongPoint); + }); +}); +``` + +## [`toBeIn`](https://nut-tree.github.io/apidoc/globals.html#tobein) + +`toBeIn` allows us to verify whether our [mouse](https://nut-tree.github.io/apidoc/classes/mouse.html) cursor is located within a certain [Region](https://nut-tree.github.io/apidoc/classes/region.html) or not. + +```js +const {jestMatchers, mouse, Point} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); + +describe("Basic test with custom Jest matchers", () => { + it("should verify that cursor is within a certain region", async () => { + // GIVEN + const targetPoint = new Point(10, 10); + const targetRegion = new Region(5, 5, 10, 10); + + // WHEN + await mouse.setPosition(targetPoint); + + // THEN + await expect(mouse).toBeIn(targetRegion); + }); +}); +``` + +Just like [`toBeAt`](#tobeat), it supports negation: + +```js +const {jestMatchers, mouse, Point} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); + +describe("Basic test with custom Jest matchers", () => { + it("should verify that cursor is not within a certain region", async () => { + // GIVEN + const targetPoint = new Point(10, 10); + const targetRegion = new Region(100, 100, 10, 10); + + // WHEN + await mouse.setPosition(targetPoint); + + // THEN + await expect(mouse).not.toBeIn(targetRegion); + }); +}); +``` + +## [`toShow`](https://nut-tree.github.io/apidoc/globals.html#toshow) + +Sometimes we want to verify that our [screen](https://nut-tree.github.io/apidoc/classes/screen.html) displays a certain image. + +`toShow` receives a filename of an image in our [resourceDirectory](https://nut-tree.github.io/apidoc/classes/screen.html#config) and checks whether it's visible on our screen or not. + +```js +const {jestMatchers, screen} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); + +describe("Basic test with custom Jest matchers", () => { + it("should verify that the screen shows a certain image", async () => { + // GIVEN + screen.config.resourceDirectory = "../../e2e/assets"; + + // WHEN + + // THEN + await expect(screen).toShow("an_image.png"); + }); +}); +``` + +Once again, it is also possible to negate an expectation: + +```js +const {jestMatchers, screen} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); + +describe("Basic test with custom Jest matchers", () => { + it("should verify that the screen shows a certain image", async () => { + // GIVEN + screen.config.resourceDirectory = "../../e2e/assets"; + + // WHEN + + // THEN + await expect(screen).not.toShow("different_image.png"); + }); +}); +``` diff --git a/examples/jest-test/index.spec.js b/examples/jest-test/index.spec.js new file mode 100644 index 00000000..0787d192 --- /dev/null +++ b/examples/jest-test/index.spec.js @@ -0,0 +1,37 @@ +"use strict"; + +const {jestMatchers, mouse, screen, Point, imageResource, Region, sleep} = require("@nut-tree/nut-js"); +require("@nut-tree/nl-matcher"); + +expect.extend(jestMatchers); + +describe("Basic test with custom Jest matchers", () => { + it("should verify that cursor is at a certain position", async () => { + // GIVEN + const targetPoint = new Point(10, 10); + const targetRegion = new Region(20, 20, 30, 30); + + // WHEN + await mouse.setPosition(targetPoint); + await sleep(500); + + // THEN + await expect(mouse).toBeAt(targetPoint); + await expect(mouse).not.toBeIn(targetRegion); + }); + + it.skip("should verify that the screen shows a certain image", async () => { + // Attention: + // This test has been deactivated intentionally. + // It is only here to show the usage of the Jest matchers in combination with image search. + // Feel free to run it by removing the .skip from the it function, but it might fail if there's no image + + // GIVEN + screen.config.resourceDirectory = "../assets"; + + // WHEN + + // THEN + await expect(screen).toShow(imageResource("mouse.png"), {confidence: 0.8}); + }); +}); diff --git a/examples/jest-test/package.json b/examples/jest-test/package.json new file mode 100644 index 00000000..ce8d63be --- /dev/null +++ b/examples/jest-test/package.json @@ -0,0 +1,20 @@ +{ + "name": "sample-jest", + "version": "4.0.0", + "private": true, + "description": "A simple nut.js test example which demos Jest integration", + "main": "index.js", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "scripts": { + "test": "jest --runInBand" + }, + "devDependencies": { + }, + "dependencies": { + "@nut-tree/nut-js": "workspace:*" + } +} diff --git a/examples/keyboard-test/README.md b/examples/keyboard-test/README.md new file mode 100644 index 00000000..564b01b4 --- /dev/null +++ b/examples/keyboard-test/README.md @@ -0,0 +1,62 @@ +# nut.js Keyboard Control + +nut.js allows to simulate keyboard input by typing text or pressing / releasing single keys or key combinations. + +- [Configuration](#configuration) + - [autoDelayMs](#autodelayms) +- [type](#type) +- [pressKey](#presskey) +- [releaseKey](#releasekey) + +## Configuration + +The nut.js [keyboard](https://nut-tree.github.io/apidoc/classes/keyboard.html) comes with a [config](https://nut-tree.github.io/apidoc/classes/keyboard.html#config) object which allows to configure it's behaviour. + +### `autoDelayMs` + +`keyboard.config.autoDelayMs` configures the delay between keypresses. + +## [`type`](https://nut-tree.github.io/apidoc/classes/keyboard.html#type) + +`type` allows one to type either [strings or Keys](https://nut-tree.github.io/apidoc/globals.html#stringorkey) + +```js +const {keyboard, Key} = require("@nut-tree/nut-js"); + +describe("Keyboard test", () => { + it("should open Spotlight on macOS", async () => { + await keyboard.type(Key.LeftSuper, Key.Space); + await keyboard.type("calculator"); + }); +}); +``` + +## [`pressKey`](https://nut-tree.github.io/apidoc/classes/keyboard.html#presskey) + +`pressKey` will press and hold multiple keys. + +```js +const {keyboard, Key} = require("@nut-tree/nut-js"); + +describe("Keyboard test", () => { + it("should press and release Alt+F4", async () => { + await keyboard.pressKey(Key.LeftAlt, Key.F4); + await keyboard.releaseKey(Key.LeftAlt, Key.F4); + }); +}); +``` + +## [`releaseKey`](https://nut-tree.github.io/apidoc/classes/keyboard.html#releasekey) + +`releaseKey` will release multiple keys again. + +```js +const {keyboard, Key} = require("@nut-tree/nut-js"); + +describe("Keyboard test", () => { + it("should press and release Alt+F4", async () => { + await keyboard.pressKey(Key.LeftAlt, Key.F4); + await keyboard.releaseKey(Key.LeftAlt, Key.F4); + }); +}); +``` diff --git a/examples/keyboard-test/index.spec.js b/examples/keyboard-test/index.spec.js new file mode 100644 index 00000000..307a8bd0 --- /dev/null +++ b/examples/keyboard-test/index.spec.js @@ -0,0 +1,12 @@ +"use strict"; + +const {keyboard, Key} = require("@nut-tree/nut-js"); + +describe("Keyboard test", () => { + it("should open Spotlight on macOS", async () => { + await keyboard.type(Key.LeftSuper, Key.Space); + await keyboard.type("calculator"); + await keyboard.pressKey(Key.Return); + await keyboard.releaseKey(Key.Return); + }); +}); diff --git a/examples/keyboard-test/package.json b/examples/keyboard-test/package.json new file mode 100644 index 00000000..edc6100c --- /dev/null +++ b/examples/keyboard-test/package.json @@ -0,0 +1,21 @@ +{ + "name": "sample-keyboard", + "version": "4.0.0", + "private": true, + "description": "A simple nut.js test example which tests keyboard control", + "main": "index.js", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "scripts": { + "test": "run-script-os", + "test:darwin": "jest --runInBand", + "test:default": "echo 'No keyboard tests for current platform'" + }, + "dependencies": { + "@nut-tree/nut-js": "workspace:*", + "run-script-os": "^1.1.6" + } +} diff --git a/examples/mouse-test/README.md b/examples/mouse-test/README.md new file mode 100644 index 00000000..3c6136a9 --- /dev/null +++ b/examples/mouse-test/README.md @@ -0,0 +1,170 @@ +# nut.js Mouse Control + +nut.js allows to simulate mouse input by moving the cursor, clicking mouse buttons or performing dragging gestures. + +- [Configuration](#configuration) + - [autoDelayMs](#autodelayms) + - [mouseSpeed](#mousespeed) +- [setPosition](#setposition) +- [getPosition](#getposition) +- [move](#move) + - [straightTo](#straightto) + - [centerOf](#centerof) + - [left](#left) + - [right](#right) + - [up](#up) + - [down](#down) +- [leftClick](#leftclick) +- [rightClick](#rightclick) +- [scrollDown](#scrolldown) +- [scrollUp](#scrollup) +- [scrollLeft](#scroll) +- [scrollRight](#scrollright) +- [drag](#drag) +- [pressButton](#pressbutton) +- [releaseButton](#releasebutton) + +## Configuration + +The nut.js [mouse](https://nut-tree.github.io/apidoc/classes/mouse.html) comes with a [config](https://nut-tree.github.io/apidoc/classes/mouse.html#config) object which allows to configure it's behaviour. + +### `autoDelayMs` + +`mouse.config.autoDelayMs` configures the delay between mouse clicks and / or scrolls. + +### `mouseSpeed` + +`mouse.config.mouseSpeed` configures mouse movement speed in pixels per second. + +## [`setPosition`](https://nut-tree.github.io/apidoc/classes/mouse.html#setposition) + +`setPosition` takes a [Point](https://nut-tree.github.io/apidoc/classes/point.html) and moves the mouse cursor to this position instantly. + +## [`getPosition`](https://nut-tree.github.io/apidoc/classes/mouse.html#getposition) + +`getPosition` returns a Promise which resolves to the current cursor [Point](https://nut-tree.github.io/apidoc/classes/point.html) + +## [`move`](https://nut-tree.github.io/apidoc/classes/mouse.html#move) + +`move` is the general purpose method for mouse movement in nut.js. +It receives a path given either as [Point[]](https://nut-tree.github.io/apidoc/classes/point.html) or [Promise](https://nut-tree.github.io/apidoc/classes/point.html) and a movement function of type `(amountOfSteps: number, speedInPixelsPerSecond: number): number[]`, returns a list of durations in nanoseconds. + +`mouse.move` will follow this path in timesteps provided by the movement function. +This way it's possible to fully customize mouse movment behaviour by implementing own functions for path calculation and / or movment timing. + +### [`straightTo`](https://nut-tree.github.io/apidoc/interfaces/movementapi.html#straightto) + +`straightTo` is a movement function which takes a target [Point](https://nut-tree.github.io/apidoc/classes/point.html) and calculates a path of [Point[]](https://nut-tree.github.io/apidoc/classes/point.html) leading from the current mouse position to the desired target. + +#### [`centerOf`](https://nut-tree.github.io/apidoc/globals.html#centerof) + +`centerOf` is a helper function which takes a [Region](https://nut-tree.github.io/apidoc/classes/region.html) and returns the center [Point](https://nut-tree.github.io/apidoc/classes/point.html) of that region. + +`centerOf` is a great fit for [`straightTo`](#straightto) as it allows us to move to the center of a [Region](https://nut-tree.github.io/apidoc/classes/region.html) returned by e.g. [`screen.find`](https://nut-tree.github.io/apidoc/classes/screen.html#find). + +```js +await mouse.move(straightTo(centerOf(screen.find(...)))); +``` + +#### [`randomPointIn`](https://nut-tree.github.io/apidoc/globals.html#randompointin) + +`randomPointIn` is another helper function which takes a [Region](https://nut-tree.github.io/apidoc/classes/region.html) and returns a random [Point](https://nut-tree.github.io/apidoc/classes/point.html) within that region. + +`randomPointIn` is a great fit for [`straightTo`](#straightto) as it allows us to move to the center of a [Region](https://nut-tree.github.io/apidoc/classes/region.html) returned by e.g. [`screen.find`](https://nut-tree.github.io/apidoc/classes/screen.html#find). + +```js +await mouse.move(straightTo(randomPointIn(screen.find(...)))); +``` + +### [`left`](https://nut-tree.github.io/apidoc/interfaces/movementapi.html#left) + +`left` is a relative movement function which returns a path moving `x` pixels to the left of your current mouse position. + +```js +await mouse.move(left(10)); +``` + +### [`right`](https://nut-tree.github.io/apidoc/interfaces/movementapi.html#right) + +`right` is a relative movement function which returns a path moving `x` pixels to the right of your current mouse position. + +```js +await mouse.move(right(10)); +``` + +### [`up`](https://nut-tree.github.io/apidoc/interfaces/movementapi.html#up) + +`up` is a relative movement function which returns a path moving `x` pixels up from your current mouse position. + +```js +await mouse.move(up(10)); +``` + +### [`down`](https://nut-tree.github.io/apidoc/interfaces/movementapi.html#down) + +`down` is a relative movement function which returns a path moving `x` pixels down from your current mouse position. + +```js +await mouse.move(down(10)); +``` + +### [`EasingFunction`](https://nut-tree.github.io/apidoc/interfaces/mouse_movement_function.EasingFunction.html) + +`EasingFunction`s are used to modify movement behaviour. +They receive a number expressing the percentage travelled along the path we specified via e.g. [straightTo](#straightto). + +When applying an easing function the total speed in pixels with which your cursor will be moving calulates as follows: + +```js +const speedInPixels = baseSpeed + easingFunction(idx / amountOfSteps) * baseSpeed +``` + +So you could customize movement speed to move slower on the first half of a path, to then speed up on the second half using this easing function: + + +```js +const firstSlowThenFast = (percentage) => { + return percentage <= 0.5 ? -0.75 : 0.75; +} + +await mouse.move(left(1000), firstSlowThenFast); +``` + +## [`leftClick`](https://nut-tree.github.io/apidoc/classes/mouse.html#leftclick) + +`leftClick` performs a click with the left mouse button at the current cursor position. + +## [`rightClick`](https://nut-tree.github.io/apidoc/classes/mouse.html#rightclick) + +`rightClick` performs a click with the right mouse button at the current cursor position. + +## [`scrollDown`](https://nut-tree.github.io/apidoc/classes/mouse.html#scrolldown) + +`scrollDown` scrolls `x` "ticks` downwards. Absolute scroll width depends on your system. + +## [`scrollUp`](https://nut-tree.github.io/apidoc/classes/mouse.html#scrollup) + +`scrollUp` scrolls `x` "ticks` upwards. Absolute scroll width depends on your system. + +## [`scrollLeft`](https://nut-tree.github.io/apidoc/classes/mouse.html#scrollleft) + +`scrollLeft` scrolls `x` "ticks` to the left. Absolute scroll width depends on your system. + +## [`scrollRight`](https://nut-tree.github.io/apidoc/classes/mouse.html#scrollright) + +`scrollRight` scrolls `x` "ticks` to the right. Absolute scroll width depends on your system. + +## [`drag`](https://nut-tree.github.io/apidoc/classes/mouse.html#drag) + +Similar to ['move'](#move), `drag` move the mouse cursor along a given path. + +While moving, it presses and holds the left mouse button, performing a drag gesture. + +## [`pressButton`](https://nut-tree.github.io/apidoc/classes/mouse.html#pressbutton) + +`pressButton` presses and holds a given [mouse button](https://nut-tree.github.io/apidoc/enums/button.html). + +## [`releaseButton`](https://nut-tree.github.io/apidoc/classes/mouse.html#releasebutton) + +`releaseButton` releases a given [mouse button](https://nut-tree.github.io/apidoc/enums/button.html). + diff --git a/examples/mouse-test/index.spec.js b/examples/mouse-test/index.spec.js new file mode 100644 index 00000000..7d88fa63 --- /dev/null +++ b/examples/mouse-test/index.spec.js @@ -0,0 +1,110 @@ +"use strict"; + +const {Button, jestMatchers, mouse, straightTo, centerOf, randomPointIn, Region, Point, right, down, left, up} = require("@nut-tree/nut-js"); + +expect.extend(jestMatchers); + +describe("Mouse test", () => { + describe("movment", () => { + it("should demonstrate relative movement", async () => { + jest.setTimeout(10000); + await mouse.move(right(500)); + await mouse.move(down(500)); + await mouse.move(left(500)); + await mouse.move(up(500)); + }); + + it("should demo straight movement to a Region's center point", async () => { + // GIVEN + const targetRegion = new Region(500, 500, 100, 100); + + // WHEN + await mouse.move(straightTo(centerOf(targetRegion))); + + // THEN + await expect(mouse).toBeIn(targetRegion); + }); + + it("should demo straight movement to a random Point within a Region", async () => { + // GIVEN + const targetRegion = new Region(500, 500, 100, 100); + + // WHEN + await mouse.move(straightTo(randomPointIn(targetRegion))); + + // THEN + await expect(mouse).toBeIn(targetRegion); + }); + }); + + describe("scroll", () => { + it("should demonstrate mouse scroll", async () => { + await mouse.scrollUp(10); + await mouse.scrollDown(10); + await mouse.scrollLeft(5); + await mouse.scrollRight(5); + }); + }); + + describe("drag", () => { + it("should perform mouse drag by using 'drag", async () => { + // GIVEN + const targetRegion = new Region(500, 500, 100, 100); + + // WHEN + await mouse.drag(straightTo(randomPointIn(targetRegion))); + + // THEN + await expect(mouse).toBeIn(targetRegion); + }); + + it("should perform mouse drag by pressing and holding the left mouse button", async () => { + // GIVEN + const targetRegion = new Region(500, 500, 100, 100); + + // WHEN + await mouse.pressButton(Button.LEFT); + await mouse.move(straightTo(randomPointIn(targetRegion))); + await mouse.releaseButton(Button.LEFT); + + // THEN + await expect(mouse).toBeIn(targetRegion); + }); + }); + + describe("EasingFunction", () => { + it("should use linear movment by default", async () => { + // GIVEN + const targetPoint = new Point(10, 10); + + // WHEN + await mouse.move(straightTo(targetPoint)); + + // THEN + await expect(mouse).toBeAt(targetPoint); + }); + + it("should apply custom easing function written by users", async () => { + // GIVEN + const targetPoint = new Point(10, 10); + + /** + * An easing function receives a number expressing the percentage our cursor travelled along the path we specified, e.g. via straightTo + * + * Using this percentage we can reduce or increase cursor speed. + * Return values are expected to be positive, finite numbers (otherwise they wont be applied) + * + * ATTENTION: Be careful with your output range, you could e.g. deadlock your cursor by making it move ultra slow + */ + const customEasingFunction = (x) => { + return (x <= 0.5) ? -0.75 : 0.75; + }; + + // WHEN + await mouse.move(straightTo(targetPoint), customEasingFunction); + + // THEN + await expect(mouse).toBeAt(targetPoint); + }); + }); +}); diff --git a/examples/mouse-test/package.json b/examples/mouse-test/package.json new file mode 100644 index 00000000..8b2ef061 --- /dev/null +++ b/examples/mouse-test/package.json @@ -0,0 +1,18 @@ +{ + "name": "sample-mouse", + "version": "4.0.0", + "private": true, + "description": "A simple nut.js test example which tests mouse control", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "main": "index.js", + "scripts": { + "test": "jest --runInBand" + }, + "dependencies": { + "@nut-tree/nut-js": "workspace:*" + } +} diff --git a/examples/screen-test/README.md b/examples/screen-test/README.md new file mode 100644 index 00000000..31e336f2 --- /dev/null +++ b/examples/screen-test/README.md @@ -0,0 +1,95 @@ +# nut.js Screen Control + +nut.js allows to search and wait for images on your screen to either verify certain conditons or use it for further processing. + +- [Configuration](#configuration) + - [confidence](#confidence) + - [autoHighlight](#autoHighlight) + - [highlightDurationMs](#highlightdurationms) + - [highlightOpacity](#highlightopacity) + - [resourceDirectory](#resourcedirectory) +- [capture](#capture) +- [find](#find) +- [height](#height) +- [highlight](#highlight) +- [on](#on) +- [waitFor](#waitfor) +- [width](#width) + +## Configuration + +The nut.js [screen](https://nut-tree.github.io/apidoc/classes/screen.html) comes with a [config](https://nut-tree.github.io/apidoc/classes/screen.html#config) object which allows to configure it's behaviour. + +### confidence + +`screen.config.confidence` specifies the required matching percentage required to mark a possible candidate for a given template image a match. + +### autoHighlight + +`screen.config.autoHighlight` is a boolean toggle which enables automated highlighting of image search results. +This will highlight the matching [Region]() by showing an opaque window. + +### highlightDurationMs + +`screen.config.highlightDurationMs` configures the duration in milliseconds a highlight window is shown. + +### highlightOpacity + +`screen.config.highlightOpacity` configures the opacity of highlight windows. Ranges from 0 (fully transparent) to 1 (fully opaque). + +### resourceDirectory + +`screen.config.resourceDirectory` configures the location to load assets from. +This allows configuring resource locations depending on e.g. the current operating system. + +One could provide multiple folders containing platform specific template images and chose the correct resource directory at runtime. +Following this scheme loading of platform specific images would be possible without changes to the source. + +## [`capture`](https://nut-tree.github.io/apidoc/classes/screen.html#capture) + +`capture` allows you to capture a screenshot and store it to your filesystem. + +## [`find`](https://nut-tree.github.io/apidoc/classes/screen.html#find) + +`find` takes a filename relative to the configured [resourceDirectory](#resourcedirectory) and tries to find a match on the main screen. +It is possible to override the the [configured matching confidence](#confidence) and search region providing [LocationParameters](https://nut-tree.github.io/apidoc/classes/locationparameters.html). +In case of a match, the corresponding [Region](https://nut-tree.github.io/apidoc/classes/region.html) on screen is returned. + +```js +await mouse.move(straightTo(centerOf(await screen.find(imageResource("image.png"))))); +``` + +## [`height`](https://nut-tree.github.io/apidoc/classes/screen.html#height) + +`height` returns the main screen's height in pixels. + +## [`highlight`](https://nut-tree.github.io/apidoc/classes/screen.html#highlight) + +When working with template images to e.g. move the mouse to certain positions it can be quite cumbersome to follow along without visual clues. + +`highlight` allows you to display an opaque window overlay which makes it easier to visually follow detection / movement. + +```js +await screen.highlight(await screen.find(imageResource("image.png"))); +``` + +## [`on`](https://nut-tree.github.io/apidoc/classes/screen.html#on) + +`on` allows you to register [callbacks](https://nut-tree.github.io/apidoc/globals.html#findhookcallback) which will be executed once [find](#findhttpsnut-treegithubionutjsclassesscreenhtmlfind) returns a match for a given template image. + +This way it's possible to repeatedly execute actions whenever a certain image is detected on screen. + +## [`waitFor`](https://nut-tree.github.io/apidoc/classes/screen.html#waitfor) + +Similar to [find](#findhttpsnut-treegithubionutjsclassesscreenhtmlfind), `waitFor` will search for a template image on a system's main screen. + +While [find](#findhttpsnut-treegithubionutjsclassesscreenhtmlfind) will fail immediately if no match is found, `waitFor` allows to configure a timeout in milliseconds during which the screen will repeatedly be scanned for the template image. +Once the configured timeout is reached with no match, `waitFor` will fail. + +```js +await mouse.move(straightTo(centerOf(await screen.waitFor(imageResource("image.png"), 3000)))); +``` + +## [`width`](https://nut-tree.github.io/apidoc/classes/screen.html#width) + +`width` returns the main screen's width in pixels. diff --git a/examples/screen-test/index.spec.js b/examples/screen-test/index.spec.js new file mode 100644 index 00000000..6974829f --- /dev/null +++ b/examples/screen-test/index.spec.js @@ -0,0 +1,62 @@ +"use strict"; + +const { screen, Region, imageResource } = require("@nut-tree/nut-js"); +require("@nut-tree/nl-matcher"); + +describe("Screen test", () => { + describe("dimensions", () => { + it("should log screen height", async () => { + console.log(await screen.height()); + }); + + it("should log screen width", async () => { + console.log(await screen.width()); + }); + }); + + describe("highlight", () => { + it("should highlight a given Region", async () => { + await screen.highlight(new Region(100, 100, 500, 500)); + }); + }); + + describe("find", () => { + it("should log region of match", async () => { + jest.setTimeout(10000); + screen.config.resourceDirectory = "../assets"; + + console.log(await screen.find(imageResource("mouse.png"), { confidence: 0.9 })); + }); + + it("should report region with highest match when no match with sufficient confidence is found", async () => { + jest.setTimeout(10000); + screen.config.resourceDirectory = "../assets"; + + try { + await screen.find(imageResource("calculator.png"), { confidence: 0.9 }); + } catch (e) { + console.log(e); + } + }); + }); + + describe("waitFor", () => { + it("should wait for a match", async () => { + jest.setTimeout(10000); + screen.config.resourceDirectory = "../assets"; + + await screen.waitFor(imageResource("mouse.png"), 2500, 500, { confidence: 0.9 }); + }); + }); + + describe("on hook", () => { + it("should trigger hook on match", async () => { + screen.config.resourceDirectory = "../assets"; + screen.config.confidence = 0.1; + + const needle = await imageResource("mouse.png"); + screen.on(needle, target => console.log(`Match found! ${JSON.stringify(target)}`)); + await screen.find(needle, { confidence: 0.9 }); + }); + }); +}); diff --git a/examples/screen-test/package.json b/examples/screen-test/package.json new file mode 100644 index 00000000..dea4ce7c --- /dev/null +++ b/examples/screen-test/package.json @@ -0,0 +1,19 @@ +{ + "name": "sample-screen", + "version": "4.0.0", + "private": true, + "description": "A simple nut.js test example which tests screen control", + "main": "index.js", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "scripts": { + "test": "jest --runInBand" + }, + "dependencies": { + "@nut-tree/nut-js": "workspace:*", + "@nut-tree/nl-matcher": "2.2.0" + } +} diff --git a/examples/typescript-test/README.md b/examples/typescript-test/README.md new file mode 100644 index 00000000..187fcc98 --- /dev/null +++ b/examples/typescript-test/README.md @@ -0,0 +1,37 @@ +# nut.js TypeScript sample + +nut.js is written in TypeScript and thus fully supports TypeScript + +- [Setup](#setup) + +## Setup + +Install TypeScript in your project. + +```shell script +npm i typescript ts-node +``` + +Afterwards, initialize a new TypeScript project: + +```shell script +npx tsc --init +``` + +## Write your test + +Let's create a simple demo test: + +```ts +import { Region, screen } from "@nut-tree/nut-js"; + +(async () => { + await screen.highlight(new Region(100, 200, 300, 400)); +})(); +``` + +## Run + +```shell script +npx ts-node index.ts +``` \ No newline at end of file diff --git a/examples/typescript-test/index.ts b/examples/typescript-test/index.ts new file mode 100644 index 00000000..9a3d4e33 --- /dev/null +++ b/examples/typescript-test/index.ts @@ -0,0 +1,5 @@ +import { Region, screen } from "@nut-tree/nut-js"; + +(async () => { + await screen.highlight(new Region(100, 200, 300, 400)); +})(); diff --git a/examples/typescript-test/package.json b/examples/typescript-test/package.json new file mode 100644 index 00000000..748e2d3b --- /dev/null +++ b/examples/typescript-test/package.json @@ -0,0 +1,18 @@ +{ + "name": "sample-typescript", + "version": "4.0.0", + "private": true, + "description": "A simple nut.js test example which demos usage with TypeScript", + "main": "index.ts", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "scripts": { + "test": "ts-node index.ts" + }, + "dependencies": { + "@nut-tree/nut-js": "workspace:*" + } +} diff --git a/examples/typescript-test/tsconfig.json b/examples/typescript-test/tsconfig.json new file mode 100644 index 00000000..83b5f573 --- /dev/null +++ b/examples/typescript-test/tsconfig.json @@ -0,0 +1,100 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "resolveJsonModule": true, /* Enable importing .json files */ + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ + // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/e2e/window-test/constants.js b/examples/window-test/constants.js similarity index 100% rename from e2e/window-test/constants.js rename to examples/window-test/constants.js diff --git a/e2e/electron-test/index.css b/examples/window-test/index.css similarity index 100% rename from e2e/electron-test/index.css rename to examples/window-test/index.css diff --git a/e2e/window-test/index.html b/examples/window-test/index.html similarity index 100% rename from e2e/window-test/index.html rename to examples/window-test/index.html diff --git a/e2e/window-test/main.js b/examples/window-test/main.js similarity index 100% rename from e2e/window-test/main.js rename to examples/window-test/main.js diff --git a/e2e/window-test/package.json b/examples/window-test/package.json similarity index 52% rename from e2e/window-test/package.json rename to examples/window-test/package.json index 6d3e9c07..6e78434c 100644 --- a/e2e/window-test/package.json +++ b/examples/window-test/package.json @@ -1,6 +1,7 @@ { - "name": "window-integration-tests", - "version": "3.1.2", + "name": "sample-window", + "version": "4.0.0", + "private": true, "description": "Integration tests to verify window handling", "main": "main.js", "author": { @@ -9,15 +10,15 @@ "url": "https://dry.software" }, "scripts": { - "pretest": "npx playwright install --with-deps", + "pretest": "pnpx playwright install --with-deps", "test": "jest" }, - "license": "MIT", "devDependencies": { - "@nut-tree/nut-js": "file:../../", - "@playwright/test": "1.39.0", - "electron": "27.0.0", + "@nut-tree/nut-js": "workspace:*", + "@playwright/test": "1.41.2", + "electron": "28.2.3", "jest": "29.7.0", - "jest-playwright-preset": "3.0.1" + "jest-playwright-preset": "4.0.0", + "playwright": "1.41.2" } } diff --git a/e2e/electron-test/preload.js b/examples/window-test/preload.js similarity index 100% rename from e2e/electron-test/preload.js rename to examples/window-test/preload.js diff --git a/e2e/electron-test/renderer.js b/examples/window-test/renderer.js similarity index 100% rename from e2e/electron-test/renderer.js rename to examples/window-test/renderer.js diff --git a/e2e/window-test/test.js b/examples/window-test/test.spec.js similarity index 73% rename from e2e/window-test/test.js rename to examples/window-test/test.spec.js index 2df068ab..1a7e16a8 100644 --- a/e2e/window-test/test.js +++ b/examples/window-test/test.spec.js @@ -67,16 +67,13 @@ describe("getActiveWindow", () => { // WHEN const foregroundWindow = await getActiveWindow(); - // await foregroundWindow.move({ x: xPosition, y: yPosition }); - // await sleep(1000); - // const activeWindowRegion = await foregroundWindow.region; + await foregroundWindow.move({ x: xPosition, y: yPosition }); + await sleep(1000); + const activeWindowRegion = await foregroundWindow.region; // THEN - // expect(activeWindowRegion.left).toBe(xPosition); - // expect(activeWindowRegion.top).toBe(yPosition); - await expect( - foregroundWindow.move({ x: xPosition, y: yPosition }), - ).rejects.toThrow("Method not provided via libnut"); + expect(activeWindowRegion.left).toBe(xPosition); + expect(activeWindowRegion.top).toBe(yPosition); }); it("should determine correct window size for our application after resizing the window", async () => { @@ -86,16 +83,13 @@ describe("getActiveWindow", () => { // WHEN const foregroundWindow = await getActiveWindow(); - // await foregroundWindow.resize({ width: newWidth, height: newHeight }); - // await sleep(1000); - // const activeWindowRegion = await foregroundWindow.region; + await foregroundWindow.resize({ width: newWidth, height: newHeight }); + await sleep(1000); + const activeWindowRegion = await foregroundWindow.region; // THEN - // expect(activeWindowRegion.width).toBe(newWidth); - // expect(activeWindowRegion.height).toBe(newHeight); - await expect( - foregroundWindow.resize({ width: newWidth, height: newHeight }), - ).rejects.toThrow("Method not provided via libnut"); + expect(activeWindowRegion.width).toBe(newWidth); + expect(activeWindowRegion.height).toBe(newHeight); }); }); diff --git a/lib/constants.ts b/lib/constants.ts deleted file mode 100644 index 5090b3cb..00000000 --- a/lib/constants.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const DISABLE_DEFAULT_PROVIDERS_ENV_VAR = - "NUT_JS_DISABLE_DEFAULT_PROVIDERS"; -export const DISABLE_DEFAULT_CLIPBOARD_PROVIDER_ENV_VAR = - "NUT_JS_DISABLE_DEFAULT_CLIPBOARD_PROVIDER"; -export const DISABLE_DEFAULT_KEYBOARD_PROVIDER_ENV_VAR = - "NUT_JS_DISABLE_DEFAULT_KEYBOARD_PROVIDER"; -export const DISABLE_DEFAULT_MOUSE_PROVIDER_ENV_VAR = - "NUT_JS_DISABLE_DEFAULT_MOUSE_PROVIDER"; -export const DISABLE_DEFAULT_SCREEN_PROVIDER_ENV_VAR = - "NUT_JS_DISABLE_DEFAULT_SCREEN_PROVIDER"; -export const DISABLE_DEFAULT_WINDOW_PROVIDER_ENV_VAR = - "NUT_JS_DISABLE_DEFAULT_WINDOW_PROVIDER"; diff --git a/lib/match-request.class.spec.ts b/lib/match-request.class.spec.ts deleted file mode 100644 index c5a9b13d..00000000 --- a/lib/match-request.class.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { Image } from "./image.class"; -import { - createMatchRequest, - isImageMatchRequest, - isTextMatchRequest, -} from "./match-request.class"; -import { mockPartial } from "sneer"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { LogProviderInterface } from "./provider"; -import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; -import { Region } from "./region.class"; -import { TextQuery } from "./query.class"; - -beforeEach(() => { - jest.clearAllMocks(); -}); - -const providerRegistryMock = mockPartial({ - getLogProvider(): LogProviderInterface { - return new NoopLogProvider(); - }, -}); - -const screenImage = new Image(0, 0, Buffer.of(0), 3, "dummy", 0, 0); -const dummyRegion = new Region(0, 0, 0, 0); - -describe("MatchRequest", () => { - it("should create an image match request for images", () => { - // GIVEN - const needle = new Image(0, 0, Buffer.of(0), 3, "dummy", 0, 0); - - // WHEN - const matchRequest = createMatchRequest( - providerRegistryMock, - needle, - dummyRegion, - 0, - screenImage - ); - - // THEN - expect(isImageMatchRequest(matchRequest)).toBeTruthy(); - }); - - it.each([ - { - id: "dummy", - type: "text", - by: { - word: "dummy-query", - }, - }, - { - id: "dummy", - type: "text", - by: { - line: "dummy-query", - }, - }, - ])( - "should create a text match request for text queries", - (needle: TextQuery) => { - // GIVEN - - // WHEN - const matchRequest = createMatchRequest( - providerRegistryMock, - needle, - dummyRegion, - 0, - screenImage - ); - - // THEN - expect(isTextMatchRequest(matchRequest)).toBeTruthy(); - } - ); -}); diff --git a/lib/match-request.class.ts b/lib/match-request.class.ts deleted file mode 100644 index 94e36adf..00000000 --- a/lib/match-request.class.ts +++ /dev/null @@ -1,124 +0,0 @@ -import { Image, isImage } from "./image.class"; -import { Region } from "./region.class"; -import { OptionalSearchParameters } from "./optionalsearchparameters.class"; -import { - ColorQuery, - isColorQuery, - isLineQuery, - isTextQuery, - TextQuery, -} from "./query.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { PointResultFindInput, RegionResultFindInput } from "./screen.class"; - -export class MatchRequest { - public constructor( - public readonly haystack: Image, - public readonly needle: NEEDLE_TYPE, - public readonly confidence: number | undefined, - public readonly providerData?: PROVIDER_DATA_TYPE, - ) {} -} - -export function isImageMatchRequest( - matchRequest: any, -): matchRequest is MatchRequest { - return isImage(matchRequest.needle); -} - -export function isTextMatchRequest( - matchRequest: any, -): matchRequest is MatchRequest { - return isTextQuery(matchRequest.needle); -} - -export function isColorMatchRequest( - matchRequest: any, -): matchRequest is MatchRequest { - return isColorQuery(matchRequest.needle); -} - -export function createMatchRequest( - providerRegistry: ProviderRegistry, - needle: PointResultFindInput, - searchRegion: Region, - minMatch: number | undefined, - screenImage: Image, - params?: OptionalSearchParameters, -): MatchRequest; -export function createMatchRequest( - providerRegistry: ProviderRegistry, - needle: RegionResultFindInput, - searchRegion: Region, - minMatch: number | undefined, - screenImage: Image, - params?: OptionalSearchParameters, -): MatchRequest; -export function createMatchRequest( - providerRegistry: ProviderRegistry, - needle: RegionResultFindInput | PointResultFindInput, - searchRegion: Region, - minMatch: number | undefined, - screenImage: Image, - params?: OptionalSearchParameters, -): - | MatchRequest - | MatchRequest; -export function createMatchRequest( - providerRegistry: ProviderRegistry, - needle: RegionResultFindInput | PointResultFindInput, - searchRegion: Region, - minMatch: number | undefined, - screenImage: Image, - params?: OptionalSearchParameters, -): - | MatchRequest - | MatchRequest { - if (isImage(needle)) { - providerRegistry - .getLogProvider() - .info( - `Searching for image ${ - needle.id - } in region ${searchRegion.toString()}.${ - minMatch != null ? ` Required confidence: ${minMatch}` : "" - }`, - ); - - return new MatchRequest( - screenImage, - needle, - minMatch, - params?.providerData, - ); - } else if (isTextQuery(needle)) { - providerRegistry.getLogProvider().info( - `Searching for ${isLineQuery(needle) ? "line" : "word"} { - ${isLineQuery(needle) ? needle.by.line : needle.by.word} - } in region ${searchRegion.toString()}.${ - minMatch != null - ? ` Required confidence: ${minMatch}` - : "" - }`, - ); - - return new MatchRequest( - screenImage, - needle, - minMatch, - params?.providerData, - ); - } else if (isColorQuery(needle)) { - const color = needle.by.color; - providerRegistry - .getLogProvider() - .info( - `Searching for color RGBA(${color.R},${color.G},${color.B},${ - color.A - }) in region ${searchRegion.toString()}.`, - ); - - return new MatchRequest(screenImage, needle, 1, params?.providerData); - } - throw new Error(`Unknown input type: ${JSON.stringify(needle)}`); -} diff --git a/lib/match-result.class.spec.ts b/lib/match-result.class.spec.ts deleted file mode 100644 index 07328eb1..00000000 --- a/lib/match-result.class.spec.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { createMatchRequest } from "./match-request.class"; -import { Image } from "./image.class"; -import { Region } from "./region.class"; -import { mockPartial } from "sneer"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { ImageFinderInterface, LogProviderInterface } from "./provider"; -import { NoopLogProvider } from "./provider/log/noop-log-provider.class"; -import { TextFinderInterface } from "./provider/text-finder.interface"; -import { getMatchResult, getMatchResults } from "./match-result.class"; -import { TextQuery } from "./query.class"; - -const dummyImage = new Image(0, 0, Buffer.of(0), 3, "dummy-needle", 0, 0); -const screenImage = new Image( - 0, - 0, - Buffer.of(0), - 3, - "dummy-screen-image", - 0, - 0 -); -const dummyRegion = new Region(0, 0, 0, 0); - -beforeEach(() => { - jest.clearAllMocks(); -}); - -const imageFinderMock: ImageFinderInterface = { - findMatch: jest.fn(), - findMatches: jest.fn(), -}; -const textFinderMock: TextFinderInterface = { - findMatch: jest.fn(), - findMatches: jest.fn(), -}; - -const providerRegistryMock = mockPartial({ - getLogProvider(): LogProviderInterface { - return new NoopLogProvider(); - }, - getImageFinder(): ImageFinderInterface { - return imageFinderMock as unknown as ImageFinderInterface; - }, - getTextFinder(): TextFinderInterface { - return textFinderMock as unknown as TextFinderInterface; - }, -}); - -describe("matchResults", () => { - describe("getMatchResult", () => { - it("should call the correct finder implementation for a given image match request", async () => { - // GIVEN - const imageMatchRequest = createMatchRequest( - providerRegistryMock, - dummyImage, - dummyRegion, - 0, - screenImage - ); - - // WHEN - await getMatchResult(providerRegistryMock, imageMatchRequest); - - // THEN - expect(imageFinderMock.findMatch).toBeCalledTimes(1); - }); - - it.each([ - { - id: "dummy", - type: "text", - by: { - word: "dummy-query", - }, - }, - { - id: "dummy", - type: "text", - by: { - line: "dummy-query", - }, - }, - ])( - "should all the correct finder implementation for a given text query", - async (needle: TextQuery) => { - // GIVEN - const matchRequest = createMatchRequest( - providerRegistryMock, - needle, - dummyRegion, - 0, - screenImage - ); - - // WHEN - await getMatchResult(providerRegistryMock, matchRequest); - - // THEN - expect(textFinderMock.findMatch).toBeCalledTimes(1); - } - ); - }); - - describe("getMatchResults", () => { - it("should call the correct finder implementation for a given image match request", async () => { - // GIVEN - const imageMatchRequest = createMatchRequest( - providerRegistryMock, - dummyImage, - dummyRegion, - 0, - screenImage - ); - - // WHEN - await getMatchResults(providerRegistryMock, imageMatchRequest); - - // THEN - expect(imageFinderMock.findMatches).toBeCalledTimes(1); - }); - - it.each([ - { - id: "dummy", - type: "text", - by: { - word: "dummy-query", - }, - }, - { - id: "dummy", - type: "text", - by: { - line: "dummy-query", - }, - }, - ])( - "should all the correct finder implementation for a given text query", - async (needle: TextQuery) => { - // GIVEN - const matchRequest = createMatchRequest( - providerRegistryMock, - needle, - dummyRegion, - 0, - screenImage - ); - - // WHEN - await getMatchResults(providerRegistryMock, matchRequest); - - // THEN - expect(textFinderMock.findMatches).toBeCalledTimes(1); - } - ); - }); -}); diff --git a/lib/match-result.class.ts b/lib/match-result.class.ts deleted file mode 100644 index b994c5d2..00000000 --- a/lib/match-result.class.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Region } from "./region.class"; -import { - isColorMatchRequest, - isImageMatchRequest, - isTextMatchRequest, - MatchRequest, -} from "./match-request.class"; -import { ProviderRegistry } from "./provider/provider-registry.class"; -import { Point } from "./point.class"; -import { PointResultFindInput, RegionResultFindInput } from "./screen.class"; - -export class MatchResult { - constructor( - public readonly confidence: number, - public readonly location: LOCATION_TYPE, - public readonly error?: Error - ) {} -} - -export async function getMatchResults( - providerRegistry: ProviderRegistry, - matchRequest: MatchRequest -): Promise[]>; -export async function getMatchResults( - providerRegistry: ProviderRegistry, - matchRequest: MatchRequest -): Promise[]>; -export async function getMatchResults( - providerRegistry: ProviderRegistry, - matchRequest: - | MatchRequest - | MatchRequest -): Promise[]> { - if (isImageMatchRequest(matchRequest)) { - return providerRegistry.getImageFinder().findMatches(matchRequest); - } else if (isTextMatchRequest(matchRequest)) { - return providerRegistry.getTextFinder().findMatches(matchRequest); - } else if (isColorMatchRequest(matchRequest)) { - return providerRegistry.getColorFinder().findMatches(matchRequest); - } - throw new Error( - `Unknown match request type: ${JSON.stringify(matchRequest.needle)}` - ); -} - -export async function getMatchResult( - providerRegistry: ProviderRegistry, - matchRequest: MatchRequest -): Promise>; -export async function getMatchResult( - providerRegistry: ProviderRegistry, - matchRequest: MatchRequest -): Promise>; -export async function getMatchResult( - providerRegistry: ProviderRegistry, - matchRequest: - | MatchRequest - | MatchRequest -): Promise> { - if (isImageMatchRequest(matchRequest)) { - return providerRegistry.getImageFinder().findMatch(matchRequest); - } else if (isTextMatchRequest(matchRequest)) { - return providerRegistry.getTextFinder().findMatch(matchRequest); - } else if (isColorMatchRequest(matchRequest)) { - return providerRegistry.getColorFinder().findMatch(matchRequest); - } - throw new Error("Unknown match request type"); -} diff --git a/lib/provider/index.ts b/lib/provider/index.ts deleted file mode 100644 index 6f55b38d..00000000 --- a/lib/provider/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -export { ClipboardProviderInterface } from "./clipboard-provider.interface"; -export { DataSinkInterface } from "./data-sink.interface"; -export { DataSourceInterface } from "./data-source.interface"; -export { ImageFinderInterface } from "./image-finder.interface"; -export { ImageReader } from "./image-reader.type"; -export { ImageWriter, ImageWriterParameters } from "./image-writer.type"; -export { KeyboardProviderInterface } from "./keyboard-provider.interface"; -export { MouseProviderInterface } from "./mouse-provider.interface"; -export { ScreenProviderInterface } from "./screen-provider.interface"; -export { WindowProviderInterface } from "./window-provider.interface"; -export { LogProviderInterface } from "./log-provider.interface"; -export { TextFinderInterface } from "./text-finder.interface"; -export { WindowFinderInterface } from "./window-finder.interface"; diff --git a/lib/provider/log/noop-log-provider.class.ts b/lib/provider/log/noop-log-provider.class.ts deleted file mode 100644 index 905a5760..00000000 --- a/lib/provider/log/noop-log-provider.class.ts +++ /dev/null @@ -1,18 +0,0 @@ -import {LogProviderInterface} from "../log-provider.interface"; - -export class NoopLogProvider implements LogProviderInterface { - public trace(_: string, __?: {}) { - } - - public debug(_: string, __?: {}) { - } - - public info(_: string, __?: {}) { - } - - public warn(_: string, __?: {}) { - } - - public error(_: Error, __?: {}) { - } -} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index a2514f9b..00000000 --- a/package-lock.json +++ /dev/null @@ -1,16470 +0,0 @@ -{ - "name": "@nut-tree/nut-js", - "version": "3.1.2", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@nut-tree/nut-js", - "version": "3.1.2", - "cpu": [ - "x64", - "arm64" - ], - "license": "Apache-2.0", - "os": [ - "linux", - "darwin", - "win32" - ], - "dependencies": { - "@nut-tree/default-clipboard-provider": "1.0.0", - "@nut-tree/libnut": "^2.6.1-next.20240211200808", - "jimp": "0.22.10", - "node-abort-controller": "2.0.0" - }, - "devDependencies": { - "@types/jest": "27.0.1", - "@types/node": "18.18.4", - "husky": "8.0.3", - "istanbul-merge": "2.0.0", - "jest": "27.1.0", - "lint-staged": "13.0.4", - "nyc": "15.1.0", - "prettier": "3.0.3", - "rimraf": "5.0.5", - "sneer": "1.0.1", - "ts-jest": "27.0.5", - "ts-node": "10.9.1", - "typedoc": "0.23.14", - "typescript": "4.8.3", - "version-bump-prompt": "6.1.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "peer": true - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/core/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jimp/bmp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", - "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", - "dependencies": { - "@jimp/utils": "^0.22.10", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/core": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", - "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", - "dependencies": { - "@jimp/utils": "^0.22.10", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" - } - }, - "node_modules/@jimp/custom": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", - "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", - "dependencies": { - "@jimp/core": "^0.22.10" - } - }, - "node_modules/@jimp/gif": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", - "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", - "dependencies": { - "@jimp/utils": "^0.22.10", - "gifwrap": "^0.10.1", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/jpeg": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", - "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", - "dependencies": { - "@jimp/utils": "^0.22.10", - "jpeg-js": "^0.4.4" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blit": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", - "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blur": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", - "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-circle": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", - "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-color": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", - "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", - "dependencies": { - "@jimp/utils": "^0.22.10", - "tinycolor2": "^1.6.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-contain": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", - "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-cover": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", - "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-crop": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", - "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-displace": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", - "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-dither": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", - "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-fisheye": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", - "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-flip": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", - "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", - "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-invert": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", - "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-mask": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", - "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", - "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-print": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", - "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", - "dependencies": { - "@jimp/utils": "^0.22.10", - "load-bmfont": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-resize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", - "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", - "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-scale": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", - "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", - "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-threshold": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", - "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", - "dependencies": { - "@jimp/utils": "^0.22.10" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", - "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", - "dependencies": { - "@jimp/plugin-blit": "^0.22.10", - "@jimp/plugin-blur": "^0.22.10", - "@jimp/plugin-circle": "^0.22.10", - "@jimp/plugin-color": "^0.22.10", - "@jimp/plugin-contain": "^0.22.10", - "@jimp/plugin-cover": "^0.22.10", - "@jimp/plugin-crop": "^0.22.10", - "@jimp/plugin-displace": "^0.22.10", - "@jimp/plugin-dither": "^0.22.10", - "@jimp/plugin-fisheye": "^0.22.10", - "@jimp/plugin-flip": "^0.22.10", - "@jimp/plugin-gaussian": "^0.22.10", - "@jimp/plugin-invert": "^0.22.10", - "@jimp/plugin-mask": "^0.22.10", - "@jimp/plugin-normalize": "^0.22.10", - "@jimp/plugin-print": "^0.22.10", - "@jimp/plugin-resize": "^0.22.10", - "@jimp/plugin-rotate": "^0.22.10", - "@jimp/plugin-scale": "^0.22.10", - "@jimp/plugin-shadow": "^0.22.10", - "@jimp/plugin-threshold": "^0.22.10", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/png": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", - "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", - "dependencies": { - "@jimp/utils": "^0.22.10", - "pngjs": "^6.0.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/tiff": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", - "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", - "dependencies": { - "utif2": "^4.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/types": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", - "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", - "dependencies": { - "@jimp/bmp": "^0.22.10", - "@jimp/gif": "^0.22.10", - "@jimp/jpeg": "^0.22.10", - "@jimp/png": "^0.22.10", - "@jimp/tiff": "^0.22.10", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/utils": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", - "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", - "dependencies": { - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@jsdevtools/ez-spawn": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz", - "integrity": "sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==", - "dev": true, - "dependencies": { - "call-me-maybe": "^1.0.1", - "cross-spawn": "^7.0.3", - "string-argv": "^0.3.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@jsdevtools/ez-spawn/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@jsdevtools/ez-spawn/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jsdevtools/ez-spawn/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jsdevtools/ez-spawn/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jsdevtools/ez-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nut-tree/default-clipboard-provider": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nut-tree/default-clipboard-provider/-/default-clipboard-provider-1.0.0.tgz", - "integrity": "sha512-CUltQpkxmkfrYsTSGaWiIRpisO6/YeuLkaRpcvm7RNbWvhR/AqNNaJgyaXpDbBaZt0tfY6poGzyyJ3zqjSAZOQ==", - "dependencies": { - "clipboardy": "2.3.0" - }, - "peerDependencies": { - "@nut-tree/nut-js": "^3" - } - }, - "node_modules/@nut-tree/libnut": { - "version": "2.6.1-next.20240211200808", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.6.1-next.20240211200808.tgz", - "integrity": "sha512-gyxKsNuHEX1n80cVmZ9QI/Mirdd/QHLRqV+wTV40PeqiVX8QjLpnpWP2z6FbLv+KOcEMPpa68LXIvzHdaGa4VA==", - "dependencies": { - "@nut-tree/libnut-darwin": "^2.6.1-next.20240129224437", - "@nut-tree/libnut-linux": "^2.6.1-next.20240129224423", - "@nut-tree/libnut-win32": "^2.6.1-next.20240129104452" - }, - "engines": { - "node": ">=10.15.3" - } - }, - "node_modules/@nut-tree/libnut-darwin": { - "version": "2.6.1-next.20240129224437", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.6.1-next.20240129224437.tgz", - "integrity": "sha512-CnzMTndZW47VeYmQHflQai6Qkjul+n5Yvu6GRm+QL0K+Kv8L7CiuXm4wcxURB48x2Trinst5WfpaAtEHn26GMQ==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/libnut-linux": { - "version": "2.6.1-next.20240129224423", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.6.1-next.20240129224423.tgz", - "integrity": "sha512-XltjW0lG3fpr6ogqqAZiOpWCO16kYTawAlfQFs8ep+RbX6bMiF6SMjIcwwOc/+lqT8kBChNbX2PicoUmw4XITA==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/libnut-win32": { - "version": "2.6.1-next.20240129104452", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.6.1-next.20240129104452.tgz", - "integrity": "sha512-6YrlzOjDlp7EyuffpCnwd2iGFyF9EAfCercBH+zSA1JGUDMD+1QmuhA8E1Kas8kg7ICa04vnTTZAdOlfH5gV+w==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/node-mac-permissions": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@nut-tree/node-mac-permissions/-/node-mac-permissions-2.2.1.tgz", - "integrity": "sha512-yoijwCqt2yS9UFTv7THGUwZgy2D2TorN703QpYNOergbTJ6vEmeG379pIZDfBuvf56n24RMzKJVoSqr9WIq/Yw==", - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "1.5.0", - "node-addon-api": "5.0.0" - } - }, - "node_modules/@nut-tree/nut-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-3.1.2.tgz", - "integrity": "sha512-hi7DBZz9O/t4goeQu3hKeauQbb0PcBmurScl3/t5L3I1pub3ibV24sft8KNSS3INKnGCj7I3Ma5iNHQ24g+95g==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "linux", - "darwin", - "win32" - ], - "peer": true, - "dependencies": { - "@nut-tree/libnut": "2.5.2", - "clipboardy": "2.3.0", - "jimp": "0.16.13", - "node-abort-controller": "2.0.0" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.5.2.tgz", - "integrity": "sha512-IwlGgalGQjjCrbPq52HTLtsR6MRsGJ6c4GhgHmgwJPD/yBVCzsU5EA2rwDgjKSgK+jiLOpykySDZQ+owhyd1zw==", - "peer": true, - "dependencies": { - "@nut-tree/libnut-darwin": "2.5.2", - "@nut-tree/libnut-linux": "2.5.2", - "@nut-tree/libnut-win32": "2.5.2" - }, - "engines": { - "node": ">=10.15.3" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-darwin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.5.2.tgz", - "integrity": "sha512-OKqCgpBbZj2oNQkLM+mM7TyiLBAQsRyN7Q5UXVKbyXnzcQTU1FZBJ1mLGvdfzzspajznL3Mkl08AQE+xYYbTMw==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-linux": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.5.2.tgz", - "integrity": "sha512-uY6XDuNE8soYRUhV23g6KQN5BRR43MYNLyPnrrQa5Wtfgm6oW9kBRu6JtkWz6Fn6trAWrVAKnbPoTiEgHuGz9w==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/@nut-tree/libnut-win32": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.5.2.tgz", - "integrity": "sha512-cnNAQ0pzUMH7hrSjTWRiFfXid3sbSZ78jpv1rA154dlka3wqo6m1OtaX4PLVQK4irZl5REz74iPdHcjeTy9rtg==", - "cpu": [ - "x64", - "arm64" - ], - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "peer": true, - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@nut-tree/nut-js/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "node_modules/@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", - "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.1.tgz", - "integrity": "sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==", - "dev": true, - "dependencies": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "node_modules/@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ansi-styles/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "dependencies": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "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" - } - }, - "node_modules/babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "dependencies": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "node_modules/ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colorette": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", - "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-line-args": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.0.tgz", - "integrity": "sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==", - "dev": true, - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/data-urls/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-urls/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/data-urls/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.3.830", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz", - "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==", - "dev": true - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "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.6", - "get-intrinsic": "^1.2.1", - "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.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/foreground-child/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/foreground-child/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/foreground-child/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^1.0.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dependencies": { - "@types/node": "16.9.1" - } - }, - "node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "dependencies": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-merge": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/istanbul-merge/-/istanbul-merge-2.0.0.tgz", - "integrity": "sha512-Y812/uTdnF5Qc2qWxA7jQOTkqpFLEr7BHy8mzUQFRJstTjPigNS1Bh3q06AbOhBZ7tZqrI4MZdMgG34KVnUn6w==", - "dev": true, - "dependencies": { - "array.prototype.flatmap": "^1.3.1", - "for-each": "^0.3.3", - "glob": "^7.2.3", - "istanbul-lib-coverage": "^3.2.0", - "mkdirp": "^0.5.6", - "yargs": "^15.4.1" - }, - "bin": { - "istanbul-merge": "bin/istanbul-merge" - }, - "engines": { - "node": ">= 8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/istanbul-merge/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", - "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", - "dev": true, - "dependencies": { - "@jest/core": "^27.1.0", - "import-local": "^3.0.2", - "jest-cli": "^27.1.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-cli/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "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" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-cli/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-runtime/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-runtime/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-runtime/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runtime/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "dependencies": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/jimp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", - "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", - "dependencies": { - "@jimp/custom": "^0.22.10", - "@jimp/plugins": "^0.22.10", - "@jimp/types": "^0.22.10", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "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.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdom/node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/jsdom/node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/lint-staged": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.4.tgz", - "integrity": "sha512-HxlHCXoYRsq9QCby5wFozmZW00hMs/9e3l+/dz6Qr8Kle4UH0kJTdABAbqhzG+3pcG6QjL9kz7NgGBfph+a5dw==", - "dev": true, - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/lint-staged/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/lint-staged/node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lint-staged/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lint-staged/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", - "dev": true, - "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } - } - }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/listr2/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lru-cache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/marked": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", - "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node_modules/node-abort-controller": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", - "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" - }, - "node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", - "optional": true - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true - }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "engines": { - "node": ">=4" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pixelmatch/node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "dependencies": { - "fromentries": "^1.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "dependencies": { - "es6-error": "^4.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/rimraf/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/rimraf/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shiki": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz", - "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "^6.0.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sneer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sneer/-/sneer-1.0.1.tgz", - "integrity": "sha512-rzS5DLX+mRbYzN+pwqcOQnz4WIDI+esS2o1yIMFHCWLTRZ348oPPOjJpm/caJiaMMP1SAUgLO4FRVrF2sc8FCA==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", - "dev": true, - "dependencies": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@types/jest": "^27.0.0", - "babel-jest": ">=27.0.0 <28", - "jest": "^27.0.0", - "typescript": ">=3.8 <5.0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "babel-jest": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typedoc": { - "version": "0.23.14", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.14.tgz", - "integrity": "sha512-s2I+ZKBET38EctZvbXp2GooHrNaKjWZkrwGEK/sttnOGiKJqU0vHrsdcwLgKZGuo2aedNL3RRPj1LnAAeYscig==", - "dev": true, - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.0.19", - "minimatch": "^5.1.0", - "shiki": "^0.11.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x" - } - }, - "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "peer": true, - "dependencies": { - "pako": "^1.0.5" - } - }, - "node_modules/utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", - "dependencies": { - "pako": "^1.0.11" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg==", - "dev": true, - "dependencies": { - "@jsdevtools/version-bump-prompt": "6.1.0" - }, - "bin": { - "bump": "bump.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/version-bump-prompt/node_modules/@jsdevtools/version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@jsdevtools/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-NJFLJRiD3LLFBgSxAb6B255xhWCGgdtzmh6UjHK2b7SRGX2DDKJH5O4BJ0GTStBu4NnaNgMbkr1TLW3pLOBkOQ==", - "dev": true, - "dependencies": { - "@jsdevtools/ez-spawn": "^3.0.4", - "command-line-args": "^5.1.1", - "detect-indent": "^6.0.0", - "detect-newline": "^3.1.0", - "globby": "^11.0.1", - "inquirer": "^7.3.3", - "log-symbols": "^4.0.0", - "semver": "^7.3.2" - }, - "bin": { - "bump": "bin/bump.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/version-bump-prompt/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/vscode-oniguruma": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", - "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==", - "dev": true - }, - "node_modules/vscode-textmate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz", - "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==", - "dev": true - }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" - }, - "node_modules/xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "requires": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "dev": true - }, - "@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "requires": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "requires": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "dev": true, - "requires": { - "@babel/types": "^7.15.4" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "requires": { - "@babel/types": "^7.22.5" - } - }, - "@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true - }, - "@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "dev": true, - "requires": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - } - }, - "@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.22.5" - } - }, - "@babel/runtime": { - "version": "7.23.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.1.tgz", - "integrity": "sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==", - "peer": true, - "requires": { - "regenerator-runtime": "^0.14.0" - }, - "dependencies": { - "regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "peer": true - } - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - } - }, - "@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "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" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" - } - }, - "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1" - } - }, - "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - } - }, - "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - } - }, - "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - } - }, - "@jest/transform": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", - "integrity": "sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.5.1", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-util": "^27.5.1", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - } - }, - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@jimp/bmp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.22.10.tgz", - "integrity": "sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==", - "requires": { - "@jimp/utils": "^0.22.10", - "bmp-js": "^0.1.0" - } - }, - "@jimp/core": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.22.10.tgz", - "integrity": "sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==", - "requires": { - "@jimp/utils": "^0.22.10", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "isomorphic-fetch": "^3.0.0", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.6.0" - } - }, - "@jimp/custom": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.22.10.tgz", - "integrity": "sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==", - "requires": { - "@jimp/core": "^0.22.10" - } - }, - "@jimp/gif": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.22.10.tgz", - "integrity": "sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==", - "requires": { - "@jimp/utils": "^0.22.10", - "gifwrap": "^0.10.1", - "omggif": "^1.0.9" - } - }, - "@jimp/jpeg": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.22.10.tgz", - "integrity": "sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==", - "requires": { - "@jimp/utils": "^0.22.10", - "jpeg-js": "^0.4.4" - } - }, - "@jimp/plugin-blit": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.22.10.tgz", - "integrity": "sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-blur": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.22.10.tgz", - "integrity": "sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-circle": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.22.10.tgz", - "integrity": "sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-color": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.22.10.tgz", - "integrity": "sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==", - "requires": { - "@jimp/utils": "^0.22.10", - "tinycolor2": "^1.6.0" - } - }, - "@jimp/plugin-contain": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.22.10.tgz", - "integrity": "sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-cover": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.22.10.tgz", - "integrity": "sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-crop": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.22.10.tgz", - "integrity": "sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-displace": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.22.10.tgz", - "integrity": "sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-dither": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.22.10.tgz", - "integrity": "sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-fisheye": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.22.10.tgz", - "integrity": "sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-flip": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.22.10.tgz", - "integrity": "sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-gaussian": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.22.10.tgz", - "integrity": "sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-invert": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.22.10.tgz", - "integrity": "sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-mask": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.22.10.tgz", - "integrity": "sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-normalize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.22.10.tgz", - "integrity": "sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-print": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.22.10.tgz", - "integrity": "sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==", - "requires": { - "@jimp/utils": "^0.22.10", - "load-bmfont": "^1.4.1" - } - }, - "@jimp/plugin-resize": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.22.10.tgz", - "integrity": "sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-rotate": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.22.10.tgz", - "integrity": "sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-scale": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.22.10.tgz", - "integrity": "sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-shadow": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.22.10.tgz", - "integrity": "sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugin-threshold": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.22.10.tgz", - "integrity": "sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==", - "requires": { - "@jimp/utils": "^0.22.10" - } - }, - "@jimp/plugins": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.22.10.tgz", - "integrity": "sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==", - "requires": { - "@jimp/plugin-blit": "^0.22.10", - "@jimp/plugin-blur": "^0.22.10", - "@jimp/plugin-circle": "^0.22.10", - "@jimp/plugin-color": "^0.22.10", - "@jimp/plugin-contain": "^0.22.10", - "@jimp/plugin-cover": "^0.22.10", - "@jimp/plugin-crop": "^0.22.10", - "@jimp/plugin-displace": "^0.22.10", - "@jimp/plugin-dither": "^0.22.10", - "@jimp/plugin-fisheye": "^0.22.10", - "@jimp/plugin-flip": "^0.22.10", - "@jimp/plugin-gaussian": "^0.22.10", - "@jimp/plugin-invert": "^0.22.10", - "@jimp/plugin-mask": "^0.22.10", - "@jimp/plugin-normalize": "^0.22.10", - "@jimp/plugin-print": "^0.22.10", - "@jimp/plugin-resize": "^0.22.10", - "@jimp/plugin-rotate": "^0.22.10", - "@jimp/plugin-scale": "^0.22.10", - "@jimp/plugin-shadow": "^0.22.10", - "@jimp/plugin-threshold": "^0.22.10", - "timm": "^1.6.1" - } - }, - "@jimp/png": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.22.10.tgz", - "integrity": "sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==", - "requires": { - "@jimp/utils": "^0.22.10", - "pngjs": "^6.0.0" - } - }, - "@jimp/tiff": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.22.10.tgz", - "integrity": "sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==", - "requires": { - "utif2": "^4.0.1" - } - }, - "@jimp/types": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.22.10.tgz", - "integrity": "sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==", - "requires": { - "@jimp/bmp": "^0.22.10", - "@jimp/gif": "^0.22.10", - "@jimp/jpeg": "^0.22.10", - "@jimp/png": "^0.22.10", - "@jimp/tiff": "^0.22.10", - "timm": "^1.6.1" - } - }, - "@jimp/utils": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.22.10.tgz", - "integrity": "sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==", - "requires": { - "regenerator-runtime": "^0.13.3" - } - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jsdevtools/ez-spawn": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@jsdevtools/ez-spawn/-/ez-spawn-3.0.4.tgz", - "integrity": "sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "cross-spawn": "^7.0.3", - "string-argv": "^0.3.1", - "type-detect": "^4.0.8" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@nut-tree/default-clipboard-provider": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nut-tree/default-clipboard-provider/-/default-clipboard-provider-1.0.0.tgz", - "integrity": "sha512-CUltQpkxmkfrYsTSGaWiIRpisO6/YeuLkaRpcvm7RNbWvhR/AqNNaJgyaXpDbBaZt0tfY6poGzyyJ3zqjSAZOQ==", - "requires": { - "clipboardy": "2.3.0" - } - }, - "@nut-tree/libnut": { - "version": "2.6.1-next.20240211200808", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.6.1-next.20240211200808.tgz", - "integrity": "sha512-gyxKsNuHEX1n80cVmZ9QI/Mirdd/QHLRqV+wTV40PeqiVX8QjLpnpWP2z6FbLv+KOcEMPpa68LXIvzHdaGa4VA==", - "requires": { - "@nut-tree/libnut-darwin": "^2.6.1-next.20240129224437", - "@nut-tree/libnut-linux": "^2.6.1-next.20240129224423", - "@nut-tree/libnut-win32": "^2.6.1-next.20240129104452" - } - }, - "@nut-tree/libnut-darwin": { - "version": "2.6.1-next.20240129224437", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.6.1-next.20240129224437.tgz", - "integrity": "sha512-CnzMTndZW47VeYmQHflQai6Qkjul+n5Yvu6GRm+QL0K+Kv8L7CiuXm4wcxURB48x2Trinst5WfpaAtEHn26GMQ==", - "requires": { - "@nut-tree/node-mac-permissions": "2.2.1", - "bindings": "1.5.0" - } - }, - "@nut-tree/libnut-linux": { - "version": "2.6.1-next.20240129224423", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.6.1-next.20240129224423.tgz", - "integrity": "sha512-XltjW0lG3fpr6ogqqAZiOpWCO16kYTawAlfQFs8ep+RbX6bMiF6SMjIcwwOc/+lqT8kBChNbX2PicoUmw4XITA==", - "requires": { - "@nut-tree/node-mac-permissions": "2.2.1", - "bindings": "1.5.0" - } - }, - "@nut-tree/libnut-win32": { - "version": "2.6.1-next.20240129104452", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.6.1-next.20240129104452.tgz", - "integrity": "sha512-6YrlzOjDlp7EyuffpCnwd2iGFyF9EAfCercBH+zSA1JGUDMD+1QmuhA8E1Kas8kg7ICa04vnTTZAdOlfH5gV+w==", - "requires": { - "@nut-tree/node-mac-permissions": "2.2.1", - "bindings": "1.5.0" - } - }, - "@nut-tree/node-mac-permissions": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@nut-tree/node-mac-permissions/-/node-mac-permissions-2.2.1.tgz", - "integrity": "sha512-yoijwCqt2yS9UFTv7THGUwZgy2D2TorN703QpYNOergbTJ6vEmeG379pIZDfBuvf56n24RMzKJVoSqr9WIq/Yw==", - "optional": true, - "requires": { - "bindings": "1.5.0", - "node-addon-api": "5.0.0" - } - }, - "@nut-tree/nut-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-3.1.2.tgz", - "integrity": "sha512-hi7DBZz9O/t4goeQu3hKeauQbb0PcBmurScl3/t5L3I1pub3ibV24sft8KNSS3INKnGCj7I3Ma5iNHQ24g+95g==", - "peer": true, - "requires": { - "@nut-tree/libnut": "2.5.2", - "clipboardy": "2.3.0", - "jimp": "0.16.13", - "node-abort-controller": "2.0.0" - }, - "dependencies": { - "@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" - } - }, - "@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - } - }, - "@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - } - }, - "@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - } - }, - "@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - } - }, - "@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - } - }, - "@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - } - }, - "@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - } - }, - "@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - } - }, - "@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - } - }, - "@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "@nut-tree/libnut": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.5.2.tgz", - "integrity": "sha512-IwlGgalGQjjCrbPq52HTLtsR6MRsGJ6c4GhgHmgwJPD/yBVCzsU5EA2rwDgjKSgK+jiLOpykySDZQ+owhyd1zw==", - "peer": true, - "requires": { - "@nut-tree/libnut-darwin": "2.5.2", - "@nut-tree/libnut-linux": "2.5.2", - "@nut-tree/libnut-win32": "2.5.2" - } - }, - "@nut-tree/libnut-darwin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.5.2.tgz", - "integrity": "sha512-OKqCgpBbZj2oNQkLM+mM7TyiLBAQsRyN7Q5UXVKbyXnzcQTU1FZBJ1mLGvdfzzspajznL3Mkl08AQE+xYYbTMw==", - "peer": true, - "requires": { - "@nut-tree/node-mac-permissions": "2.2.1", - "bindings": "1.5.0" - } - }, - "@nut-tree/libnut-linux": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.5.2.tgz", - "integrity": "sha512-uY6XDuNE8soYRUhV23g6KQN5BRR43MYNLyPnrrQa5Wtfgm6oW9kBRu6JtkWz6Fn6trAWrVAKnbPoTiEgHuGz9w==", - "peer": true, - "requires": { - "@nut-tree/node-mac-permissions": "2.2.1", - "bindings": "1.5.0" - } - }, - "@nut-tree/libnut-win32": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.5.2.tgz", - "integrity": "sha512-cnNAQ0pzUMH7hrSjTWRiFfXid3sbSZ78jpv1rA154dlka3wqo6m1OtaX4PLVQK4irZl5REz74iPdHcjeTy9rtg==", - "peer": true, - "requires": { - "@nut-tree/node-mac-permissions": "2.2.1", - "bindings": "1.5.0" - } - }, - "gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "peer": true, - "requires": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "peer": true, - "requires": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "peer": true - } - } - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true - }, - "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true - }, - "@types/babel__core": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz", - "integrity": "sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA==", - "dev": true, - "requires": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz", - "integrity": "sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz", - "integrity": "sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/graceful-fs": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.7.tgz", - "integrity": "sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "27.0.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.1.tgz", - "integrity": "sha512-HTLpVXHrY69556ozYkcq47TtQJXpcWAWfkoqz+ZGz2JnmZhzlRjprCIyFnetSy8gpDWwTTGBcRVv1J1I1vBrHw==", - "dev": true, - "requires": { - "jest-diff": "^27.0.0", - "pretty-format": "^27.0.0" - } - }, - "@types/node": { - "version": "18.18.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.4.tgz", - "integrity": "sha512-t3rNFBgJRugIhackit2mVcLfF6IRc0JE4oeizPQL8Zrm8n2WY/0wOdpOPhdtG0V9Q2TlW/axbF1MJ6z+Yj/kKQ==", - "dev": true - }, - "@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "acorn": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", - "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - }, - "dependencies": { - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "dev": true, - "requires": { - "default-require-extensions": "^3.0.0" - } - }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==" - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", - "dev": true - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - } - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "babel-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz", - "integrity": "sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==", - "dev": true, - "requires": { - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "dependencies": { - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "requires": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - } - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz", - "integrity": "sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@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" - } - }, - "babel-preset-jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz", - "integrity": "sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^27.5.1", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", - "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001254", - "colorette": "^1.3.0", - "electron-to-chromium": "^1.3.830", - "escalade": "^3.1.1", - "node-releases": "^1.1.75" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "dev": true, - "requires": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "ci-info": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz", - "integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==", - "dev": true - }, - "cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", - "dev": true - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true - }, - "clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "requires": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "colorette": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz", - "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-line-args": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.0.tgz", - "integrity": "sha512-4zqtU1hYsSJzcJBOcNZIbW5Fbk9BkjCp1pZVhQKoRaWL5J7N4XphDLwo8aWwdQpTugxwu+jf9u2ZhkXiqp5Z6A==", - "dev": true, - "requires": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, - "commander": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", - "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true - }, - "default-require-extensions": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz", - "integrity": "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==", - "dev": true, - "requires": { - "strip-bom": "^4.0.0" - } - }, - "define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "detect-indent": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", - "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", - "dev": true - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.830", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz", - "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==", - "dev": true - }, - "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "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.6", - "get-intrinsic": "^1.2.1", - "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.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - } - }, - "es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "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" - } - }, - "exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", - "dev": true - }, - "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" - } - }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "requires": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - } - }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "requires": { - "array-back": "^3.0.1" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "requires": { - "is-callable": "^1.1.3" - } - }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - } - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "gifwrap": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", - "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", - "requires": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "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" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "requires": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3" - } - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "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" - } - }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.3" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true - }, - "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", - "dev": true, - "requires": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - } - } - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - } - }, - "https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "requires": { - "agent-base": "6", - "debug": "4" - } - }, - "human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true - }, - "husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "requires": { - "@types/node": "16.9.1" - }, - "dependencies": { - "@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" - } - } - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - } - }, - "internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - } - }, - "is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true - }, - "is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "requires": { - "which-typed-array": "^1.1.11" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "isomorphic-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz", - "integrity": "sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==", - "requires": { - "node-fetch": "^2.6.1", - "whatwg-fetch": "^3.4.1" - } - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "dev": true, - "requires": { - "append-transform": "^2.0.0" - } - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "istanbul-lib-processinfo": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz", - "integrity": "sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw==", - "dev": true, - "requires": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.0", - "istanbul-lib-coverage": "^3.0.0-alpha.1", - "make-dir": "^3.0.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^3.3.3" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-merge": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/istanbul-merge/-/istanbul-merge-2.0.0.tgz", - "integrity": "sha512-Y812/uTdnF5Qc2qWxA7jQOTkqpFLEr7BHy8mzUQFRJstTjPigNS1Bh3q06AbOhBZ7tZqrI4MZdMgG34KVnUn6w==", - "dev": true, - "requires": { - "array.prototype.flatmap": "^1.3.1", - "for-each": "^0.3.3", - "glob": "^7.2.3", - "istanbul-lib-coverage": "^3.2.0", - "mkdirp": "^0.5.6", - "yargs": "^15.4.1" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "jest": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.1.0.tgz", - "integrity": "sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg==", - "dev": true, - "requires": { - "@jest/core": "^27.1.0", - "import-local": "^3.0.2", - "jest-cli": "^27.1.0" - } - }, - "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - } - }, - "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", - "dev": true, - "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "dependencies": { - "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "requires": { - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", - "dev": true, - "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - } - }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-environment-jsdom": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz", - "integrity": "sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1", - "jsdom": "^16.6.0" - } - }, - "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" - } - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "dev": true - }, - "jest-haste-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz", - "integrity": "sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^27.5.1", - "jest-serializer": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "micromatch": "^4.0.4", - "walker": "^1.0.7" - } - }, - "jest-jasmine2": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz", - "integrity": "sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.5.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", - "throat": "^6.0.1" - } - }, - "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dev": true, - "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - } - }, - "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - } - }, - "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "requires": {} - }, - "jest-regex-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", - "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", - "dev": true - }, - "jest-resolve": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz", - "integrity": "sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - } - }, - "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" - } - }, - "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", - "dev": true, - "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - } - }, - "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", - "dev": true, - "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "jest-serializer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", - "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.9" - } - }, - "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", - "dev": true, - "requires": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "jest-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", - "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-validate": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", - "integrity": "sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==", - "dev": true, - "requires": { - "@jest/types": "^27.5.1", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "leven": "^3.1.0", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - } - } - }, - "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", - "dev": true, - "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.5.1", - "string-length": "^4.0.1" - } - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jimp": { - "version": "0.22.10", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.22.10.tgz", - "integrity": "sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==", - "requires": { - "@jimp/custom": "^0.22.10", - "@jimp/plugins": "^0.22.10", - "@jimp/types": "^0.22.10", - "regenerator-runtime": "^0.13.3" - } - }, - "jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "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.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - } - } - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", - "dev": true - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "lint-staged": { - "version": "13.0.4", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.0.4.tgz", - "integrity": "sha512-HxlHCXoYRsq9QCby5wFozmZW00hMs/9e3l+/dz6Qr8Kle4UH0kJTdABAbqhzG+3pcG6QjL9kz7NgGBfph+a5dw==", - "dev": true, - "requires": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" - }, - "dependencies": { - "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", - "dev": true - }, - "is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true - }, - "mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true - }, - "npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "requires": { - "path-key": "^4.0.0" - }, - "dependencies": { - "path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true - } - } - }, - "onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "requires": { - "mimic-fn": "^4.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "listr2": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", - "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", - "dev": true, - "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - } - } - }, - "load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "requires": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", - "dev": true - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - }, - "dependencies": { - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "requires": { - "tmpl": "1.0.5" - } - }, - "marked": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", - "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "requires": { - "dom-walk": "^0.1.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "requires": { - "minimist": "^1.2.6" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - }, - "node-abort-controller": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", - "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==" - }, - "node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", - "optional": true - }, - "node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true - }, - "node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "dev": true, - "requires": { - "process-on-spawn": "^1.0.0" - } - }, - "node-releases": { - "version": "1.1.75", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", - "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } - }, - "nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true - }, - "nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - } - }, - "omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "parse-bmfont-xml": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", - "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", - "requires": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.4.5" - } - }, - "parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@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" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", - "dev": true, - "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", - "dev": true - } - } - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==" - }, - "phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==" - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true - }, - "pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true - }, - "pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "requires": { - "pngjs": "^3.0.0" - }, - "dependencies": { - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" - } - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "pngjs": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", - "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" - }, - "prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", - "dev": true, - "requires": { - "fromentries": "^1.2.0" - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "requires": { - "readable-stream": "^3.6.0" - } - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - } - }, - "release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", - "dev": true, - "requires": { - "es6-error": "^4.0.1" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", - "dev": true, - "requires": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve.exports": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz", - "integrity": "sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==", - "dev": true - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", - "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", - "dev": true, - "requires": { - "glob": "^10.3.7" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "requires": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - }, - "shiki": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.11.1.tgz", - "integrity": "sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==", - "dev": true, - "requires": { - "jsonc-parser": "^3.0.0", - "vscode-oniguruma": "^1.6.1", - "vscode-textmate": "^6.0.0" - } - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true - } - } - }, - "sneer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sneer/-/sneer-1.0.1.tgz", - "integrity": "sha512-rzS5DLX+mRbYzN+pwqcOQnz4WIDI+esS2o1yIMFHCWLTRZ348oPPOjJpm/caJiaMMP1SAUgLO4FRVrF2sc8FCA==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "dev": true, - "requires": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "dependencies": { - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - } - } - }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, - "tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^27.0.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "dependencies": { - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - } - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - } - }, - "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - } - }, - "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, - "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - } - }, - "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - } - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typedoc": { - "version": "0.23.14", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.14.tgz", - "integrity": "sha512-s2I+ZKBET38EctZvbXp2GooHrNaKjWZkrwGEK/sttnOGiKJqU0vHrsdcwLgKZGuo2aedNL3RRPj1LnAAeYscig==", - "dev": true, - "requires": { - "lunr": "^2.3.9", - "marked": "^4.0.19", - "minimatch": "^5.1.0", - "shiki": "^0.11.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "typescript": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz", - "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==", - "dev": true - }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - } - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "peer": true, - "requires": { - "pako": "^1.0.5" - } - }, - "utif2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", - "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", - "requires": { - "pako": "^1.0.11" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, - "version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg==", - "dev": true, - "requires": { - "@jsdevtools/version-bump-prompt": "6.1.0" - }, - "dependencies": { - "@jsdevtools/version-bump-prompt": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@jsdevtools/version-bump-prompt/-/version-bump-prompt-6.1.0.tgz", - "integrity": "sha512-NJFLJRiD3LLFBgSxAb6B255xhWCGgdtzmh6UjHK2b7SRGX2DDKJH5O4BJ0GTStBu4NnaNgMbkr1TLW3pLOBkOQ==", - "dev": true, - "requires": { - "@jsdevtools/ez-spawn": "^3.0.4", - "command-line-args": "^5.1.1", - "detect-indent": "^6.0.0", - "detect-newline": "^3.1.0", - "globby": "^11.0.1", - "inquirer": "^7.3.3", - "log-symbols": "^4.0.0", - "semver": "^7.3.2" - } - }, - "semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "vscode-oniguruma": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz", - "integrity": "sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==", - "dev": true - }, - "vscode-textmate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-6.0.0.tgz", - "integrity": "sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==", - "dev": true - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "requires": { - "makeerror": "1.0.12" - } - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-fetch": { - "version": "3.6.19", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", - "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", - "requires": { - "isexe": "^2.0.0" - } - }, - "which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", - "dev": true, - "requires": { - "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" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} - }, - "xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "requires": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - } - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true - } - } -} diff --git a/package.json b/package.json index ef6f4018..eed933d2 100644 --- a/package.json +++ b/package.json @@ -1,90 +1,35 @@ { - "name": "@nut-tree/nut-js", - "version": "3.1.2", - "license": "Apache-2.0", - "main": "dist/index", - "typings": "dist/index", - "description": "Native system automation for node.js", - "author": { - "name": "dry Software UG (haftungsbeschränkt)", - "email": "info@dry.software", - "url": "https://dry.software" - }, - "homepage": "https://nutjs.dev", - "repository": { - "type": "git", - "url": "https://github.com/nut-tree/nut.js.git" - }, - "bugs": { - "url": "https://github.com/nut-tree/nut.js/issues" - }, - "os": [ - "linux", - "darwin", - "win32" - ], - "cpu": [ - "x64", - "arm64" - ], - "keywords": [ - "native", - "system", - "automation", - "testing", - "keyboard", - "mouse", - "process", - "memory", - "window", - "screen", - "monitor", - "display", - "timer", - "clock", - "clipboard" - ], + "name": "@nut-tree/monorepo", + "version": "4.0.0", + "private": true, "scripts": { - "clean": "rimraf dist", - "compile": "npm run clean && tsc -p .", - "compile:dev": "npm run clean && tsc -p . --watch", - "test": "jest --runInBand", - "test:e2e": "npm --prefix e2e/tests cit", - "coverage": "jest --coverage --runInBand --logHeapUsage", - "coverage:clean": "rimraf coverage", - "coverage:merge": "istanbul-merge --out coverage/merged/coverage-final.json ./coverage/unit/coverage-final.json", - "coverage:merge-report": "nyc report --reporter=lcov --reporter=text --temp-dir=./coverage/merged --report-dir=./coverage/merged", - "watch": "tsc -w -p .", - "publish-next": "npm publish --tag next", - "prepublishOnly": "npm run compile", - "versionBump": "bump --tag --push --all", - "typedoc": "typedoc --options ./typedoc.js --entryPointStrategy expand ./lib", - "prepare": "husky install" - }, - "dependencies": { - "@nut-tree/default-clipboard-provider": "1.0.0", - "@nut-tree/libnut": "^2.6.1-next.20240211200808", - "jimp": "0.22.10", - "node-abort-controller": "2.0.0" + "test": "pnpm -r test", + "compile": "pnpm -r run compile", + "coverage": "pnpm -r run coverage", + "coverage:clean": "pnpm -r run coverage:clean", + "prepare": "husky install", + "publish:next": "pnpm -r run publish:next", + "publish": "pnpm -r run publish" }, + "packageManager": "pnpm@8.15.2", + "workspaces": [ + "core/*", + "providers/*", + "examples/*" + ], + "dependencies": {}, "devDependencies": { - "@types/jest": "27.0.1", - "@types/node": "18.18.4", - "husky": "8.0.3", - "istanbul-merge": "2.0.0", - "jest": "27.1.0", - "lint-staged": "13.0.4", - "nyc": "15.1.0", - "prettier": "3.0.3", + "@types/jest": "29.5.12", + "@types/node": "20.11.17", + "husky": "9.0.10", + "jest": "29.7.0", + "lint-staged": "15.2.2", + "prettier": "3.2.5", "rimraf": "5.0.5", "sneer": "1.0.1", - "ts-jest": "27.0.5", - "ts-node": "10.9.1", - "typedoc": "0.23.14", - "typescript": "4.8.3", - "version-bump-prompt": "6.1.0" - }, - "lint-staged": { - "**/*": "prettier --write --ignore-unknown" + "ts-jest": "29.1.2", + "ts-node": "10.9.2", + "typedoc": "0.25.8", + "typescript": "5.3.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..b353cb76 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,6228 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@types/jest': + specifier: 29.5.12 + version: 29.5.12 + '@types/node': + specifier: 20.11.17 + version: 20.11.17 + husky: + specifier: 9.0.10 + version: 9.0.10 + jest: + specifier: 29.7.0 + version: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + lint-staged: + specifier: 15.2.2 + version: 15.2.2 + prettier: + specifier: 3.2.5 + version: 3.2.5 + rimraf: + specifier: 5.0.5 + version: 5.0.5 + sneer: + specifier: 1.0.1 + version: 1.0.1 + ts-jest: + specifier: 29.1.2 + version: 29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.3) + ts-node: + specifier: 10.9.2 + version: 10.9.2(@types/node@20.11.17)(typescript@5.3.3) + typedoc: + specifier: 0.25.8 + version: 0.25.8(typescript@5.3.3) + typescript: + specifier: 5.3.3 + version: 5.3.3 + + core/configs: {} + + core/nut.js: + dependencies: + '@nut-tree/default-clipboard-provider': + specifier: workspace:* + version: link:../../providers/clipboardy + '@nut-tree/libnut': + specifier: workspace:* + version: link:../../providers/libnut + '@nut-tree/provider-interfaces': + specifier: workspace:* + version: link:../provider-interfaces + '@nut-tree/shared': + specifier: workspace:* + version: link:../shared + jimp: + specifier: 0.22.10 + version: 0.22.10 + node-abort-controller: + specifier: 3.1.1 + version: 3.1.1 + devDependencies: + '@nut-tree/configs': + specifier: workspace:* + version: link:../configs + istanbul-merge: + specifier: 2.0.0 + version: 2.0.0 + nyc: + specifier: 15.1.0 + version: 15.1.0 + version-bump-prompt: + specifier: 6.1.0 + version: 6.1.0 + + core/provider-interfaces: + dependencies: + '@nut-tree/shared': + specifier: workspace:* + version: link:../shared + devDependencies: + '@nut-tree/configs': + specifier: workspace:* + version: link:../configs + + core/shared: + dependencies: + jimp: + specifier: 0.22.10 + version: 0.22.10 + node-abort-controller: + specifier: 3.1.1 + version: 3.1.1 + devDependencies: + '@nut-tree/configs': + specifier: workspace:* + version: link:../configs + + examples/jest-test: + dependencies: + '@nut-tree/nut-js': + specifier: workspace:* + version: link:../../core/nut.js + + examples/keyboard-test: + dependencies: + '@nut-tree/nut-js': + specifier: workspace:* + version: link:../../core/nut.js + run-script-os: + specifier: ^1.1.6 + version: 1.1.6 + + examples/mouse-test: + dependencies: + '@nut-tree/nut-js': + specifier: workspace:* + version: link:../../core/nut.js + + examples/screen-test: + dependencies: + '@nut-tree/nl-matcher': + specifier: 2.2.0 + version: 2.2.0(@nut-tree/nut-js@core+nut.js) + '@nut-tree/nut-js': + specifier: workspace:* + version: link:../../core/nut.js + + examples/typescript-test: + dependencies: + '@nut-tree/nut-js': + specifier: workspace:* + version: link:../../core/nut.js + + examples/window-test: + devDependencies: + '@nut-tree/nut-js': + specifier: workspace:* + version: link:../../core/nut.js + '@playwright/test': + specifier: 1.41.2 + version: 1.41.2 + electron: + specifier: 28.2.3 + version: 28.2.3 + jest: + specifier: 29.7.0 + version: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + jest-playwright-preset: + specifier: 4.0.0 + version: 4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0) + playwright: + specifier: 1.41.2 + version: 1.41.2 + + providers/clipboardy: + dependencies: + '@nut-tree/nut-js': + specifier: ^3 + version: 3.1.2 + clipboardy: + specifier: 2.3.0 + version: 2.3.0 + devDependencies: + '@nut-tree/configs': + specifier: workspace:* + version: link:../../core/configs + '@nut-tree/provider-interfaces': + specifier: workspace:* + version: link:../../core/provider-interfaces + + providers/libnut: + dependencies: + '@nut-tree/libnut-darwin': + specifier: 2.6.0 + version: 2.6.0 + '@nut-tree/libnut-linux': + specifier: 2.6.0 + version: 2.6.0 + '@nut-tree/libnut-win32': + specifier: 2.6.0 + version: 2.6.0 + '@nut-tree/nut-js': + specifier: ^3 + version: 3.1.2 + devDependencies: + '@nut-tree/configs': + specifier: workspace:* + version: link:../../core/configs + '@nut-tree/provider-interfaces': + specifier: workspace:* + version: link:../../core/provider-interfaces + '@nut-tree/shared': + specifier: workspace:* + version: link:../../core/shared + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.22 + jsesc: 2.5.2 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.3 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@bcoe/v8-coverage@0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@cspotcode/source-map-support@0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@electron/get@2.0.3: + resolution: {integrity: sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==} + engines: {node: '>=12'} + dependencies: + debug: 4.3.4 + env-paths: 2.2.1 + fs-extra: 8.1.0 + got: 11.8.6 + progress: 2.0.3 + semver: 6.3.1 + sumchecker: 3.0.1 + optionalDependencies: + global-agent: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + dev: true + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: true + + /@istanbuljs/load-nyc-config@1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema@0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console@29.7.0: + resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + chalk: 4.1.2 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.7.0(ts-node@10.9.2): + resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.7.0 + '@jest/reporters': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.9.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.7.0 + jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-resolve-dependencies: 29.7.0 + jest-runner: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + jest-watcher: 29.7.0 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /@jest/environment@29.7.0: + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + jest-mock: 29.7.0 + dev: true + + /@jest/expect-utils@29.7.0: + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + dev: true + + /@jest/expect@29.7.0: + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.7.0: + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.11.17 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /@jest/globals@29.7.0: + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.7.0: + resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.22 + '@types/node': 20.11.17 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 6.0.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + jest-worker: 29.7.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jest/source-map@29.6.3: + resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.7.0: + resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/types': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + dev: true + + /@jest/test-sequencer@29.7.0: + resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.7.0: + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.9 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.22 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.5 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.11.17 + '@types/yargs': 17.0.32 + chalk: 4.1.2 + dev: true + + /@jimp/bmp@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + bmp-js: 0.1.0 + dev: false + + /@jimp/bmp@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-1UXRl1Nw1KptZ1r0ANqtXOst9vGH51dq7keVKQzyyTO2lz4dOaezS9StuSTNh+RmiHg/SVPaFRpPfB0S/ln4Kg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + bmp-js: 0.1.0 + dev: false + + /@jimp/core@0.16.13: + resolution: {integrity: sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==} + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/utils': 0.16.13 + any-base: 1.1.0 + buffer: 5.7.1 + exif-parser: 0.1.12 + file-type: 16.5.4 + load-bmfont: 1.4.1 + mkdirp: 0.5.6 + phin: 2.9.3 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + dev: false + + /@jimp/core@0.22.10: + resolution: {integrity: sha512-ZKyrehVy6wu1PnBXIUpn/fXmyMRQiVSbvHDubgXz4bfTOao3GiOurKHjByutQIgozuAN6ZHWiSge1dKA+dex3w==} + dependencies: + '@jimp/utils': 0.22.10 + any-base: 1.1.0 + buffer: 5.7.1 + exif-parser: 0.1.12 + file-type: 16.5.4 + isomorphic-fetch: 3.0.0 + pixelmatch: 4.0.2 + tinycolor2: 1.6.0 + transitivePeerDependencies: + - encoding + dev: false + + /@jimp/custom@0.16.13: + resolution: {integrity: sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==} + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/core': 0.16.13 + dev: false + + /@jimp/custom@0.22.10: + resolution: {integrity: sha512-sPZkUYe1hu0iIgNisjizxPJqq2vaaKvkCkPoXq2U6UV3ZA1si/WVdrg25da3IcGIEV+83AoHgM8TvqlLgrCJsg==} + dependencies: + '@jimp/core': 0.22.10 + transitivePeerDependencies: + - encoding + dev: false + + /@jimp/gif@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + gifwrap: 0.9.4 + omggif: 1.0.10 + dev: false + + /@jimp/gif@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-yEX2dSpamvkSx1PPDWGnKeWDrBz0vrCKjVG/cn4Zr68MRRT75tbZIeOrBa+RiUpY3ho5ix7d36LkYvt3qfUIhQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + gifwrap: 0.10.1 + omggif: 1.0.10 + dev: false + + /@jimp/jpeg@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + jpeg-js: 0.4.4 + dev: false + + /@jimp/jpeg@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-6bu98pAcVN4DY2oiDLC4TOgieX/lZrLd1tombWZOFCN5PBmqaHQxm7IUmT+Wj4faEvh8QSHgVLSA+2JQQRJWVA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + jpeg-js: 0.4.4 + dev: false + + /@jimp/plugin-blit@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-blit@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-6EI8Sl+mxYHEIy6Yteh6eknD+EZguKpNdr3sCKxNezmLR0+vK99vHcllo6uGSjXXiwtwS67Xqxn8SsoatL+UJQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-blur@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-blur@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-4XRTWuPVdMXJeclJMisXPGizeHtTryVaVV5HnuQXpKqIZtzXReCCpNGH8q/i0kBQOQMXhGWS3mpqOEwtpPePKw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-circle@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-circle@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-mhcwTO1ywRxiCgtLGge6tDDIDPlX6qkI3CY+BjgGG/XhVHccCddXgOGLdlf+5OuKIEF2Nqs0V01LQEQIJFTmEw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-color@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + tinycolor2: 1.6.0 + dev: false + + /@jimp/plugin-color@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-e4t3L7Kedd96E0x1XjsTM6NcgulKUU66HdFTao7Tc9FYJRFSlttARZ/C6LEryGDm/i69R6bJEpo7BkNz0YL55Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + tinycolor2: 1.6.0 + dev: false + + /@jimp/plugin-contain@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13)(@jimp/plugin-resize@0.16.13)(@jimp/plugin-scale@0.16.13): + resolution: {integrity: sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-scale': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-resize@0.16.13) + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-contain@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blit@0.22.10)(@jimp/plugin-resize@0.22.10)(@jimp/plugin-scale@0.22.10): + resolution: {integrity: sha512-eP8KrzctuEoqibQAxi9WhbnoRosydhiwg+IYya3dKuKDBTrD9UHt+ERlPQ/lTNWHzV/l4S1ntV3r9s9saJgsXA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-blit': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-resize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-scale': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-resize@0.22.10) + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-cover@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-crop@0.16.13)(@jimp/plugin-resize@0.16.13)(@jimp/plugin-scale@0.16.13): + resolution: {integrity: sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-crop': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-scale': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-resize@0.16.13) + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-cover@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-crop@0.22.10)(@jimp/plugin-resize@0.22.10)(@jimp/plugin-scale@0.22.10): + resolution: {integrity: sha512-kJCwL5T1igfa0InCfkE7bBeqg26m46aoRt10ug+rvm11P6RrvRMGrgINFyIKB+mnB7CiyBN/MOula1CvLhSInQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + '@jimp/plugin-scale': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-crop': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-resize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-scale': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-resize@0.22.10) + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-crop@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-crop@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-BOZ+YGaZlhU7c5ye65RxikicXH0Ki0It6/XHISvipR5WZrfjLjL2Ke20G+AGnwBQc76gKenVcMXVUCnEjtZV+Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-displace@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-displace@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-llNiWWMTKISDXt5+cXI0GaFmZWAjlT+4fFLYf4eXquuL/9wZoQsEBhv2GdGd48mkiS8jZq1Nnb2Q4ehEPTvrzw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-dither@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-dither@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-05WLmeV5M+P/0FS+bWf13hMew2X0oa8w9AtmevL2UyA/5GqiyvP2Xm5WfGQ8oFiiMvpnL6RFomJQOZtWca0C2w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-fisheye@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-fisheye@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-InjiXvc7Gkzrx8VWtU97kDqV7ENnhHGPULymJWeZaF2aicud9Fpk4iCtd/DcZIrk7Cbe60A8RwNXN00HXIbSCg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-flip@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-rotate@0.16.13): + resolution: {integrity: sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-rotate': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13)(@jimp/plugin-crop@0.16.13)(@jimp/plugin-resize@0.16.13) + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-flip@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-rotate@0.22.10): + resolution: {integrity: sha512-42GkGtTHWnhnwTMPVK/kXObZbkYIpQWfuIfy5EMEMk6zRj05zpv4vsjkKWfuemweZINwfvD7wDJF7FVFNNcZZg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-rotate': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-rotate': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blit@0.22.10)(@jimp/plugin-crop@0.22.10)(@jimp/plugin-resize@0.22.10) + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-gaussian@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-gaussian@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-ykrG/6lTp9Q5YA8jS5XzwMHtRxb9HOFMgtmnrUZ8kU+BK8REecfy9Ic5BUEOjCYvS1a/xLsnrZQU07iiYxBxFg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-invert@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-invert@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-d8j9BlUJYs/c994t4azUWSWmQq4LLPG4ecm8m6SSNqap+S/HlVQGqjYhJEBbY9EXkOTYB9vBL9bqwSM1Rr6paA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-mask@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-mask@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-yRBs1230XZkz24uFTdTcSlZ0HXZpIWzM3iFQN56MzZ7USgdVZjPPDCQ8I9RpqfZ36nDflQkUO0wV7ucsi4ogow==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-normalize@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-normalize@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-Wk9GX6eJMchX/ZAazVa70Fagu+OXMvHiPY+HrcEwcclL+p1wo8xAHEsf9iKno7Ja4EU9lLhbBRY5hYJyiKMEkg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-print@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13): + resolution: {integrity: sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) + '@jimp/utils': 0.16.13 + load-bmfont: 1.4.1 + dev: false + + /@jimp/plugin-print@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blit@0.22.10): + resolution: {integrity: sha512-1U3VloIR+beE1kWPdGEJMiE2h1Do29iv3w8sBbvPyRP4qXxRFcDpmCGtctsrKmb1krlBFlj8ubyAY90xL+5n9w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-blit': 0.22.10(@jimp/custom@0.22.10) + '@jimp/utils': 0.22.10 + load-bmfont: 1.4.1 + dev: false + + /@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-resize@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-ixomxVcnAONXDgaq0opvAx4UAOiEhOA/tipuhFFOvPKFd4yf1BAnEviB5maB0SBHHkJXPUSzDp/73xVTMGSe7g==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-rotate@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13)(@jimp/plugin-crop@0.16.13)(@jimp/plugin-resize@0.16.13): + resolution: {integrity: sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-crop': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-rotate@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blit@0.22.10)(@jimp/plugin-crop@0.22.10)(@jimp/plugin-resize@0.22.10): + resolution: {integrity: sha512-eeFX8dnRyf3LAdsdXWKWuN18hLRg8zy1cP0cP9rHzQVWRK7ck/QsLxK1vHq7MADGwQalNaNTJ9SQxH6c8mz6jw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blit': '>=0.3.5' + '@jimp/plugin-crop': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-blit': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-crop': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-resize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-scale@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-resize@0.16.13): + resolution: {integrity: sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-scale@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-resize@0.22.10): + resolution: {integrity: sha512-TG/H0oUN69C9ArBCZg4PmuoixFVKIiru8282KzSB/Tp1I0xwX0XLTv3dJ5pobPlIgPcB+TmD4xAIdkCT4rtWxg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-resize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-shadow@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blur@0.16.13)(@jimp/plugin-resize@0.16.13): + resolution: {integrity: sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-blur': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-shadow@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blur@0.22.10)(@jimp/plugin-resize@0.22.10): + resolution: {integrity: sha512-TN9xm6fI7XfxbMUQqFPZjv59Xdpf0tSiAQdINB4g6pJMWiVANR/74OtDONoy3KKpenu5Y38s+FkrtID/KcQAhw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-blur': '>=0.3.5' + '@jimp/plugin-resize': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-blur': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-resize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugin-threshold@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-color@0.16.13)(@jimp/plugin-resize@0.16.13): + resolution: {integrity: sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-color': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/utils': 0.16.13 + dev: false + + /@jimp/plugin-threshold@0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-color@0.22.10)(@jimp/plugin-resize@0.22.10): + resolution: {integrity: sha512-DA2lSnU0TgIRbAgmXaxroYw3Ad6J2DOFEoJp0NleSm2h3GWbZEE5yW9U2B6hD3iqn4AenG4E2b2WzHXZyzSutw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + '@jimp/plugin-color': '>=0.8.0' + '@jimp/plugin-resize': '>=0.8.0' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-color': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-resize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/utils': 0.22.10 + dev: false + + /@jimp/plugins@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-blur': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-circle': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-color': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-contain': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13)(@jimp/plugin-resize@0.16.13)(@jimp/plugin-scale@0.16.13) + '@jimp/plugin-cover': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-crop@0.16.13)(@jimp/plugin-resize@0.16.13)(@jimp/plugin-scale@0.16.13) + '@jimp/plugin-crop': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-displace': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-dither': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-fisheye': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-flip': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-rotate@0.16.13) + '@jimp/plugin-gaussian': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-invert': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-mask': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-normalize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-print': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13) + '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) + '@jimp/plugin-rotate': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13)(@jimp/plugin-crop@0.16.13)(@jimp/plugin-resize@0.16.13) + '@jimp/plugin-scale': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-resize@0.16.13) + '@jimp/plugin-shadow': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blur@0.16.13)(@jimp/plugin-resize@0.16.13) + '@jimp/plugin-threshold': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-color@0.16.13)(@jimp/plugin-resize@0.16.13) + timm: 1.7.1 + dev: false + + /@jimp/plugins@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-KDMZyM6pmvS8freB+UBLko1TO/k4D7URS/nphCozuH+P7i3UMe7NdckXKJ8u+WD6sqN0YFYvBehpkpnUiw/91w==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugin-blit': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-blur': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-circle': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-color': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-contain': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blit@0.22.10)(@jimp/plugin-resize@0.22.10)(@jimp/plugin-scale@0.22.10) + '@jimp/plugin-cover': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-crop@0.22.10)(@jimp/plugin-resize@0.22.10)(@jimp/plugin-scale@0.22.10) + '@jimp/plugin-crop': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-displace': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-dither': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-fisheye': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-flip': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-rotate@0.22.10) + '@jimp/plugin-gaussian': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-invert': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-mask': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-normalize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-print': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blit@0.22.10) + '@jimp/plugin-resize': 0.22.10(@jimp/custom@0.22.10) + '@jimp/plugin-rotate': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blit@0.22.10)(@jimp/plugin-crop@0.22.10)(@jimp/plugin-resize@0.22.10) + '@jimp/plugin-scale': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-resize@0.22.10) + '@jimp/plugin-shadow': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-blur@0.22.10)(@jimp/plugin-resize@0.22.10) + '@jimp/plugin-threshold': 0.22.10(@jimp/custom@0.22.10)(@jimp/plugin-color@0.22.10)(@jimp/plugin-resize@0.22.10) + timm: 1.7.1 + dev: false + + /@jimp/png@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/utils': 0.16.13 + pngjs: 3.4.0 + dev: false + + /@jimp/png@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-RYinU7tZToeeR2g2qAMn42AU+8OUHjXPKZZ9RkmoL4bguA1xyZWaSdr22/FBkmnHhOERRlr02KPDN1OTOYHLDQ==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/utils': 0.22.10 + pngjs: 6.0.0 + dev: false + + /@jimp/tiff@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + utif: 2.0.1 + dev: false + + /@jimp/tiff@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-OaivlSYzpNTHyH/h7pEtl3A7F7TbsgytZs52GLX/xITW92ffgDgT6PkldIrMrET6ERh/hdijNQiew7IoEEr2og==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/custom': 0.22.10 + utif2: 4.1.0 + dev: false + + /@jimp/types@0.16.13(@jimp/custom@0.16.13): + resolution: {integrity: sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/bmp': 0.16.13(@jimp/custom@0.16.13) + '@jimp/custom': 0.16.13 + '@jimp/gif': 0.16.13(@jimp/custom@0.16.13) + '@jimp/jpeg': 0.16.13(@jimp/custom@0.16.13) + '@jimp/png': 0.16.13(@jimp/custom@0.16.13) + '@jimp/tiff': 0.16.13(@jimp/custom@0.16.13) + timm: 1.7.1 + dev: false + + /@jimp/types@0.22.10(@jimp/custom@0.22.10): + resolution: {integrity: sha512-u/r+XYzbCx4zZukDmxx8S0er3Yq3iDPI6+31WKX0N18i2qPPJYcn8qwIFurfupRumGvJ8SlGLCgt/T+Y8zzUIw==} + peerDependencies: + '@jimp/custom': '>=0.3.5' + dependencies: + '@jimp/bmp': 0.22.10(@jimp/custom@0.22.10) + '@jimp/custom': 0.22.10 + '@jimp/gif': 0.22.10(@jimp/custom@0.22.10) + '@jimp/jpeg': 0.22.10(@jimp/custom@0.22.10) + '@jimp/png': 0.22.10(@jimp/custom@0.22.10) + '@jimp/tiff': 0.22.10(@jimp/custom@0.22.10) + timm: 1.7.1 + dev: false + + /@jimp/utils@0.16.13: + resolution: {integrity: sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==} + dependencies: + '@babel/runtime': 7.23.9 + regenerator-runtime: 0.13.11 + dev: false + + /@jimp/utils@0.22.10: + resolution: {integrity: sha512-ztlOK9Mm2iLG2AMoabzM4i3WZ/FtshcgsJCbZCRUs/DKoeS2tySRJTnQZ1b7Roq0M4Ce+FUAxnCAcBV0q7PH9w==} + dependencies: + regenerator-runtime: 0.13.11 + dev: false + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.22 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.22: + resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jridgewell/trace-mapping@0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@jsdevtools/ez-spawn@3.0.4: + resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} + engines: {node: '>=10'} + dependencies: + call-me-maybe: 1.0.2 + cross-spawn: 7.0.3 + string-argv: 0.3.2 + type-detect: 4.0.8 + dev: true + + /@jsdevtools/version-bump-prompt@6.1.0: + resolution: {integrity: sha512-NJFLJRiD3LLFBgSxAb6B255xhWCGgdtzmh6UjHK2b7SRGX2DDKJH5O4BJ0GTStBu4NnaNgMbkr1TLW3pLOBkOQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jsdevtools/ez-spawn': 3.0.4 + command-line-args: 5.2.1 + detect-indent: 6.1.0 + detect-newline: 3.1.0 + globby: 11.1.0 + inquirer: 7.3.3 + log-symbols: 4.1.0 + semver: 7.6.0 + dev: true + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + dev: true + + /@nut-tree/libnut-darwin@2.5.2: + resolution: {integrity: sha512-OKqCgpBbZj2oNQkLM+mM7TyiLBAQsRyN7Q5UXVKbyXnzcQTU1FZBJ1mLGvdfzzspajznL3Mkl08AQE+xYYbTMw==} + engines: {node: '>=10.15.3'} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + optionalDependencies: + '@nut-tree/node-mac-permissions': 2.2.1 + dev: false + + /@nut-tree/libnut-darwin@2.6.0: + resolution: {integrity: sha512-Hx/me+2e2gwzSZthtNZIcp6VVeVlE+kgaMCGBlVlJo45ZzkqG1TSdjpp0jdIApMgGqphj0S/paqaXx3DgdF0Tw==} + engines: {node: '>=10.15.3'} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + optionalDependencies: + '@nut-tree/node-mac-permissions': 2.2.1 + dev: false + + /@nut-tree/libnut-linux@2.5.2: + resolution: {integrity: sha512-uY6XDuNE8soYRUhV23g6KQN5BRR43MYNLyPnrrQa5Wtfgm6oW9kBRu6JtkWz6Fn6trAWrVAKnbPoTiEgHuGz9w==} + engines: {node: '>=10.15.3'} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + optionalDependencies: + '@nut-tree/node-mac-permissions': 2.2.1 + dev: false + + /@nut-tree/libnut-linux@2.6.0: + resolution: {integrity: sha512-N0TvzI6CkiCSzpDUoxk9W8jMTTti2fKyIDPKtasE8MnDjpTENinNg+XemshL8Whz2JILp6uQehbQIS+1kC7H3A==} + engines: {node: '>=10.15.3'} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + optionalDependencies: + '@nut-tree/node-mac-permissions': 2.2.1 + dev: false + + /@nut-tree/libnut-win32@2.5.2: + resolution: {integrity: sha512-cnNAQ0pzUMH7hrSjTWRiFfXid3sbSZ78jpv1rA154dlka3wqo6m1OtaX4PLVQK4irZl5REz74iPdHcjeTy9rtg==} + engines: {node: '>=10.15.3'} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + optionalDependencies: + '@nut-tree/node-mac-permissions': 2.2.1 + dev: false + + /@nut-tree/libnut-win32@2.6.0: + resolution: {integrity: sha512-7ShvAM85Gf9P/fpMVnTtL/TqA+SKGkopuYTQqXJfPL4pPpGgsia5UwTzlezmIqcEaUMEQQ+zTYYCPNHWyqW3Dg==} + engines: {node: '>=10.15.3'} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + optionalDependencies: + '@nut-tree/node-mac-permissions': 2.2.1 + dev: false + + /@nut-tree/libnut@2.5.2: + resolution: {integrity: sha512-IwlGgalGQjjCrbPq52HTLtsR6MRsGJ6c4GhgHmgwJPD/yBVCzsU5EA2rwDgjKSgK+jiLOpykySDZQ+owhyd1zw==} + engines: {node: '>=10.15.3'} + dependencies: + '@nut-tree/libnut-darwin': 2.5.2 + '@nut-tree/libnut-linux': 2.5.2 + '@nut-tree/libnut-win32': 2.5.2 + dev: false + + /@nut-tree/nl-matcher-darwin@2.2.0: + resolution: {integrity: sha512-dIVEhcMYCgWMUkAvH1FLkgR0NnQFocn8CS+5mWOzu/+CCOhMXbM1tPgnSNFtdmgrrtp8fU6IoKCRmjV43gzuzw==} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + dev: false + + /@nut-tree/nl-matcher-linux@2.2.0: + resolution: {integrity: sha512-SnUOMAxiqSE7UMmb5BzWYveQKKYbrl/2JwKNGN/9lyWsVjtPR84mYs4qYfF7USd6LYz/0niUSCHNt+TOx9fuJA==} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + dev: false + + /@nut-tree/nl-matcher-win32@2.2.0: + resolution: {integrity: sha512-aX5oHjgJVkGMOwsFbWslAA7pMPhmodO0eUkXe76W2QusKhEkictIwcFIotlCgRSJl/Z2qQ8dXjAJgtNcR7RpdA==} + cpu: [x64, arm64] + os: [darwin, linux, win32] + dependencies: + bindings: 1.5.0 + dev: false + + /@nut-tree/nl-matcher@2.2.0(@nut-tree/nut-js@core+nut.js): + resolution: {integrity: sha512-vpZzA67eXS6FXf446GCH7TycuO23qQdlHym8WKcQzKi59j8OQFWZTW5+mg13P9q/6m2SOrEMoGeUttMWCCjlBQ==} + engines: {node: '>=10.15.3'} + peerDependencies: + '@nut-tree/nut-js': '>=3.0.0' + dependencies: + '@nut-tree/nl-matcher-darwin': 2.2.0 + '@nut-tree/nl-matcher-linux': 2.2.0 + '@nut-tree/nl-matcher-win32': 2.2.0 + '@nut-tree/nut-js': link:core/nut.js + dev: false + + /@nut-tree/node-mac-permissions@2.2.1: + resolution: {integrity: sha512-yoijwCqt2yS9UFTv7THGUwZgy2D2TorN703QpYNOergbTJ6vEmeG379pIZDfBuvf56n24RMzKJVoSqr9WIq/Yw==} + os: [darwin] + requiresBuild: true + dependencies: + bindings: 1.5.0 + node-addon-api: 5.0.0 + dev: false + optional: true + + /@nut-tree/nut-js@3.1.2: + resolution: {integrity: sha512-hi7DBZz9O/t4goeQu3hKeauQbb0PcBmurScl3/t5L3I1pub3ibV24sft8KNSS3INKnGCj7I3Ma5iNHQ24g+95g==} + cpu: [x64, arm64] + os: [linux, darwin, win32] + dependencies: + '@nut-tree/libnut': 2.5.2 + clipboardy: 2.3.0 + jimp: 0.16.13 + node-abort-controller: 2.0.0 + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@playwright/test@1.41.2: + resolution: {integrity: sha512-qQB9h7KbibJzrDpkXkYvsmiDJK14FULCCZgEcoe2AvFAS64oCirWTwzTlAYEbKaRxWs5TFesE1Na6izMv3HfGg==} + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright: 1.41.2 + dev: true + + /@sideway/address@4.1.5: + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + dependencies: + '@hapi/hoek': 9.3.0 + dev: true + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + dev: true + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + dev: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@sindresorhus/is@4.6.0: + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} + dev: true + + /@sinonjs/commons@3.0.1: + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.1 + dev: true + + /@szmarczak/http-timer@4.0.6: + resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} + engines: {node: '>=10'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + + /@tokenizer/token@0.3.0: + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + dev: false + + /@tsconfig/node10@1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12@1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14@1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16@1.0.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + dev: true + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.23.9 + dev: true + + /@types/cacheable-request@6.0.3: + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} + dependencies: + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 20.11.17 + '@types/responselike': 1.0.3 + dev: true + + /@types/graceful-fs@4.1.9: + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + dependencies: + '@types/node': 20.11.17 + dev: true + + /@types/http-cache-semantics@4.0.4: + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + dev: true + + /@types/istanbul-lib-coverage@2.0.6: + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: true + + /@types/istanbul-lib-report@3.0.3: + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + dev: true + + /@types/istanbul-reports@3.0.4: + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + dependencies: + '@types/istanbul-lib-report': 3.0.3 + dev: true + + /@types/jest@29.5.12: + resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /@types/keyv@3.1.4: + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + dependencies: + '@types/node': 20.11.17 + dev: true + + /@types/node@16.9.1: + resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} + dev: false + + /@types/node@18.19.16: + resolution: {integrity: sha512-mjtrR7Wco9ZwcGBc1zre6fENlj9z42/+0W26lBGtGBTPiR3Zm9iZAaiPhxreG6magwGCILLVYwlQ48GjAaqM6w==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/node@20.11.17: + resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/responselike@1.0.3: + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + dependencies: + '@types/node': 20.11.17 + dev: true + + /@types/stack-utils@2.0.3: + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: true + + /@types/wait-on@5.3.4: + resolution: {integrity: sha512-EBsPjFMrFlMbbUFf9D1Fp+PAB2TwmUn7a3YtHyD9RLuTIk1jDd8SxXVAoez2Ciy+8Jsceo2MYEYZzJ/DvorOKw==} + dependencies: + '@types/node': 20.11.17 + dev: true + + /@types/yargs-parser@21.0.3: + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: true + + /@types/yargs@17.0.32: + resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} + dependencies: + '@types/yargs-parser': 21.0.3 + dev: true + + /@types/yauzl@2.10.3: + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + requiresBuild: true + dependencies: + '@types/node': 20.11.17 + dev: true + optional: true + + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-escapes@6.2.0: + resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} + engines: {node: '>=14.16'} + dependencies: + type-fest: 3.13.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-sequence-parser@1.1.1: + resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} + dev: true + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + dev: false + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /append-transform@2.0.0: + resolution: {integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==} + engines: {node: '>=8'} + dependencies: + default-require-extensions: 3.0.1 + dev: true + + /arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + dev: false + + /archy@1.0.0: + resolution: {integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==} + dev: true + + /arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + dev: true + + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.2 + dev: true + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /available-typed-arrays@1.0.6: + resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} + engines: {node: '>= 0.4'} + dev: true + + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + + /babel-jest@29.7.0(@babel/core@7.23.9): + resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.23.9 + '@jest/transform': 29.7.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.6.3(@babel/core@7.23.9) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.22.5 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist@29.6.3: + resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.5 + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.9): + resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + babel-plugin-jest-hoist: 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + dev: false + + /bmp-js@0.1.0: + resolution: {integrity: sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==} + dev: false + + /boolean@3.2.0: + resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} + requiresBuild: true + dev: true + optional: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.22.3: + resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001587 + electron-to-chromium: 1.4.667 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.3) + dev: true + + /bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + dependencies: + fast-json-stable-stringify: 2.1.0 + dev: true + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer-equal@0.0.1: + resolution: {integrity: sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==} + engines: {node: '>=0.4.0'} + dev: false + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /cacheable-lookup@5.0.4: + resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} + engines: {node: '>=10.6.0'} + dev: true + + /cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 + dev: true + + /caching-transform@4.0.0: + resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} + engines: {node: '>=8'} + dependencies: + hasha: 5.2.2 + make-dir: 3.1.0 + package-hash: 4.0.0 + write-file-atomic: 3.0.3 + dev: true + + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.1 + dev: true + + /call-me-maybe@1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /caniuse-lite@1.0.30001587: + resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + dev: true + + /cjs-module-lexer@1.2.3: + resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} + dev: true + + /clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + restore-cursor: 4.0.0 + dev: true + + /cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + dependencies: + slice-ansi: 5.0.0 + string-width: 7.1.0 + dev: true + + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + + /clipboardy@2.3.0: + resolution: {integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==} + engines: {node: '>=8'} + dependencies: + arch: 2.2.0 + execa: 1.0.0 + is-wsl: 2.2.0 + dev: false + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + dependencies: + mimic-response: 1.0.1 + dev: true + + /co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + dev: true + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + dev: true + + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: true + + /commander@3.0.2: + resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + dev: true + + /commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /create-jest@29.7.0(@types/node@20.11.17)(ts-node@10.9.2): + resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + jest-util: 29.7.0 + prompts: 2.4.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /cwd@0.10.0: + resolution: {integrity: sha512-YGZxdTTL9lmLkCUTpg4j0zQ7IhRB5ZmqNBbGCl3Tg6MP/d5/6sY7L5mmTjzbc6JKgVZYiqTQTNhPFsbXNGlRaA==} + engines: {node: '>=0.8'} + dependencies: + find-pkg: 0.1.2 + fs-exists-sync: 0.1.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /default-require-extensions@3.0.1: + resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} + engines: {node: '>=8'} + dependencies: + strip-bom: 4.0.0 + dev: true + + /defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + requiresBuild: true + dev: true + optional: true + + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dom-walk@0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.667: + resolution: {integrity: sha512-66L3pLlWhTNVUhnmSA5+qDM3fwnXsM6KAqE36e2w4KN0g6pkEtlT5bs41FQtQwVwKnfhNBXiWRLPs30HSxd7Kw==} + dev: true + + /electron@28.2.3: + resolution: {integrity: sha512-he9nGphZo03ejDjYBXpmFVw0KBKogXvR2tYxE4dyYvnfw42uaFIBFrwGeenvqoEOfheJfcI0u4rFG6h3QxDwnA==} + engines: {node: '>= 12.20.55'} + hasBin: true + requiresBuild: true + dependencies: + '@electron/get': 2.0.3 + '@types/node': 18.19.16 + extract-zip: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /emittery@0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.6 + call-bind: 1.0.7 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.1 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + 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.13 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.0 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.1 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.14 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.1 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.1 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es6-error@4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + requiresBuild: true + dev: true + optional: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: true + + /execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + dev: false + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + dev: false + + /exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expand-tilde@1.2.2: + resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} + engines: {node: '>=0.10.0'} + dependencies: + os-homedir: 1.0.2 + dev: true + + /expect-playwright@0.8.0: + resolution: {integrity: sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg==} + dev: true + + /expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + dev: true + + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + + /extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + dependencies: + debug: 4.3.4 + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + 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.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + dev: true + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + dependencies: + readable-web-to-node-stream: 3.0.2 + strtok3: 6.3.0 + token-types: 4.2.1 + dev: false + + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + dev: false + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-file-up@0.1.3: + resolution: {integrity: sha512-mBxmNbVyjg1LQIIpgO8hN+ybWBgDQK8qjht+EbrTCGmmPV/sc7RF1i9stPTD6bpvXZywBdrwRYxhSdJv867L6A==} + engines: {node: '>=0.10.0'} + dependencies: + fs-exists-sync: 0.1.0 + resolve-dir: 0.1.1 + dev: true + + /find-pkg@0.1.2: + resolution: {integrity: sha512-0rnQWcFwZr7eO0513HahrWafsc3CTFioEB7DRiEYCUM/70QXSY8f3mCST17HXLcPvEhzH/Ty/Bxd72ZZsr/yvw==} + engines: {node: '>=0.10.0'} + dependencies: + find-file-up: 0.1.3 + dev: true + + /find-process@1.4.7: + resolution: {integrity: sha512-/U4CYp1214Xrp3u3Fqr9yNynUrr5Le4y0SsJh2lMDDSbpwYSz3M2SMWQC+wqcx79cN8PQtHQIL8KnuY9M66fdg==} + hasBin: true + dependencies: + chalk: 4.1.2 + commander: 5.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + dependencies: + array-back: 3.1.0 + dev: true + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@2.0.0: + resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} + engines: {node: '>=8.0.0'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 3.0.7 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: true + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /fromentries@1.3.2: + resolution: {integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==} + dev: true + + /fs-exists-sync@0.1.0: + resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==} + engines: {node: '>=0.10.0'} + dev: true + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + dev: true + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + dev: true + + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.1 + dev: true + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + dependencies: + pump: 3.0.0 + dev: false + + /get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + dev: true + + /gifwrap@0.10.1: + resolution: {integrity: sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==} + dependencies: + image-q: 4.0.0 + omggif: 1.0.10 + dev: false + + /gifwrap@0.9.4: + resolution: {integrity: sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==} + dependencies: + image-q: 4.0.0 + omggif: 1.0.10 + dev: false + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-agent@3.0.0: + resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} + engines: {node: '>=10.0'} + requiresBuild: true + dependencies: + boolean: 3.2.0 + es6-error: 4.1.1 + matcher: 3.0.0 + roarr: 2.15.4 + semver: 7.6.0 + serialize-error: 7.0.1 + dev: true + optional: true + + /global-modules@0.2.3: + resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==} + engines: {node: '>=0.10.0'} + dependencies: + global-prefix: 0.1.5 + is-windows: 0.2.0 + dev: true + + /global-prefix@0.1.5: + resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==} + engines: {node: '>=0.10.0'} + dependencies: + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 0.2.0 + which: 1.3.1 + dev: true + + /global@4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + dependencies: + min-document: 2.19.0 + process: 0.11.10 + dev: false + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /got@11.8.6: + resolution: {integrity: sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==} + engines: {node: '>=10.19.0'} + dependencies: + '@sindresorhus/is': 4.6.0 + '@szmarczak/http-timer': 4.0.6 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 5.0.4 + cacheable-request: 7.0.4 + decompress-response: 6.0.0 + http2-wrapper: 1.0.3 + lowercase-keys: 2.0.0 + p-cancelable: 2.1.1 + responselike: 2.0.1 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + dev: true + + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + dev: true + + /homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + dependencies: + parse-passwd: 1.0.0 + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http2-wrapper@1.0.3: + resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + dev: true + + /husky@9.0.10: + resolution: {integrity: sha512-TQGNknoiy6bURzIO77pPRu+XHi6zI7T93rX+QnJsoYFf3xdjKOur+IlfqzJGMHIK/wXrLg+GsvMs8Op7vI2jVA==} + engines: {node: '>=18'} + hasBin: true + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /image-q@4.0.0: + resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} + dependencies: + '@types/node': 16.9.1 + dev: false + + /import-local@3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + dev: true + + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + dependencies: + es-errors: 1.3.0 + hasown: 2.0.1 + side-channel: 1.0.5 + dev: true + + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.1 + dev: true + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + dev: true + + /is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + dependencies: + get-east-asian-width: 1.2.0 + dev: true + + /is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + dev: false + + /is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: false + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.2 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.14 + dev: true + + /is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.7 + dev: true + + /is-windows@0.2.0: + resolution: {integrity: sha512-n67eJYmXbniZB7RF4I/FTjK1s6RPOCTxhYrVYLRaCt3lF0mpWZPKr3T2LSZAqyjQsxR2qMmGYXXzK0YWwcPM1Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: false + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + dependencies: + node-fetch: 2.7.0 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - encoding + dev: false + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-hook@3.0.0: + resolution: {integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==} + engines: {node: '>=8'} + dependencies: + append-transform: 2.0.0 + dev: true + + /istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-instrument@6.0.1: + resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-processinfo@2.0.3: + resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} + engines: {node: '>=8'} + dependencies: + archy: 1.0.0 + cross-spawn: 7.0.3 + istanbul-lib-coverage: 3.2.2 + p-map: 3.0.0 + rimraf: 3.0.2 + uuid: 8.3.2 + dev: true + + /istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-merge@2.0.0: + resolution: {integrity: sha512-Y812/uTdnF5Qc2qWxA7jQOTkqpFLEr7BHy8mzUQFRJstTjPigNS1Bh3q06AbOhBZ7tZqrI4MZdMgG34KVnUn6w==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + array.prototype.flatmap: 1.3.2 + for-each: 0.3.3 + glob: 7.2.3 + istanbul-lib-coverage: 3.2.2 + mkdirp: 0.5.6 + yargs: 15.4.1 + dev: true + + /istanbul-reports@3.1.6: + resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + dev: true + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /jest-changed-files@29.7.0: + resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + jest-util: 29.7.0 + p-limit: 3.1.0 + dev: true + + /jest-circus@29.7.0: + resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + chalk: 4.1.2 + co: 4.6.0 + dedent: 1.5.1 + is-generator-fn: 2.1.0 + jest-each: 29.7.0 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-runtime: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + p-limit: 3.1.0 + pretty-format: 29.7.0 + pure-rand: 6.0.4 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-cli@29.7.0(@types/node@20.11.17)(ts-node@10.9.2): + resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + chalk: 4.1.2 + create-jest: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + exit: 0.1.2 + import-local: 3.1.0 + jest-config: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + jest-util: 29.7.0 + jest-validate: 29.7.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jest-config@29.7.0(@types/node@20.11.17)(ts-node@10.9.2): + resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.23.9 + '@jest/test-sequencer': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + babel-jest: 29.7.0(@babel/core@7.23.9) + chalk: 4.1.2 + ci-info: 3.9.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-get-type: 29.6.3 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-runner: 29.7.0 + jest-util: 29.7.0 + jest-validate: 29.7.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.7.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.2(@types/node@20.11.17)(typescript@5.3.3) + transitivePeerDependencies: + - babel-plugin-macros + - supports-color + dev: true + + /jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-docblock@29.7.0: + resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each@29.7.0: + resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + chalk: 4.1.2 + jest-get-type: 29.6.3 + jest-util: 29.7.0 + pretty-format: 29.7.0 + dev: true + + /jest-environment-node@29.7.0: + resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + jest-mock: 29.7.0 + jest-util: 29.7.0 + dev: true + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 20.11.17 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /jest-leak-detector@29.7.0: + resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + dev: true + + /jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.23.5 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + jest-util: 29.7.0 + dev: true + + /jest-playwright-preset@4.0.0(jest-circus@29.7.0)(jest-environment-node@29.7.0)(jest-runner@29.7.0)(jest@29.7.0): + resolution: {integrity: sha512-+dGZ1X2KqtwXaabVjTGxy0a3VzYfvYsWaRcuO8vMhyclHSOpGSI1+5cmlqzzCwQ3+fv0EjkTc7I5aV9lo08dYw==} + peerDependencies: + jest: ^29.3.1 + jest-circus: ^29.3.1 + jest-environment-node: ^29.3.1 + jest-runner: ^29.3.1 + dependencies: + expect-playwright: 0.8.0 + jest: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + jest-circus: 29.7.0 + jest-environment-node: 29.7.0 + jest-process-manager: 0.4.0 + jest-runner: 29.7.0 + nyc: 15.1.0 + playwright-core: 1.41.2 + rimraf: 3.0.2 + uuid: 8.3.2 + transitivePeerDependencies: + - debug + - supports-color + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.7.0 + dev: true + + /jest-process-manager@0.4.0: + resolution: {integrity: sha512-80Y6snDyb0p8GG83pDxGI/kQzwVTkCxc7ep5FPe/F6JYdvRDhwr6RzRmPSP7SEwuLhxo80lBS/NqOdUIbHIfhw==} + dependencies: + '@types/wait-on': 5.3.4 + chalk: 4.1.2 + cwd: 0.10.0 + exit: 0.1.2 + find-process: 1.4.7 + prompts: 2.4.2 + signal-exit: 3.0.7 + spawnd: 5.0.0 + tree-kill: 1.2.2 + wait-on: 7.2.0 + transitivePeerDependencies: + - debug + - supports-color + dev: true + + /jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies@29.7.0: + resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.6.3 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.7.0: + resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) + jest-util: 29.7.0 + jest-validate: 29.7.0 + resolve: 1.22.8 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.7.0: + resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.7.0 + '@jest/environment': 29.7.0 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.7.0 + jest-environment-node: 29.7.0 + jest-haste-map: 29.7.0 + jest-leak-detector: 29.7.0 + jest-message-util: 29.7.0 + jest-resolve: 29.7.0 + jest-runtime: 29.7.0 + jest-util: 29.7.0 + jest-watcher: 29.7.0 + jest-worker: 29.7.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.7.0: + resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.7.0 + '@jest/fake-timers': 29.7.0 + '@jest/globals': 29.7.0 + '@jest/source-map': 29.6.3 + '@jest/test-result': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + chalk: 4.1.2 + cjs-module-lexer: 1.2.3 + collect-v8-coverage: 1.0.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-regex-util: 29.6.3 + jest-resolve: 29.7.0 + jest-snapshot: 29.7.0 + jest-util: 29.7.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.23.9 + '@babel/generator': 7.23.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/types': 7.23.9 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.7.0: + resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.7.0 + dev: true + + /jest-watcher@29.7.0: + resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 20.11.17 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.7.0 + string-length: 4.0.2 + dev: true + + /jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.11.17 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.7.0(@types/node@20.11.17)(ts-node@10.9.2): + resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/types': 29.6.3 + import-local: 3.1.0 + jest-cli: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + transitivePeerDependencies: + - '@types/node' + - babel-plugin-macros + - supports-color + - ts-node + dev: true + + /jimp@0.16.13: + resolution: {integrity: sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==} + dependencies: + '@babel/runtime': 7.23.9 + '@jimp/custom': 0.16.13 + '@jimp/plugins': 0.16.13(@jimp/custom@0.16.13) + '@jimp/types': 0.16.13(@jimp/custom@0.16.13) + regenerator-runtime: 0.13.11 + dev: false + + /jimp@0.22.10: + resolution: {integrity: sha512-lCaHIJAgTOsplyJzC1w/laxSxrbSsEBw4byKwXgUdMmh+ayPsnidTblenQm+IvhIs44Gcuvlb6pd2LQ0wcKaKg==} + dependencies: + '@jimp/custom': 0.22.10 + '@jimp/plugins': 0.22.10(@jimp/custom@0.22.10) + '@jimp/types': 0.22.10(@jimp/custom@0.22.10) + regenerator-runtime: 0.13.11 + transitivePeerDependencies: + - encoding + dev: false + + /joi@17.12.1: + resolution: {integrity: sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + dev: true + + /jpeg-js@0.4.4: + resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} + dev: false + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + requiresBuild: true + dev: true + optional: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + dev: true + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /lint-staged@15.2.2: + resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==} + engines: {node: '>=18.12.0'} + hasBin: true + dependencies: + chalk: 5.3.0 + commander: 11.1.0 + debug: 4.3.4 + execa: 8.0.1 + lilconfig: 3.0.0 + listr2: 8.0.1 + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2@8.0.1: + resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} + engines: {node: '>=18.0.0'} + dependencies: + cli-truncate: 4.0.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 6.0.0 + rfdc: 1.3.1 + wrap-ansi: 9.0.0 + dev: true + + /load-bmfont@1.4.1: + resolution: {integrity: sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==} + dependencies: + buffer-equal: 0.0.1 + mime: 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.5 + phin: 2.9.3 + xhr: 2.6.0 + xtend: 4.0.2 + dev: false + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.flattendeep@4.4.0: + resolution: {integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==} + dev: true + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update@6.0.0: + resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==} + engines: {node: '>=18'} + dependencies: + ansi-escapes: 6.2.0 + cli-cursor: 4.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + dev: true + + /lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + dev: true + + /lru-cache@10.2.0: + resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + dev: true + + /make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.1 + dev: true + + /make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + dependencies: + semver: 7.6.0 + dev: true + + /make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /marked@4.3.0: + resolution: {integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==} + engines: {node: '>= 12'} + hasBin: true + dev: true + + /matcher@3.0.0: + resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + escape-string-regexp: 4.0.0 + dev: true + optional: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: true + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + dev: true + + /mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + + /min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + dependencies: + dom-walk: 0.1.2 + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + dev: false + + /node-abort-controller@2.0.0: + resolution: {integrity: sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==} + dev: false + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + dev: false + + /node-addon-api@5.0.0: + resolution: {integrity: sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==} + requiresBuild: true + dev: false + optional: true + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-preload@0.2.1: + resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} + engines: {node: '>=8'} + dependencies: + process-on-spawn: 1.0.0 + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} + dev: true + + /npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + dependencies: + path-key: 2.0.1 + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nyc@15.1.0: + resolution: {integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==} + engines: {node: '>=8.9'} + hasBin: true + dependencies: + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + caching-transform: 4.0.0 + convert-source-map: 1.9.0 + decamelize: 1.2.0 + find-cache-dir: 3.3.2 + find-up: 4.1.0 + foreground-child: 2.0.0 + get-package-type: 0.1.0 + glob: 7.2.3 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-hook: 3.0.0 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-processinfo: 2.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.6 + make-dir: 3.1.0 + node-preload: 0.2.1 + p-map: 3.0.0 + process-on-spawn: 1.0.0 + resolve-from: 5.0.0 + rimraf: 3.0.2 + signal-exit: 3.0.7 + spawn-wrap: 2.0.0 + test-exclude: 6.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + dev: false + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-cancelable@2.1.1: + resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} + engines: {node: '>=8'} + dev: true + + /p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + dev: false + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /package-hash@4.0.0: + resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} + engines: {node: '>=8'} + dependencies: + graceful-fs: 4.2.11 + hasha: 5.2.2 + lodash.flattendeep: 4.4.0 + release-zalgo: 1.0.0 + dev: true + + /pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: false + + /parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + dev: false + + /parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + dev: false + + /parse-bmfont-xml@1.1.5: + resolution: {integrity: sha512-wgM+ANC5G5Yu08/IEFMxr9x+PpHg+R8jf8U8q0P91TBDaTdjcf4IwupUiPwEcJJKNqSshC2tOkDQW3Q30s1efQ==} + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + dev: false + + /parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + dev: false + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.2.0 + minipass: 7.0.4 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} + dev: false + + /pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + + /phin@2.9.3: + resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==} + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pixelmatch@4.0.2: + resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} + hasBin: true + dependencies: + pngjs: 3.4.0 + dev: false + + /pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /playwright-core@1.41.2: + resolution: {integrity: sha512-VaTvwCA4Y8kxEe+kfm2+uUUw5Lubf38RxF7FpBxLPmGe5sdNkSg5e3ChEigaGrX7qdqT3pt2m/98LiyvU2x6CA==} + engines: {node: '>=16'} + hasBin: true + dev: true + + /playwright@1.41.2: + resolution: {integrity: sha512-v0bOa6H2GJChDL8pAeLa/LZC4feoAMbSQm1/jF/ySsWWoaNItvrMP7GEkvEEFyCTUYKMxjQKaTSg5up7nR6/8A==} + engines: {node: '>=16'} + hasBin: true + dependencies: + playwright-core: 1.41.2 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + dev: false + + /pngjs@6.0.0: + resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} + engines: {node: '>=12.13.0'} + dev: false + + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-on-spawn@1.0.0: + resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} + engines: {node: '>=8'} + dependencies: + fromentries: 1.3.2 + dev: true + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + dev: true + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + /pure-rand@6.0.4: + resolution: {integrity: sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + + /readable-web-to-node-stream@3.0.2: + resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} + engines: {node: '>=8'} + dependencies: + readable-stream: 3.6.2 + dev: false + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: false + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.1 + dev: true + + /release-zalgo@1.0.0: + resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} + engines: {node: '>=4'} + dependencies: + es6-error: 4.1.1 + dev: true + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + dev: true + + /resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + + /resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-dir@0.1.1: + resolution: {integrity: sha512-QxMPqI6le2u0dCLyiGzgy92kjkkL6zO0XyvHzjdTNH3zM6e5Hz3BwG6+aEyNgiQ5Xz6PwTwgQEj3U50dByPKIA==} + engines: {node: '>=0.10.0'} + dependencies: + expand-tilde: 1.2.2 + global-modules: 0.2.3 + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} + dependencies: + lowercase-keys: 2.0.0 + dev: true + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rfdc@1.3.1: + resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + + /roarr@2.15.4: + resolution: {integrity: sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==} + engines: {node: '>=8.0'} + requiresBuild: true + dependencies: + boolean: 3.2.0 + detect-node: 2.1.0 + globalthis: 1.0.3 + json-stringify-safe: 5.0.1 + semver-compare: 1.0.0 + sprintf-js: 1.1.3 + dev: true + optional: true + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /run-script-os@1.1.6: + resolution: {integrity: sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==} + hasBin: true + dev: false + + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: true + + /safe-array-concat@1.1.0: + resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + dev: false + + /semver-compare@1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + requiresBuild: true + dev: true + optional: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /serialize-error@7.0.1: + resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} + engines: {node: '>=10'} + requiresBuild: true + dependencies: + type-fest: 0.13.1 + dev: true + optional: true + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: true + + /set-function-length@1.2.1: + resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + dev: true + + /shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + dependencies: + shebang-regex: 1.0.0 + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shiki@0.14.7: + resolution: {integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==} + dependencies: + ansi-sequence-parser: 1.1.1 + jsonc-parser: 3.2.1 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 + dev: true + + /side-channel@1.0.5: + resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + dev: true + + /slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + dev: true + + /sneer@1.0.1: + resolution: {integrity: sha512-rzS5DLX+mRbYzN+pwqcOQnz4WIDI+esS2o1yIMFHCWLTRZ348oPPOjJpm/caJiaMMP1SAUgLO4FRVrF2sc8FCA==} + dev: true + + /source-map-support@0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /spawn-wrap@2.0.0: + resolution: {integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==} + engines: {node: '>=8'} + dependencies: + foreground-child: 2.0.0 + is-windows: 1.0.2 + make-dir: 3.1.0 + rimraf: 3.0.2 + signal-exit: 3.0.7 + which: 2.0.2 + dev: true + + /spawnd@5.0.0: + resolution: {integrity: sha512-28+AJr82moMVWolQvlAIv3JcYDkjkFTEmfDc503wxrF5l2rQ3dFz6DpbXp3kD4zmgGGldfM4xM4v1sFj/ZaIOA==} + dependencies: + exit: 0.1.2 + signal-exit: 3.0.7 + tree-kill: 1.2.2 + wait-port: 0.2.14 + transitivePeerDependencies: + - supports-color + dev: true + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + requiresBuild: true + dev: true + optional: true + + /stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + dev: true + + /string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /string-width@7.1.0: + resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} + engines: {node: '>=18'} + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + dev: false + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + dev: false + + /sumchecker@3.0.1: + resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} + engines: {node: '>= 8.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /timm@1.7.1: + resolution: {integrity: sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==} + dev: false + + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + dev: false + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /ts-jest@29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==} + engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@babel/core': '>=7.0.0-beta.0 <8' + '@jest/types': ^29.0.0 + babel-jest: ^29.0.0 + esbuild: '*' + jest: ^29.0.0 + typescript: '>=4.3 <6' + peerDependenciesMeta: + '@babel/core': + optional: true + '@jest/types': + optional: true + babel-jest: + optional: true + esbuild: + optional: true + dependencies: + '@babel/core': 7.23.9 + bs-logger: 0.2.6 + fast-json-stable-stringify: 2.1.0 + jest: 29.7.0(@types/node@20.11.17)(ts-node@10.9.2) + jest-util: 29.7.0 + json5: 2.2.3 + lodash.memoize: 4.1.2 + make-error: 1.3.6 + semver: 7.6.0 + typescript: 5.3.3 + yargs-parser: 21.1.1 + dev: true + + /ts-node@10.9.2(@types/node@20.11.17)(typescript@5.3.3): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.11.17 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.3.3 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.13.1: + resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + engines: {node: '>=10'} + requiresBuild: true + dev: true + optional: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + dev: true + + /typed-array-buffer@1.0.1: + resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.13 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.6 + call-bind: 1.0.7 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.13 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + is-typed-array: 1.1.13 + dev: true + + /typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedoc@0.25.8(typescript@5.3.3): + resolution: {integrity: sha512-mh8oLW66nwmeB9uTa0Bdcjfis+48bAjSH3uqdzSuSawfduROQLlXw//WSNZLYDdhmMVB7YcYZicq6e8T0d271A==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x + dependencies: + lunr: 2.3.9 + marked: 4.3.0 + minimatch: 9.0.3 + shiki: 0.14.7 + typescript: 5.3.3 + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + dev: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.3): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.3 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + + /utif2@4.1.0: + resolution: {integrity: sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==} + dependencies: + pako: 1.0.11 + dev: false + + /utif@2.0.1: + resolution: {integrity: sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==} + dependencies: + pako: 1.0.11 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-to-istanbul@9.2.0: + resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.22 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + dev: true + + /version-bump-prompt@6.1.0: + resolution: {integrity: sha512-GYC83GP8QOunWueKf2mbtZkdmisXhnBZPhIHWUmN/Yi4XXAQlIi9avM/IGWdI7KkJLfMENzGN1Xee+Zl3VJ5jg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jsdevtools/version-bump-prompt': 6.1.0 + dev: true + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: true + + /vscode-textmate@8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} + dev: true + + /wait-on@7.2.0: + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + axios: 1.6.7 + joi: 17.12.1 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + dev: true + + /wait-port@0.2.14: + resolution: {integrity: sha512-kIzjWcr6ykl7WFbZd0TMae8xovwqcqbx6FM9l+7agOgUByhzdjfzZBPK2CPufldTOMxbUivss//Sh9MFawmPRQ==} + engines: {node: '>=8'} + hasBin: true + dependencies: + chalk: 2.4.2 + commander: 3.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + 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 + dev: true + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + dev: true + + /which-typed-array@1.1.14: + resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.6 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: true + + /wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + dependencies: + ansi-styles: 6.2.1 + string-width: 7.1.0 + strip-ansi: 7.1.0 + dev: true + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /xhr@2.6.0: + resolution: {integrity: sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==} + dependencies: + global: 4.4.0 + is-function: 1.0.2 + parse-headers: 2.0.5 + xtend: 4.0.2 + dev: false + + /xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + dev: false + + /xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + dev: false + + /xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: false + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: false + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + dev: true + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.2 + 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 + dev: true + + /yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..ce38df04 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - 'core/*' + - 'providers/*' + - 'examples/*' diff --git a/providers/clipboardy/.gitignore b/providers/clipboardy/.gitignore new file mode 100644 index 00000000..733cc87c --- /dev/null +++ b/providers/clipboardy/.gitignore @@ -0,0 +1,144 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +.vscode +/dist/ +/lib/**/*.js +/lib/**/*.js.map +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +.idea/ + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Test data +/lib/provider/opencv/__mocks__/output.jpg +/asdf.jpg +/foo_asdf_bar.jpg +/asdf.png +/asdf_bar.jpg +/foo_asdf.jpg +/.scratch/ +docs +scratch.js +debug.js diff --git a/providers/clipboardy/.npmignore b/providers/clipboardy/.npmignore new file mode 100644 index 00000000..5874dd07 --- /dev/null +++ b/providers/clipboardy/.npmignore @@ -0,0 +1,16 @@ +/lib +/tsconfig.json +/tslint.json +/.travis.yml +/appveyor.yml +/.vscode +/.idea +/.github +/.scratch/ +/docs/ +/e2e/ +/sonar-project.properties +/typedoc.js +/index.e2e.spec.ts +/index.ts +/jest.config.js diff --git a/providers/clipboardy/CHANGELOG.md b/providers/clipboardy/CHANGELOG.md new file mode 100644 index 00000000..dac609a2 --- /dev/null +++ b/providers/clipboardy/CHANGELOG.md @@ -0,0 +1,7 @@ +# @nut-tree/default-clipboard-provider change log + +All notable changes to this project will be documented in this file. + +## 1.0.0 + +- Initial release diff --git a/providers/clipboardy/index.ts b/providers/clipboardy/index.ts new file mode 100644 index 00000000..56bca00b --- /dev/null +++ b/providers/clipboardy/index.ts @@ -0,0 +1,3 @@ +import Clipboard from "./lib/clipboardy-clipboard.class"; + +export default Clipboard; diff --git a/providers/clipboardy/jest.config.js b/providers/clipboardy/jest.config.js new file mode 100644 index 00000000..22c81f1a --- /dev/null +++ b/providers/clipboardy/jest.config.js @@ -0,0 +1,21 @@ +module.exports = { + collectCoverageFrom: [ + "index.ts", + "**/*.ts", + "!**/*.spec.ts", + "!/node_modules/", + ], + transform: {}, + preset: "ts-jest", + testEnvironment: "node", + testMatch: process.env.E2E_TEST + ? [ + "**/__tests__/(e2e)/**/*.[jt]s?(x)", + "**/?(*.)(e2e.)+(spec|test).[jt]s?(x)", + ] + : [ + "**/__tests__/!(e2e)/**/*.[jt]s?(x)", + "**/!(*.e2e.*)+(spec|test).[jt]s?(x)", + ], + testPathIgnorePatterns: ["/node_modules/", "/dist/"], +}; diff --git a/providers/clipboardy/lib/clipboardy-clipboard.class.spec.ts b/providers/clipboardy/lib/clipboardy-clipboard.class.spec.ts new file mode 100644 index 00000000..3f8eceb3 --- /dev/null +++ b/providers/clipboardy/lib/clipboardy-clipboard.class.spec.ts @@ -0,0 +1,33 @@ +import ClipboardAction from "./clipboardy-clipboard.class"; + +beforeEach(() => { + jest.resetAllMocks(); +}); + +describe("clipboardy action", () => { + describe("copy", () => { + it("should resolve", async () => { + // GIVEN + const SUT = new ClipboardAction(); + const testText = "test"; + + // WHEN + + // THEN + await SUT.copy(testText); + }); + }); + describe("hasText", () => { + it("should return true when text has been copied", async () => { + // GIVEN + const SUT = new ClipboardAction(); + const testText = "test"; + + // WHEN + await SUT.copy(testText); + + // THEN + await expect(SUT.hasText()).resolves.toBeTruthy(); + }); + }); +}); diff --git a/providers/clipboardy/lib/clipboardy-clipboard.class.ts b/providers/clipboardy/lib/clipboardy-clipboard.class.ts new file mode 100644 index 00000000..65de0413 --- /dev/null +++ b/providers/clipboardy/lib/clipboardy-clipboard.class.ts @@ -0,0 +1,37 @@ +import clipboardy from "clipboardy"; +import {ClipboardProviderInterface} from "@nut-tree/provider-interfaces"; + +export default class implements ClipboardProviderInterface { + constructor() { + } + + public async hasText(): Promise { + return new Promise((resolve, reject) => { + try { + const content = clipboardy.readSync(); + resolve(content.length > 0); + } catch (e) { + reject(e); + } + }); + } + + public clear(): Promise { + return Promise.reject("Method not implemented."); + } + + public async copy(text: string): Promise { + return new Promise((resolve, reject) => { + try { + clipboardy.writeSync(text); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public async paste(): Promise { + return clipboardy.read(); + } +} diff --git a/providers/clipboardy/package.json b/providers/clipboardy/package.json new file mode 100644 index 00000000..fb451217 --- /dev/null +++ b/providers/clipboardy/package.json @@ -0,0 +1,38 @@ +{ + "name": "@nut-tree/default-clipboard-provider", + "version": "4.0.0", + "description": "The @nut-tree/nut-js default clipboard provider based on clipboardy", + "main": "dist/index", + "typings": "dist/index", + "scripts": { + "coverage": "jest --coverage --runInBand --logHeapUsage", + "coverage:clean": "rimraf coverage", + "test": "jest --runInBand", + "clean": "rimraf dist", + "compile": "pnpm run clean && tsc -p .", + "publish:next": "pnpm publish --tag next", + "prepublishOnly": "pnpm run compile" + }, + "keywords": [ + "nut-js", + "provider", + "clipboard", + "clipboardy" + ], + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "license": "Apache-2.0", + "dependencies": { + "clipboardy": "2.3.0" + }, + "devDependencies": { + "@nut-tree/provider-interfaces": "workspace:*", + "@nut-tree/configs": "workspace:*" + }, + "peerDependencies": { + "@nut-tree/nut-js": "^3" + } +} diff --git a/providers/clipboardy/tsconfig.json b/providers/clipboardy/tsconfig.json new file mode 100644 index 00000000..74b93491 --- /dev/null +++ b/providers/clipboardy/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@nut-tree/configs/tsconfig/base.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": [ + "lib/**/*.ts", + "index.ts" + ], + "exclude": [ + "**/*.spec.ts", + "node_modules" + ] +} \ No newline at end of file diff --git a/providers/libnut/.gitignore b/providers/libnut/.gitignore new file mode 100644 index 00000000..408a718b --- /dev/null +++ b/providers/libnut/.gitignore @@ -0,0 +1,149 @@ +node_modules/ +.idea +.vscode +dist + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +.vscode +/dist/ +/lib/**/*.js +/lib/**/*.js.map +### macOS template +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk +### JetBrains template +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +.idea/ + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Test data +/lib/provider/opencv/__mocks__/output.jpg +/asdf.jpg +/foo_asdf_bar.jpg +/asdf.png +/asdf_bar.jpg +/foo_asdf.jpg +/.scratch/ +docs +scratch.js +debug.js diff --git a/providers/libnut/.npmignore b/providers/libnut/.npmignore new file mode 100644 index 00000000..a652264d --- /dev/null +++ b/providers/libnut/.npmignore @@ -0,0 +1,7 @@ +.idea +.vscode +.travis.yml +CMakeLists.txt +lib +!dist/lib +**/*.ts \ No newline at end of file diff --git a/providers/libnut/README.md b/providers/libnut/README.md new file mode 100644 index 00000000..fff7d0cd --- /dev/null +++ b/providers/libnut/README.md @@ -0,0 +1,13 @@ +# @nut-tree/libnut +Installation meta package for platform dependent libnut packages + +## Installation +```bash +npm i @nut-tree/libnut +``` + +or + +```bash +yarn add @nut-tree/libnut +``` diff --git a/providers/libnut/import_libnut.ts b/providers/libnut/import_libnut.ts new file mode 100644 index 00000000..cfbd2223 --- /dev/null +++ b/providers/libnut/import_libnut.ts @@ -0,0 +1,11 @@ +import ln from "./libnut"; + +const libnut: typeof ln = (process.platform === 'win32') ? + require("@nut-tree/libnut-win32") : + (process.platform === 'linux') ? + require("@nut-tree/libnut-linux") : + require("@nut-tree/libnut-darwin") + +export { + libnut, +} \ No newline at end of file diff --git a/providers/libnut/index.ts b/providers/libnut/index.ts new file mode 100644 index 00000000..9165582b --- /dev/null +++ b/providers/libnut/index.ts @@ -0,0 +1,8 @@ +import {KeyboardAction, MouseAction, ScreenAction, WindowAction,} from "./lib"; + +export { + KeyboardAction as DefaultKeyboardAction, + MouseAction as DefaultMouseAction, + ScreenAction as DefaultScreenAction, + WindowAction as DefaultWindowAction, +} \ No newline at end of file diff --git a/providers/libnut/jest.config.js b/providers/libnut/jest.config.js new file mode 100644 index 00000000..e870b4f2 --- /dev/null +++ b/providers/libnut/jest.config.js @@ -0,0 +1,20 @@ +module.exports = { + collectCoverageFrom: [ + "index.ts", + "lib/**/*.ts", + "!lib/**/*.spec.ts", + "!/node_modules/", + ], + preset: "ts-jest", + testEnvironment: "node", + testMatch: process.env.E2E_TEST + ? [ + "**/__tests__/(e2e)/**/*.[jt]s?(x)", + "**/?(*.)(e2e.)+(spec|test).[jt]s?(x)", + ] + : [ + "**/__tests__/!(e2e)/**/*.[jt]s?(x)", + "**/!(*.e2e.*)+(spec|test).[jt]s?(x)", + ], + testPathIgnorePatterns: ["/node_modules/", "/dist/"], +}; diff --git a/providers/libnut/lib/index.ts b/providers/libnut/lib/index.ts new file mode 100644 index 00000000..bbcbb1c1 --- /dev/null +++ b/providers/libnut/lib/index.ts @@ -0,0 +1,11 @@ +import KeyboardAction from "./libnut-keyboard.class"; +import MouseAction from "./libnut-mouse.class"; +import ScreenAction from "./libnut-screen.class"; +import WindowAction from "./libnut-window.class"; + +export { + KeyboardAction, + MouseAction, + ScreenAction, + WindowAction, +} \ No newline at end of file diff --git a/providers/libnut/lib/libnut-keyboard.class.spec.ts b/providers/libnut/lib/libnut-keyboard.class.spec.ts new file mode 100644 index 00000000..76e8ec04 --- /dev/null +++ b/providers/libnut/lib/libnut-keyboard.class.spec.ts @@ -0,0 +1,218 @@ +import {libnut} from "../import_libnut"; +import {Key} from "@nut-tree/shared"; +import KeyboardAction from "./libnut-keyboard.class"; + +jest.mock("../import_libnut"); + +beforeEach(() => { + jest.resetAllMocks(); +}); + +describe("libnut keyboard action", () => { + describe("click", () => { + it("should forward the keyTap call to libnut for a known key", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.click(Key.A); + + // THEN + expect(libnut.keyTap).toHaveBeenCalledTimes(1); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new KeyboardAction(); + libnut.keyTap = jest.fn(() => { + throw new Error("Test error"); + }); + + // WHEN + + // THEN + await expect(SUT.click(Key.A)).rejects.toThrowError("Test error"); + }); + + it("should not forward the keyTap call to libnut for an unknown key", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.click(Key.Pause); + + // THEN + expect(libnut.keyTap).not.toHaveBeenCalled(); + }); + }); + + describe("type", () => { + it("should forward the type call to libnut", async () => { + // GIVEN + const SUT = new KeyboardAction(); + const payload = "testInput"; + + // WHEN + await SUT.type(payload); + + // THEN + expect(libnut.typeString).toHaveBeenCalledTimes(1); + expect(libnut.typeString).toHaveBeenCalledWith(payload); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new KeyboardAction(); + libnut.typeString = jest.fn(() => { + throw new Error("Test error"); + }); + + // WHEN + + // THEN + await expect(SUT.type("foo")).rejects.toThrowError("Test error"); + }); + }); + + describe("pressKey", () => { + it("should forward the pressKey call to libnut for a known key", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.pressKey(Key.A); + + // THEN + expect(libnut.keyToggle).toHaveBeenCalledTimes(1); + expect(libnut.keyToggle).toHaveBeenCalledWith( + KeyboardAction.keyLookup(Key.A), + "down", + [] + ); + }); + + it("should treat a list of keys as modifiers + the actual key to press", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.pressKey(Key.LeftControl, Key.A); + + // THEN + expect(libnut.keyToggle).toHaveBeenCalledTimes(1); + expect(libnut.keyToggle).toHaveBeenCalledWith( + KeyboardAction.keyLookup(Key.A), + "down", + [KeyboardAction.keyLookup(Key.LeftControl)] + ); + }); + + it("should not forward the pressKey call to libnut for an unknown key", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.pressKey(Key.Pause); + + // THEN + expect(libnut.keyToggle).not.toHaveBeenCalled(); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new KeyboardAction(); + libnut.keyToggle = jest.fn(() => { + throw new Error("Test error"); + }); + + // WHEN + + // THEN + await expect(SUT.pressKey(Key.A)).rejects.toThrowError("Test error"); + }); + }); + + describe("releaseKey", () => { + it("should forward the releaseKey call to libnut for a known key", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.releaseKey(Key.A); + + // THEN + expect(libnut.keyToggle).toHaveBeenCalledTimes(1); + expect(libnut.keyToggle).toHaveBeenCalledWith( + KeyboardAction.keyLookup(Key.A), + "up", + [] + ); + }); + + it("should treat a list of keys as modifiers + the actual key to release", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.releaseKey(Key.LeftControl, Key.A); + + // THEN + expect(libnut.keyToggle).toHaveBeenCalledTimes(1); + expect(libnut.keyToggle).toHaveBeenCalledWith( + KeyboardAction.keyLookup(Key.A), + "up", + [KeyboardAction.keyLookup(Key.LeftControl)] + ); + }); + + it("should not forward the releaseKey call to libnut for an unknown key", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.releaseKey(Key.Pause); + + // THEN + expect(libnut.keyToggle).not.toBeCalled(); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new KeyboardAction(); + libnut.keyToggle = jest.fn(() => { + throw new Error("Test error"); + }); + + // WHEN + + // THEN + await expect(SUT.releaseKey(Key.A)).rejects.toThrowError("Test error"); + }); + }); + + describe("bugfix #260", () => { + it("should forward the pressKey call to libnut for 'delete'", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.pressKey(Key.Delete); + + // THEN + expect(libnut.keyToggle).toHaveBeenCalledTimes(1); + expect(libnut.keyToggle).toHaveBeenCalledWith("delete", "down", []); + }); + + it("should forward the releaseKey call to libnut for 'delete'", async () => { + // GIVEN + const SUT = new KeyboardAction(); + + // WHEN + await SUT.releaseKey(Key.Delete); + + // THEN + expect(libnut.keyToggle).toHaveBeenCalledTimes(1); + expect(libnut.keyToggle).toHaveBeenCalledWith("delete", "up", []); + }); + }); +}); diff --git a/providers/libnut/lib/libnut-keyboard.class.ts b/providers/libnut/lib/libnut-keyboard.class.ts new file mode 100644 index 00000000..b396f6c5 --- /dev/null +++ b/providers/libnut/lib/libnut-keyboard.class.ts @@ -0,0 +1,242 @@ +import { libnut } from "../import_libnut"; +import { Key } from "@nut-tree/shared"; +import { KeyboardProviderInterface } from "@nut-tree/provider-interfaces"; + +export default class KeyboardAction implements KeyboardProviderInterface { + public static KeyLookupMap = new Map([ + [Key.A, "a"], + [Key.B, "b"], + [Key.C, "c"], + [Key.D, "d"], + [Key.E, "e"], + [Key.F, "f"], + [Key.G, "g"], + [Key.H, "h"], + [Key.I, "i"], + [Key.J, "j"], + [Key.K, "k"], + [Key.L, "l"], + [Key.M, "m"], + [Key.N, "n"], + [Key.O, "o"], + [Key.P, "p"], + [Key.Q, "q"], + [Key.R, "r"], + [Key.S, "s"], + [Key.T, "t"], + [Key.U, "u"], + [Key.V, "v"], + [Key.W, "w"], + [Key.X, "x"], + [Key.Y, "y"], + [Key.Z, "z"], + + [Key.F1, "f1"], + [Key.F2, "f2"], + [Key.F3, "f3"], + [Key.F4, "f4"], + [Key.F5, "f5"], + [Key.F6, "f6"], + [Key.F7, "f7"], + [Key.F8, "f8"], + [Key.F9, "f9"], + [Key.F10, "f10"], + [Key.F11, "f11"], + [Key.F12, "f12"], + [Key.F13, "f13"], + [Key.F14, "f14"], + [Key.F15, "f15"], + [Key.F16, "f16"], + [Key.F17, "f17"], + [Key.F18, "f18"], + [Key.F19, "f19"], + [Key.F20, "f20"], + [Key.F21, "f21"], + [Key.F22, "f22"], + [Key.F23, "f23"], + [Key.F24, "f24"], + + [Key.Num0, "0"], + [Key.Num1, "1"], + [Key.Num2, "2"], + [Key.Num3, "3"], + [Key.Num4, "4"], + [Key.Num5, "5"], + [Key.Num6, "6"], + [Key.Num7, "7"], + [Key.Num8, "8"], + [Key.Num9, "9"], + [Key.NumPad0, "numpad_0"], + [Key.NumPad1, "numpad_1"], + [Key.NumPad2, "numpad_2"], + [Key.NumPad3, "numpad_3"], + [Key.NumPad4, "numpad_4"], + [Key.NumPad5, "numpad_5"], + [Key.NumPad6, "numpad_6"], + [Key.NumPad7, "numpad_7"], + [Key.NumPad8, "numpad_8"], + [Key.NumPad9, "numpad_9"], + [Key.Decimal, "numpad_decimal"], + + [Key.Space, "space"], + [Key.Escape, "escape"], + [Key.Tab, "tab"], + [Key.LeftAlt, "alt"], + [Key.LeftControl, "control"], + [Key.RightAlt, "right_alt"], + [Key.RightControl, "right_control"], + [Key.LeftWin, "win"], + [Key.RightWin, "right_win"], + [Key.LeftCmd, "cmd"], + [Key.RightCmd, "right_cmd"], + + [Key.Menu, "menu"], + [Key.Fn, "fn"], + + [Key.LeftShift, "shift"], + [Key.LeftSuper, "command"], + [Key.RightShift, "right_shift"], + [Key.RightSuper, "command"], + + [Key.Grave, "`"], + [Key.Minus, "-"], + [Key.Equal, "="], + [Key.Backspace, "backspace"], + [Key.LeftBracket, "["], + [Key.RightBracket, "]"], + [Key.Backslash, "\\"], + [Key.Semicolon, ";"], + [Key.Quote, "'"], + [Key.Return, "enter"], + [Key.Comma, ","], + [Key.Period, "."], + [Key.Slash, "/"], + + [Key.Left, "left"], + [Key.Up, "up"], + [Key.Right, "right"], + [Key.Down, "down"], + + [Key.Print, "printscreen"], + [Key.Pause, null], + [Key.Insert, "insert"], + [Key.Delete, "delete"], + [Key.Home, "home"], + [Key.End, "end"], + [Key.PageUp, "pageup"], + [Key.PageDown, "pagedown"], + + [Key.Add, "add"], + [Key.Subtract, "subtract"], + [Key.Multiply, "multiply"], + [Key.Divide, "divide"], + [Key.Enter, "enter"], + + [Key.CapsLock, "caps_lock"], + [Key.ScrollLock, "scroll_lock"], + [Key.NumLock, "num_lock"], + + [Key.AudioMute, "audio_mute"], + [Key.AudioVolDown, "audio_vol_down"], + [Key.AudioVolUp, "audio_vol_up"], + [Key.AudioPlay, "audio_play"], + [Key.AudioStop, "audio_stop"], + [Key.AudioPause, "audio_pause"], + [Key.AudioPrev, "audio_prev"], + [Key.AudioNext, "audio_next"], + [Key.AudioRewind, "audio_rewind"], + [Key.AudioForward, "audio_forward"], + [Key.AudioRepeat, "audio_repeat"], + [Key.AudioRandom, "audio_random"] + ]); + + public static keyLookup(key: Key): any { + return this.KeyLookupMap.get(key); + } + + private static mapModifierKeys(...keys: Key[]): string[] { + return keys + .map((modifier) => KeyboardAction.keyLookup(modifier)) + .filter((modifierKey) => modifierKey != null && modifierKey.length > 1); + } + + private static key( + key: Key, + event: "up" | "down", + ...modifiers: Key[] + ): Promise { + return new Promise((resolve, reject) => { + try { + const nativeKey = KeyboardAction.keyLookup(key); + const modifierKeys = this.mapModifierKeys(...modifiers); + if (nativeKey != null) { + libnut.keyToggle(nativeKey, event, modifierKeys); + } + resolve(); + } catch (e) { + reject(e); + } + }); + } + + constructor() { + } + + public type(input: string): Promise { + return new Promise((resolve, reject) => { + try { + libnut.typeString(input); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public click(...keys: Key[]): Promise { + return new Promise((resolve, reject) => { + try { + keys.reverse(); + const [key, ...modifiers] = keys; + const nativeKey = KeyboardAction.keyLookup(key); + const modifierKeys = KeyboardAction.mapModifierKeys(...modifiers); + if (nativeKey != null) { + libnut.keyTap(nativeKey, modifierKeys); + } + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public pressKey(...keys: Key[]): Promise { + return new Promise(async (resolve, reject) => { + try { + keys.reverse(); + const [key, ...modifiers] = keys; + await KeyboardAction.key(key, "down", ...modifiers); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public releaseKey(...keys: Key[]): Promise { + return new Promise(async (resolve, reject) => { + try { + keys.reverse(); + const [key, ...modifiers] = keys; + await KeyboardAction.key(key, "up", ...modifiers); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public setKeyboardDelay(delay: number): void { + libnut.setKeyboardDelay(delay); + } +} diff --git a/providers/libnut/lib/libnut-mouse.class.spec.ts b/providers/libnut/lib/libnut-mouse.class.spec.ts new file mode 100644 index 00000000..0ddd0be0 --- /dev/null +++ b/providers/libnut/lib/libnut-mouse.class.spec.ts @@ -0,0 +1,326 @@ +import {libnut} from "../import_libnut"; +import {Button, Point} from "@nut-tree/shared"; +import MouseAction from "./libnut-mouse.class"; + +jest.mock("../import_libnut"); + +beforeEach(() => { + jest.resetAllMocks(); +}); + +describe("libnut mouse action", () => { + describe("leftClick", () => { + it("should forward leftClick call to libnut", () => { + // GIVEN + const SUT = new MouseAction(); + + // WHEN + SUT.leftClick(); + + // THEN + expect(libnut.mouseClick).toHaveBeenCalledTimes(1); + expect(libnut.mouseClick).toHaveBeenCalledWith("left"); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.mouseClick = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.leftClick()).rejects.toThrowError(error); + }); + }); + + describe("middleClick", () => { + it("should forward middleClick call to libnut", () => { + // GIVEN + const SUT = new MouseAction(); + + // WHEN + SUT.middleClick(); + + // THEN + expect(libnut.mouseClick).toHaveBeenCalledTimes(1); + expect(libnut.mouseClick).toHaveBeenCalledWith("middle"); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.mouseClick = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.middleClick()).rejects.toThrowError(error); + }); + }); + + describe("rightClick", () => { + it("should forward rightClick call to libnut", () => { + // GIVEN + const SUT = new MouseAction(); + + // WHEN + SUT.rightClick(); + + // THEN + expect(libnut.mouseClick).toHaveBeenCalledTimes(1); + expect(libnut.mouseClick).toHaveBeenCalledWith("right"); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.mouseClick = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.rightClick()).rejects.toThrowError(error); + }); + }); + + describe("pressButton", () => { + it("should forward pressButton call to libnut with state 'down'", () => { + // GIVEN + const SUT = new MouseAction(); + + // WHEN + SUT.pressButton(Button.LEFT); + + // THEN + expect(libnut.mouseToggle).toHaveBeenCalledTimes(1); + expect(libnut.mouseToggle).toHaveBeenCalledWith("down", expect.any(String)); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.mouseToggle = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.pressButton(Button.LEFT)).rejects.toThrowError(error); + }); + }); + + describe("releaseButton", () => { + it("should forward pressButton call to libnut with state 'up'", () => { + // GIVEN + const SUT = new MouseAction(); + + // WHEN + SUT.releaseButton(Button.LEFT); + + // THEN + expect(libnut.mouseToggle).toHaveBeenCalledTimes(1); + expect(libnut.mouseToggle).toHaveBeenCalledWith("up", expect.any(String)); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.mouseToggle = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.releaseButton(Button.LEFT)).rejects.toThrowError(error); + }); + }); + + describe("scrollUp", () => { + it("should forward scrollUp call to libnut with positive y value", () => { + // GIVEN + const SUT = new MouseAction(); + const scrollAmount = 5; + + // WHEN + SUT.scrollUp(scrollAmount); + + // THEN + expect(libnut.scrollMouse).toHaveBeenCalledTimes(1); + expect(libnut.scrollMouse).toHaveBeenCalledWith(0, scrollAmount); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.scrollMouse = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.scrollUp(100)).rejects.toThrowError(error); + }); + }); + + describe("scrollDown", () => { + it("should forward scrollDown call to libnut with negative y value", () => { + // GIVEN + const SUT = new MouseAction(); + const scrollAmount = 5; + + // WHEN + SUT.scrollDown(scrollAmount); + + // THEN + expect(libnut.scrollMouse).toHaveBeenCalledTimes(1); + expect(libnut.scrollMouse).toHaveBeenCalledWith(0, -scrollAmount); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.scrollMouse = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.scrollDown(100)).rejects.toThrowError(error); + }); + }); + + describe("scrollLeft", () => { + it("should forward scrollLeft call to libnut with negative x value", () => { + // GIVEN + const SUT = new MouseAction(); + const scrollAmount = 5; + + // WHEN + SUT.scrollLeft(scrollAmount); + + // THEN + expect(libnut.scrollMouse).toHaveBeenCalledTimes(1); + expect(libnut.scrollMouse).toHaveBeenCalledWith(-scrollAmount, 0); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.scrollMouse = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.scrollLeft(100)).rejects.toThrowError(error); + }); + }); + + describe("scrollRight", () => { + it("should forward scrollRight call to libnut with negative x value", () => { + // GIVEN + const SUT = new MouseAction(); + const scrollAmount = 5; + + // WHEN + SUT.scrollRight(scrollAmount); + + // THEN + expect(libnut.scrollMouse).toHaveBeenCalledTimes(1); + expect(libnut.scrollMouse).toHaveBeenCalledWith(scrollAmount, 0); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.scrollMouse = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.scrollRight(100)).rejects.toThrowError(error); + }); + }); + + describe("currentMousePosition", () => { + it("should return the current mouse position via libnut", async () => { + // GIVEN + libnut.getMousePos = jest.fn(() => ({ x: 10, y: 100 })); + const SUT = new MouseAction(); + + // WHEN + const currentPosition = await SUT.currentMousePosition(); + + // THEN + expect(currentPosition.x).toEqual(10); + expect(currentPosition.y).toEqual(100); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.getMousePos = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.currentMousePosition()).rejects.toThrowError(error); + }); + }); + + describe("setMousePosition", () => { + it("should set the current mouse position via libnut", () => { + // GIVEN + const SUT = new MouseAction(); + + // WHEN + SUT.setMousePosition(new Point(10, 100)); + + // THEN + expect(libnut.moveMouse).toHaveBeenCalledTimes(1); + expect(libnut.moveMouse).toHaveBeenCalledWith(10, 100); + }); + + it("should reject on libnut errors", () => { + // GIVEN + const SUT = new MouseAction(); + const error = "Test error"; + libnut.moveMouse = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.setMousePosition(new Point(100, 100))).rejects.toThrowError( + error + ); + }); + }); +}); diff --git a/providers/libnut/lib/libnut-mouse.class.ts b/providers/libnut/lib/libnut-mouse.class.ts new file mode 100644 index 00000000..374485a9 --- /dev/null +++ b/providers/libnut/lib/libnut-mouse.class.ts @@ -0,0 +1,146 @@ +import { libnut } from "../import_libnut"; +import { Button, Point } from "@nut-tree/shared"; +import { MouseProviderInterface } from "@nut-tree/provider-interfaces"; + +export default class MouseAction implements MouseProviderInterface { + public static buttonLookup(btn: Button): any { + return this.ButtonLookupMap.get(btn); + } + + private static ButtonLookupMap: Map = new Map( + [ + [Button.LEFT, "left"], + [Button.MIDDLE, "middle"], + [Button.RIGHT, "right"] + ] + ); + + constructor() { + } + + public setMouseDelay(delay: number): void { + libnut.setMouseDelay(delay); + } + + public setMousePosition(p: Point): Promise { + return new Promise((resolve, reject) => { + try { + libnut.moveMouse(p.x, p.y); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public currentMousePosition(): Promise { + return new Promise((resolve, reject) => { + try { + const position = libnut.getMousePos(); + resolve(new Point(position.x, position.y)); + } catch (e) { + reject(e); + } + }); + } + + public click(btn: Button): Promise { + return new Promise((resolve, reject) => { + try { + libnut.mouseClick(MouseAction.buttonLookup(btn)); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public doubleClick(btn: Button): Promise { + return new Promise((resolve, reject) => { + try { + libnut.mouseClick(MouseAction.buttonLookup(btn), true); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public leftClick(): Promise { + return this.click(Button.LEFT); + } + + public rightClick(): Promise { + return this.click(Button.RIGHT); + } + + public middleClick(): Promise { + return this.click(Button.MIDDLE); + } + + public pressButton(btn: Button): Promise { + return new Promise((resolve, reject) => { + try { + libnut.mouseToggle("down", MouseAction.buttonLookup(btn)); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public releaseButton(btn: Button): Promise { + return new Promise((resolve, reject) => { + try { + libnut.mouseToggle("up", MouseAction.buttonLookup(btn)); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public scrollUp(amount: number): Promise { + return new Promise((resolve, reject) => { + try { + libnut.scrollMouse(0, amount); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public scrollDown(amount: number): Promise { + return new Promise((resolve, reject) => { + try { + libnut.scrollMouse(0, -amount); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public scrollLeft(amount: number): Promise { + return new Promise((resolve, reject) => { + try { + libnut.scrollMouse(-amount, 0); + resolve(); + } catch (e) { + reject(e); + } + }); + } + + public scrollRight(amount: number): Promise { + return new Promise((resolve, reject) => { + try { + libnut.scrollMouse(amount, 0); + resolve(); + } catch (e) { + reject(e); + } + }); + } +} diff --git a/providers/libnut/lib/libnut-screen.class.spec.ts b/providers/libnut/lib/libnut-screen.class.spec.ts new file mode 100644 index 00000000..d8feb6e5 --- /dev/null +++ b/providers/libnut/lib/libnut-screen.class.spec.ts @@ -0,0 +1,259 @@ +import {libnut} from "../import_libnut"; +import {Region} from "@nut-tree/shared"; +import ScreenAction from "./libnut-screen.class"; + +jest.mock("jimp", () => {}); +jest.mock("../import_libnut"); + +beforeEach(() => { + jest.resetAllMocks(); +}); + +const screenSize = new Region(0, 0, 100, 100); +const screenShotSize = new Region(0, 0, 200, 200); + +describe("libnut screen action", () => { + describe("screen data", () => { + it("should reject when no screenshot data is available", async () => { + // GIVEN + const SUT = new ScreenAction(); + + // WHEN + const call = await SUT.grabScreen; + + // THEN + await expect(call()).rejects.toEqual("Unable to fetch screen content."); + expect(libnut.screen.capture).toHaveBeenCalledTimes(1); + }); + + it("should resolve when screenshot data is available", async () => { + // GIVEN + const SUT = new ScreenAction(); + libnut.screen.capture = jest.fn(() => ({ + bitsPerPixel: 0, + byteWidth: 0, + bytesPerPixel: 0, + colorAt: jest.fn(), + height: screenShotSize.height, + image: Buffer.from( + new Array(screenShotSize.width * screenShotSize.height * 4 + 10).fill( + 0 + ) + ), + width: screenShotSize.width, + })); + libnut.getScreenSize = jest.fn(() => ({ + height: screenSize.height, + width: screenSize.width, + })); + + // WHEN + const image = await SUT.grabScreen(); + + // THEN + expect(image.width).toEqual(screenShotSize.width); + expect(image.height).toEqual(screenShotSize.height); + expect(image.pixelDensity.scaleX).toEqual(2); + expect(image.pixelDensity.scaleY).toEqual(2); + expect(image.data.length).toEqual( + screenShotSize.width * screenShotSize.height * 4 + ); + expect(libnut.screen.capture).toHaveBeenCalledTimes(1); + }); + + it("should resolve when screenshot data of a screen region is available", async () => { + // GIVEN + const screenRegion = new Region(0, 0, 10, 10); + const SUT = new ScreenAction(); + libnut.screen.capture = jest.fn(() => ({ + bitsPerPixel: 0, + byteWidth: 0, + bytesPerPixel: 0, + colorAt: jest.fn(), + height: screenShotSize.height, + image: Buffer.from( + new Array(screenShotSize.width * screenShotSize.height * 4 + 10).fill( + 0 + ) + ), + width: screenShotSize.width, + })); + + // WHEN + const image = await SUT.grabScreenRegion(screenRegion); + + // THEN + expect(image.width).toEqual(screenShotSize.width); + expect(image.height).toEqual(screenShotSize.height); + expect(image.pixelDensity.scaleX).toEqual(20); + expect(image.pixelDensity.scaleY).toEqual(20); + expect(image.data.length).toEqual( + screenShotSize.width * screenShotSize.height * 4 + ); + expect(libnut.screen.capture).toHaveBeenCalledTimes(1); + }); + + it("should reject when no screenshot of a screen region is available", async () => { + // GIVEN + const SUT = new ScreenAction(); + + // WHEN + const call = await SUT.grabScreenRegion; + const screenRegion = new Region(0, 0, 10, 10); + + // THEN + await expect(call(screenRegion)).rejects.toEqual( + "Unable to fetch screen content." + ); + expect(libnut.screen.capture).toHaveBeenCalledTimes(1); + expect(libnut.screen.capture).toHaveBeenCalledWith( + screenRegion.left, + screenRegion.top, + screenRegion.width, + screenRegion.height + ); + }); + }); + + describe("screen size", () => { + describe("screenWidth", () => { + it("should determine screen width via libnut", async () => { + // GIVEN + const SUT = new ScreenAction(); + libnut.getScreenSize = jest.fn(() => ({ + width: screenSize.width, + height: screenSize.height, + })); + + // WHEN + const width = await SUT.screenWidth(); + + // THEN + expect(width).toEqual(screenSize.width); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new ScreenAction(); + const error = "Test error"; + libnut.getScreenSize = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.screenWidth()).rejects.toThrowError(error); + }); + }); + + describe("screenWidth", () => { + it("should determine screen height via libnut", async () => { + // GIVEN + const SUT = new ScreenAction(); + libnut.getScreenSize = jest.fn(() => ({ + width: screenSize.width, + height: screenSize.height, + })); + + // WHEN + const width = await SUT.screenHeight(); + + // THEN + expect(width).toEqual(screenSize.height); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new ScreenAction(); + const error = "Test error"; + libnut.getScreenSize = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.screenHeight()).rejects.toThrowError(error); + }); + }); + + describe("screenWidth", () => { + it("should determine screen size via libnut", async () => { + // GIVEN + const SUT = new ScreenAction(); + libnut.getScreenSize = jest.fn(() => ({ + width: screenSize.width, + height: screenSize.height, + })); + + // WHEN + const size = await SUT.screenSize(); + + // THEN + expect(size).toEqual(screenSize); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new ScreenAction(); + const error = "Test error"; + libnut.getScreenSize = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.screenSize()).rejects.toThrowError(error); + }); + }); + + describe("highlight", () => { + it("should highlight a screen region via libnut", async () => { + // GIVEN + const SUT = new ScreenAction(); + libnut.screen.highlight = jest.fn(() => {}); + const x = 10; + const y = 20; + const w = 30; + const h = 40; + const testRegion = new Region(x, y, w, h); + const highlightDuration = 10; + const highlightOpacity = 1.0; + + // WHEN + await SUT.highlightScreenRegion( + testRegion, + highlightDuration, + highlightOpacity + ); + + // THEN + expect(libnut.screen.highlight).toHaveBeenCalledTimes(1); + expect(libnut.screen.highlight).toHaveBeenCalledWith( + x, + y, + w, + h, + highlightDuration, + highlightOpacity + ); + }); + + it("should reject on libnut errors", async () => { + // GIVEN + const SUT = new ScreenAction(); + const error = "Test error"; + libnut.getScreenSize = jest.fn(() => { + throw new Error(error); + }); + + // WHEN + + // THEN + expect(SUT.screenSize()).rejects.toThrowError(error); + }); + }); + }); +}); diff --git a/providers/libnut/lib/libnut-screen.class.ts b/providers/libnut/lib/libnut-screen.class.ts new file mode 100644 index 00000000..20f986e0 --- /dev/null +++ b/providers/libnut/lib/libnut-screen.class.ts @@ -0,0 +1,130 @@ +import {libnut} from "../import_libnut"; +import {ColorMode, Image, Region} from "@nut-tree/shared"; +import {ScreenProviderInterface} from "@nut-tree/provider-interfaces"; +import {Bitmap} from "../libnut"; + +export default class ScreenAction implements ScreenProviderInterface { + private static determinePixelDensity( + screen: Region, + screenShot: Bitmap + ): { scaleX: number; scaleY: number } { + return { + scaleX: screenShot.width / screen.width, + scaleY: screenShot.height / screen.height, + }; + } + + constructor() { + } + + public grabScreen(): Promise { + return new Promise((resolve, reject) => { + const screenShot = libnut.screen.capture(); + if (screenShot) { + const screenSize = libnut.getScreenSize(); + const pixelScaling = ScreenAction.determinePixelDensity( + new Region(0, 0, screenSize.width, screenSize.height), + screenShot + ); + resolve( + new Image( + screenShot.width, + screenShot.height, + screenShot.image.slice(0, screenShot.width * screenShot.height * 4), + 4, + "grabScreenResult", + screenShot.bitsPerPixel, + screenShot.byteWidth, + ColorMode.BGR, + pixelScaling + ) + ); + } else { + reject("Unable to fetch screen content."); + } + }); + } + + public grabScreenRegion(region: Region): Promise { + return new Promise((resolve, reject) => { + const screenShot = libnut.screen.capture( + region.left, + region.top, + region.width, + region.height + ); + if (screenShot) { + const pixelScaling = ScreenAction.determinePixelDensity( + region, + screenShot + ); + resolve( + new Image( + screenShot.width, + screenShot.height, + screenShot.image.slice(0, screenShot.width * screenShot.height * 4), + 4, + "grabScreenRegionResult", + screenShot.bitsPerPixel, + screenShot.byteWidth, + ColorMode.BGR, + pixelScaling + ) + ); + } else { + reject("Unable to fetch screen content."); + } + }); + } + + public highlightScreenRegion( + region: Region, + duration: number, + opacity: number + ): Promise { + return new Promise((resolve) => { + libnut.screen.highlight( + region.left, + region.top, + region.width, + region.height, + duration, + opacity + ); + resolve(); + }); + } + + public screenWidth(): Promise { + return new Promise((resolve, reject) => { + try { + const size = libnut.getScreenSize(); + resolve(size.width); + } catch (e) { + reject(e); + } + }); + } + + public screenHeight(): Promise { + return new Promise((resolve, reject) => { + try { + const size = libnut.getScreenSize(); + resolve(size.height); + } catch (e) { + reject(e); + } + }); + } + + public screenSize(): Promise { + return new Promise((resolve, reject) => { + try { + const screenSize = libnut.getScreenSize(); + resolve(new Region(0, 0, screenSize.width, screenSize.height)); + } catch (e) { + reject(e); + } + }); + } +} diff --git a/providers/libnut/lib/libnut-window.class.spec.ts b/providers/libnut/lib/libnut-window.class.spec.ts new file mode 100644 index 00000000..44b6ca99 --- /dev/null +++ b/providers/libnut/lib/libnut-window.class.spec.ts @@ -0,0 +1,158 @@ +import { libnut } from "../import_libnut"; +import WindowAction from "./libnut-window.class"; +import { Region } from "@nut-tree/shared"; + +jest.mock("../import_libnut"); + +beforeEach(() => { + jest.resetAllMocks(); +}); + +describe("libnut WindowAction", () => { + describe("getWindows", () => { + it("should resolve to a list of numeric window handles via libnut#getWindows", async () => { + // GIVEN + const SUT = new WindowAction(); + const windowList = [1, 2, 3]; + libnut.getWindows = jest.fn(() => windowList); + + // WHEN + const windows = SUT.getWindows(); + + // THEN + expect(libnut.getWindows).toHaveBeenCalledTimes(1); + await expect(windows).resolves.toBe(windowList); + }); + + it("should reject on errors in libnut#getWindows", async () => { + // GIVEN + const SUT = new WindowAction(); + const errorMessage = "getWindows threw"; + libnut.getWindows = jest.fn(() => { + throw new Error(errorMessage); + }); + + // WHEN + const windows = SUT.getWindows(); + + // THEN + expect(libnut.getWindows).toHaveBeenCalledTimes(1); + await expect(windows).rejects.toThrowError(errorMessage); + }); + }); + + describe("getActiveWindow", () => { + it("should resolve to a numeric window handles via libnut#getActiveWindow", async () => { + // GIVEN + const SUT = new WindowAction(); + const activeWindow = 1; + libnut.getActiveWindow = jest.fn(() => activeWindow); + + // WHEN + const window = SUT.getActiveWindow(); + + // THEN + expect(libnut.getActiveWindow).toHaveBeenCalledTimes(1); + await expect(window).resolves.toBe(activeWindow); + }); + + it("should reject on errors in libnut#getActiveWindow", async () => { + // GIVEN + const SUT = new WindowAction(); + const errorMessage = "getActiveWindow threw"; + libnut.getActiveWindow = jest.fn(() => { + throw new Error(errorMessage); + }); + + // WHEN + const windows = SUT.getActiveWindow(); + + // THEN + expect(libnut.getActiveWindow).toHaveBeenCalledTimes(1); + await expect(windows).rejects.toThrowError(errorMessage); + }); + }); + + describe("getWindowRegion", () => { + it("should resolve to a window region via libnut#getWindowRegion", async () => { + // GIVEN + const SUT = new WindowAction(); + const windowHandle = 100; + const windowRect = { + x: 1, + y: 2, + width: 42, + height: 23 + }; + const windowRegion = new Region( + windowRect.x, + windowRect.y, + windowRect.width, + windowRect.height + ); + libnut.getWindowRect = jest.fn(() => windowRect); + + // WHEN + const wndRegion = SUT.getWindowRegion(windowHandle); + + // THEN + expect(libnut.getWindowRect).toHaveBeenCalledTimes(1); + expect(libnut.getWindowRect).toHaveBeenCalledWith(windowHandle); + await expect(wndRegion).resolves.toEqual(windowRegion); + }); + + it("should reject on errors in libnut#getActiveWindow", async () => { + // GIVEN + const SUT = new WindowAction(); + const errorMessage = "getWindowRect threw"; + const windowHandle = 100; + libnut.getWindowRect = jest.fn(() => { + throw new Error(errorMessage); + }); + + // WHEN + const windows = SUT.getWindowRegion(windowHandle); + + // THEN + expect(libnut.getWindowRect).toHaveBeenCalledTimes(1); + expect(libnut.getWindowRect).toHaveBeenCalledWith(windowHandle); + await expect(windows).rejects.toThrowError(errorMessage); + }); + }); + + describe("getWindowTitle", () => { + it("should resolve to a window title via libnut#getWindowTitle", async () => { + // GIVEN + const SUT = new WindowAction(); + const windowTitle = "test window"; + const windowHandle = 42; + libnut.getWindowTitle = jest.fn(() => windowTitle); + + // WHEN + const wndRegion = SUT.getWindowTitle(windowHandle); + + // THEN + await expect(libnut.getWindowTitle).toHaveBeenCalledTimes(1); + await expect(libnut.getWindowTitle).toHaveBeenCalledWith(windowHandle); + await expect(wndRegion).resolves.toBe(windowTitle); + }); + + it("should reject on errors in libnut#getActiveWindow", async () => { + // GIVEN + const SUT = new WindowAction(); + const errorMessage = "getWindowRect threw"; + const windowHandle = 42; + libnut.getWindowTitle = jest.fn(() => { + throw new Error(errorMessage); + }); + + // WHEN + const windows = SUT.getWindowTitle(windowHandle); + + // THEN + await expect(libnut.getWindowTitle).toHaveBeenCalledTimes(1); + await expect(libnut.getWindowTitle).toHaveBeenCalledWith(windowHandle); + await expect(windows).rejects.toThrowError(errorMessage); + }); + }); +}); diff --git a/providers/libnut/lib/libnut-window.class.ts b/providers/libnut/lib/libnut-window.class.ts new file mode 100644 index 00000000..bb247126 --- /dev/null +++ b/providers/libnut/lib/libnut-window.class.ts @@ -0,0 +1,83 @@ +import { libnut } from "../import_libnut"; +import { Point, Region, Size } from "@nut-tree/shared"; +import { WindowProviderInterface } from "@nut-tree/provider-interfaces"; + +export default class WindowAction implements WindowProviderInterface { + public getWindows(): Promise { + return new Promise((resolve, reject) => { + try { + resolve(libnut.getWindows()); + } catch (e) { + reject(e); + } + }); + } + + getActiveWindow(): Promise { + return new Promise((resolve, reject) => { + try { + resolve(libnut.getActiveWindow()); + } catch (e) { + reject(e); + } + }); + } + + getWindowRegion(windowHandle: number): Promise { + return new Promise((resolve, reject) => { + try { + const windowRect = libnut.getWindowRect(windowHandle); + resolve( + new Region( + windowRect.x, + windowRect.y, + windowRect.width, + windowRect.height + ) + ); + } catch (e) { + reject(e); + } + }); + } + + getWindowTitle(windowHandle: number): Promise { + return new Promise((resolve, reject) => { + try { + resolve(libnut.getWindowTitle(windowHandle)); + } catch (e) { + reject(e); + } + }); + } + + focusWindow(windowHandle: number): Promise { + return new Promise((resolve, reject) => { + try { + resolve(libnut.focusWindow(windowHandle)); + } catch (e) { + reject(e); + } + }); + } + + moveWindow(windowHandle: number, newOrigin: Point): Promise { + return new Promise((resolve, reject) => { + try { + resolve(libnut.moveWindow(windowHandle, newOrigin)); + } catch (e) { + reject(e); + } + }); + } + + resizeWindow(windowHandle: number, newSize: Size): Promise { + return new Promise((resolve, reject) => { + try { + resolve(libnut.resizeWindow(windowHandle, newSize)); + } catch (e) { + reject(e); + } + }); + } +} diff --git a/providers/libnut/libnut.d.ts b/providers/libnut/libnut.d.ts new file mode 100644 index 00000000..68b6b321 --- /dev/null +++ b/providers/libnut/libnut.d.ts @@ -0,0 +1,242 @@ +export interface Bitmap { + width: number; + height: number; + image: any; + byteWidth: number; + bitsPerPixel: number; + bytesPerPixel: number; +} + +export interface Screen { + capture(x?: number, y?: number, width?: number, height?: number): Bitmap; + highlight(x: number, y: number, width: number, height: number, duration: number, opacity: number): void; +} + +export interface Point { + x: number; + y: number +} + +export interface Size { + width: number; + height: number; +} + +export interface Rect { + x: number; + y: number; + width: number; + height: number; +} + +export enum Key { + Backspace = "backspace", + Delete = "delete", + Return = "return", + Tab = "tab", + Escape = "escape", + Up = "up", + Down = "down", + Right = "right", + Left = "left", + Home = "home", + End = "end", + PageUp = "pageup", + PageDown = "pagedown", + A = "a", + B = "b", + C = "c", + D = "d", + E = "e", + F = "f", + G = "g", + H = "h", + I = "i", + J = "j", + K = "k", + L = "l", + M = "m", + N = "n", + O = "o", + P = "p", + Q = "q", + R = "r", + S = "s", + T = "t", + U = "u", + V = "v", + W = "w", + X = "x", + Y = "y", + Z = "z", + + Comma = ",", + Period = ".", + Slash = "/", + + Semicolon = ";", + Quote = "'", + LeftBracket = "[", + RightBracket = "]", + + Backslash = "\\", + Minus = "-", + Equal = "=", + Grave = "`", + + F1 = "f1", + F2 = "f2", + F3 = "f3", + F4 = "f4", + F5 = "f5", + F6 = "f6", + F7 = "f7", + F8 = "f8", + F9 = "f9", + F10 = "f10", + F11 = "f11", + F12 = "f12", + F13 = "f13", + F14 = "f14", + F15 = "f15", + F16 = "f16", + F17 = "f17", + F18 = "f18", + F19 = "f19", + F20 = "f20", + F21 = "f21", + F22 = "f22", + F23 = "f23", + F24 = "f24", + + Meta = "meta", + RightMeta = "right_meta", + + Cmd = "cmd", + RightCmd = "right_cmd", + + Win = "win", + RightWin = "right_win", + + Alt = "alt", + RightAlt = "right_alt", + + Control = "control", + RightControl = "right_control", + + Shift = "shift", + RightShift = "right_shift", + + Space = "space", + + PrintScreen = "printscreen", + Insert = "insert", + Menu = "menu", + + Function = "fn", + Pause = "pause", + + CapsLock = "caps_lock", + NumLock = "num_lock", + ScrollLock = "scroll_lock", + + AudioMute = "audio_mute", + AudioVolDown = "audio_vol_down", + AudioVolUp = "audio_vol_up", + AudioPlay = "audio_play", + AudioStop = "audio_stop", + AudioPause = "audio_pause", + AudioPrev = "audio_prev", + AudioNext = "audio_next", + AudioRewind = "audio_rewind", + AudioForward = "audio_forward", + AudioRepeat = "audio_repeat", + AudioRandom = "audio_random", + + Num0 = "0", + Num1 = "1", + Num2 = "2", + Num3 = "3", + Num4 = "4", + Num5 = "5", + Num6 = "6", + Num7 = "7", + Num8 = "8", + Num9 = "9", + + Numpad0 = "numpad_0", + Numpad1 = "numpad_1", + Numpad2 = "numpad_2", + Numpad3 = "numpad_3", + Numpad4 = "numpad_4", + Numpad5 = "numpad_5", + Numpad6 = "numpad_6", + Numpad7 = "numpad_7", + Numpad8 = "numpad_8", + Numpad9 = "numpad_9", + NumpadDecimal = "numpad_decimal", + + Enter = "enter", + Add = "add", + Subtract = "subtract", + Multiply = "multiply", + Divide = "divide", + + LightsMonUp = "lights_mon_up", + LightsMonDown = "lights_mon_down", + LightsKbdToggle = "lights_kbd_toggle", + LightsKbdUp = "lights_kbd_up", + LightsKbdDown = "lights_kbd_down" +} + +export function setKeyboardDelay(ms: number): void; +export function keyTap(key: string, modifier?: string | string[]): void; +export function keyToggle( + key: string, + down: string, + modifier?: string | string[] +): void; +export function typeString(string: string): void; +export function typeStringDelayed(string: string, cpm: number): void; +export function setMouseDelay(delay: number): void; +export function moveMouse(x: number, y: number): void; +export function moveMouseSmooth(x: number, y: number): void; +export function mouseClick(button?: string, double?: boolean): void; +export function mouseToggle(down?: string, button?: string): void; +export function dragMouse(x: number, y: number): void; +export function scrollMouse(x: number, y: number): void; +export function getMousePos(): Point; +export function getScreenSize(): Size; +export function getWindows(): number[]; +export function getActiveWindow(): number; +export function getWindowRect(handle: number): Rect; +export function getWindowTitle(handle: number): string; + +/** + * Sets the focus to a specific window using its handle. + * + * @param {number} handle - The handle ID of the window to be focused. + * @returns {void} + */ +export function focusWindow(handle: number): boolean + +/** + * Resizes a window by its handle to the given width and height. + * The window is moved to the x & y coordinates if specified. + * + * @param {number} handle - The handle ID of the window to be resized. + * @param {Size} newSize - The new size of the window. + * @returns {void} + */ +export function resizeWindow(handle: number, newSize: Size): boolean + +/** + * Moves a window by its handle to the given x and y coordinates. + * + * @param {number} handle - The handle ID of the window to be resized. + * @param {Point} newOrigin - The new size of the window. + * @returns {void} + */ +export function moveWindow(handle: number, newOrigin: Point): boolean + +export const screen: Screen; diff --git a/providers/libnut/package.json b/providers/libnut/package.json new file mode 100644 index 00000000..e987e775 --- /dev/null +++ b/providers/libnut/package.json @@ -0,0 +1,56 @@ +{ + "name": "@nut-tree/libnut", + "version": "4.0.0", + "description": "libnut is an N-API module for desktop automation with node", + "main": "dist/index", + "typings": "dist/index", + "homepage": "https://nutjs.dev", + "author": { + "name": "dry Software UG (haftungsbeschränkt)", + "email": "info@dry.software", + "url": "https://dry.software" + }, + "bugs": { + "url": "https://github.com/nut-tree/nut.js/issues" + }, + "keywords": [ + "GUI", + "Automation", + "mouse", + "keyboard", + "screenshot", + "image", + "desktop", + "screen", + "recognition", + "autohotkey" + ], + "license": "Apache-2.0", + "scripts": { + "clean": "rimraf dist", + "compile": "pnpm run clean && tsc -p .", + "compile:dev": "pnpm run clean && tsc -p . --watch", + "test": "jest --runInBand", + "coverage": "jest --coverage --runInBand", + "coverage:clean": "rimraf coverage", + "publish:next": "pnpm publish --tag next", + "prepublishOnly": "pnpm run compile", + "version": "npm version --no-git-tag -f" + }, + "engines": { + "node": ">=10.15.3" + }, + "dependencies": { + "@nut-tree/libnut-darwin": "2.6.0", + "@nut-tree/libnut-linux": "2.6.0", + "@nut-tree/libnut-win32": "2.6.0" + }, + "devDependencies": { + "@nut-tree/configs": "workspace:*", + "@nut-tree/shared": "workspace:*", + "@nut-tree/provider-interfaces": "workspace:*" + }, + "peerDependencies": { + "@nut-tree/nut-js": "^3" + } +} \ No newline at end of file diff --git a/providers/libnut/tsconfig.json b/providers/libnut/tsconfig.json new file mode 100644 index 00000000..74b93491 --- /dev/null +++ b/providers/libnut/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "@nut-tree/configs/tsconfig/base.json", + "compilerOptions": { + "outDir": "./dist" + }, + "include": [ + "lib/**/*.ts", + "index.ts" + ], + "exclude": [ + "**/*.spec.ts", + "node_modules" + ] +} \ No newline at end of file diff --git a/scratch.js b/scratch.js deleted file mode 100644 index b2116ec2..00000000 --- a/scratch.js +++ /dev/null @@ -1,10 +0,0 @@ -const { sleep, screen, windowWithTitle, getWindows } = require("./dist"); - -(async () => { - await sleep(3000); - const allWindows = await getWindows(); - const allTitles = await Promise.all(allWindows.map((wnd) => wnd.title)); - console.log(allTitles); - const wnd = await screen.find(windowWithTitle(/.*nut.js.*/)); - await screen.highlight(wnd.region); -})();