From 9e78430d5b70d31647cf6dbcbb610f25fe2b011a Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 13:08:35 +0100 Subject: [PATCH 01/27] chore: first input --- arai-frontend/.editorconfig | 16 + arai-frontend/.gitignore | 42 + arai-frontend/README.md | 27 + arai-frontend/angular.json | 108 + arai-frontend/package.json | 49 + arai-frontend/pnpm-lock.yaml | 7252 +++++++++++++++++ arai-frontend/server.ts | 56 + arai-frontend/src/app/app.component.html | 1 + arai-frontend/src/app/app.component.scss | 0 arai-frontend/src/app/app.component.spec.ts | 29 + arai-frontend/src/app/app.component.ts | 14 + arai-frontend/src/app/app.config.server.ts | 11 + arai-frontend/src/app/app.config.ts | 10 + arai-frontend/src/app/app.routes.ts | 3 + arai-frontend/src/app/backend.service.spec.ts | 16 + arai-frontend/src/app/backend.service.ts | 55 + .../app/case-input/case-input.component.html | 1 + .../app/case-input/case-input.component.scss | 0 .../case-input/case-input.component.spec.ts | 23 + .../app/case-input/case-input.component.ts | 23 + .../app/cost-view/cost-view.component.html | 1 + .../app/cost-view/cost-view.component.scss | 0 .../app/cost-view/cost-view.component.spec.ts | 23 + .../src/app/cost-view/cost-view.component.ts | 12 + .../mediators-list.component.html | 1 + .../mediators-list.component.scss | 0 .../mediators-list.component.spec.ts | 23 + .../mediators-list.component.ts | 12 + .../src/app/requests-responses.spec.ts | 7 + arai-frontend/src/app/requests-responses.ts | 78 + arai-frontend/src/assets/.gitkeep | 0 arai-frontend/src/favicon.ico | Bin 0 -> 15086 bytes arai-frontend/src/index.html | 15 + arai-frontend/src/main.server.ts | 7 + arai-frontend/src/main.ts | 6 + arai-frontend/src/styles.scss | 4 + arai-frontend/tsconfig.app.json | 18 + arai-frontend/tsconfig.json | 32 + arai-frontend/tsconfig.spec.json | 14 + 39 files changed, 7989 insertions(+) create mode 100644 arai-frontend/.editorconfig create mode 100644 arai-frontend/.gitignore create mode 100644 arai-frontend/README.md create mode 100644 arai-frontend/angular.json create mode 100644 arai-frontend/package.json create mode 100644 arai-frontend/pnpm-lock.yaml create mode 100644 arai-frontend/server.ts create mode 100644 arai-frontend/src/app/app.component.html create mode 100644 arai-frontend/src/app/app.component.scss create mode 100644 arai-frontend/src/app/app.component.spec.ts create mode 100644 arai-frontend/src/app/app.component.ts create mode 100644 arai-frontend/src/app/app.config.server.ts create mode 100644 arai-frontend/src/app/app.config.ts create mode 100644 arai-frontend/src/app/app.routes.ts create mode 100644 arai-frontend/src/app/backend.service.spec.ts create mode 100644 arai-frontend/src/app/backend.service.ts create mode 100644 arai-frontend/src/app/case-input/case-input.component.html create mode 100644 arai-frontend/src/app/case-input/case-input.component.scss create mode 100644 arai-frontend/src/app/case-input/case-input.component.spec.ts create mode 100644 arai-frontend/src/app/case-input/case-input.component.ts create mode 100644 arai-frontend/src/app/cost-view/cost-view.component.html create mode 100644 arai-frontend/src/app/cost-view/cost-view.component.scss create mode 100644 arai-frontend/src/app/cost-view/cost-view.component.spec.ts create mode 100644 arai-frontend/src/app/cost-view/cost-view.component.ts create mode 100644 arai-frontend/src/app/mediators-list/mediators-list.component.html create mode 100644 arai-frontend/src/app/mediators-list/mediators-list.component.scss create mode 100644 arai-frontend/src/app/mediators-list/mediators-list.component.spec.ts create mode 100644 arai-frontend/src/app/mediators-list/mediators-list.component.ts create mode 100644 arai-frontend/src/app/requests-responses.spec.ts create mode 100644 arai-frontend/src/app/requests-responses.ts create mode 100644 arai-frontend/src/assets/.gitkeep create mode 100644 arai-frontend/src/favicon.ico create mode 100644 arai-frontend/src/index.html create mode 100644 arai-frontend/src/main.server.ts create mode 100644 arai-frontend/src/main.ts create mode 100644 arai-frontend/src/styles.scss create mode 100644 arai-frontend/tsconfig.app.json create mode 100644 arai-frontend/tsconfig.json create mode 100644 arai-frontend/tsconfig.spec.json diff --git a/arai-frontend/.editorconfig b/arai-frontend/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/arai-frontend/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/arai-frontend/.gitignore b/arai-frontend/.gitignore new file mode 100644 index 0000000..0711527 --- /dev/null +++ b/arai-frontend/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/arai-frontend/README.md b/arai-frontend/README.md new file mode 100644 index 0000000..abda4ef --- /dev/null +++ b/arai-frontend/README.md @@ -0,0 +1,27 @@ +# AraiFrontend + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/arai-frontend/angular.json b/arai-frontend/angular.json new file mode 100644 index 0000000..e494aa0 --- /dev/null +++ b/arai-frontend/angular.json @@ -0,0 +1,108 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "arai-frontend": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "dist/arai-frontend", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [], + "server": "src/main.server.ts", + "prerender": true, + "ssr": { + "entry": "server.ts" + } + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "initial", + "maximumWarning": "500kb", + "maximumError": "1mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "arai-frontend:build:production" + }, + "development": { + "buildTarget": "arai-frontend:build:development" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "arai-frontend:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + } +} diff --git a/arai-frontend/package.json b/arai-frontend/package.json new file mode 100644 index 0000000..ed416fa --- /dev/null +++ b/arai-frontend/package.json @@ -0,0 +1,49 @@ +{ + "name": "arai-frontend", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test", + "serve:ssr:arai-frontend": "node dist/arai-frontend/server/server.mjs" + }, + "private": true, + "dependencies": { + "@angular/animations": "^17.0.0", + "@angular/cdk": "^17.2.2", + "@angular/common": "^17.0.0", + "@angular/compiler": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/forms": "^17.0.0", + "@angular/material": "^17.2.2", + "@angular/platform-browser": "^17.0.0", + "@angular/platform-browser-dynamic": "^17.0.0", + "@angular/platform-server": "^17.0.0", + "@angular/router": "^17.0.0", + "@angular/ssr": "^17.0.3", + "express": "^4.18.2", + "rxjs": "~7.8.0", + "socket.io-client": "^4.7.4", + "tslib": "^2.3.0", + "uuid": "^9.0.1", + "zone.js": "~0.14.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^17.0.3", + "@angular/cli": "^17.0.3", + "@angular/compiler-cli": "^17.0.0", + "@types/express": "^4.17.17", + "@types/jasmine": "~5.1.0", + "@types/node": "^18.18.0", + "@types/uuid": "^9.0.8", + "jasmine-core": "~5.1.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.2.2" + } +} \ No newline at end of file diff --git a/arai-frontend/pnpm-lock.yaml b/arai-frontend/pnpm-lock.yaml new file mode 100644 index 0000000..9585ce4 --- /dev/null +++ b/arai-frontend/pnpm-lock.yaml @@ -0,0 +1,7252 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@angular/animations': + specifier: ^17.0.0 + version: 17.2.4(@angular/core@17.2.4) + '@angular/common': + specifier: ^17.0.0 + version: 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/compiler': + specifier: ^17.0.0 + version: 17.2.4(@angular/core@17.2.4) + '@angular/core': + specifier: ^17.0.0 + version: 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/forms': + specifier: ^17.0.0 + version: 17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) + '@angular/platform-browser': + specifier: ^17.0.0 + version: 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + '@angular/platform-browser-dynamic': + specifier: ^17.0.0 + version: 17.2.4(@angular/common@17.2.4)(@angular/compiler@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4) + '@angular/platform-server': + specifier: ^17.0.0 + version: 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/compiler@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4) + '@angular/router': + specifier: ^17.0.0 + version: 17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) + '@angular/ssr': + specifier: ^17.0.3 + version: 17.2.3(@angular/common@17.2.4)(@angular/core@17.2.4) + express: + specifier: ^4.18.2 + version: 4.18.3 + rxjs: + specifier: ~7.8.0 + version: 7.8.1 + socket.io-client: + specifier: ^4.7.4 + version: 4.7.4 + tslib: + specifier: ^2.3.0 + version: 2.6.2 + uuid: + specifier: ^9.0.1 + version: 9.0.1 + zone.js: + specifier: ~0.14.2 + version: 0.14.4 + +devDependencies: + '@angular-devkit/build-angular': + specifier: ^17.0.3 + version: 17.2.3(@angular/compiler-cli@17.2.4)(@angular/platform-server@17.2.4)(@types/express@4.17.21)(@types/node@18.19.22)(karma@6.4.3)(typescript@5.2.2) + '@angular/cli': + specifier: ^17.0.3 + version: 17.2.3 + '@angular/compiler-cli': + specifier: ^17.0.0 + version: 17.2.4(@angular/compiler@17.2.4)(typescript@5.2.2) + '@types/express': + specifier: ^4.17.17 + version: 4.17.21 + '@types/jasmine': + specifier: ~5.1.0 + version: 5.1.4 + '@types/node': + specifier: ^18.18.0 + version: 18.19.22 + '@types/uuid': + specifier: ^9.0.8 + version: 9.0.8 + jasmine-core: + specifier: ~5.1.0 + version: 5.1.2 + karma: + specifier: ~6.4.0 + version: 6.4.3 + karma-chrome-launcher: + specifier: ~3.2.0 + version: 3.2.0 + karma-coverage: + specifier: ~2.2.0 + version: 2.2.1 + karma-jasmine: + specifier: ~5.1.0 + version: 5.1.0(karma@6.4.3) + karma-jasmine-html-reporter: + specifier: ~2.1.0 + version: 2.1.0(jasmine-core@5.1.2)(karma-jasmine@5.1.0)(karma@6.4.3) + typescript: + specifier: ~5.2.2 + version: 5.2.2 + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@ampproject/remapping@2.3.0: + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@angular-devkit/architect@0.1702.3: + resolution: {integrity: sha512-4jeBgtBIZxAeJyiwSdbRE4+rWu34j0UMCKia8s7473rKj0Tn4+dXlHmA/kuFYIp6K/9pE/hBoeUFxLNA/DZuRQ==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 17.2.3 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/build-angular@17.2.3(@angular/compiler-cli@17.2.4)(@angular/platform-server@17.2.4)(@types/express@4.17.21)(@types/node@18.19.22)(karma@6.4.3)(typescript@5.2.2): + resolution: {integrity: sha512-AZsEHZj+k2Lxb7uQUwfEpSE6TvQhCoIgP6XLKgKxZHUOiTUVXDj84WhNcbup5SsSG1cafmoVN7APxxuSwHcoeg==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^17.0.0 + '@angular/localize': ^17.0.0 + '@angular/platform-server': ^17.0.0 + '@angular/service-worker': ^17.0.0 + '@web/test-runner': ^0.18.0 + browser-sync: ^3.0.2 + jest: ^29.5.0 + jest-environment-jsdom: ^29.5.0 + karma: ^6.3.0 + ng-packagr: ^17.0.0 + protractor: ^7.0.0 + tailwindcss: ^2.0.0 || ^3.0.0 + typescript: '>=5.2 <5.4' + peerDependenciesMeta: + '@angular/localize': + optional: true + '@angular/platform-server': + optional: true + '@angular/service-worker': + optional: true + '@web/test-runner': + optional: true + browser-sync: + optional: true + jest: + optional: true + jest-environment-jsdom: + optional: true + karma: + optional: true + ng-packagr: + optional: true + protractor: + optional: true + tailwindcss: + optional: true + dependencies: + '@ampproject/remapping': 2.2.1 + '@angular-devkit/architect': 0.1702.3 + '@angular-devkit/build-webpack': 0.1702.3(webpack-dev-server@4.15.1)(webpack@5.90.1) + '@angular-devkit/core': 17.2.3 + '@angular/compiler-cli': 17.2.4(@angular/compiler@17.2.4)(typescript@5.2.2) + '@angular/platform-server': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/compiler@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4) + '@babel/core': 7.23.9 + '@babel/generator': 7.23.6 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) + '@babel/preset-env': 7.23.9(@babel/core@7.23.9) + '@babel/runtime': 7.23.9 + '@discoveryjs/json-ext': 0.5.7 + '@ngtools/webpack': 17.2.3(@angular/compiler-cli@17.2.4)(typescript@5.2.2)(webpack@5.90.1) + '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.0.12) + ansi-colors: 4.1.3 + autoprefixer: 10.4.17(postcss@8.4.35) + babel-loader: 9.1.3(@babel/core@7.23.9)(webpack@5.90.1) + babel-plugin-istanbul: 6.1.1 + browserslist: 4.23.0 + copy-webpack-plugin: 11.0.0(webpack@5.90.1) + critters: 0.0.20 + css-loader: 6.10.0(webpack@5.90.1) + esbuild-wasm: 0.20.0 + fast-glob: 3.3.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + https-proxy-agent: 7.0.2 + inquirer: 9.2.14 + jsonc-parser: 3.2.1 + karma: 6.4.3 + karma-source-map-support: 1.4.0 + less: 4.2.0 + less-loader: 11.1.0(less@4.2.0)(webpack@5.90.1) + license-webpack-plugin: 4.0.2(webpack@5.90.1) + loader-utils: 3.2.1 + magic-string: 0.30.7 + mini-css-extract-plugin: 2.8.0(webpack@5.90.1) + mrmime: 2.0.0 + open: 8.4.2 + ora: 5.4.1 + parse5-html-rewriting-stream: 7.0.0 + picomatch: 4.0.1 + piscina: 4.3.1 + postcss: 8.4.35 + postcss-loader: 8.1.0(postcss@8.4.35)(typescript@5.2.2)(webpack@5.90.1) + resolve-url-loader: 5.0.0 + rxjs: 7.8.1 + sass: 1.70.0 + sass-loader: 14.1.0(sass@1.70.0)(webpack@5.90.1) + semver: 7.6.0 + source-map-loader: 5.0.0(webpack@5.90.1) + source-map-support: 0.5.21 + terser: 5.27.0 + tree-kill: 1.2.2 + tslib: 2.6.2 + typescript: 5.2.2 + undici: 6.6.2 + vite: 5.0.12(@types/node@18.19.22)(less@4.2.0)(sass@1.70.0)(terser@5.27.0) + watchpack: 2.4.0 + webpack: 5.90.1(esbuild@0.20.0) + webpack-dev-middleware: 6.1.1(webpack@5.90.1) + webpack-dev-server: 4.15.1(webpack@5.90.1) + webpack-merge: 5.10.0 + webpack-subresource-integrity: 5.1.0(webpack@5.90.1) + optionalDependencies: + esbuild: 0.20.0 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - '@types/express' + - '@types/node' + - bufferutil + - chokidar + - debug + - html-webpack-plugin + - lightningcss + - node-sass + - sass-embedded + - stylus + - sugarss + - supports-color + - uglify-js + - utf-8-validate + - webpack-cli + dev: true + + /@angular-devkit/build-webpack@0.1702.3(webpack-dev-server@4.15.1)(webpack@5.90.1): + resolution: {integrity: sha512-G9F2Ori8WxJtMvOQGxTdg7d+5aAO1IPeEtMiZwFPrw65Ey6Gvfm0h2+3FnQdzeKrZmGaTk5E6gffHXJJQfCnmQ==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + webpack: ^5.30.0 + webpack-dev-server: ^4.0.0 + dependencies: + '@angular-devkit/architect': 0.1702.3 + rxjs: 7.8.1 + webpack: 5.90.1(esbuild@0.20.0) + webpack-dev-server: 4.15.1(webpack@5.90.1) + transitivePeerDependencies: + - chokidar + dev: true + + /@angular-devkit/core@17.2.3: + resolution: {integrity: sha512-A7WWl1/VsZw6utFFPBib1wSbAB5OeBgAgQmVpVe9wW8u9UZa6CLc7b3InWtRRyBXTo9Sa5GNZDFfwlXhy3iW3w==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + jsonc-parser: 3.2.1 + picomatch: 4.0.1 + rxjs: 7.8.1 + source-map: 0.7.4 + dev: true + + /@angular-devkit/schematics@17.2.3: + resolution: {integrity: sha512-JZCzHHheotv+iJ4p6qLc3pEi2M8NO12Slo6uiCg2T9B01glAcJB7DA1nwqjwD1cElf24Pt0C+HI0r+Lng48IsQ==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 17.2.3 + jsonc-parser: 3.2.1 + magic-string: 0.30.7 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@angular/animations@17.2.4(@angular/core@17.2.4): + resolution: {integrity: sha512-eTjD8XeioL1Xj+W6iQayOh2JBCfjkg+MG3wzyEW0jhetE/N+wm2xbI1aub2pYplKsu96hOih3lfowYt7qIKGfw==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.2.4 + dependencies: + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + tslib: 2.6.2 + + /@angular/cli@17.2.3: + resolution: {integrity: sha512-GIF9NF4t8PiHS4wt6baw1hECfmMOmNHvDAuT12/xoAueOairxIQ+AX13WaEHMJriWujm31TjqbwXmhPxMSEQpw==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + hasBin: true + dependencies: + '@angular-devkit/architect': 0.1702.3 + '@angular-devkit/core': 17.2.3 + '@angular-devkit/schematics': 17.2.3 + '@schematics/angular': 17.2.3 + '@yarnpkg/lockfile': 1.1.0 + ansi-colors: 4.1.3 + ini: 4.1.1 + inquirer: 9.2.14 + jsonc-parser: 3.2.1 + npm-package-arg: 11.0.1 + npm-pick-manifest: 9.0.0 + open: 8.4.2 + ora: 5.4.1 + pacote: 17.0.6 + resolve: 1.22.8 + semver: 7.6.0 + symbol-observable: 4.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - chokidar + - supports-color + dev: true + + /@angular/common@17.2.4(@angular/core@17.2.4)(rxjs@7.8.1): + resolution: {integrity: sha512-ymzDHZPQWpBKVQ7lPZucU+vBSb70Re6y5TKzkOX7oYE8Z1+tiNGLvfmzGsO2/N0lvwyZWXjkdXYEDON2hIlZ1Q==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.2.4 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + rxjs: 7.8.1 + tslib: 2.6.2 + + /@angular/compiler-cli@17.2.4(@angular/compiler@17.2.4)(typescript@5.2.2): + resolution: {integrity: sha512-VGQx1YoYuifQZNj2/nGMEyYVYvXSWrt1ZXK43dgxPDH3jCWNncOBUYtmyCmYvxKvDz0aDO3KL8cro8c4+N0pPw==} + engines: {node: ^18.13.0 || >=20.9.0} + hasBin: true + peerDependencies: + '@angular/compiler': 17.2.4 + typescript: '>=5.2 <5.4' + dependencies: + '@angular/compiler': 17.2.4(@angular/core@17.2.4) + '@babel/core': 7.23.9 + '@jridgewell/sourcemap-codec': 1.4.15 + chokidar: 3.6.0 + convert-source-map: 1.9.0 + reflect-metadata: 0.2.1 + semver: 7.6.0 + tslib: 2.6.2 + typescript: 5.2.2 + yargs: 17.7.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@angular/compiler@17.2.4(@angular/core@17.2.4): + resolution: {integrity: sha512-McSsBcoHhMkaQpHM5/wTosAKTzJY5uE6ji3z+ec5GrIJhV7jrVfa67+RUoUzHe+rlD/7oQbX1L/OaHKDP8+/mA==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/core': 17.2.4 + peerDependenciesMeta: + '@angular/core': + optional: true + dependencies: + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + tslib: 2.6.2 + + /@angular/core@17.2.4(rxjs@7.8.1)(zone.js@0.14.4): + resolution: {integrity: sha512-5Bko+vk7H1Ce57MHuRcpZtq2Srq5euufSvwg0piPozp0yYmCqNoYN7c128kgi6PbiPQeAnKRzRbEuYd1YCU4Tw==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.14.0 + dependencies: + rxjs: 7.8.1 + tslib: 2.6.2 + zone.js: 0.14.4 + + /@angular/forms@17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): + resolution: {integrity: sha512-flubCxK6Rc1YmAu23+o+NwqaIWbJ4MIYij05b1GlpRKB5GRX6M0fOl7uRHZmA6dC4xZGt/MUklRqb71T7dJ5JQ==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.2.4 + '@angular/core': 17.2.4 + '@angular/platform-browser': 17.2.4 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + rxjs: 7.8.1 + tslib: 2.6.2 + dev: false + + /@angular/platform-browser-dynamic@17.2.4(@angular/common@17.2.4)(@angular/compiler@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4): + resolution: {integrity: sha512-tNS6WexBbdks4uiB0JfPjUG2/rJ/5wuWr9C11CIgsMo+Onbw49imwDQQTxsx1A3misVb72mUufRza9DcxfSBxg==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.2.4 + '@angular/compiler': 17.2.4 + '@angular/core': 17.2.4 + '@angular/platform-browser': 17.2.4 + dependencies: + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/compiler': 17.2.4(@angular/core@17.2.4) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + tslib: 2.6.2 + dev: false + + /@angular/platform-browser@17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4): + resolution: {integrity: sha512-A1jkx4ApIx76VDxm8UZLKEq+gwpKZb4qjzCTBDfjOpXB0MJQ5IaYdCrV0E/vPCKZhIfjbEHK+9H1vHRYDCcXtA==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/animations': 17.2.4 + '@angular/common': 17.2.4 + '@angular/core': 17.2.4 + peerDependenciesMeta: + '@angular/animations': + optional: true + dependencies: + '@angular/animations': 17.2.4(@angular/core@17.2.4) + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + tslib: 2.6.2 + + /@angular/platform-server@17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/compiler@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4): + resolution: {integrity: sha512-xTo7CY0CGKAv9Eqb9N0fVRxRCB70tgh4EXVbnB0sJamv3PibxmXl5xHSkxREZ5ZZfTkQmt+tSgMz0qtghAvlrw==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/animations': 17.2.4 + '@angular/common': 17.2.4 + '@angular/compiler': 17.2.4 + '@angular/core': 17.2.4 + '@angular/platform-browser': 17.2.4 + dependencies: + '@angular/animations': 17.2.4(@angular/core@17.2.4) + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/compiler': 17.2.4(@angular/core@17.2.4) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + tslib: 2.6.2 + xhr2: 0.2.1 + + /@angular/router@17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): + resolution: {integrity: sha512-HnEq6OtyXVJx24Vps0N2GsdvynQ8Mv6twjGmhBlo3x/19ay0WEHdHdsayOSKFvxXg9LCLPnSDYlmpk074IsgqA==} + engines: {node: ^18.13.0 || >=20.9.0} + peerDependencies: + '@angular/common': 17.2.4 + '@angular/core': 17.2.4 + '@angular/platform-browser': 17.2.4 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + rxjs: 7.8.1 + tslib: 2.6.2 + dev: false + + /@angular/ssr@17.2.3(@angular/common@17.2.4)(@angular/core@17.2.4): + resolution: {integrity: sha512-i3RP55GiwDdO42mrTNRPZkhyIHkUXVE5F/BCH54R91V4JeLnhvhKdzsSjABr02aSZkC2BXSbkrTHvlwVQ0P6lw==} + peerDependencies: + '@angular/common': ^17.0.0 + '@angular/core': ^17.0.0 + dependencies: + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + critters: 0.0.20 + tslib: 2.6.2 + dev: false + + /@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.24.0 + '@babel/parser': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + 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/core@7.24.0: + resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.3.0 + '@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.24.0) + '@babel/helpers': 7.24.0 + '@babel/parser': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + 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.24.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + 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.23.0 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.24.0(@babel/core@7.23.9): + resolution: {integrity: sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + dev: true + + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider@0.6.0(@babel/core@7.23.9): + resolution: {integrity: sha512-efwOM90nCG6YeT8o3PCyBVSxRfmILxCNL+TNI8CGQl7a62M0Wd9VkV+XHwIlkOz1r4b+lxu6gBjdWiOMdUCrCQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + 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.24.0 + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + 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.24.0 + 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-module-transforms@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@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-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/helper-plugin-utils@7.24.0: + resolution: {integrity: sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9): + resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-wrap-function': 7.22.20 + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + 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-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + 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.24.0 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.24.0 + 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.24.0 + 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/helper-wrap-function@7.22.20: + resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.23.0 + '@babel/template': 7.24.0 + '@babel/types': 7.24.0 + dev: true + + /@babel/helpers@7.24.0: + resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + 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.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + dev: true + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + 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-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 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.24.0 + 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.24.0 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + 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.24.0 + 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.24.0 + 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.24.0 + 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.24.0 + 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.24.0 + 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.24.0 + 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.24.0 + 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.24.0 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + 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.24.0 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/template': 7.24.0 + dev: true + + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.24.0(@babel/core@7.23.9): + resolution: {integrity: sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9): + resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.24.0(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + regenerator-transform: 0.15.2 + dev: true + + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-runtime@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.24.0 + babel-plugin-polyfill-corejs2: 0.4.9(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: true + + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9): + resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.24.0 + dev: true + + /@babel/preset-env@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-attributes': 7.23.3(@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-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-object-rest-spread': 7.24.0(@babel/core@7.23.9) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) + babel-plugin-polyfill-corejs2: 0.4.9(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) + core-js-compat: 3.36.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.24.0 + '@babel/types': 7.24.0 + esutils: 2.0.3 + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + 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: true + + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + dev: true + + /@babel/traverse@7.24.0: + resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} + 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.24.0 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + 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 + + /@colors/colors@1.5.0: + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + dev: true + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: true + + /@esbuild/aix-ppc64@0.19.12: + resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/aix-ppc64@0.20.0: + resolution: {integrity: sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.12: + resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.20.0: + resolution: {integrity: sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.12: + resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.20.0: + resolution: {integrity: sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.12: + resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.20.0: + resolution: {integrity: sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.12: + resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.20.0: + resolution: {integrity: sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.12: + resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.20.0: + resolution: {integrity: sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.12: + resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.20.0: + resolution: {integrity: sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.12: + resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.20.0: + resolution: {integrity: sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.12: + resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.20.0: + resolution: {integrity: sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.12: + resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.20.0: + resolution: {integrity: sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.12: + resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.20.0: + resolution: {integrity: sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.12: + resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.20.0: + resolution: {integrity: sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.12: + resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.20.0: + resolution: {integrity: sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.12: + resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.20.0: + resolution: {integrity: sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.12: + resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.20.0: + resolution: {integrity: sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.12: + resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.20.0: + resolution: {integrity: sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.12: + resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.20.0: + resolution: {integrity: sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.12: + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.20.0: + resolution: {integrity: sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.12: + resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.20.0: + resolution: {integrity: sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.12: + resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.20.0: + resolution: {integrity: sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.12: + resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.20.0: + resolution: {integrity: sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.12: + resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.20.0: + resolution: {integrity: sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.12: + resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.20.0: + resolution: {integrity: sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@fastify/busboy@2.1.1: + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + 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 + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@leichtgewicht/ip-codec@2.0.4: + resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} + dev: true + + /@ljharb/through@2.3.13: + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + dev: true + + /@ngtools/webpack@17.2.3(@angular/compiler-cli@17.2.4)(typescript@5.2.2)(webpack@5.90.1): + resolution: {integrity: sha512-+d5Q7/ctDHePYZXcg0GFwL/AbyEkPMHoCiT7pmLI0B0n87D/mYKK/qmVN1VANBrFLTuIe8RtcL0aJ9pw8HAxWA==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + peerDependencies: + '@angular/compiler-cli': ^17.0.0 + typescript: '>=5.2 <5.4' + webpack: ^5.54.0 + dependencies: + '@angular/compiler-cli': 17.2.4(@angular/compiler@17.2.4)(typescript@5.2.2) + typescript: 5.2.2 + webpack: 5.90.1(esbuild@0.20.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 + + /@npmcli/agent@2.2.1: + resolution: {integrity: sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + agent-base: 7.1.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + lru-cache: 10.2.0 + socks-proxy-agent: 8.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@npmcli/fs@3.1.0: + resolution: {integrity: sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.6.0 + dev: true + + /@npmcli/git@5.0.4: + resolution: {integrity: sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/promise-spawn': 7.0.1 + lru-cache: 10.2.0 + npm-pick-manifest: 9.0.0 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.0 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/installed-package-contents@2.0.2: + resolution: {integrity: sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + npm-bundled: 3.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /@npmcli/node-gyp@3.0.0: + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@npmcli/package-json@5.0.0: + resolution: {integrity: sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/git': 5.0.4 + glob: 10.3.10 + hosted-git-info: 7.0.1 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + proc-log: 3.0.0 + semver: 7.6.0 + transitivePeerDependencies: + - bluebird + dev: true + + /@npmcli/promise-spawn@7.0.1: + resolution: {integrity: sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + which: 4.0.0 + dev: true + + /@npmcli/run-script@7.0.4: + resolution: {integrity: sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/package-json': 5.0.0 + '@npmcli/promise-spawn': 7.0.1 + node-gyp: 10.0.1 + which: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm-eabi@4.12.1: + resolution: {integrity: sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.12.1: + resolution: {integrity: sha512-wlzcWiH2Ir7rdMELxFE5vuM7D6TsOcJ2Yw0c3vaBR3VOsJFVTx9xvwnAvhgU5Ii8Gd6+I11qNHwndDscIm0HXg==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.12.1: + resolution: {integrity: sha512-YRXa1+aZIFN5BaImK+84B3uNK8C6+ynKLPgvn29X9s0LTVCByp54TB7tdSMHDR7GTV39bz1lOmlLDuedgTwwHg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.12.1: + resolution: {integrity: sha512-opjWJ4MevxeA8FhlngQWPBOvVWYNPFkq6/25rGgG+KOy0r8clYwL1CFd+PGwRqqMFVQ4/Qd3sQu5t7ucP7C/Uw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.12.1: + resolution: {integrity: sha512-uBkwaI+gBUlIe+EfbNnY5xNyXuhZbDSx2nzzW8tRMjUmpScd6lCQYKY2V9BATHtv5Ef2OBq6SChEP8h+/cxifQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.12.1: + resolution: {integrity: sha512-0bK9aG1kIg0Su7OcFTlexkVeNZ5IzEsnz1ept87a0TUgZ6HplSgkJAnFpEVRW7GRcikT4GlPV0pbtVedOaXHQQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.12.1: + resolution: {integrity: sha512-qB6AFRXuP8bdkBI4D7UPUbE7OQf7u5OL+R94JE42Z2Qjmyj74FtDdLGeriRyBDhm4rQSvqAGCGC01b8Fu2LthQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.12.1: + resolution: {integrity: sha512-sHig3LaGlpNgDj5o8uPEoGs98RII8HpNIqFtAI8/pYABO8i0nb1QzT0JDoXF/pxzqO+FkxvwkHZo9k0NJYDedg==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.12.1: + resolution: {integrity: sha512-nD3YcUv6jBJbBNFvSbp0IV66+ba/1teuBcu+fBBPZ33sidxitc6ErhON3JNavaH8HlswhWMC3s5rgZpM4MtPqQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.12.1: + resolution: {integrity: sha512-7/XVZqgBby2qp/cO0TQ8uJK+9xnSdJ9ct6gSDdEr4MfABrjTyrW6Bau7HQ73a2a5tPB7hno49A0y1jhWGDN9OQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.12.1: + resolution: {integrity: sha512-CYc64bnICG42UPL7TrhIwsJW4QcKkIt9gGlj21gq3VV0LL6XNb1yAdHVp1pIi9gkts9gGcT3OfUYHjGP7ETAiw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.12.1: + resolution: {integrity: sha512-LN+vnlZ9g0qlHGlS920GR4zFCqAwbv2lULrR29yGaWP9u7wF5L7GqWu9Ah6/kFZPXPUkpdZwd//TNR+9XC9hvA==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.12.1: + resolution: {integrity: sha512-n+vkrSyphvmU0qkQ6QBNXCGr2mKjhP08mPRM/Xp5Ck2FV4NrHU+y6axzDeixUrCBHVUS51TZhjqrKBBsHLKb2Q==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@schematics/angular@17.2.3: + resolution: {integrity: sha512-rXsYmWC1a8uvGTC6RwICwg1GLLQlTw8jOSqHf6T2AFMzP4p1FV3/GFSGyPIMl9yPwn6JqbmfQy3Bvj0stQNM0Q==} + engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + dependencies: + '@angular-devkit/core': 17.2.3 + '@angular-devkit/schematics': 17.2.3 + jsonc-parser: 3.2.1 + transitivePeerDependencies: + - chokidar + dev: true + + /@sigstore/bundle@2.2.0: + resolution: {integrity: sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.3.0 + dev: true + + /@sigstore/core@1.0.0: + resolution: {integrity: sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@sigstore/protobuf-specs@0.3.0: + resolution: {integrity: sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /@sigstore/sign@2.2.3: + resolution: {integrity: sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.0.0 + '@sigstore/protobuf-specs': 0.3.0 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/tuf@2.3.1: + resolution: {integrity: sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/protobuf-specs': 0.3.0 + tuf-js: 2.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@sigstore/verify@1.1.0: + resolution: {integrity: sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.0.0 + '@sigstore/protobuf-specs': 0.3.0 + dev: true + + /@socket.io/component-emitter@3.1.0: + resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + + /@tufjs/canonical-json@2.0.0: + resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} + engines: {node: ^16.14.0 || >=18.0.0} + dev: true + + /@tufjs/models@2.0.0: + resolution: {integrity: sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/canonical-json': 2.0.0 + minimatch: 9.0.3 + dev: true + + /@types/body-parser@1.19.5: + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + dependencies: + '@types/connect': 3.4.38 + '@types/node': 18.19.22 + dev: true + + /@types/bonjour@3.5.13: + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + dependencies: + '@types/node': 18.19.22 + dev: true + + /@types/connect-history-api-fallback@1.5.4: + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + dependencies: + '@types/express-serve-static-core': 4.17.43 + '@types/node': 18.19.22 + dev: true + + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 18.19.22 + dev: true + + /@types/cookie@0.4.1: + resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} + dev: true + + /@types/cors@2.8.17: + resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} + dependencies: + '@types/node': 18.19.22 + dev: true + + /@types/eslint-scope@3.7.7: + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + dependencies: + '@types/eslint': 8.56.5 + '@types/estree': 1.0.5 + dev: true + + /@types/eslint@8.56.5: + resolution: {integrity: sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true + + /@types/express-serve-static-core@4.17.43: + resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} + dependencies: + '@types/node': 18.19.22 + '@types/qs': 6.9.12 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + dev: true + + /@types/express@4.17.21: + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.17.43 + '@types/qs': 6.9.12 + '@types/serve-static': 1.15.5 + dev: true + + /@types/http-errors@2.0.4: + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + dev: true + + /@types/http-proxy@1.17.14: + resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} + dependencies: + '@types/node': 18.19.22 + dev: true + + /@types/jasmine@5.1.4: + resolution: {integrity: sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==} + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/mime@1.3.5: + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + dev: true + + /@types/mime@3.0.4: + resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} + dev: true + + /@types/node-forge@1.3.11: + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + dependencies: + '@types/node': 18.19.22 + dev: true + + /@types/node@18.19.22: + resolution: {integrity: sha512-p3pDIfuMg/aXBmhkyanPshdfJuX5c5+bQjYLIikPLXAUycEogij/c50n/C+8XOA5L93cU4ZRXtn+dNQGi0IZqQ==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/qs@6.9.12: + resolution: {integrity: sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==} + dev: true + + /@types/range-parser@1.2.7: + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + dev: true + + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + dev: true + + /@types/send@0.17.4: + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + dependencies: + '@types/mime': 1.3.5 + '@types/node': 18.19.22 + dev: true + + /@types/serve-index@1.9.4: + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + dependencies: + '@types/express': 4.17.21 + dev: true + + /@types/serve-static@1.15.5: + resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} + dependencies: + '@types/http-errors': 2.0.4 + '@types/mime': 3.0.4 + '@types/node': 18.19.22 + dev: true + + /@types/sockjs@0.3.36: + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + dependencies: + '@types/node': 18.19.22 + dev: true + + /@types/uuid@9.0.8: + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + dev: true + + /@types/ws@8.5.10: + resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + dependencies: + '@types/node': 18.19.22 + dev: true + + /@vitejs/plugin-basic-ssl@1.1.0(vite@5.0.12): + resolution: {integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==} + engines: {node: '>=14.6.0'} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + vite: 5.0.12(@types/node@18.19.22)(less@4.2.0)(sass@1.70.0)(terser@5.27.0) + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + dev: true + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + dev: true + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + dev: true + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + dev: true + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + dev: true + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + dev: true + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + dev: true + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + dev: true + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + dev: true + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + dev: true + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /@yarnpkg/lockfile@1.1.0: + resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} + dev: true + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + /acorn-import-assertions@1.9.0(acorn@8.11.3): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /adjust-sourcemap-loader@4.0.0: + resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} + engines: {node: '>=8.9'} + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.0 + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + 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 + + /ajv-formats@2.1.1(ajv@8.12.0): + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + dependencies: + ajv: 8.12.0 + dev: true + + /ajv-keywords@3.5.2(ajv@6.12.6): + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv-keywords@5.1.0(ajv@8.12.0): + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + dependencies: + ajv: 8.12.0 + fast-deep-equal: 3.1.3 + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + 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-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + 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-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 + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /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 + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + /autoprefixer@10.4.17(postcss@8.4.35): + resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.23.0 + caniuse-lite: 1.0.30001596 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.35 + postcss-value-parser: 4.2.0 + dev: true + + /babel-loader@9.1.3(@babel/core@7.23.9)(webpack@5.90.1): + resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + dependencies: + '@babel/core': 7.23.9 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.90.1(esbuild@0.20.0) + 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.24.0 + '@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-polyfill-corejs2@0.4.9(@babel/core@7.23.9): + resolution: {integrity: sha512-BXIWIaO3MewbXWdJdIGDWZurv5OGJlFNo7oy20DpB3kWDVJLcY2NRypRsRUbRe5KMqSNLuOGnWTFQQtY5MAsRw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.6.0(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + core-js-compat: 3.36.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) + transitivePeerDependencies: + - supports-color + 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: true + + /base64id@2.0.0: + resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} + engines: {node: ^4.5.0 || >= 5.9} + dev: true + + /batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + dev: true + + /big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + + /body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + /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.23.0: + resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001596 + electron-to-chromium: 1.4.699 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.23.0) + dev: true + + /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: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.6.0 + dev: true + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + /cacache@18.0.2: + resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/fs': 3.1.0 + fs-minipass: 3.0.3 + glob: 10.3.10 + lru-cache: 10.2.0 + minipass: 7.0.4 + minipass-collect: 2.0.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.5 + tar: 6.2.0 + unique-filename: 3.0.0 + 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 + + /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 + + /caniuse-lite@1.0.30001596: + resolution: {integrity: sha512-zpkZ+kEr6We7w63ORkoJ2pOfBwBkY/bJrG/UZ90qNb45Isblu8wzDgevEOrRL1r9dWayHjYiiyCMEXPn4DweGQ==} + 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 + + /chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + 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-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + dev: true + + /cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + dev: true + + /cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.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-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + dev: true + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + 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 + + /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==} + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + dev: true + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + + /content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + /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 + + /cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + /cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + dev: true + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + /copy-anything@2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /copy-webpack-plugin@11.0.0(webpack@5.90.1): + resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.1.0 + dependencies: + fast-glob: 3.3.2 + glob-parent: 6.0.2 + globby: 13.2.2 + normalize-path: 3.0.0 + schema-utils: 4.2.0 + serialize-javascript: 6.0.2 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /core-js-compat@3.36.0: + resolution: {integrity: sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==} + dependencies: + browserslist: 4.23.0 + dev: true + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cors@2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig@9.0.0(typescript@5.2.2): + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + typescript: 5.2.2 + dev: true + + /critters@0.0.20: + resolution: {integrity: sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==} + dependencies: + chalk: 4.1.2 + css-select: 5.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + htmlparser2: 8.0.2 + postcss: 8.4.35 + pretty-bytes: 5.6.0 + + /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 + + /css-loader@6.10.0(webpack@5.90.1): + resolution: {integrity: sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.35) + postcss-modules-scope: 3.1.1(postcss@8.4.35) + postcss-modules-values: 4.0.0(postcss@8.4.35) + postcss-value-parser: 4.2.0 + semver: 7.6.0 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /custom-event@1.0.1: + resolution: {integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==} + dev: true + + /date-format@4.0.14: + resolution: {integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==} + engines: {node: '>=4.0'} + dev: true + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /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 + + /default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + dependencies: + execa: 5.1.1 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + 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 + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: true + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + /detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /di@0.0.1: + resolution: {integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + dependencies: + '@leichtgewicht/ip-codec': 2.0.4 + dev: true + + /dom-serialize@2.2.1: + resolution: {integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==} + dependencies: + custom-event: 1.0.1 + ent: 2.2.0 + extend: 3.0.2 + void-elements: 2.0.1 + dev: true + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + /electron-to-chromium@1.4.699: + resolution: {integrity: sha512-I7q3BbQi6e4tJJN5CRcyvxhK0iJb34TV8eJQcgh+fR2fQ8miMgZcEInckCo1U9exDHbfz7DLDnFn8oqH/VcRKw==} + 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 + + /emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + dev: true + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + /encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + dev: true + optional: true + + /engine.io-client@6.5.3: + resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-parser: 5.2.2 + ws: 8.11.0 + xmlhttprequest-ssl: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /engine.io-parser@5.2.2: + resolution: {integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==} + engines: {node: '>=10.0.0'} + + /engine.io@6.5.4: + resolution: {integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==} + engines: {node: '>=10.2.0'} + dependencies: + '@types/cookie': 0.4.1 + '@types/cors': 2.8.17 + '@types/node': 18.19.22 + accepts: 1.3.8 + base64id: 2.0.0 + cookie: 0.4.2 + cors: 2.8.5 + debug: 4.3.4 + engine.io-parser: 5.2.2 + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /enhanced-resolve@5.15.1: + resolution: {integrity: sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + + /ent@2.2.0: + resolution: {integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + /env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + dev: true + + /err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + dev: true + + /errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + /es-module-lexer@1.4.1: + resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} + dev: true + + /esbuild-wasm@0.20.0: + resolution: {integrity: sha512-Lc9KeQCg1Zf8kCtfDXgy29rx0x8dOuhDWbkP76Wc64q7ctOOc1Zv1C39AxiE+y4N6ONyXtJk4HKpM7jlU7/jSA==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.12 + '@esbuild/android-arm': 0.19.12 + '@esbuild/android-arm64': 0.19.12 + '@esbuild/android-x64': 0.19.12 + '@esbuild/darwin-arm64': 0.19.12 + '@esbuild/darwin-x64': 0.19.12 + '@esbuild/freebsd-arm64': 0.19.12 + '@esbuild/freebsd-x64': 0.19.12 + '@esbuild/linux-arm': 0.19.12 + '@esbuild/linux-arm64': 0.19.12 + '@esbuild/linux-ia32': 0.19.12 + '@esbuild/linux-loong64': 0.19.12 + '@esbuild/linux-mips64el': 0.19.12 + '@esbuild/linux-ppc64': 0.19.12 + '@esbuild/linux-riscv64': 0.19.12 + '@esbuild/linux-s390x': 0.19.12 + '@esbuild/linux-x64': 0.19.12 + '@esbuild/netbsd-x64': 0.19.12 + '@esbuild/openbsd-x64': 0.19.12 + '@esbuild/sunos-x64': 0.19.12 + '@esbuild/win32-arm64': 0.19.12 + '@esbuild/win32-ia32': 0.19.12 + '@esbuild/win32-x64': 0.19.12 + dev: true + + /esbuild@0.20.0: + resolution: {integrity: sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.0 + '@esbuild/android-arm': 0.20.0 + '@esbuild/android-arm64': 0.20.0 + '@esbuild/android-x64': 0.20.0 + '@esbuild/darwin-arm64': 0.20.0 + '@esbuild/darwin-x64': 0.20.0 + '@esbuild/freebsd-arm64': 0.20.0 + '@esbuild/freebsd-x64': 0.20.0 + '@esbuild/linux-arm': 0.20.0 + '@esbuild/linux-arm64': 0.20.0 + '@esbuild/linux-ia32': 0.20.0 + '@esbuild/linux-loong64': 0.20.0 + '@esbuild/linux-mips64el': 0.20.0 + '@esbuild/linux-ppc64': 0.20.0 + '@esbuild/linux-riscv64': 0.20.0 + '@esbuild/linux-s390x': 0.20.0 + '@esbuild/linux-x64': 0.20.0 + '@esbuild/netbsd-x64': 0.20.0 + '@esbuild/openbsd-x64': 0.20.0 + '@esbuild/sunos-x64': 0.20.0 + '@esbuild/win32-arm64': 0.20.0 + '@esbuild/win32-ia32': 0.20.0 + '@esbuild/win32-x64': 0.20.0 + dev: true + + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + engines: {node: '>=6'} + dev: true + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: true + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /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 + + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + dev: true + + /express@4.18.3: + resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + /extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + 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 + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + 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 + + /faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + dependencies: + websocket-driver: 0.7.4 + dev: true + + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.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 + + /find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: true + + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + 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 + + /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 + + /forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + /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-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + + /fs-monkey@1.0.5: + resolution: {integrity: sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: 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==} + + /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-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.3 + has-symbols: 1.0.3 + hasown: 2.0.1 + + /get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + 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 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.1 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.4 + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + 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'} + + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + dependencies: + es-define-property: 1.0.0 + + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /hasown@2.0.1: + resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /hosted-git-info@7.0.1: + resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + lru-cache: 10.2.0 + dev: true + + /hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + dev: true + + /html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + + /http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: true + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + /http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + dev: true + + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-proxy-middleware@2.0.6(@types/express@4.17.21): + resolution: {integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + dependencies: + '@types/express': 4.17.21 + '@types/http-proxy': 1.17.14 + http-proxy: 1.18.1 + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.5 + transitivePeerDependencies: + - debug + dev: true + + /http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.5 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + dev: true + + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + dev: true + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore-walk@6.0.4: + resolution: {integrity: sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minimatch: 9.0.3 + dev: true + + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} + engines: {node: '>= 4'} + dev: true + + /image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /immutable@4.3.5: + resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.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.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /inquirer@9.2.14: + resolution: {integrity: sha512-4ByIMt677Iz5AvjyKrDpzaepIyMewNvDcvwpVVRZNmy9dLakVoVgdCHZXbK1SlVJra1db0JZ6XkJyHsanpdrdQ==} + engines: {node: '>=18'} + dependencies: + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + dev: true + + /ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + dev: true + + /ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + /ipaddr.js@2.1.0: + resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} + engines: {node: '>= 10'} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.1 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /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-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + dev: true + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isexe@3.1.1: + resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} + engines: {node: '>=16'} + dev: true + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.24.0 + '@babel/parser': 7.24.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + 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-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + 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 + + /jasmine-core@4.6.0: + resolution: {integrity: sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==} + dev: true + + /jasmine-core@5.1.2: + resolution: {integrity: sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==} + dev: true + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.19.22 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + + /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 + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + dev: true + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-parse-even-better-errors@3.0.1: + resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: 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 + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /karma-chrome-launcher@3.2.0: + resolution: {integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==} + dependencies: + which: 1.3.1 + dev: true + + /karma-coverage@2.2.1: + resolution: {integrity: sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==} + engines: {node: '>=10.0.0'} + dependencies: + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /karma-jasmine-html-reporter@2.1.0(jasmine-core@5.1.2)(karma-jasmine@5.1.0)(karma@6.4.3): + resolution: {integrity: sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==} + peerDependencies: + jasmine-core: ^4.0.0 || ^5.0.0 + karma: ^6.0.0 + karma-jasmine: ^5.0.0 + dependencies: + jasmine-core: 5.1.2 + karma: 6.4.3 + karma-jasmine: 5.1.0(karma@6.4.3) + dev: true + + /karma-jasmine@5.1.0(karma@6.4.3): + resolution: {integrity: sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==} + engines: {node: '>=12'} + peerDependencies: + karma: ^6.0.0 + dependencies: + jasmine-core: 4.6.0 + karma: 6.4.3 + dev: true + + /karma-source-map-support@1.4.0: + resolution: {integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==} + dependencies: + source-map-support: 0.5.21 + dev: true + + /karma@6.4.3: + resolution: {integrity: sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==} + engines: {node: '>= 10'} + hasBin: true + dependencies: + '@colors/colors': 1.5.0 + body-parser: 1.20.2 + braces: 3.0.2 + chokidar: 3.6.0 + connect: 3.7.0 + di: 0.0.1 + dom-serialize: 2.2.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + http-proxy: 1.18.1 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log4js: 6.9.1 + mime: 2.6.0 + minimatch: 3.1.2 + mkdirp: 0.5.6 + qjobs: 1.2.0 + range-parser: 1.2.1 + rimraf: 3.0.2 + socket.io: 4.7.4 + source-map: 0.6.1 + tmp: 0.2.3 + ua-parser-js: 0.7.37 + yargs: 16.2.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + dev: true + + /launch-editor@2.6.1: + resolution: {integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==} + dependencies: + picocolors: 1.0.0 + shell-quote: 1.8.1 + dev: true + + /less-loader@11.1.0(less@4.2.0)(webpack@5.90.1): + resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} + engines: {node: '>= 14.15.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + dependencies: + klona: 2.0.6 + less: 4.2.0 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /less@4.2.0: + resolution: {integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.6.2 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.3.1 + source-map: 0.6.1 + dev: true + + /license-webpack-plugin@4.0.2(webpack@5.90.1): + resolution: {integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==} + peerDependencies: + webpack: '*' + peerDependenciesMeta: + webpack: + optional: true + dependencies: + webpack: 5.90.1(esbuild@0.20.0) + webpack-sources: 3.2.3 + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + dev: true + + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: true + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + 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 + + /log4js@6.9.1: + resolution: {integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4 + flatted: 3.3.1 + rfdc: 1.3.1 + streamroller: 3.1.5 + transitivePeerDependencies: + - supports-color + 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 + + /magic-string@0.30.7: + resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + pify: 4.0.1 + semver: 5.7.2 + dev: true + optional: 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-fetch-happen@13.0.0: + resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@npmcli/agent': 2.2.1 + cacache: 18.0.2 + http-cache-semantics: 4.1.1 + is-lambda: 1.0.1 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.3 + promise-retry: 2.0.1 + ssri: 10.0.5 + transitivePeerDependencies: + - supports-color + dev: true + + /media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + /memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.5 + dev: true + + /merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + /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 + + /methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + /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'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mini-css-extract-plugin@2.8.0(webpack@5.90.1): + resolution: {integrity: sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + schema-utils: 4.2.0 + tapable: 2.2.1 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /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==} + dev: true + + /minipass-collect@2.0.1: + resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + minipass: 7.0.4 + dev: true + + /minipass-fetch@3.0.4: + resolution: {integrity: sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + dev: true + + /minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-json-stream@1.0.1: + resolution: {integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==} + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + dev: true + + /minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + dependencies: + minipass: 3.3.6 + dev: true + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + dev: true + + /mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /needle@3.3.1: + resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + iconv-lite: 0.6.3 + sax: 1.3.0 + dev: true + optional: true + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /nice-napi@1.0.2: + resolution: {integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==} + os: ['!win32'] + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.8.0 + dev: true + optional: true + + /node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + requiresBuild: true + dev: true + optional: true + + /node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: true + + /node-gyp-build@4.8.0: + resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /node-gyp@10.0.1: + resolution: {integrity: sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 10.3.10 + graceful-fs: 4.2.11 + make-fetch-happen: 13.0.0 + nopt: 7.2.0 + proc-log: 3.0.0 + semver: 7.6.0 + tar: 6.2.0 + which: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: true + + /normalize-package-data@6.0.0: + resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + is-core-module: 2.13.1 + semver: 7.6.0 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-bundled@3.0.0: + resolution: {integrity: sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + npm-normalize-package-bin: 3.0.1 + dev: true + + /npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + semver: 7.6.0 + dev: true + + /npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /npm-package-arg@11.0.1: + resolution: {integrity: sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + hosted-git-info: 7.0.1 + proc-log: 3.0.0 + semver: 7.6.0 + validate-npm-package-name: 5.0.0 + dev: true + + /npm-packlist@8.0.2: + resolution: {integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + ignore-walk: 6.0.4 + dev: true + + /npm-pick-manifest@9.0.0: + resolution: {integrity: sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 11.0.1 + semver: 7.6.0 + dev: true + + /npm-registry-fetch@16.1.0: + resolution: {integrity: sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + make-fetch-happen: 13.0.0 + minipass: 7.0.4 + minipass-fetch: 3.0.4 + minipass-json-stream: 1.0.1 + minizlib: 2.1.2 + npm-package-arg: 11.0.1 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + /obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.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-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + + /p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /pacote@17.0.6: + resolution: {integrity: sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + dependencies: + '@npmcli/git': 5.0.4 + '@npmcli/installed-package-contents': 2.0.2 + '@npmcli/promise-spawn': 7.0.1 + '@npmcli/run-script': 7.0.4 + cacache: 18.0.2 + fs-minipass: 3.0.3 + minipass: 7.0.4 + npm-package-arg: 11.0.1 + npm-packlist: 8.0.2 + npm-pick-manifest: 9.0.0 + npm-registry-fetch: 16.1.0 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 7.0.0 + read-package-json-fast: 3.0.2 + sigstore: 2.2.2 + ssri: 10.0.5 + tar: 6.2.0 + transitivePeerDependencies: + - bluebird + - supports-color + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /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-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + + /parse5-html-rewriting-stream@7.0.0: + resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} + dependencies: + entities: 4.5.0 + parse5: 7.1.2 + parse5-sax-parser: 7.0.0 + dev: true + + /parse5-sax-parser@7.0.0: + resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} + dependencies: + parse5: 7.1.2 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + 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-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /picomatch@4.0.1: + resolution: {integrity: sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==} + engines: {node: '>=12'} + dev: true + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + requiresBuild: true + dev: true + optional: true + + /piscina@4.3.1: + resolution: {integrity: sha512-MBj0QYm3hJQ/C/wIXTN1OCYC8uQ4BBJ4LVele2P4ZwVQAH04vkk8E1SpDbuemLAL1dZorbuOob9rYqJeWCcCRg==} + optionalDependencies: + nice-napi: 1.0.2 + dev: true + + /pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + dependencies: + find-up: 6.3.0 + dev: true + + /postcss-loader@8.1.0(postcss@8.4.35)(typescript@5.2.2)(webpack@5.90.1): + resolution: {integrity: sha512-AbperNcX3rlob7Ay7A/HQcrofug1caABBkopoFeOQMspZBqcqj6giYn1Bwey/0uiOPAcR+NQD0I2HC7rXzk91w==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + dependencies: + cosmiconfig: 9.0.0(typescript@5.2.2) + jiti: 1.21.0 + postcss: 8.4.35 + semver: 7.6.0 + webpack: 5.90.1(esbuild@0.20.0) + transitivePeerDependencies: + - typescript + dev: true + + /postcss-modules-extract-imports@3.0.0(postcss@8.4.35): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + dev: true + + /postcss-modules-local-by-default@4.0.4(postcss@8.4.35): + resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-selector-parser: 6.0.15 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.1.1(postcss@8.4.35): + resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.35 + postcss-selector-parser: 6.0.15 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.35): + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + dev: true + + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + /proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + dev: true + + /promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + dev: true + + /proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + /prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + requiresBuild: true + dev: true + optional: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /qjobs@1.2.0: + resolution: {integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==} + engines: {node: '>=0.9'} + dev: true + + /qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.6 + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + /raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + /read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + json-parse-even-better-errors: 3.0.1 + npm-normalize-package-bin: 3.0.1 + dev: true + + /read-package-json@7.0.0: + resolution: {integrity: sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + glob: 10.3.10 + json-parse-even-better-errors: 3.0.1 + normalize-package-data: 6.0.0 + npm-normalize-package-bin: 3.0.1 + dev: true + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + 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: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /reflect-metadata@0.2.1: + resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} + dev: true + + /regenerate-unicode-properties@10.1.1: + resolution: {integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: true + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.23.9 + dev: true + + /regex-parser@2.3.0: + resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + 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-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-url-loader@5.0.0: + resolution: {integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==} + engines: {node: '>=12'} + dependencies: + adjust-sourcemap-loader: 4.0.0 + convert-source-map: 1.9.0 + loader-utils: 2.0.4 + postcss: 8.4.35 + source-map: 0.6.1 + 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 + + /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 + + /retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: true + + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + 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 + + /rollup@4.12.1: + resolution: {integrity: sha512-ggqQKvx/PsB0FaWXhIvVkSWh7a/PCLQAsMjBc+nA2M8Rv2/HG0X6zvixAB7KyZBRtifBUhy5k8voQX/mRnABPg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.12.1 + '@rollup/rollup-android-arm64': 4.12.1 + '@rollup/rollup-darwin-arm64': 4.12.1 + '@rollup/rollup-darwin-x64': 4.12.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.12.1 + '@rollup/rollup-linux-arm64-gnu': 4.12.1 + '@rollup/rollup-linux-arm64-musl': 4.12.1 + '@rollup/rollup-linux-riscv64-gnu': 4.12.1 + '@rollup/rollup-linux-x64-gnu': 4.12.1 + '@rollup/rollup-linux-x64-musl': 4.12.1 + '@rollup/rollup-win32-arm64-msvc': 4.12.1 + '@rollup/rollup-win32-ia32-msvc': 4.12.1 + '@rollup/rollup-win32-x64-msvc': 4.12.1 + fsevents: 2.3.3 + dev: true + + /run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + 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 + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sass-loader@14.1.0(sass@1.70.0)(webpack@5.90.1): + resolution: {integrity: sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + sass-embedded: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + node-sass: + optional: true + sass: + optional: true + sass-embedded: + optional: true + webpack: + optional: true + dependencies: + neo-async: 2.6.2 + sass: 1.70.0 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /sass@1.70.0: + resolution: {integrity: sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.6.0 + immutable: 4.3.5 + source-map-js: 1.0.2 + dev: true + + /sax@1.3.0: + resolution: {integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==} + requiresBuild: true + dev: true + optional: true + + /schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: true + + /schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.12.0 + ajv-formats: 2.1.1(ajv@8.12.0) + ajv-keywords: 5.1.0(ajv@8.12.0) + dev: true + + /select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + requiresBuild: true + dev: true + optional: true + + /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 + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + dependencies: + randombytes: 2.1.0 + dev: true + + /serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + /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 + + /setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: true + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + dev: true + + /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@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + dev: true + + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + 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 + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /sigstore@2.2.2: + resolution: {integrity: sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@sigstore/bundle': 2.2.0 + '@sigstore/core': 1.0.0 + '@sigstore/protobuf-specs': 0.3.0 + '@sigstore/sign': 2.2.3 + '@sigstore/tuf': 2.3.1 + '@sigstore/verify': 1.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: true + + /socket.io-adapter@2.5.4: + resolution: {integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==} + dependencies: + debug: 4.3.4 + ws: 8.11.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /socket.io-client@4.7.4: + resolution: {integrity: sha512-wh+OkeF0rAVCrABWQBaEjLfb7DVPotMbu0cgWgyR0v6eA4EoVnAwcIeIbcdTE3GT/H3kbdLl7OoH2+asoDRIIg==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + engine.io-client: 6.5.3 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /socket.io-parser@4.2.4: + resolution: {integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==} + engines: {node: '>=10.0.0'} + dependencies: + '@socket.io/component-emitter': 3.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + + /socket.io@4.7.4: + resolution: {integrity: sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==} + engines: {node: '>=10.2.0'} + dependencies: + accepts: 1.3.8 + base64id: 2.0.0 + cors: 2.8.5 + debug: 4.3.4 + engine.io: 6.5.4 + socket.io-adapter: 2.5.4 + socket.io-parser: 4.2.4 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + dev: true + + /socks-proxy-agent@8.0.2: + resolution: {integrity: sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + socks: 2.8.1 + transitivePeerDependencies: + - supports-color + dev: true + + /socks@2.8.1: + resolution: {integrity: sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-loader@5.0.0(webpack@5.90.1): + resolution: {integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.72.1 + dependencies: + iconv-lite: 0.6.3 + source-map-js: 1.0.2 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + 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 + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.17 + dev: true + + /spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.17 + dev: true + + /spdx-license-ids@3.0.17: + resolution: {integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==} + dev: true + + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + 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==} + dev: true + + /ssri@10.0.5: + resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + minipass: 7.0.4 + dev: true + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: true + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + /streamroller@3.1.5: + resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} + engines: {node: '>=8.0'} + dependencies: + date-format: 4.0.14 + debug: 4.3.4 + fs-extra: 8.1.0 + transitivePeerDependencies: + - supports-color + 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_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /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-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + 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 + + /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 + + /symbol-observable@4.0.0: + resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} + engines: {node: '>=0.10'} + dev: true + + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: true + + /terser-webpack-plugin@5.3.10(esbuild@0.20.0)(webpack@5.90.1): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + esbuild: 0.20.0 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.27.0 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /terser@5.27.0: + resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.3 + commander: 2.20.3 + source-map-support: 0.5.21 + 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 + + /thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + dev: true + + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + + /tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + 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 + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tuf-js@2.2.0: + resolution: {integrity: sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==} + engines: {node: ^16.14.0 || >=18.0.0} + dependencies: + '@tufjs/models': 2.0.0 + debug: 4.3.4 + make-fetch-happen: 13.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + /typed-assert@1.0.9: + resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ua-parser-js@0.7.37: + resolution: {integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /undici@6.6.2: + resolution: {integrity: sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==} + engines: {node: '>=18.0'} + dependencies: + '@fastify/busboy': 2.1.1 + dev: true + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + unique-slug: 4.0.0 + dev: true + + /unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + imurmurhash: 0.1.4 + dev: true + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + /update-browserslist-db@1.0.13(browserslist@4.23.0): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.23.0 + escalade: 3.1.2 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /validate-npm-package-name@5.0.0: + resolution: {integrity: sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dependencies: + builtins: 5.0.1 + dev: true + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + /vite@5.0.12(@types/node@18.19.22)(less@4.2.0)(sass@1.70.0)(terser@5.27.0): + resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.19.22 + esbuild: 0.19.12 + less: 4.2.0 + postcss: 8.4.35 + rollup: 4.12.1 + sass: 1.70.0 + terser: 5.27.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /void-elements@2.0.1: + resolution: {integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==} + engines: {node: '>=0.10.0'} + dev: true + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: true + + /wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /webpack-dev-middleware@5.3.3(webpack@5.90.1): + resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /webpack-dev-middleware@6.1.1(webpack@5.90.1): + resolution: {integrity: sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /webpack-dev-server@4.15.1(webpack@5.90.1): + resolution: {integrity: sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.5 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.10 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.18.3 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.6(@types/express@4.17.21) + ipaddr.js: 2.1.0 + launch-editor: 2.6.1 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.90.1(esbuild@0.20.0) + webpack-dev-middleware: 5.3.3(webpack@5.90.1) + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + dev: true + + /webpack-merge@5.10.0: + resolution: {integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==} + engines: {node: '>=10.0.0'} + dependencies: + clone-deep: 4.0.1 + flat: 5.0.2 + wildcard: 2.0.1 + dev: true + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-subresource-integrity@5.1.0(webpack@5.90.1): + resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} + engines: {node: '>= 12'} + peerDependencies: + html-webpack-plugin: '>= 5.0.0-beta.1 < 6' + webpack: ^5.12.0 + peerDependenciesMeta: + html-webpack-plugin: + optional: true + dependencies: + typed-assert: 1.0.9 + webpack: 5.90.1(esbuild@0.20.0) + dev: true + + /webpack@5.90.1(esbuild@0.20.0): + resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.5 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) + browserslist: 4.23.0 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.15.1 + es-module-lexer: 1.4.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(esbuild@0.20.0)(webpack@5.90.1) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + dev: true + + /websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + dev: true + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /which@4.0.0: + resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} + engines: {node: ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + isexe: 3.1.1 + dev: true + + /wildcard@2.0.1: + resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} + 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 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /ws@8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xhr2@0.2.1: + resolution: {integrity: sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==} + engines: {node: '>= 6'} + + /xmlhttprequest-ssl@2.0.0: + resolution: {integrity: sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==} + engines: {node: '>=0.4.0'} + dev: false + + /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 + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + dependencies: + cliui: 7.0.4 + 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: 20.2.9 + 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 + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + + /zone.js@0.14.4: + resolution: {integrity: sha512-NtTUvIlNELez7Q1DzKVIFZBzNb646boQMgpATo9z3Ftuu/gWvzxCW7jdjcUDoRGxRikrhVHB/zLXh1hxeJawvw==} + dependencies: + tslib: 2.6.2 diff --git a/arai-frontend/server.ts b/arai-frontend/server.ts new file mode 100644 index 0000000..7083b14 --- /dev/null +++ b/arai-frontend/server.ts @@ -0,0 +1,56 @@ +import { APP_BASE_HREF } from '@angular/common'; +import { CommonEngine } from '@angular/ssr'; +import express from 'express'; +import { fileURLToPath } from 'node:url'; +import { dirname, join, resolve } from 'node:path'; +import bootstrap from './src/main.server'; + +// The Express app is exported so that it can be used by serverless Functions. +export function app(): express.Express { + const server = express(); + const serverDistFolder = dirname(fileURLToPath(import.meta.url)); + const browserDistFolder = resolve(serverDistFolder, '../browser'); + const indexHtml = join(serverDistFolder, 'index.server.html'); + + const commonEngine = new CommonEngine(); + + server.set('view engine', 'html'); + server.set('views', browserDistFolder); + + // Example Express Rest API endpoints + // server.get('/api/**', (req, res) => { }); + // Serve static files from /browser + server.get('*.*', express.static(browserDistFolder, { + maxAge: '1y' + })); + + // All regular routes use the Angular engine + server.get('*', (req, res, next) => { + const { protocol, originalUrl, baseUrl, headers } = req; + + commonEngine + .render({ + bootstrap, + documentFilePath: indexHtml, + url: `${protocol}://${headers.host}${originalUrl}`, + publicPath: browserDistFolder, + providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }], + }) + .then((html) => res.send(html)) + .catch((err) => next(err)); + }); + + return server; +} + +function run(): void { + const port = process.env['PORT'] || 4000; + + // Start up the Node server + const server = app(); + server.listen(port, () => { + console.log(`Node Express server listening on http://localhost:${port}`); + }); +} + +run(); diff --git a/arai-frontend/src/app/app.component.html b/arai-frontend/src/app/app.component.html new file mode 100644 index 0000000..bade52e --- /dev/null +++ b/arai-frontend/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/arai-frontend/src/app/app.component.scss b/arai-frontend/src/app/app.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/arai-frontend/src/app/app.component.spec.ts b/arai-frontend/src/app/app.component.spec.ts new file mode 100644 index 0000000..b0de4ca --- /dev/null +++ b/arai-frontend/src/app/app.component.spec.ts @@ -0,0 +1,29 @@ +import { TestBed } from '@angular/core/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [AppComponent], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have the 'arai-frontend' title`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('arai-frontend'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement as HTMLElement; + expect(compiled.querySelector('h1')?.textContent).toContain('Hello, arai-frontend'); + }); +}); diff --git a/arai-frontend/src/app/app.component.ts b/arai-frontend/src/app/app.component.ts new file mode 100644 index 0000000..e60e803 --- /dev/null +++ b/arai-frontend/src/app/app.component.ts @@ -0,0 +1,14 @@ +import { Component } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { RouterOutlet } from '@angular/router'; + +@Component({ + selector: 'app-root', + standalone: true, + imports: [CommonModule, RouterOutlet], + templateUrl: './app.component.html', + styleUrl: './app.component.scss' +}) +export class AppComponent { + title = 'arai-frontend'; +} diff --git a/arai-frontend/src/app/app.config.server.ts b/arai-frontend/src/app/app.config.server.ts new file mode 100644 index 0000000..b4d57c9 --- /dev/null +++ b/arai-frontend/src/app/app.config.server.ts @@ -0,0 +1,11 @@ +import { mergeApplicationConfig, ApplicationConfig } from '@angular/core'; +import { provideServerRendering } from '@angular/platform-server'; +import { appConfig } from './app.config'; + +const serverConfig: ApplicationConfig = { + providers: [ + provideServerRendering() + ] +}; + +export const config = mergeApplicationConfig(appConfig, serverConfig); diff --git a/arai-frontend/src/app/app.config.ts b/arai-frontend/src/app/app.config.ts new file mode 100644 index 0000000..a32deb9 --- /dev/null +++ b/arai-frontend/src/app/app.config.ts @@ -0,0 +1,10 @@ +import { ApplicationConfig } from '@angular/core'; +import { provideRouter } from '@angular/router'; + +import { routes } from './app.routes'; +import { provideClientHydration } from '@angular/platform-browser'; +import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; + +export const appConfig: ApplicationConfig = { + providers: [provideRouter(routes), provideClientHydration(), provideAnimationsAsync()] +}; diff --git a/arai-frontend/src/app/app.routes.ts b/arai-frontend/src/app/app.routes.ts new file mode 100644 index 0000000..dc39edb --- /dev/null +++ b/arai-frontend/src/app/app.routes.ts @@ -0,0 +1,3 @@ +import { Routes } from '@angular/router'; + +export const routes: Routes = []; diff --git a/arai-frontend/src/app/backend.service.spec.ts b/arai-frontend/src/app/backend.service.spec.ts new file mode 100644 index 0000000..bd90d07 --- /dev/null +++ b/arai-frontend/src/app/backend.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { BackendService } from './backend.service'; + +describe('BackendService', () => { + let service: BackendService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(BackendService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/arai-frontend/src/app/backend.service.ts b/arai-frontend/src/app/backend.service.ts new file mode 100644 index 0000000..f41c8de --- /dev/null +++ b/arai-frontend/src/app/backend.service.ts @@ -0,0 +1,55 @@ +import { EventEmitter, Injectable } from '@angular/core'; +import { io, Socket } from 'socket.io-client'; +import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInput, UserInputRequest } from './requests-responses'; + +@Injectable({ + providedIn: 'root' +}) +export class BackendService { + address = "localhost:1227"; + + public genericResponsesArray: GenericResponse[] = []; + public userInputArray: UserInputRequest[] = []; + public recommendedMediatorsResponsesArray: RecommendedMediatorsResponse[] = []; + public recommendedMediatorsResponsesArrayEvent = new EventEmitter(); + public statisticsOutputResponseArray: StatisticsOutputResponse[] = []; + public statisticsOutputResponseArrayEvent = new EventEmitter(); + + + private socket: Socket = io(`http://${this.address}`); + + constructor() { + this.connect(); + } + + private filterMessages(message: GenericResponse) { + this.genericResponsesArray.push(message); + if(message.response_type === "recommended_mediators") { + this.recommendedMediatorsResponsesArray.push(message as RecommendedMediatorsResponse); + this.recommendedMediatorsResponsesArrayEvent.next(message as RecommendedMediatorsResponse); + } + if(message.response_type === "statistics_output") { + this.statisticsOutputResponseArray.push(message as StatisticsOutputResponse); + this.statisticsOutputResponseArrayEvent.next(message as StatisticsOutputResponse); + } + } + + private connect(): void { + this.socket = io(`http://${this.address}`); + this.socket.on('connect', () => { + console.log('Connected to WebSocket server'); + }); + + // Listen for messages + this.socket.on('message', (message: GenericResponse) => { + this.filterMessages(message); + }); + } + + public sendMessage(message: GenericRequest): void { + if(message.request_type === "user_input") { + this.userInputArray.push(message as UserInput); + } + this.socket.emit('message', message); + } +} diff --git a/arai-frontend/src/app/case-input/case-input.component.html b/arai-frontend/src/app/case-input/case-input.component.html new file mode 100644 index 0000000..2d530b1 --- /dev/null +++ b/arai-frontend/src/app/case-input/case-input.component.html @@ -0,0 +1 @@ +

case-input works!

diff --git a/arai-frontend/src/app/case-input/case-input.component.scss b/arai-frontend/src/app/case-input/case-input.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/arai-frontend/src/app/case-input/case-input.component.spec.ts b/arai-frontend/src/app/case-input/case-input.component.spec.ts new file mode 100644 index 0000000..1d8f698 --- /dev/null +++ b/arai-frontend/src/app/case-input/case-input.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CaseInputComponent } from './case-input.component'; + +describe('CaseInputComponent', () => { + let component: CaseInputComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [CaseInputComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CaseInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/arai-frontend/src/app/case-input/case-input.component.ts b/arai-frontend/src/app/case-input/case-input.component.ts new file mode 100644 index 0000000..8df3e32 --- /dev/null +++ b/arai-frontend/src/app/case-input/case-input.component.ts @@ -0,0 +1,23 @@ +import { Component } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatInputModule } from '@angular/material/input' +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { MatCheckboxModule } from '@angular/material/checkbox' + + +@Component({ + selector: 'app-case-input', + standalone: true, + imports: [ + // other modules + MatInputModule, + MatCheckboxModule, + ReactiveFormsModule, + BrowserAnimationsModule, + ], + templateUrl: './case-input.component.html', + styleUrl: './case-input.component.scss' +}) +export class CaseInputComponent { + +} diff --git a/arai-frontend/src/app/cost-view/cost-view.component.html b/arai-frontend/src/app/cost-view/cost-view.component.html new file mode 100644 index 0000000..cbdd498 --- /dev/null +++ b/arai-frontend/src/app/cost-view/cost-view.component.html @@ -0,0 +1 @@ +

cost-view works!

diff --git a/arai-frontend/src/app/cost-view/cost-view.component.scss b/arai-frontend/src/app/cost-view/cost-view.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/arai-frontend/src/app/cost-view/cost-view.component.spec.ts b/arai-frontend/src/app/cost-view/cost-view.component.spec.ts new file mode 100644 index 0000000..065e4fb --- /dev/null +++ b/arai-frontend/src/app/cost-view/cost-view.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CostViewComponent } from './cost-view.component'; + +describe('CostViewComponent', () => { + let component: CostViewComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [CostViewComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(CostViewComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/arai-frontend/src/app/cost-view/cost-view.component.ts b/arai-frontend/src/app/cost-view/cost-view.component.ts new file mode 100644 index 0000000..957a3ee --- /dev/null +++ b/arai-frontend/src/app/cost-view/cost-view.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-cost-view', + standalone: true, + imports: [], + templateUrl: './cost-view.component.html', + styleUrl: './cost-view.component.scss' +}) +export class CostViewComponent { + +} diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.html b/arai-frontend/src/app/mediators-list/mediators-list.component.html new file mode 100644 index 0000000..dbd6505 --- /dev/null +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.html @@ -0,0 +1 @@ +

mediators-list works!

diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.scss b/arai-frontend/src/app/mediators-list/mediators-list.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.spec.ts b/arai-frontend/src/app/mediators-list/mediators-list.component.spec.ts new file mode 100644 index 0000000..305bfdd --- /dev/null +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MediatorsListComponent } from './mediators-list.component'; + +describe('MediatorsListComponent', () => { + let component: MediatorsListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MediatorsListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MediatorsListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.ts b/arai-frontend/src/app/mediators-list/mediators-list.component.ts new file mode 100644 index 0000000..ec45ad5 --- /dev/null +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-mediators-list', + standalone: true, + imports: [], + templateUrl: './mediators-list.component.html', + styleUrl: './mediators-list.component.scss' +}) +export class MediatorsListComponent { + +} diff --git a/arai-frontend/src/app/requests-responses.spec.ts b/arai-frontend/src/app/requests-responses.spec.ts new file mode 100644 index 0000000..a06df2c --- /dev/null +++ b/arai-frontend/src/app/requests-responses.spec.ts @@ -0,0 +1,7 @@ +import { RequestsResponses } from './requests-responses'; + +describe('RequestsResponses', () => { + it('should create an instance', () => { + expect(new RequestsResponses()).toBeTruthy(); + }); +}); diff --git a/arai-frontend/src/app/requests-responses.ts b/arai-frontend/src/app/requests-responses.ts new file mode 100644 index 0000000..fa42fe3 --- /dev/null +++ b/arai-frontend/src/app/requests-responses.ts @@ -0,0 +1,78 @@ +export enum REQUESTS_TYPES { + "user_input" = 0, + "registering_mediator" = 1, +} + +export enum RESPONSE_TYPES { + "statistics_output" = 0, + "recommended_mediators" = 1 +} + +export class GenericRequest { + readonly "request_type": string; + readonly "request_data": unknown; + constructor(setType: string, setData: unknown) { + this.request_type = setType; + this.request_data = setData; + } +} + +export interface userInput { + "generic_input": string, + "trial_value": number, + "location": string, + "experts_called": boolean, + "witnesses_called": boolean +} + +export class UserInputRequest extends GenericRequest { + override "request_type" = "user_input"; + override "request_data": userInput + + constructor(setRequest: userInput) { + super("user_input", setRequest); + this.request_data = setRequest; + } +} + +export class GenericResponse { + readonly "response_type": string; + readonly "response_data": unknown; + constructor(setType: string, setData: unknown) { + this.response_type = setType; + this.response_data = setData; + } +} + +export interface RecommendedMediatorsInterface { + "name": string, + "specialization": string, + "localization": string, + "score": number, + "number_of_opinions": number +} + +export class RecommendedMediatorsResponse extends GenericResponse { + override "response_type" = "recommended_mediators"; + override "response_data": RecommendedMediatorsInterface; + + constructor(setResponseData: RecommendedMediatorsInterface) { + super("recommended_mediators", setResponseData); + this.response_data = setResponseData; + } +} + +export interface StatisticsOutputInterface { + "cost_of_trial": number, + "time_of_trial": number +} + +export class StatisticsOutputResponse extends GenericResponse { + override "response_type" = "statistics_output"; + override "response_data": StatisticsOutputInterface; + + constructor(setResponseData: StatisticsOutputInterface) { + super("statistics_output", setResponseData); + this.response_data = setResponseData; + } +} diff --git a/arai-frontend/src/assets/.gitkeep b/arai-frontend/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/arai-frontend/src/favicon.ico b/arai-frontend/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..57614f9c967596fad0a3989bec2b1deff33034f6 GIT binary patch literal 15086 zcmd^G33O9Omi+`8$@{|M-I6TH3wzF-p5CV8o}7f~KxR60LK+ApEFB<$bcciv%@SmA zV{n>g85YMFFeU*Uvl=i4v)C*qgnb;$GQ=3XTe9{Y%c`mO%su)noNCCQ*@t1WXn|B(hQ7i~ zrUK8|pUkD6#lNo!bt$6)jR!&C?`P5G(`e((P($RaLeq+o0Vd~f11;qB05kdbAOm?r zXv~GYr_sibQO9NGTCdT;+G(!{4Xs@4fPak8#L8PjgJwcs-Mm#nR_Z0s&u?nDX5^~@ z+A6?}g0|=4e_LoE69pPFO`yCD@BCjgKpzMH0O4Xs{Ahc?K3HC5;l=f zg>}alhBXX&);z$E-wai+9TTRtBX-bWYY@cl$@YN#gMd~tM_5lj6W%8ah4;uZ;jP@Q zVbuel1rPA?2@x9Y+u?e`l{Z4ngfG5q5BLH5QsEu4GVpt{KIp1?U)=3+KQ;%7ec8l* zdV=zZgN5>O3G(3L2fqj3;oBbZZw$Ij@`Juz@?+yy#OPw)>#wsTewVgTK9BGt5AbZ&?K&B3GVF&yu?@(Xj3fR3n+ZP0%+wo)D9_xp>Z$`A4 zfV>}NWjO#3lqumR0`gvnffd9Ka}JJMuHS&|55-*mCD#8e^anA<+sFZVaJe7{=p*oX zE_Uv?1>e~ga=seYzh{9P+n5<+7&9}&(kwqSaz;1aD|YM3HBiy<))4~QJSIryyqp| z8nGc(8>3(_nEI4n)n7j(&d4idW1tVLjZ7QbNLXg;LB ziHsS5pXHEjGJZb59KcvS~wv;uZR-+4qEqow`;JCfB*+b^UL^3!?;-^F%yt=VjU|v z39SSqKcRu_NVvz!zJzL0CceJaS6%!(eMshPv_0U5G`~!a#I$qI5Ic(>IONej@aH=f z)($TAT#1I{iCS4f{D2+ApS=$3E7}5=+y(rA9mM#;Cky%b*Gi0KfFA`ofKTzu`AV-9 znW|y@19rrZ*!N2AvDi<_ZeR3O2R{#dh1#3-d%$k${Rx42h+i&GZo5!C^dSL34*AKp z27mTd>k>?V&X;Nl%GZ(>0s`1UN~Hfyj>KPjtnc|)xM@{H_B9rNr~LuH`Gr5_am&Ep zTjZA8hljNj5H1Ipm-uD9rC}U{-vR!eay5&6x6FkfupdpT*84MVwGpdd(}ib)zZ3Ky z7C$pnjc82(W_y_F{PhYj?o!@3__UUvpX)v69aBSzYj3 zdi}YQkKs^SyXyFG2LTRz9{(w}y~!`{EuAaUr6G1M{*%c+kP1olW9z23dSH!G4_HSK zzae-DF$OGR{ofP*!$a(r^5Go>I3SObVI6FLY)N@o<*gl0&kLo-OT{Tl*7nCz>Iq=? zcigIDHtj|H;6sR?or8Wd_a4996GI*CXGU}o;D9`^FM!AT1pBY~?|4h^61BY#_yIfO zKO?E0 zJ{Pc`9rVEI&$xxXu`<5E)&+m(7zX^v0rqofLs&bnQT(1baQkAr^kEsk)15vlzAZ-l z@OO9RF<+IiJ*O@HE256gCt!bF=NM*vh|WVWmjVawcNoksRTMvR03H{p@cjwKh(CL4 z7_PB(dM=kO)!s4fW!1p0f93YN@?ZSG` z$B!JaAJCtW$B97}HNO9(x-t30&E}Mo1UPi@Av%uHj~?T|!4JLwV;KCx8xO#b9IlUW zI6+{a@Wj|<2Y=U;a@vXbxqZNngH8^}LleE_4*0&O7#3iGxfJ%Id>+sb;7{L=aIic8 z|EW|{{S)J-wr@;3PmlxRXU8!e2gm_%s|ReH!reFcY8%$Hl4M5>;6^UDUUae?kOy#h zk~6Ee_@ZAn48Bab__^bNmQ~+k=02jz)e0d9Z3>G?RGG!65?d1>9}7iG17?P*=GUV-#SbLRw)Hu{zx*azHxWkGNTWl@HeWjA?39Ia|sCi{e;!^`1Oec zb>Z|b65OM*;eC=ZLSy?_fg$&^2xI>qSLA2G*$nA3GEnp3$N-)46`|36m*sc#4%C|h zBN<2U;7k>&G_wL4=Ve5z`ubVD&*Hxi)r@{4RCDw7U_D`lbC(9&pG5C*z#W>8>HU)h z!h3g?2UL&sS!oY5$3?VlA0Me9W5e~V;2jds*fz^updz#AJ%G8w2V}AEE?E^=MK%Xt z__Bx1cr7+DQmuHmzn*|hh%~eEc9@m05@clWfpEFcr+06%0&dZJH&@8^&@*$qR@}o3 z@Tuuh2FsLz^zH+dN&T&?0G3I?MpmYJ;GP$J!EzjeM#YLJ!W$}MVNb0^HfOA>5Fe~UNn%Zk(PT@~9}1dt)1UQ zU*B5K?Dl#G74qmg|2>^>0WtLX#Jz{lO4NT`NYB*(L#D|5IpXr9v&7a@YsGp3vLR7L zHYGHZg7{ie6n~2p$6Yz>=^cEg7tEgk-1YRl%-s7^cbqFb(U7&Dp78+&ut5!Tn(hER z|Gp4Ed@CnOPeAe|N>U(dB;SZ?NU^AzoD^UAH_vamp6Ws}{|mSq`^+VP1g~2B{%N-!mWz<`)G)>V-<`9`L4?3dM%Qh6<@kba+m`JS{Ya@9Fq*m6$$ zA1%Ogc~VRH33|S9l%CNb4zM%k^EIpqY}@h{w(aBcJ9c05oiZx#SK9t->5lSI`=&l~ z+-Ic)a{FbBhXV$Xt!WRd`R#Jk-$+_Z52rS>?Vpt2IK<84|E-SBEoIw>cs=a{BlQ7O z-?{Fy_M&84&9|KM5wt~)*!~i~E=(6m8(uCO)I=)M?)&sRbzH$9Rovzd?ZEY}GqX+~ zFbEbLz`BZ49=2Yh-|<`waK-_4!7`ro@zlC|r&I4fc4oyb+m=|c8)8%tZ-z5FwhzDt zL5kB@u53`d@%nHl0Sp)Dw`(QU&>vujEn?GPEXUW!Wi<+4e%BORl&BIH+SwRcbS}X@ z01Pk|vA%OdJKAs17zSXtO55k!;%m9>1eW9LnyAX4uj7@${O6cfii`49qTNItzny5J zH&Gj`e}o}?xjQ}r?LrI%FjUd@xflT3|7LA|ka%Q3i}a8gVm<`HIWoJGH=$EGClX^C0lysQJ>UO(q&;`T#8txuoQ_{l^kEV9CAdXuU1Ghg8 zN_6hHFuy&1x24q5-(Z7;!poYdt*`UTdrQOIQ!2O7_+AHV2hgXaEz7)>$LEdG z<8vE^Tw$|YwZHZDPM!SNOAWG$?J)MdmEk{U!!$M#fp7*Wo}jJ$Q(=8>R`Ats?e|VU?Zt7Cdh%AdnfyN3MBWw{ z$OnREvPf7%z6`#2##_7id|H%Y{vV^vWXb?5d5?a_y&t3@p9t$ncHj-NBdo&X{wrfJ zamN)VMYROYh_SvjJ=Xd!Ga?PY_$;*L=SxFte!4O6%0HEh%iZ4=gvns7IWIyJHa|hT z2;1+e)`TvbNb3-0z&DD_)Jomsg-7p_Uh`wjGnU1urmv1_oVqRg#=C?e?!7DgtqojU zWoAB($&53;TsXu^@2;8M`#z{=rPy?JqgYM0CDf4v@z=ZD|ItJ&8%_7A#K?S{wjxgd z?xA6JdJojrWpB7fr2p_MSsU4(R7=XGS0+Eg#xR=j>`H@R9{XjwBmqAiOxOL` zt?XK-iTEOWV}f>Pz3H-s*>W z4~8C&Xq25UQ^xH6H9kY_RM1$ch+%YLF72AA7^b{~VNTG}Tj#qZltz5Q=qxR`&oIlW Nr__JTFzvMr^FKp4S3v*( literal 0 HcmV?d00001 diff --git a/arai-frontend/src/index.html b/arai-frontend/src/index.html new file mode 100644 index 0000000..4a21630 --- /dev/null +++ b/arai-frontend/src/index.html @@ -0,0 +1,15 @@ + + + + + AraiFrontend + + + + + + + + + + diff --git a/arai-frontend/src/main.server.ts b/arai-frontend/src/main.server.ts new file mode 100644 index 0000000..4b9d4d1 --- /dev/null +++ b/arai-frontend/src/main.server.ts @@ -0,0 +1,7 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { AppComponent } from './app/app.component'; +import { config } from './app/app.config.server'; + +const bootstrap = () => bootstrapApplication(AppComponent, config); + +export default bootstrap; diff --git a/arai-frontend/src/main.ts b/arai-frontend/src/main.ts new file mode 100644 index 0000000..35b00f3 --- /dev/null +++ b/arai-frontend/src/main.ts @@ -0,0 +1,6 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app.component'; + +bootstrapApplication(AppComponent, appConfig) + .catch((err) => console.error(err)); diff --git a/arai-frontend/src/styles.scss b/arai-frontend/src/styles.scss new file mode 100644 index 0000000..7e7239a --- /dev/null +++ b/arai-frontend/src/styles.scss @@ -0,0 +1,4 @@ +/* You can add global styles to this file, and also import other style files */ + +html, body { height: 100%; } +body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/arai-frontend/tsconfig.app.json b/arai-frontend/tsconfig.app.json new file mode 100644 index 0000000..7dc7284 --- /dev/null +++ b/arai-frontend/tsconfig.app.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [ + "node" + ] + }, + "files": [ + "src/main.ts", + "src/main.server.ts", + "server.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/arai-frontend/tsconfig.json b/arai-frontend/tsconfig.json new file mode 100644 index 0000000..678336b --- /dev/null +++ b/arai-frontend/tsconfig.json @@ -0,0 +1,32 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "sourceMap": true, + "declaration": false, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/arai-frontend/tsconfig.spec.json b/arai-frontend/tsconfig.spec.json new file mode 100644 index 0000000..be7e9da --- /dev/null +++ b/arai-frontend/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} From 8463e15dae9f1939d827298522422f8ec499f978 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 14:05:08 +0100 Subject: [PATCH 02/27] feat: changed websocket liobrary --- arai-frontend/angular.json | 7 +- arai-frontend/package.json | 2 + arai-frontend/pnpm-lock.yaml | 1026 ++++++++++++++++- arai-frontend/src/app/app.component.ts | 5 +- arai-frontend/src/app/backend.service.ts | 20 +- .../app/case-input/case-input.component.html | 25 +- .../app/case-input/case-input.component.ts | 30 +- simple-ws/package.json | 16 + simple-ws/pnpm-lock.yaml | 25 + simple-ws/ws.js | 24 + 10 files changed, 1139 insertions(+), 41 deletions(-) create mode 100644 simple-ws/package.json create mode 100644 simple-ws/pnpm-lock.yaml create mode 100644 simple-ws/ws.js diff --git a/arai-frontend/angular.json b/arai-frontend/angular.json index e494aa0..4874f33 100644 --- a/arai-frontend/angular.json +++ b/arai-frontend/angular.json @@ -35,10 +35,9 @@ ], "scripts": [], "server": "src/main.server.ts", - "prerender": true, - "ssr": { - "entry": "server.ts" - } + "prerender": false, + "ssr": false + }, "configurations": { "production": { diff --git a/arai-frontend/package.json b/arai-frontend/package.json index ed416fa..0c2bad5 100644 --- a/arai-frontend/package.json +++ b/arai-frontend/package.json @@ -16,6 +16,7 @@ "@angular/common": "^17.0.0", "@angular/compiler": "^17.0.0", "@angular/core": "^17.0.0", + "@angular/flex-layout": "15.0.0-beta.42", "@angular/forms": "^17.0.0", "@angular/material": "^17.2.2", "@angular/platform-browser": "^17.0.0", @@ -24,6 +25,7 @@ "@angular/router": "^17.0.0", "@angular/ssr": "^17.0.3", "express": "^4.18.2", + "json-server": "1.0.0-alpha.23", "rxjs": "~7.8.0", "socket.io-client": "^4.7.4", "tslib": "^2.3.0", diff --git a/arai-frontend/pnpm-lock.yaml b/arai-frontend/pnpm-lock.yaml index 9585ce4..671e8d9 100644 --- a/arai-frontend/pnpm-lock.yaml +++ b/arai-frontend/pnpm-lock.yaml @@ -8,6 +8,9 @@ dependencies: '@angular/animations': specifier: ^17.0.0 version: 17.2.4(@angular/core@17.2.4) + '@angular/cdk': + specifier: ^17.2.2 + version: 17.2.2(@angular/common@17.2.4)(@angular/core@17.2.4)(rxjs@7.8.1) '@angular/common': specifier: ^17.0.0 version: 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) @@ -17,9 +20,15 @@ dependencies: '@angular/core': specifier: ^17.0.0 version: 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/flex-layout': + specifier: 15.0.0-beta.42 + version: 15.0.0-beta.42(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) '@angular/forms': specifier: ^17.0.0 version: 17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) + '@angular/material': + specifier: ^17.2.2 + version: 17.2.2(@angular/animations@17.2.4)(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/forms@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) '@angular/platform-browser': specifier: ^17.0.0 version: 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) @@ -38,6 +47,9 @@ dependencies: express: specifier: ^4.18.2 version: 4.18.3 + json-server: + specifier: 1.0.0-alpha.23 + version: 1.0.0-alpha.23 rxjs: specifier: ~7.8.0 version: 7.8.1 @@ -310,6 +322,21 @@ packages: '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) tslib: 2.6.2 + /@angular/cdk@17.2.2(@angular/common@17.2.4)(@angular/core@17.2.4)(rxjs@7.8.1): + resolution: {integrity: sha512-no3FownDI+05SvCGOxduramTJw+V5p/rKebz4msZbsAXXLnOScZPN2rDgMKShl2dQokc6gjsKXsy8fAYpx7NSQ==} + peerDependencies: + '@angular/common': ^17.0.0 || ^18.0.0 + '@angular/core': ^17.0.0 || ^18.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + rxjs: 7.8.1 + tslib: 2.6.2 + optionalDependencies: + parse5: 7.1.2 + dev: false + /@angular/cli@17.2.3: resolution: {integrity: sha512-GIF9NF4t8PiHS4wt6baw1hECfmMOmNHvDAuT12/xoAueOairxIQ+AX13WaEHMJriWujm31TjqbwXmhPxMSEQpw==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -395,6 +422,24 @@ packages: tslib: 2.6.2 zone.js: 0.14.4 + /@angular/flex-layout@15.0.0-beta.42(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): + resolution: {integrity: sha512-cTAPVMMxnyIFwpZwdq0PL5mdP9Qh+R8MB7ZBezVaN3Rz2fRrkagzKpLvPX3TFzepXrvHBdpKsU4b8u+NxEC/6g==} + deprecated: This package has been deprecated. Please see https://blog.angular.io/modern-css-in-angular-layouts-4a259dca9127 + peerDependencies: + '@angular/cdk': '>=15.0.0' + '@angular/common': '>=15.0.2' + '@angular/core': '>=15.0.2' + '@angular/platform-browser': '>=15.0.2' + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/cdk': 17.2.2(@angular/common@17.2.4)(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + rxjs: 7.8.1 + tslib: 2.6.2 + dev: false + /@angular/forms@17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): resolution: {integrity: sha512-flubCxK6Rc1YmAu23+o+NwqaIWbJ4MIYij05b1GlpRKB5GRX6M0fOl7uRHZmA6dC4xZGt/MUklRqb71T7dJ5JQ==} engines: {node: ^18.13.0 || >=20.9.0} @@ -411,6 +456,74 @@ packages: tslib: 2.6.2 dev: false + /@angular/material@17.2.2(@angular/animations@17.2.4)(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/forms@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): + resolution: {integrity: sha512-ToUp8gARTvdze9L7jhEuKqdos221jUCMRD6qzhl07XZRlxVbf/5VXUq2Nn7ei9uN11Ii1UY5pC0GS2XtlyHp4A==} + peerDependencies: + '@angular/animations': ^17.0.0 || ^18.0.0 + '@angular/cdk': 17.2.2 + '@angular/common': ^17.0.0 || ^18.0.0 + '@angular/core': ^17.0.0 || ^18.0.0 + '@angular/forms': ^17.0.0 || ^18.0.0 + '@angular/platform-browser': ^17.0.0 || ^18.0.0 + rxjs: ^6.5.3 || ^7.4.0 + dependencies: + '@angular/animations': 17.2.4(@angular/core@17.2.4) + '@angular/cdk': 17.2.2(@angular/common@17.2.4)(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/common': 17.2.4(@angular/core@17.2.4)(rxjs@7.8.1) + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/forms': 17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) + '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/auto-init': 15.0.0-canary.7f224ddd4.0 + '@material/banner': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/card': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/chips': 15.0.0-canary.7f224ddd4.0 + '@material/circular-progress': 15.0.0-canary.7f224ddd4.0 + '@material/data-table': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dialog': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/drawer': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/fab': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/form-field': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/image-list': 15.0.0-canary.7f224ddd4.0 + '@material/layout-grid': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/linear-progress': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/radio': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/segmented-button': 15.0.0-canary.7f224ddd4.0 + '@material/select': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/slider': 15.0.0-canary.7f224ddd4.0 + '@material/snackbar': 15.0.0-canary.7f224ddd4.0 + '@material/switch': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + '@material/tab-bar': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/tab-scroller': 15.0.0-canary.7f224ddd4.0 + '@material/textfield': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tooltip': 15.0.0-canary.7f224ddd4.0 + '@material/top-app-bar': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + rxjs: 7.8.1 + tslib: 2.6.2 + dev: false + /@angular/platform-browser-dynamic@17.2.4(@angular/common@17.2.4)(@angular/compiler@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4): resolution: {integrity: sha512-tNS6WexBbdks4uiB0JfPjUG2/rJ/5wuWr9C11CIgsMo+Onbw49imwDQQTxsx1A3misVb72mUufRza9DcxfSBxg==} engines: {node: ^18.13.0 || >=20.9.0} @@ -2228,6 +2341,658 @@ packages: call-bind: 1.0.7 dev: true + /@material/animation@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/auto-init@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/banner@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/base@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/button@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==} + dependencies: + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/card@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==} + dependencies: + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/checkbox@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/chips@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + dev: false + + /@material/circular-progress@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/progress-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/data-table@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/checkbox': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/linear-progress': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/select': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/density@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/dialog@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/dom@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/drawer@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/elevation@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/fab@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/feature-targeting@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/floating-label@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/focus-ring@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==} + dependencies: + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + dev: false + + /@material/form-field@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/icon-button@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/image-list@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/layout-grid@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/line-ripple@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/linear-progress@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/progress-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/list@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/menu-surface@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/menu@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/notched-outline@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/progress-indicator@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==} + dependencies: + tslib: 2.6.2 + dev: false + + /@material/radio@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/ripple@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/rtl@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==} + dependencies: + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/segmented-button@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/touch-target': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/select@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/list': 15.0.0-canary.7f224ddd4.0 + '@material/menu': 15.0.0-canary.7f224ddd4.0 + '@material/menu-surface': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/shape@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/slider@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/snackbar@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/icon-button': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/switch@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + dev: false + + /@material/tab-bar@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/tab-scroller': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tab-indicator@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tab-scroller@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/tab': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tab@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/focus-ring': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/tab-indicator': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/textfield@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/density': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/floating-label': 15.0.0-canary.7f224ddd4.0 + '@material/line-ripple': 15.0.0-canary.7f224ddd4.0 + '@material/notched-outline': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/theme@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/tokens@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==} + dependencies: + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + dev: false + + /@material/tooltip@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/button': 15.0.0-canary.7f224ddd4.0 + '@material/dom': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/tokens': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + safevalues: 0.3.4 + tslib: 2.6.2 + dev: false + + /@material/top-app-bar@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==} + dependencies: + '@material/animation': 15.0.0-canary.7f224ddd4.0 + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/elevation': 15.0.0-canary.7f224ddd4.0 + '@material/ripple': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/shape': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + '@material/typography': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/touch-target@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==} + dependencies: + '@material/base': 15.0.0-canary.7f224ddd4.0 + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/rtl': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + + /@material/typography@15.0.0-canary.7f224ddd4.0: + resolution: {integrity: sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==} + dependencies: + '@material/feature-targeting': 15.0.0-canary.7f224ddd4.0 + '@material/theme': 15.0.0-canary.7f224ddd4.0 + tslib: 2.6.2 + dev: false + /@ngtools/webpack@17.2.3(@angular/compiler-cli@17.2.4)(typescript@5.2.2)(webpack@5.90.1): resolution: {integrity: sha512-+d5Q7/ctDHePYZXcg0GFwL/AbyEkPMHoCiT7pmLI0B0n87D/mYKK/qmVN1VANBrFLTuIe8RtcL0aJ9pw8HAxWA==} engines: {node: ^18.13.0 || >=20.9.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -2355,6 +3120,10 @@ packages: dev: true optional: true + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + dev: false + /@rollup/rollup-android-arm-eabi@4.12.1: resolution: {integrity: sha512-iU2Sya8hNn1LhsYyf0N+L4Gf9Qc+9eBTJJJsaOGUp+7x4n2M9dxTt8UvhJl3oeftSjblSlpCfvjA/IfP3g5VjQ==} cpu: [arm] @@ -2521,6 +3290,134 @@ packages: /@socket.io/component-emitter@3.1.0: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} + /@tinyhttp/accepts@2.2.1: + resolution: {integrity: sha512-2DHJLSJX1gqR5F6nKuu7+hyCNoPRNOxvnQ11m0X8klkSVoBFBO2HMf3bJ8P+fmNv1e6RjHzHF+G+hJ3dxXIQXQ==} + engines: {node: '>=12.20.0'} + dependencies: + mime: 4.0.1 + negotiator: 0.6.3 + dev: false + + /@tinyhttp/app@2.2.3: + resolution: {integrity: sha512-njr499Tx9BwlnIGfJjTuqfPwaUSTsjhUeRq/jVtHJpS95UgWECH7kiq8+bEx6TFRXiNKpARZ6KJUemlMyV+iCg==} + engines: {node: '>=14.21.3'} + dependencies: + '@tinyhttp/cookie': 2.1.0 + '@tinyhttp/proxy-addr': 2.1.3 + '@tinyhttp/req': 2.2.2 + '@tinyhttp/res': 2.2.2 + '@tinyhttp/router': 2.2.2 + header-range-parser: 1.1.3 + regexparam: 2.0.2 + dev: false + + /@tinyhttp/content-disposition@2.2.0: + resolution: {integrity: sha512-w1dJaSAtcCinOlT/YQg35RnFCOBbCHBGDVhH4yLoiJVtecRAJ2cYMf5HP+UhfbXURa38GC8fkRXO0vODDTjmeg==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/content-type@0.1.4: + resolution: {integrity: sha512-dl6f3SHIJPYbhsW1oXdrqOmLSQF/Ctlv3JnNfXAE22kIP7FosqJHxkz/qj2gv465prG8ODKH5KEyhBkvwrueKQ==} + engines: {node: '>=12.4'} + dev: false + + /@tinyhttp/cookie-signature@2.1.0: + resolution: {integrity: sha512-bpOXBGf9rKoajtEG75O7xjwW+u2I/NNPkJWJTDdr6j7Vx0lG5R9Hnl3ty80Af4jwyo90ywXVpZIxKLubPK6RzA==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/cookie@2.1.0: + resolution: {integrity: sha512-o56utxXvIuLTCtPm66r8lcyUufpw0RkO+u4wQrTbc6snyyGZZ9hHzGRxPyko0ks90ctOkLh0mNKn7YZaTWlvfw==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/cors@2.0.0: + resolution: {integrity: sha512-IwQsPBnK+gRrhTsPA4FPOfbNzZZt8cVsOIMNFb6HzoScaiWcoLEogL0Bz/aBSm8KM13uieVXoVT6udMqhqUS2A==} + engines: {node: '>=12.4 || 14.x || >=16'} + dependencies: + es-vary: 0.1.2 + dev: false + + /@tinyhttp/encode-url@2.1.1: + resolution: {integrity: sha512-AhY+JqdZ56qV77tzrBm0qThXORbsVjs/IOPgGCS7x/wWnsa/Bx30zDUU/jPAUcSzNOzt860x9fhdGpzdqbUeUw==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/etag@2.1.1: + resolution: {integrity: sha512-AcHGK1nMlKIHmlbg8bb8UY/KhiaAX17SAn3/6wlgwwdX4UizA8HETDfCH3KLdu2ZASokynuwVFNDJCo1DAawGw==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/forwarded@2.1.2: + resolution: {integrity: sha512-9H/eulJ68ElY/+zYpTpNhZ7vxGV+cnwaR6+oQSm7bVgZMyuQfgROW/qvZuhmgDTIxnGMXst+Ba4ij6w6Krcs3w==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/proxy-addr@2.1.3: + resolution: {integrity: sha512-Z0Q/0wEJpvall7LlBezXDy96CXLzPZb6xJawwEgsMXXQhmjb+r3EkpCBwMrWm2GlbJFL/UxKxpdumiNW3Ne06g==} + engines: {node: '>=12.20.0'} + dependencies: + '@tinyhttp/forwarded': 2.1.2 + ipaddr.js: 2.1.0 + dev: false + + /@tinyhttp/req@2.2.2: + resolution: {integrity: sha512-LaL/RFRro0qjOQ0g3vxE6i9bWl9hhv9en7opykzLU4NimFPg2C8wl7Qkoyc0mDuoRMQmWpq730PDWXSUmLiT2A==} + engines: {node: '>=12.20.0'} + dependencies: + '@tinyhttp/accepts': 2.2.1 + '@tinyhttp/type-is': 2.2.2 + '@tinyhttp/url': 2.1.1 + header-range-parser: 1.1.3 + dev: false + + /@tinyhttp/res@2.2.2: + resolution: {integrity: sha512-YeEYFwozag2qO5xoTj1Df+d5l6MXUefxz3xbcJD6ASVqUQytTEYtOC0FjhQKLpTLjMJKlS4mkKmeIdDLFO9btg==} + engines: {node: '>=12.20.0'} + dependencies: + '@tinyhttp/content-disposition': 2.2.0 + '@tinyhttp/cookie': 2.1.0 + '@tinyhttp/cookie-signature': 2.1.0 + '@tinyhttp/encode-url': 2.1.1 + '@tinyhttp/req': 2.2.2 + '@tinyhttp/send': 2.2.1 + '@tinyhttp/vary': 0.1.3 + es-escape-html: 0.1.1 + mime: 4.0.1 + dev: false + + /@tinyhttp/router@2.2.2: + resolution: {integrity: sha512-i+1ouhPyTqcuJuOsKqmo7i+YD++0RF2lQLhBpcTnsaegD2gTEa3xW2Pcz7spYQGo7K8PQYtOrL7m9b14+BEXqg==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/send@2.2.1: + resolution: {integrity: sha512-uFW0fxmYIPpB5RKP2vpL8QuafjUrCBmBWxZMIhFb7uBQky87t7x1QdpRB0vc+w11a2kok+Nc8ClD5kc6CRJCFg==} + engines: {node: '>=12.20.0'} + dependencies: + '@tinyhttp/content-type': 0.1.4 + '@tinyhttp/etag': 2.1.1 + mime: 4.0.1 + dev: false + + /@tinyhttp/type-is@2.2.2: + resolution: {integrity: sha512-DmTm0MkdrUxEPI2WBBoYJT0bitWx6+xeUd3lya1NGbKmYArzyUE+KVro/9y/h6Bxh+RaAKNeTCF4H/ksbe/ULQ==} + engines: {node: '>=12.20.0'} + dependencies: + '@tinyhttp/content-type': 0.1.4 + mime: 4.0.1 + dev: false + + /@tinyhttp/url@2.1.1: + resolution: {integrity: sha512-POJeq2GQ5jI7Zrdmj22JqOijB5/GeX+LEX7DUdml1hUnGbJOTWDx7zf2b5cCERj7RoXL67zTgyzVblBJC+NJWg==} + engines: {node: '>=12.20.0'} + dev: false + + /@tinyhttp/vary@0.1.3: + resolution: {integrity: sha512-SoL83sQXAGiHN1jm2VwLUWQSQeDAAl1ywOm6T0b0Cg1CZhVsjoiZadmjhxF6FHCCY7OHHVaLnTgSMxTPIDLxMg==} + engines: {node: '>=12.20'} + dev: false + /@tufjs/canonical-json@2.0.0: resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -2969,7 +3866,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: true /argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -3086,7 +3982,6 @@ packages: /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - dev: true /bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -3143,7 +4038,6 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} @@ -3243,7 +4137,6 @@ packages: /chalk@5.3.0: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - dev: true /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -3262,7 +4155,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: true /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} @@ -3671,6 +4563,13 @@ packages: domelementtype: 2.3.0 domhandler: 5.0.3 + /dot-prop@8.0.2: + resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} + engines: {node: '>=16'} + dependencies: + type-fest: 3.13.1 + dev: false + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true @@ -3795,10 +4694,20 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + /es-escape-html@0.1.1: + resolution: {integrity: sha512-yUx1o+8RsG7UlszmYPtks+dm6Lho2m8lgHMOsLJQsFI0R8XwUJwiMhM1M4E/S8QLeGyf6MkDV/pWgjQ0tdTSyQ==} + engines: {node: '>=12.x'} + dev: false + /es-module-lexer@1.4.1: resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==} dev: true + /es-vary@0.1.2: + resolution: {integrity: sha512-pLqqZoOutAXQXyBJrUYVNM5fZngiOJYi1Xl4svQMrluTsqDUOQlBMw9EYgLrsWL6niDYn/Yd1y2Pj6GC+j/yjA==} + engines: {node: '>=12.x'} + dev: false + /esbuild-wasm@0.20.0: resolution: {integrity: sha512-Lc9KeQCg1Zf8kCtfDXgy29rx0x8dOuhDWbkP76Wc64q7ctOOc1Zv1C39AxiE+y4N6ONyXtJk4HKpM7jlU7/jSA==} engines: {node: '>=12'} @@ -3916,6 +4825,11 @@ packages: engines: {node: '>=0.10.0'} dev: true + /eta@3.2.0: + resolution: {integrity: sha512-Qzc3it7nLn49dbOb9+oHV9rwtt9qN8oShRztqkZ3gXPqQflF0VLin5qhWk0g/2ioibBwT4DU6OIMVft7tg/rVg==} + engines: {node: '>=6.0.0'} + dev: false + /etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -4043,7 +4957,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true /finalhandler@1.1.2: resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} @@ -4173,7 +5086,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /function-bind@1.1.2: @@ -4214,7 +5126,6 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} @@ -4307,6 +5218,11 @@ packages: dependencies: function-bind: 1.1.2 + /header-range-parser@1.1.3: + resolution: {integrity: sha512-B9zCFt3jH8g09LR1vHL4pcAn8yMEtlSlOUdQemzHMRKMImNIhhszdeosYFfNW0WXKQtXIlWB+O4owHJKvEJYaA==} + engines: {node: '>=12.22.0'} + dev: false + /hosted-git-info@7.0.1: resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==} engines: {node: ^16.14.0 || >=18.0.0} @@ -4504,6 +5420,11 @@ packages: engines: {node: '>=8'} dev: true + /inflection@3.0.0: + resolution: {integrity: sha512-1zEJU1l19SgJlmwqsEyFTbScw/tkMHFenUo//Y0i+XEP83gDFdMvPizAD/WGcE+l1ku12PcTVHQhO6g5E0UCMw==} + engines: {node: '>=18.0.0'} + dev: false + /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: @@ -4559,7 +5480,6 @@ packages: /ipaddr.js@2.1.0: resolution: {integrity: sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==} engines: {node: '>= 10'} - dev: true /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -4570,7 +5490,6 @@ packages: engines: {node: '>=8'} dependencies: binary-extensions: 2.2.0 - dev: true /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} @@ -4587,7 +5506,6 @@ packages: /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==} @@ -4599,7 +5517,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-interactive@1.0.0: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} @@ -4613,7 +5530,6 @@ packages: /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true /is-plain-obj@3.0.0: resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} @@ -4799,11 +5715,29 @@ packages: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true + /json-server@1.0.0-alpha.23: + resolution: {integrity: sha512-FPL1veNELhkr3tttwbIutKPkc/AUfLWSmslTwLYYPzl9RbCJQrwSPJceYWg2LnK1cv20tcEMLI2Kxl1lHz155Q==} + engines: {node: '>=18.3'} + hasBin: true + dependencies: + '@tinyhttp/app': 2.2.3 + '@tinyhttp/cors': 2.0.0 + chalk: 5.3.0 + chokidar: 3.6.0 + dot-prop: 8.0.2 + eta: 3.2.0 + inflection: 3.0.0 + json5: 2.2.3 + lowdb: 7.0.1 + milliparsec: 2.3.0 + sirv: 2.0.4 + sort-on: 6.0.0 + dev: false + /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==} @@ -5029,6 +5963,13 @@ packages: - supports-color dev: true + /lowdb@7.0.1: + resolution: {integrity: sha512-neJAj8GwF0e8EpycYIDFqEPcx9Qz4GUho20jWFR7YiFeXzF1YMLdxB36PypcTSPMA+4+LvgyMacYhlr18Zlymw==} + engines: {node: '>=18'} + dependencies: + steno: 4.0.2 + dev: false + /lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} engines: {node: 14 || >=16.14} @@ -5125,6 +6066,11 @@ packages: picomatch: 2.3.1 dev: true + /milliparsec@2.3.0: + resolution: {integrity: sha512-b+6KYJw+DwQjk24qCUuq+lZvRXDpXJ02qsllKgKaDurHpQ0v7D5op9VAkdYM/pXRhFeh7uLYHmnwFnYvdXGa3A==} + engines: {node: '>=12.4'} + dev: false + /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -5146,6 +6092,12 @@ packages: hasBin: true dev: true + /mime@4.0.1: + resolution: {integrity: sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==} + engines: {node: '>=16'} + hasBin: true + dev: false + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -5270,7 +6222,6 @@ packages: /mrmime@2.0.0: resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} engines: {node: '>=10'} - dev: true /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -5390,7 +6341,6 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: true /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} @@ -5658,7 +6608,6 @@ packages: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 - dev: true /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -5710,7 +6659,6 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true /picomatch@4.0.1: resolution: {integrity: sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==} @@ -5946,7 +6894,6 @@ packages: engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: true /reflect-metadata@0.2.1: resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} @@ -5977,6 +6924,11 @@ packages: resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} dev: true + /regexparam@2.0.2: + resolution: {integrity: sha512-A1PeDEYMrkLrfyOwv2jwihXbo9qxdGD3atBYQA9JJgreAx8/7rC6IUkWOw2NQlOxLp2wL0ifQbh1HuidDfYA6w==} + engines: {node: '>=8'} + dev: false + /regexpu-core@5.3.2: resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} engines: {node: '>=4'} @@ -6123,6 +7075,10 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + /safevalues@0.3.4: + resolution: {integrity: sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==} + dev: false + /sass-loader@14.1.0(sass@1.70.0)(webpack@5.90.1): resolution: {integrity: sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q==} engines: {node: '>= 18.12.0'} @@ -6341,6 +7297,15 @@ packages: - supports-color dev: true + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: false + /slash@4.0.0: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} @@ -6429,6 +7394,13 @@ packages: smart-buffer: 4.2.0 dev: true + /sort-on@6.0.0: + resolution: {integrity: sha512-d51VlJWoFQjp+cIZRyNusCyJdP5pLAw+H+sC4C2q6RhPBv+RAb/QXXck5q3Kdm7h/ot/kD2AlpGPDee8v+0qiA==} + engines: {node: '>=18'} + dependencies: + dot-prop: 8.0.2 + dev: false + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} @@ -6533,6 +7505,11 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + /steno@4.0.2: + resolution: {integrity: sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==} + engines: {node: '>=18'} + dev: false + /streamroller@3.1.5: resolution: {integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==} engines: {node: '>=8.0'} @@ -6711,12 +7688,16 @@ packages: engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true /toidentifier@1.0.1: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + /tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -6741,6 +7722,11 @@ packages: engines: {node: '>=10'} dev: true + /type-fest@3.13.1: + resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} + engines: {node: '>=14.16'} + dev: false + /type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} diff --git a/arai-frontend/src/app/app.component.ts b/arai-frontend/src/app/app.component.ts index e60e803..6c89b27 100644 --- a/arai-frontend/src/app/app.component.ts +++ b/arai-frontend/src/app/app.component.ts @@ -1,11 +1,12 @@ import { Component } from '@angular/core'; -import { CommonModule } from '@angular/common'; import { RouterOutlet } from '@angular/router'; +import { CaseInputComponent } from './case-input/case-input.component'; +import { FlexLayoutModule } from '@angular/flex-layout'; @Component({ selector: 'app-root', standalone: true, - imports: [CommonModule, RouterOutlet], + imports: [RouterOutlet, CaseInputComponent, FlexLayoutModule], templateUrl: './app.component.html', styleUrl: './app.component.scss' }) diff --git a/arai-frontend/src/app/backend.service.ts b/arai-frontend/src/app/backend.service.ts index f41c8de..efa1d70 100644 --- a/arai-frontend/src/app/backend.service.ts +++ b/arai-frontend/src/app/backend.service.ts @@ -1,12 +1,11 @@ import { EventEmitter, Injectable } from '@angular/core'; -import { io, Socket } from 'socket.io-client'; -import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInput, UserInputRequest } from './requests-responses'; +import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInputRequest, userInput } from './requests-responses'; @Injectable({ providedIn: 'root' }) export class BackendService { - address = "localhost:1227"; + address = "localhost:8080"; public genericResponsesArray: GenericResponse[] = []; public userInputArray: UserInputRequest[] = []; @@ -16,7 +15,7 @@ export class BackendService { public statisticsOutputResponseArrayEvent = new EventEmitter(); - private socket: Socket = io(`http://${this.address}`); + private websocket: WebSocket | null = null; constructor() { this.connect(); @@ -35,20 +34,19 @@ export class BackendService { } private connect(): void { - this.socket = io(`http://${this.address}`); - this.socket.on('connect', () => { - console.log('Connected to WebSocket server'); - }); - + this.websocket = new WebSocket(`http://${this.address}`); + this.websocket.onmessage = (event: MessageEvent) => { + this.filterMessages(event as unknown as GenericResponse); + }; // Listen for messages - this.socket.on('message', (message: GenericResponse) => { + this.websocket.on('message', (message: GenericResponse) => { this.filterMessages(message); }); } public sendMessage(message: GenericRequest): void { if(message.request_type === "user_input") { - this.userInputArray.push(message as UserInput); + this.userInputArray.push(message as UserInputRequest); } this.socket.emit('message', message); } diff --git a/arai-frontend/src/app/case-input/case-input.component.html b/arai-frontend/src/app/case-input/case-input.component.html index 2d530b1..07b754f 100644 --- a/arai-frontend/src/app/case-input/case-input.component.html +++ b/arai-frontend/src/app/case-input/case-input.component.html @@ -1 +1,24 @@ -

case-input works!

+
+ + Generic Input + + + + + Trial Value + + + + + Location + + + +
+ Experts Called + Witnesses Called +
+ + +
+ \ No newline at end of file diff --git a/arai-frontend/src/app/case-input/case-input.component.ts b/arai-frontend/src/app/case-input/case-input.component.ts index 8df3e32..e8fcd73 100644 --- a/arai-frontend/src/app/case-input/case-input.component.ts +++ b/arai-frontend/src/app/case-input/case-input.component.ts @@ -1,8 +1,11 @@ import { Component } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; +import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { MatInputModule } from '@angular/material/input' -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { MatCheckboxModule } from '@angular/material/checkbox' +import { CommonModule } from '@angular/common'; +import { MatButtonModule } from '@angular/material/button' +import { BackendService } from '../backend.service'; +import { UserInputRequest, userInput } from '../requests-responses'; @Component({ @@ -10,14 +13,35 @@ import { MatCheckboxModule } from '@angular/material/checkbox' standalone: true, imports: [ // other modules + CommonModule, MatInputModule, MatCheckboxModule, ReactiveFormsModule, - BrowserAnimationsModule, + MatButtonModule ], templateUrl: './case-input.component.html', styleUrl: './case-input.component.scss' }) export class CaseInputComponent { + userInputForm: FormGroup; + userInput: userInput | null = null; + + constructor(private fb: FormBuilder, private readonly backendService: BackendService) { + this.userInputForm = this.fb.group({ + generic_input: [''], + trial_value: [0], + location: [''], + experts_called: [false], + witnesses_called: [false] + }); + } + + onSubmit(): void { + if(this.userInput !== null) { + this.backendService.sendMessage(new UserInputRequest(this.userInput)); + } else { + console.error(`caseInputComponent, onSubmit, userInput is null!`) + } + } } diff --git a/simple-ws/package.json b/simple-ws/package.json new file mode 100644 index 0000000..ebfa4c7 --- /dev/null +++ b/simple-ws/package.json @@ -0,0 +1,16 @@ +{ + "name": "simple-ws", + "version": "1.0.0", + "description": "", + "main": "ws.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node server.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "ws": "^8.16.0" + } +} diff --git a/simple-ws/pnpm-lock.yaml b/simple-ws/pnpm-lock.yaml new file mode 100644 index 0000000..e58d58f --- /dev/null +++ b/simple-ws/pnpm-lock.yaml @@ -0,0 +1,25 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + ws: + specifier: ^8.16.0 + version: 8.16.0 + +packages: + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false diff --git a/simple-ws/ws.js b/simple-ws/ws.js new file mode 100644 index 0000000..33237ea --- /dev/null +++ b/simple-ws/ws.js @@ -0,0 +1,24 @@ +const WebSocket = require('ws'); +const WebSocketServer = WebSocket.WebSocketServer; + +// Initialize a WebSocket Server on port 8080 +const wss = new WebSocketServer({ port: 8080 }); + +wss.on('connection', function connection(ws) { + console.log('A new client connected'); + + // Send a message to the client + ws.send('Welcome to the WebSocket server!'); + + // Listen for messages from the client + ws.on('message', function message(data) { + console.log(`Received message from client: ${data}`); + }); + + // Handle client disconnection + ws.on('close', () => { + console.log('A client disconnected'); + }); +}); + +console.log('WebSocket server is running on ws://localhost:8080'); From c4d363c3330a8c0c5a87f556eb4b4135ce482d5f Mon Sep 17 00:00:00 2001 From: Mateusz Szpyruk Date: Sat, 9 Mar 2024 15:25:21 +0100 Subject: [PATCH 03/27] Update code with data samples --- Backend_correct/app.py | 56 ++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/Backend_correct/app.py b/Backend_correct/app.py index a9b587c..4b57450 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -3,23 +3,9 @@ from flask import Flask, jsonify, request app = Flask(__name__) @app.route("/", methods=['POST']) -def statistics_output(): - data = request.get_json() - cost_of_trial = data.get('response_data', {}).get('cost_of_trial') - time_of_trial = data.get('response_data', {}).get('time_of_trial') - - response = { - "response_type": "statics_output", - "response_data": { - "cost_of_trial": cost_of_trial, # cena w PLN (integer) - "time_of_trial": time_of_trial # czas w formacie UTC (unix time stamp) - } - } - - return jsonify(response) - def recommended_mediators(): data = request.get_json() + request_type = data.get('request_type', {}).get('request_type') request_data = data.get('request_data', {}).get('experts_called') generic_input = data.get('generic_input', {}).get('generic_input') @@ -28,23 +14,35 @@ def recommended_mediators(): experts_called = data.get('experts_called', {}).get('experts_called') witnesses_called = data.get('witnesses_called', {}).get('witnesses_called') - top_5 = {} - list_of_mediators = [] - - for i in range(5): - mediator = {} - top_5.add(mediator) - - response = { + top_5 = { "response_type": "recommended_mediators", - "response_data": { - "name": name, - "specialization": specialization, + "response_data": [{ + "cost_of_trial": 5000, + "time_of_trial": 70 + }, [{ + "name": "Mateusz Szpyruk", + "specialization": "Prawo podatkowe", "localization": localization, - "score": score, - "number_of_opinions": number_of_opinions + "ai_rating": 99, + "user_rating": 99, + "number_of_opinions": 5 + }, { + "name": "Jan Kowalski", + "specialization": "Prawo pracy", + "localization": localization, + "ai_rating": 90, + "user_rating": 99, + "number_of_opinions": 5 + }, { + "name": "Jan Kowalski", + "specialization": "Prawo pracy", + "localization": localization, + "ai_rating": 90, + "user_rating": 99, + "number_of_opinions": 5 + }]] } - } + return jsonify(top_5) From 9e59f7c34473e41cb0267ea392cf7c7a4f3a05ea Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 15:26:45 +0100 Subject: [PATCH 04/27] fix: http client --- arai-frontend/pnpm-lock.yaml | 21 ++++++++++++++ arai-frontend/src/app/app.component.ts | 5 +++- arai-frontend/src/app/backend.service.ts | 29 ++++++++----------- .../app/case-input/case-input.component.ts | 17 ++++++++--- arai-frontend/src/app/requests-responses.ts | 2 +- 5 files changed, 51 insertions(+), 23 deletions(-) diff --git a/arai-frontend/pnpm-lock.yaml b/arai-frontend/pnpm-lock.yaml index 671e8d9..312cd19 100644 --- a/arai-frontend/pnpm-lock.yaml +++ b/arai-frontend/pnpm-lock.yaml @@ -26,6 +26,9 @@ dependencies: '@angular/forms': specifier: ^17.0.0 version: 17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) + '@angular/http': + specifier: ^7.2.16 + version: 7.2.16(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) '@angular/material': specifier: ^17.2.2 version: 17.2.2(@angular/animations@17.2.4)(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/forms@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) @@ -456,6 +459,20 @@ packages: tslib: 2.6.2 dev: false + /@angular/http@7.2.16(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): + resolution: {integrity: sha512-yvjbNyzFSmmz4UTjCdy5M8mk0cZqf9TvSf8yN5UVIwtw4joyuUdlgJCuin0qSbQOKIf/JjHoofpO2JkPCGSNww==} + deprecated: Package no longer supported. Use @angular/common instead, see https://angular.io/guide/deprecations#angularhttp + peerDependencies: + '@angular/core': 7.2.16 + '@angular/platform-browser': 7.2.16 + rxjs: ^6.0.0 + dependencies: + '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) + '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) + rxjs: 7.8.1 + tslib: 1.14.1 + dev: false + /@angular/material@17.2.2(@angular/animations@17.2.4)(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/forms@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): resolution: {integrity: sha512-ToUp8gARTvdze9L7jhEuKqdos221jUCMRD6qzhl07XZRlxVbf/5VXUq2Nn7ei9uN11Ii1UY5pC0GS2XtlyHp4A==} peerDependencies: @@ -7703,6 +7720,10 @@ packages: hasBin: true dev: true + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: false + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} diff --git a/arai-frontend/src/app/app.component.ts b/arai-frontend/src/app/app.component.ts index 6c89b27..346fdbf 100644 --- a/arai-frontend/src/app/app.component.ts +++ b/arai-frontend/src/app/app.component.ts @@ -2,11 +2,14 @@ import { Component } from '@angular/core'; import { RouterOutlet } from '@angular/router'; import { CaseInputComponent } from './case-input/case-input.component'; import { FlexLayoutModule } from '@angular/flex-layout'; +import { HttpClientModule } from '@angular/common/http'; +import { BackendService } from './backend.service'; @Component({ selector: 'app-root', standalone: true, - imports: [RouterOutlet, CaseInputComponent, FlexLayoutModule], + imports: [RouterOutlet, CaseInputComponent, FlexLayoutModule, HttpClientModule], + providers: [BackendService], templateUrl: './app.component.html', styleUrl: './app.component.scss' }) diff --git a/arai-frontend/src/app/backend.service.ts b/arai-frontend/src/app/backend.service.ts index efa1d70..f6cdce8 100644 --- a/arai-frontend/src/app/backend.service.ts +++ b/arai-frontend/src/app/backend.service.ts @@ -1,11 +1,12 @@ import { EventEmitter, Injectable } from '@angular/core'; -import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInputRequest, userInput } from './requests-responses'; +import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInputRequest } from './requests-responses'; +import { HttpClient, HttpHeaders } from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class BackendService { - address = "localhost:8080"; + address = "http://localhost:5000"; public genericResponsesArray: GenericResponse[] = []; public userInputArray: UserInputRequest[] = []; @@ -15,10 +16,8 @@ export class BackendService { public statisticsOutputResponseArrayEvent = new EventEmitter(); - private websocket: WebSocket | null = null; - constructor() { - this.connect(); + constructor(private http: HttpClient) { } private filterMessages(message: GenericResponse) { @@ -33,21 +32,17 @@ export class BackendService { } } - private connect(): void { - this.websocket = new WebSocket(`http://${this.address}`); - this.websocket.onmessage = (event: MessageEvent) => { - this.filterMessages(event as unknown as GenericResponse); - }; - // Listen for messages - this.websocket.on('message', (message: GenericResponse) => { - this.filterMessages(message); - }); - } - public sendMessage(message: GenericRequest): void { if(message.request_type === "user_input") { this.userInputArray.push(message as UserInputRequest); } - this.socket.emit('message', message); + const headers = new HttpHeaders().set( + "Content-Type", + "application/json" + ); + console.log(`request: `, JSON.stringify(message)); + this.http.post(this.address, JSON.stringify(message), {headers}).subscribe((response) => { + console.log(`response: `, response); + }) } } diff --git a/arai-frontend/src/app/case-input/case-input.component.ts b/arai-frontend/src/app/case-input/case-input.component.ts index e8fcd73..2ef2c91 100644 --- a/arai-frontend/src/app/case-input/case-input.component.ts +++ b/arai-frontend/src/app/case-input/case-input.component.ts @@ -2,18 +2,15 @@ import { Component } from '@angular/core'; import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { MatInputModule } from '@angular/material/input' import { MatCheckboxModule } from '@angular/material/checkbox' -import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button' import { BackendService } from '../backend.service'; -import { UserInputRequest, userInput } from '../requests-responses'; +import { GenericRequest, UserInputRequest, userInput } from '../requests-responses'; @Component({ selector: 'app-case-input', standalone: true, imports: [ - // other modules - CommonModule, MatInputModule, MatCheckboxModule, ReactiveFormsModule, @@ -36,6 +33,18 @@ export class CaseInputComponent { }); } + ngOnInit() { + const data: userInput = { + "generic_input": "Rozwodzę się z żoną i chcę uczciwie podzielić majątek", + "trial_cost": 1000, + "location": "Katowice", + "experts_called": true, + "witnesses_called": true + } + const newRequest = new UserInputRequest(data); + this.backendService.sendMessage(newRequest); + } + onSubmit(): void { if(this.userInput !== null) { this.backendService.sendMessage(new UserInputRequest(this.userInput)); diff --git a/arai-frontend/src/app/requests-responses.ts b/arai-frontend/src/app/requests-responses.ts index fa42fe3..45d866d 100644 --- a/arai-frontend/src/app/requests-responses.ts +++ b/arai-frontend/src/app/requests-responses.ts @@ -19,7 +19,7 @@ export class GenericRequest { export interface userInput { "generic_input": string, - "trial_value": number, + "trial_cost": number, "location": string, "experts_called": boolean, "witnesses_called": boolean From f9e97e4aee8eaf86a5fa53b4290f58b64f34d89a Mon Sep 17 00:00:00 2001 From: Jakub Jarzembowski Date: Sat, 9 Mar 2024 15:29:31 +0100 Subject: [PATCH 05/27] First version of statistics module --- dane.xlsx | Bin 0 -> 12496 bytes load_data.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 dane.xlsx create mode 100644 load_data.py diff --git a/dane.xlsx b/dane.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e3d79b23301ef6730ef49ac7c2d3c40ea11b1442 GIT binary patch literal 12496 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 OK;IK@?}Fv$+5Z41NfQwO literal 0 HcmV?d00001 diff --git a/load_data.py b/load_data.py new file mode 100644 index 0000000..3c9490f --- /dev/null +++ b/load_data.py @@ -0,0 +1,33 @@ +import requests +import json +import pandas as pd +import argparse +import warnings + +warnings.filterwarnings('ignore') + +parser = argparse.ArgumentParser() +parser.add_argument('-i','--instancja') +parser.add_argument('-t', '--typ') +parser.add_argument('-r', '--rodzaj') + +args = parser.parse_args() + +TYP = args.typ +RODZAJ = args.rodzaj +INSTANCJA = args.instancja + +def load_api(LINK): + response_API = requests.get(LINK) + data = response_API.text + parse_json = json.loads(data) + +df = pd.read_excel('dane.xlsx',sheet_name=INSTANCJA) + + +mask = df['TYP'] == TYP +mask2 = df['RODZAJ'] == RODZAJ +liczba_miesiecy = df[mask][mask2]['mean'] +procent = df[mask2]['procent do 3 lat'] * 100 + +print(f"Średni czas trwania rozprawy typu {TYP}, rodzaju {RODZAJ} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw kończy się przed 3 latami") From 69a095fdaf981c143d905bbca673e8b95b5b2172 Mon Sep 17 00:00:00 2001 From: Mateusz Szpyruk Date: Sat, 9 Mar 2024 18:07:10 +0100 Subject: [PATCH 06/27] Create code that responds to clients requests --- Backend_correct/app.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Backend_correct/app.py b/Backend_correct/app.py index 4b57450..cc01ed4 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -1,18 +1,13 @@ -from flask import Flask, jsonify, request +from flask import Flask, request, jsonify app = Flask(__name__) -@app.route("/", methods=['POST']) +@app.route("/", methods=['GET']) def recommended_mediators(): data = request.get_json() - request_type = data.get('request_type', {}).get('request_type') - request_data = data.get('request_data', {}).get('experts_called') - generic_input = data.get('generic_input', {}).get('generic_input') - trial_cost = data.get('trial_cost', {}).get('trial_cost') - localization = data.get('localization', {}).get('localization') - experts_called = data.get('experts_called', {}).get('experts_called') - witnesses_called = data.get('witnesses_called', {}).get('witnesses_called') + request_type = data.get('request_data', {}) + print(request_type) top_5 = { "response_type": "recommended_mediators", @@ -22,21 +17,21 @@ def recommended_mediators(): }, [{ "name": "Mateusz Szpyruk", "specialization": "Prawo podatkowe", - "localization": localization, + "location": "Katowice", "ai_rating": 99, "user_rating": 99, "number_of_opinions": 5 }, { "name": "Jan Kowalski", "specialization": "Prawo pracy", - "localization": localization, + "location": "Katowice", "ai_rating": 90, "user_rating": 99, "number_of_opinions": 5 }, { "name": "Jan Kowalski", "specialization": "Prawo pracy", - "localization": localization, + "location": "Katowice", "ai_rating": 90, "user_rating": 99, "number_of_opinions": 5 From 4f75da5c6fdf49aa85d7a36fef21e98c408c6647 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 18:07:28 +0100 Subject: [PATCH 07/27] feat: started cost view and mediators list --- arai-frontend/angular.json | 3 +- arai-frontend/pnpm-lock.yaml | 21 ----------- arai-frontend/src/app/app.component.html | 2 +- arai-frontend/src/app/app.component.ts | 4 +-- arai-frontend/src/app/app.routes.ts | 21 ++++++++++- arai-frontend/src/app/backend.service.ts | 32 ++++++++++------- .../app/case-input/case-input.component.html | 14 ++++---- .../app/case-input/case-input.component.ts | 27 +++++--------- .../app/cost-view/cost-view.component.html | 6 +++- .../src/app/cost-view/cost-view.component.ts | 35 +++++++++++++++++-- .../mediators-list.component.html | 33 ++++++++++++++++- 11 files changed, 130 insertions(+), 68 deletions(-) diff --git a/arai-frontend/angular.json b/arai-frontend/angular.json index 4874f33..e26c62f 100644 --- a/arai-frontend/angular.json +++ b/arai-frontend/angular.json @@ -30,8 +30,7 @@ "src/assets" ], "styles": [ - "@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.scss" + "@angular/material/prebuilt-themes/indigo-pink.css" ], "scripts": [], "server": "src/main.server.ts", diff --git a/arai-frontend/pnpm-lock.yaml b/arai-frontend/pnpm-lock.yaml index 312cd19..671e8d9 100644 --- a/arai-frontend/pnpm-lock.yaml +++ b/arai-frontend/pnpm-lock.yaml @@ -26,9 +26,6 @@ dependencies: '@angular/forms': specifier: ^17.0.0 version: 17.2.4(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) - '@angular/http': - specifier: ^7.2.16 - version: 7.2.16(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) '@angular/material': specifier: ^17.2.2 version: 17.2.2(@angular/animations@17.2.4)(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/forms@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1) @@ -459,20 +456,6 @@ packages: tslib: 2.6.2 dev: false - /@angular/http@7.2.16(@angular/core@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): - resolution: {integrity: sha512-yvjbNyzFSmmz4UTjCdy5M8mk0cZqf9TvSf8yN5UVIwtw4joyuUdlgJCuin0qSbQOKIf/JjHoofpO2JkPCGSNww==} - deprecated: Package no longer supported. Use @angular/common instead, see https://angular.io/guide/deprecations#angularhttp - peerDependencies: - '@angular/core': 7.2.16 - '@angular/platform-browser': 7.2.16 - rxjs: ^6.0.0 - dependencies: - '@angular/core': 17.2.4(rxjs@7.8.1)(zone.js@0.14.4) - '@angular/platform-browser': 17.2.4(@angular/animations@17.2.4)(@angular/common@17.2.4)(@angular/core@17.2.4) - rxjs: 7.8.1 - tslib: 1.14.1 - dev: false - /@angular/material@17.2.2(@angular/animations@17.2.4)(@angular/cdk@17.2.2)(@angular/common@17.2.4)(@angular/core@17.2.4)(@angular/forms@17.2.4)(@angular/platform-browser@17.2.4)(rxjs@7.8.1): resolution: {integrity: sha512-ToUp8gARTvdze9L7jhEuKqdos221jUCMRD6qzhl07XZRlxVbf/5VXUq2Nn7ei9uN11Ii1UY5pC0GS2XtlyHp4A==} peerDependencies: @@ -7720,10 +7703,6 @@ packages: hasBin: true dev: true - /tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - dev: false - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} diff --git a/arai-frontend/src/app/app.component.html b/arai-frontend/src/app/app.component.html index bade52e..90c6b64 100644 --- a/arai-frontend/src/app/app.component.html +++ b/arai-frontend/src/app/app.component.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/arai-frontend/src/app/app.component.ts b/arai-frontend/src/app/app.component.ts index 346fdbf..b0e68b3 100644 --- a/arai-frontend/src/app/app.component.ts +++ b/arai-frontend/src/app/app.component.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; -import { RouterOutlet } from '@angular/router'; +import { RouterModule, RouterOutlet } from '@angular/router'; import { CaseInputComponent } from './case-input/case-input.component'; import { FlexLayoutModule } from '@angular/flex-layout'; import { HttpClientModule } from '@angular/common/http'; @@ -8,7 +8,7 @@ import { BackendService } from './backend.service'; @Component({ selector: 'app-root', standalone: true, - imports: [RouterOutlet, CaseInputComponent, FlexLayoutModule, HttpClientModule], + imports: [RouterOutlet, CaseInputComponent, FlexLayoutModule, HttpClientModule, RouterModule], providers: [BackendService], templateUrl: './app.component.html', styleUrl: './app.component.scss' diff --git a/arai-frontend/src/app/app.routes.ts b/arai-frontend/src/app/app.routes.ts index dc39edb..4e83f41 100644 --- a/arai-frontend/src/app/app.routes.ts +++ b/arai-frontend/src/app/app.routes.ts @@ -1,3 +1,22 @@ import { Routes } from '@angular/router'; +import { CaseInputComponent } from './case-input/case-input.component'; +import { CostViewComponent } from './cost-view/cost-view.component'; +import { MediatorsListComponent } from './mediators-list/mediators-list.component'; -export const routes: Routes = []; +export const routes: Routes = [ + { + path: '', // Explicit root path configuration + redirectTo: '/input', // Redirect to '/input' as a default route + pathMatch: 'full' // Ensures full match of the path + }, + { + path: '', // Base path for children + children: [ + {path: 'input', component: CaseInputComponent}, + {path: 'koszt', component: CostViewComponent}, + {path: 'mediatorzy', component: MediatorsListComponent}, + {path: '**', component: CaseInputComponent} // Wildcard route for unmatched paths + ] + } + ]; + diff --git a/arai-frontend/src/app/backend.service.ts b/arai-frontend/src/app/backend.service.ts index f6cdce8..e8a46b1 100644 --- a/arai-frontend/src/app/backend.service.ts +++ b/arai-frontend/src/app/backend.service.ts @@ -32,17 +32,25 @@ export class BackendService { } } - public sendMessage(message: GenericRequest): void { - if(message.request_type === "user_input") { - this.userInputArray.push(message as UserInputRequest); - } - const headers = new HttpHeaders().set( - "Content-Type", - "application/json" - ); - console.log(`request: `, JSON.stringify(message)); - this.http.post(this.address, JSON.stringify(message), {headers}).subscribe((response) => { - console.log(`response: `, response); - }) + public sendMessage(message: GenericRequest): Promise { + return new Promise((resolve, reject) => { + if (message.request_type === "user_input") { + this.userInputArray.push(message as UserInputRequest); + } + const headers = new HttpHeaders().set("Content-Type", "application/json"); + + console.log(`request: `, JSON.stringify(message)); + + this.http.post(this.address, JSON.stringify(message), { headers }).subscribe({ + next: (response) => { + console.log(`response: `, response); + resolve(response); + }, + error: (error) => { + console.error(`backendService, sendMessage, error: `, error); + reject(error); + } + }); + }); } } diff --git a/arai-frontend/src/app/case-input/case-input.component.html b/arai-frontend/src/app/case-input/case-input.component.html index 07b754f..fa8e8a1 100644 --- a/arai-frontend/src/app/case-input/case-input.component.html +++ b/arai-frontend/src/app/case-input/case-input.component.html @@ -1,24 +1,24 @@
- Generic Input - + Opis Sprawy + - Trial Value + Wartość Przedmiotu Sporu - Location + Lokacja
- Experts Called - Witnesses Called + Powołani Biegli + Powołani Świadkowie
- +
\ No newline at end of file diff --git a/arai-frontend/src/app/case-input/case-input.component.ts b/arai-frontend/src/app/case-input/case-input.component.ts index 2ef2c91..136fbbb 100644 --- a/arai-frontend/src/app/case-input/case-input.component.ts +++ b/arai-frontend/src/app/case-input/case-input.component.ts @@ -33,24 +33,15 @@ export class CaseInputComponent { }); } - ngOnInit() { - const data: userInput = { - "generic_input": "Rozwodzę się z żoną i chcę uczciwie podzielić majątek", - "trial_cost": 1000, - "location": "Katowice", - "experts_called": true, - "witnesses_called": true - } - const newRequest = new UserInputRequest(data); - this.backendService.sendMessage(newRequest); - } - - onSubmit(): void { + async onSubmit() { + this.userInput = this.userInputForm.value; if(this.userInput !== null) { - this.backendService.sendMessage(new UserInputRequest(this.userInput)); - } else { - console.error(`caseInputComponent, onSubmit, userInput is null!`) - } + const newRequest = new UserInputRequest(this.userInput); + this.backendService.sendMessage(newRequest); + const result = await this.backendService.sendMessage(new UserInputRequest(this.userInput)); + console.log(`result: `, result); + } else { + console.error(`caseInputComponent, onSubmit, userInput is null!`) } - +} } diff --git a/arai-frontend/src/app/cost-view/cost-view.component.html b/arai-frontend/src/app/cost-view/cost-view.component.html index cbdd498..aadef5b 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.html +++ b/arai-frontend/src/app/cost-view/cost-view.component.html @@ -1 +1,5 @@ -

cost-view works!

+Przewidywalne minimalne koszta: +@if(costData !== null) { + Koszta: {{costData.cost_of_trial}} zł
+ Przewidywalny czas: {{costData.time_of_trial | date:'L'}} miesiące +} \ No newline at end of file diff --git a/arai-frontend/src/app/cost-view/cost-view.component.ts b/arai-frontend/src/app/cost-view/cost-view.component.ts index 957a3ee..d1f240c 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.ts +++ b/arai-frontend/src/app/cost-view/cost-view.component.ts @@ -1,12 +1,43 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; +import { StatisticsOutputInterface } from '../requests-responses'; +import { DatePipe } from '@angular/common'; @Component({ selector: 'app-cost-view', standalone: true, - imports: [], + imports: [DatePipe], templateUrl: './cost-view.component.html', styleUrl: './cost-view.component.scss' }) export class CostViewComponent { +@Input() costData: StatisticsOutputInterface | null = { + cost_of_trial: 2137, + time_of_trial: Date.UTC(0, 6, 0, 0, 0, 0, 0) +}; + +public calculateTimeDifference(utcDateNumber: number): string { + const currentDate = new Date(); + const targetDate = new Date(utcDateNumber); + const differenceInMilliseconds = targetDate.getTime() - currentDate.getTime(); + + // Convert milliseconds to days + const differenceInDays = differenceInMilliseconds / (1000 * 60 * 60 * 24); + + // Check if the difference is greater than or equal to 30 to approximate months + if (differenceInDays >= 30) { + const months = Math.floor(differenceInDays / 30); + const years = Math.floor(differenceInDays/365); + if(years > 0) { + return `Twoja sprawa zajmie około ${years} lat` + } + if(months === 1) { + return `Twoja sprawa zajmie około 1 miesiąc`; + } else { + return `Twoja sprawa zajmie około ${months} miesięcy`; + } + } else { + return `Twoja sprawa zajmie około ${Math.ceil(differenceInDays)} dni`; + } +} } diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.html b/arai-frontend/src/app/mediators-list/mediators-list.component.html index dbd6505..a90591c 100644 --- a/arai-frontend/src/app/mediators-list/mediators-list.component.html +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.html @@ -1 +1,32 @@ -

mediators-list works!

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
\ No newline at end of file From 9f9c5e453fdc2170b63aff29751762cbb8ff5647 Mon Sep 17 00:00:00 2001 From: Mateusz Szpyruk Date: Sat, 9 Mar 2024 18:28:39 +0100 Subject: [PATCH 08/27] Add flask-cors library --- Backend_correct/app.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Backend_correct/app.py b/Backend_correct/app.py index cc01ed4..d7c9e74 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -1,13 +1,15 @@ from flask import Flask, request, jsonify +from flask_cors import CORS app = Flask(__name__) +CORS(app) @app.route("/", methods=['GET']) def recommended_mediators(): data = request.get_json() - request_type = data.get('request_data', {}) - print(request_type) + input = data.get('request_data', {}) + # print(input.get("location")) top_5 = { "response_type": "recommended_mediators", @@ -17,21 +19,21 @@ def recommended_mediators(): }, [{ "name": "Mateusz Szpyruk", "specialization": "Prawo podatkowe", - "location": "Katowice", + "location": input.get("location"), "ai_rating": 99, "user_rating": 99, "number_of_opinions": 5 }, { "name": "Jan Kowalski", "specialization": "Prawo pracy", - "location": "Katowice", + "location": input.get("location"), "ai_rating": 90, "user_rating": 99, "number_of_opinions": 5 }, { "name": "Jan Kowalski", "specialization": "Prawo pracy", - "location": "Katowice", + "location": input.get("location"), "ai_rating": 90, "user_rating": 99, "number_of_opinions": 5 From 8f1bc09351ce84830d0142037e0317b3806406bc Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 18:29:05 +0100 Subject: [PATCH 09/27] feat: beautify case input --- .../app/case-input/case-input.component.html | 49 ++++++++++--------- .../app/case-input/case-input.component.scss | 43 ++++++++++++++++ .../mediators-list.component.ts | 26 +++++++++- 3 files changed, 92 insertions(+), 26 deletions(-) diff --git a/arai-frontend/src/app/case-input/case-input.component.html b/arai-frontend/src/app/case-input/case-input.component.html index fa8e8a1..b6078ec 100644 --- a/arai-frontend/src/app/case-input/case-input.component.html +++ b/arai-frontend/src/app/case-input/case-input.component.html @@ -1,24 +1,25 @@ -
- - Opis Sprawy - - - - - Wartość Przedmiotu Sporu - - - - - Lokacja - - - -
- Powołani Biegli - Powołani Świadkowie -
- - -
- \ No newline at end of file +
+
+ + Opis Sprawy + + + + + Wartość Przedmiotu Sporu + + + + + Lokacja + + + +
+ Powołani Biegli + Powołani Świadkowie +
+ + +
+
\ No newline at end of file diff --git a/arai-frontend/src/app/case-input/case-input.component.scss b/arai-frontend/src/app/case-input/case-input.component.scss index e69de29..523257c 100644 --- a/arai-frontend/src/app/case-input/case-input.component.scss +++ b/arai-frontend/src/app/case-input/case-input.component.scss @@ -0,0 +1,43 @@ +body, html { + height: 100%; + display: flex; + justify-content: center; + align-items: center; + margin: 0; + } + + .lawyering-form { + display: flex; + flex-direction: column; + gap: 20px; // Same as fxLayoutGap + width: 100%; + max-width: 600px; // Adjust based on your design preferences + padding: 20px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); + border-radius: 8px; + background-color: #f5f5f5; + + .custom-form-field { + width: 100%; // Ensures form fields take up full width of the form + appearance: outline; + + .text-area-input, .numeric-input, .text-input { + width: 100%; // Ensures inputs take up full width of their form field + } + } + + .checkbox-group { + display: flex; + flex-direction: column; + gap: 10px; // For spacing between checkboxes + } + + .submit-button { + align-self: flex-end; // Aligns the submit button to the end of the form + background-color: #004d40; + color: #ffffff; + font-size: 16px; + font-weight: 500; + } + } + \ No newline at end of file diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.ts b/arai-frontend/src/app/mediators-list/mediators-list.component.ts index ec45ad5..cba0990 100644 --- a/arai-frontend/src/app/mediators-list/mediators-list.component.ts +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.ts @@ -1,12 +1,34 @@ import { Component } from '@angular/core'; +import { MatTableModule } from '@angular/material/table' + +export interface PeriodicElement { + name: string; + position: number; + weight: number; + symbol: string; +} + +const ELEMENT_DATA: PeriodicElement[] = [ + {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, + {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, + {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, + {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, + {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, + {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, + {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, + {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, + {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, + {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, +]; @Component({ selector: 'app-mediators-list', standalone: true, - imports: [], + imports: [MatTableModule], templateUrl: './mediators-list.component.html', styleUrl: './mediators-list.component.scss' }) export class MediatorsListComponent { - + displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; + dataSource = ELEMENT_DATA; } From 2c7cbf88a77c08faed10693293099e110d3017d7 Mon Sep 17 00:00:00 2001 From: Mateusz Szpyruk Date: Sat, 9 Mar 2024 18:33:01 +0100 Subject: [PATCH 10/27] Update flask-corse module --- Backend_correct/app.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Backend_correct/app.py b/Backend_correct/app.py index d7c9e74..722a1ff 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -1,9 +1,11 @@ from flask import Flask, request, jsonify -from flask_cors import CORS +from flask_cors import CORS, cross_origin app = Flask(__name__) -CORS(app) +cors = CORS(app) +app.config['CORS_HEADERS'] = 'Content-Type' +@cross_origin() @app.route("/", methods=['GET']) def recommended_mediators(): data = request.get_json() From 061b9a69d44a2ec7b4e1005f21101e0d6bfbc3c5 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 18:33:15 +0100 Subject: [PATCH 11/27] feat: added proxy conf json --- arai-frontend/proxy.conf.json | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 arai-frontend/proxy.conf.json diff --git a/arai-frontend/proxy.conf.json b/arai-frontend/proxy.conf.json new file mode 100644 index 0000000..562840e --- /dev/null +++ b/arai-frontend/proxy.conf.json @@ -0,0 +1,8 @@ +{ + "/api": { + "target": "http://localhost:5000", + "secure": false, + "changeOrigin": true + } + } + \ No newline at end of file From f8b3d88a8410f65cdec0d7d77c68e71973af6b22 Mon Sep 17 00:00:00 2001 From: Jakub Jarzembowski Date: Sat, 9 Mar 2024 18:49:05 +0100 Subject: [PATCH 12/27] module update --- dane.xlsx | Bin 12496 -> 11647 bytes load_data.py | 91 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 75 insertions(+), 16 deletions(-) diff --git a/dane.xlsx b/dane.xlsx index e3d79b23301ef6730ef49ac7c2d3c40ea11b1442..709d9f773d6e6c112b7442905cd805400af5fe64 100644 GIT binary patch delta 5423 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

FydD3F&SSM8J_8 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 Tpggvy0P=+(2mYDhKf?b5z4ht1 diff --git a/load_data.py b/load_data.py index 3c9490f..8682ee8 100644 --- a/load_data.py +++ b/load_data.py @@ -1,5 +1,3 @@ -import requests -import json import pandas as pd import argparse import warnings @@ -7,27 +5,88 @@ import warnings warnings.filterwarnings('ignore') parser = argparse.ArgumentParser() -parser.add_argument('-i','--instancja') parser.add_argument('-t', '--typ') -parser.add_argument('-r', '--rodzaj') +parser.add_argument('-k','--kwota') +parser.add_argument('-b', '--biegly') args = parser.parse_args() TYP = args.typ -RODZAJ = args.rodzaj -INSTANCJA = args.instancja +KWOTA = int(args.kwota) +BIEGLY = str(args.biegly) +print(TYP,KWOTA,BIEGLY) +def calc_stats(typ=TYP,KWOTA=KWOTA,BIEGLY = BIEGLY): + mapka = {'1':'cywilnej','2':'górniczej','3':'gospodarczej','4':'prawa pracy & ubezpieczeń'} + koszt_bieglego= 1789.42 + koszt = 0 + if KWOTA < 100000 and typ != '4': + df = pd.read_excel('dane.xlsx',sheet_name='rejon') + mask = df['RODZAJ'] == int(typ) + liczba_miesiecy = df[mask]['mean'] + procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 + koszt_sadu = 0 + koszt_adwokata = 0 + if KWOTA <= 500: + koszt_sadu = 30 + koszt_adwokata = 90 + elif KWOTA > 500 and KWOTA <= 1500: + koszt_sadu = 100 + koszt_adwokata = 270 + elif KWOTA > 1500 and KWOTA <= 4000: + koszt_sadu = 200 + elif KWOTA > 4000 and KWOTA <= 7500: + koszt_sadu = 400 + elif KWOTA > 7500 and KWOTA <= 10000: + koszt_sadu = 500 + elif KWOTA > 10000 and KWOTA <= 15000: + koszt_sadu = 750 + elif KWOTA > 15000 and KWOTA <= 20000: + koszt_sadu = 1000 + elif KWOTA > 20000: + koszt_sadu = KWOTA * 0.05 + if koszt_sadu > 20000: + koszt_sadu = 20000 -def load_api(LINK): - response_API = requests.get(LINK) - data = response_API.text - parse_json = json.loads(data) + if KWOTA > 1500 and KWOTA <= 5000: + koszt_adwokata = 900 + elif KWOTA > 5000 and KWOTA <= 10000: + koszt_adwokata = 1800 + elif KWOTA > 10000 and KWOTA <= 50000: + koszt_adwokata = 3600 + elif KWOTA > 50000 and KWOTA <= 100000: + koszt_adwokata = 5400 -df = pd.read_excel('dane.xlsx',sheet_name=INSTANCJA) + + if BIEGLY == 'True': + koszt = koszt_sadu + koszt_adwokata + koszt_bieglego + else: + koszt = koszt_sadu + koszt_adwokata + print(f"Średni czas trwania rozprawy typu {mapka[typ]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa dłuzej niz rok, jej minimalny koszt wyniesie {koszt}") + + elif KWOTA > 100000: + df = pd.read_excel('dane.xlsx',sheet_name='okreg') + mask = df['RODZAJ'] == int(typ) + liczba_miesiecy = df[mask]['mean'] + procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 + if KWOTA <= 200000: + koszt_adwokata = 5400 + elif KWOTA > 200000 and KWOTA <= 2000000: + koszt_adwokata = 10800 + elif KWOTA > 2000000 and KWOTA <= 5000000: + koszt_adwokata = 15000 + elif KWOTA > 500000: + koszt_adwokata = 25000 + + koszt_sadu = KWOTA * 0.05 + if koszt_sadu > 20000: + koszt_sadu = 20000 + + if BIEGLY == 'True': + koszt = koszt_sadu + koszt_adwokata + koszt_bieglego + else: + koszt = koszt_sadu + koszt_adwokata -mask = df['TYP'] == TYP -mask2 = df['RODZAJ'] == RODZAJ -liczba_miesiecy = df[mask][mask2]['mean'] -procent = df[mask2]['procent do 3 lat'] * 100 + print(f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}") -print(f"Średni czas trwania rozprawy typu {TYP}, rodzaju {RODZAJ} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw kończy się przed 3 latami") +calc_stats() \ No newline at end of file From fc76b7263d9af06662e6e775b2fef92bc836a0f2 Mon Sep 17 00:00:00 2001 From: Jakub Jarzembowski Date: Sat, 9 Mar 2024 18:51:17 +0100 Subject: [PATCH 13/27] module update --- load_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/load_data.py b/load_data.py index 8682ee8..94ce3c4 100644 --- a/load_data.py +++ b/load_data.py @@ -14,7 +14,7 @@ args = parser.parse_args() TYP = args.typ KWOTA = int(args.kwota) BIEGLY = str(args.biegly) -print(TYP,KWOTA,BIEGLY) + def calc_stats(typ=TYP,KWOTA=KWOTA,BIEGLY = BIEGLY): mapka = {'1':'cywilnej','2':'górniczej','3':'gospodarczej','4':'prawa pracy & ubezpieczeń'} koszt_bieglego= 1789.42 From 29b01b71ab6a0931bed19edb02f9bfa68a36155e Mon Sep 17 00:00:00 2001 From: Mateusz Szpyruk Date: Sat, 9 Mar 2024 18:58:36 +0100 Subject: [PATCH 14/27] Change GET to POST --- Backend_correct/app.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Backend_correct/app.py b/Backend_correct/app.py index 722a1ff..246ffcf 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -6,7 +6,7 @@ cors = CORS(app) app.config['CORS_HEADERS'] = 'Content-Type' @cross_origin() -@app.route("/", methods=['GET']) +@app.route("/", methods=['POST']) def recommended_mediators(): data = request.get_json() From a304387a91f42158bf9927f2ae5c4aae56386764 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 18:59:49 +0100 Subject: [PATCH 15/27] feat: user input more responsive --- arai-frontend/src/app/backend.service.ts | 32 +++++++++++++++---- .../app/case-input/case-input.component.scss | 12 +++++++ .../app/case-input/case-input.component.ts | 2 -- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/arai-frontend/src/app/backend.service.ts b/arai-frontend/src/app/backend.service.ts index e8a46b1..4c9fb87 100644 --- a/arai-frontend/src/app/backend.service.ts +++ b/arai-frontend/src/app/backend.service.ts @@ -1,6 +1,6 @@ import { EventEmitter, Injectable } from '@angular/core'; import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInputRequest } from './requests-responses'; -import { HttpClient, HttpHeaders } from '@angular/common/http'; +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; @Injectable({ providedIn: 'root' @@ -32,16 +32,19 @@ export class BackendService { } } - public sendMessage(message: GenericRequest): Promise { + public sendMessage(message: UserInputRequest): Promise { return new Promise((resolve, reject) => { if (message.request_type === "user_input") { this.userInputArray.push(message as UserInputRequest); } - const headers = new HttpHeaders().set("Content-Type", "application/json"); - - console.log(`request: `, JSON.stringify(message)); - - this.http.post(this.address, JSON.stringify(message), { headers }).subscribe({ + + // Assuming `serializeToQueryParams` is a method that converts your message object into HttpParams. + // You will need to implement this conversion based on your `GenericRequest` structure. + const params = this.serializeToQueryParams(message); + + console.log(`request: `, params.toString()); + + this.http.get(`${this.address}`, { params }).subscribe({ next: (response) => { console.log(`response: `, response); resolve(response); @@ -53,4 +56,19 @@ export class BackendService { }); }); } + + private serializeToQueryParams(message: GenericRequest): HttpParams { + let params = new HttpParams(); + // Use a type assertion here to let TypeScript know the real type of the keys + (Object.keys(message) as Array).forEach(key => { + const value = message[key]; + if (value !== undefined) { + // Assuming all values are either string or can be converted to string + params = params.append(key, String(value)); + } + }); + return params; + } + + } diff --git a/arai-frontend/src/app/case-input/case-input.component.scss b/arai-frontend/src/app/case-input/case-input.component.scss index 523257c..19a84b8 100644 --- a/arai-frontend/src/app/case-input/case-input.component.scss +++ b/arai-frontend/src/app/case-input/case-input.component.scss @@ -40,4 +40,16 @@ body, html { font-weight: 500; } } + + + @media (max-width: 768px) { + .lawyering-form { + max-width: 90%; /* Allows more margin on smaller devices */ + } + + .submit-button { + width: 100%; /* Makes the submit button full width on smaller screens */ + align-self: center; /* Center align if preferred */ + } + } \ No newline at end of file diff --git a/arai-frontend/src/app/case-input/case-input.component.ts b/arai-frontend/src/app/case-input/case-input.component.ts index 136fbbb..25ae0df 100644 --- a/arai-frontend/src/app/case-input/case-input.component.ts +++ b/arai-frontend/src/app/case-input/case-input.component.ts @@ -36,8 +36,6 @@ export class CaseInputComponent { async onSubmit() { this.userInput = this.userInputForm.value; if(this.userInput !== null) { - const newRequest = new UserInputRequest(this.userInput); - this.backendService.sendMessage(newRequest); const result = await this.backendService.sendMessage(new UserInputRequest(this.userInput)); console.log(`result: `, result); } else { From 94415a2298f8e908e575782a5e7f3a5ef02fb4a0 Mon Sep 17 00:00:00 2001 From: Jakub Jarzembowski Date: Sat, 9 Mar 2024 19:09:38 +0100 Subject: [PATCH 16/27] packed into folder --- statystyki/.gitignore | 632 ++++++++++++++++++++++++++++++++++++++++ statystyki/README.md | 1 + statystyki/dane.xlsx | Bin 0 -> 11647 bytes statystyki/load_data.py | 92 ++++++ 4 files changed, 725 insertions(+) create mode 100644 statystyki/.gitignore create mode 100644 statystyki/README.md create mode 100644 statystyki/dane.xlsx create mode 100644 statystyki/load_data.py diff --git a/statystyki/.gitignore b/statystyki/.gitignore new file mode 100644 index 0000000..3e85487 --- /dev/null +++ b/statystyki/.gitignore @@ -0,0 +1,632 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +.DS_STORE + +/dist/ +/bazel-out +/integration/bazel/bazel-* +*.log +/node_modules/ + +# CircleCI temporary file for cache key computation. +# See `save_month_to_file` in `.circleci/config.yml`. +month.txt + +# Include when developing application packages. +pubspec.lock +.c9 +.idea/ +.devcontainer/* +!.devcontainer/README.md +!.devcontainer/recommended-devcontainer.json +!.devcontainer/recommended-Dockerfile +.settings/ +.vscode/launch.json +.vscode/settings.json +.vscode/tasks.json +*.swo +*.swp +modules/.settings +modules/.vscode +.vimrc +.nvimrc + +# Don't check in secret files +*secret.js + +# Ignore npm/yarn debug log +npm-debug.log +yarn-error.log + +# build-analytics +.build-analytics + +# rollup-test output +/modules/rollup-test/dist/ + +# User specific bazel settings +.bazelrc.user + +# User specific ng-dev settings +.ng-dev.user* + +.notes.md +baseline.json + +# Ignore .history for the xyz.local-history VSCode extension +.history + +# Husky +.husky/_ +aio/content/examples/.DS_Store + + +# Ignore cache created with the Angular CLI. +.angular/ + +node_modules/ +.node_modules/ +built/* +tests/cases/rwc/* +tests/cases/perf/* +!tests/cases/webharness/compilerToString.js +test-args.txt +~*.docx +\#*\# +.\#* +tests/baselines/local/* +tests/baselines/local.old/* +tests/services/baselines/local/* +tests/baselines/prototyping/local/* +tests/baselines/rwc/* +tests/baselines/reference/projectOutput/* +tests/baselines/local/projectOutput/* +tests/baselines/reference/testresults.tap +tests/services/baselines/prototyping/local/* +tests/services/browser/typescriptServices.js +src/harness/*.js +src/compiler/diagnosticInformationMap.generated.ts +src/compiler/diagnosticMessages.generated.json +src/parser/diagnosticInformationMap.generated.ts +src/parser/diagnosticMessages.generated.json +rwc-report.html +*.swp +build.json +*.actual +tests/webTestServer.js +tests/webTestServer.js.map +tests/webhost/*.d.ts +tests/webhost/webtsc.js +tests/cases/**/*.js +tests/cases/**/*.js.map +*.config +scripts/eslint/built/ +scripts/debug.bat +scripts/run.bat +scripts/**/*.js +scripts/**/*.js.map +coverage/ +internal/ +**/.DS_Store +.settings +**/.vs +**/.vscode/* +!**/.vscode/tasks.json +!**/.vscode/settings.template.json +!**/.vscode/launch.template.json +!**/.vscode/extensions.json +!tests/cases/projects/projectOption/**/node_modules +!tests/cases/projects/NodeModulesSearch/**/* +!tests/baselines/reference/project/nodeModules*/**/* +.idea +yarn.lock +yarn-error.log +.parallelperf.* +tests/baselines/reference/dt +.failed-tests +TEST-results.xml +package-lock.json +.eslintcache +*v8.log +/lib/ + +# Editor temporary/working/backup files # +######################################### +.#* +[#]*# +*~ +*$ +*.bak +.idea/ +*.kdev4 +*.org +.project +.pydevproject +*.rej +.settings/ +.spyproject/ +.*.sw[nop] +.sw[nop] +*.tmp +*.vim +tags +.venv/ +venv/ +.theia/ +.vscode/ + +# Compiled source # +################### +*.a +*.com +*.class +*.dll +*.exe +*.l[ao] +*.o +*.o.d +*.py[ocd] +*.so +_configtest.c + +# Packages # +############ +# it's better to unpack these files and commit the raw source +# git has its own built in compression methods +*.7z +*.bz2 +*.bzip2 +*.dmg +*.gz +*.iso +*.jar +*.rar +*.tar +*.tbz2 +*.tgz +*.zip + +# Python files # +################ +# build directory +build +# sphinx build directory +doc/_build +# cython files +cythonize.dat +# sdist directory +dist +# Egg metadata +*.egg-info +# tox testing tool +.tox +# The shelf plugin uses this dir +./.shelf +MANIFEST +# distutils configuration +site.cfg +setup.cfg +# other temporary files +.coverage +.deps +.libs +.eggs +pip-wheel-metadata + +# Meson # +######### +.mesonpy-native-file.ini +installdir/ +build-install/ +.mesonpy/ + +# doit +###### +.doit.db.dat +.doit.db.dir +.doit.db.db +.doit.db + +# Logs and databases # +###################### +*.log +*.sql +*.sqlite + +# pytest cache # +################ +.cache/ +.pytest_cache/ + +# mypy cache # +############## +.mypy_cache/ + +# linter # +########## +.ruff_cache/ +.pre-commit-workdir/ + +# Patches # +########### +*.patch +*.diff + +# OS generated files # +###################### +.directory +.fseventsd +.DS_Store* +.gdb_history +.VolumeIcon.icns +ehthumbs.db +Icon? +Thumbs.db +*.dSYM + +# Documentation generated files # +################################# +doc/frontpage/build +doc/source/reference/generated +**/.ipynb_checkpoints + +# Things specific to this project # +################################### +benchmarks/env +benchmarks/results +benchmarks/scipy +benchmarks/html +benchmarks/scipy-benchmarks +.openblas +scipy/_distributor_init_local.py +scipy/__config__.py +scipy/_lib/_ccallback_c.c +scipy/_lib/messagestream.c +scipy/_lib/src/messagestream_config.h +scipy/_lib/_test_deprecation_call.c +scipy/_lib/_test_deprecation_def.c +scipy/_lib/_test_deprecation_def.h +scipy/cluster/_vq.c +scipy/cluster/_hierarchy.c +scipy/cluster/_optimal_leaf_ordering.c +scipy/fftpack/_fftpackmodule.c +scipy/fftpack/convolvemodule.c +scipy/fftpack/convolve.c +scipy/fftpack/src/dct.c +scipy/fftpack/src/dst.c +scipy/integrate/_dopmodule.c +scipy/integrate/_lsodamodule.c +scipy/integrate/_vodemodule.c +scipy/integrate/_dop-f2pywrappers.f +scipy/integrate/_lsoda-f2pywrappers.f +scipy/integrate/_vode-f2pywrappers.f +scipy/interpolate/_rbfinterp_pythran.cpp +scipy/interpolate/_ppoly.c +scipy/interpolate/_rgi_cython.c +scipy/interpolate/_bspl.c +scipy/interpolate/interpnd.c +scipy/interpolate/src/dfitpack-f2pywrappers.f +scipy/interpolate/src/dfitpackmodule.c +scipy/io/_test_fortranmodule.c +scipy/io/matlab/_mio5_utils.c +scipy/io/matlab/_mio_utils.c +scipy/io/matlab/_streams.c +scipy/lib/blas/cblas.pyf +scipy/lib/blas/cblasmodule.c +scipy/lib/blas/fblas-f2pywrappers.f +scipy/lib/blas/fblas.pyf +scipy/lib/blas/fblasmodule.c +scipy/lib/blas/fblaswrap.f +scipy/lib/lapack/clapack.pyf +scipy/lib/lapack/clapackmodule.c +scipy/lib/lapack/flapack.pyf +scipy/lib/lapack/flapackmodule.c +scipy/linalg/_cblasmodule.c +scipy/linalg/_clapackmodule.c +scipy/linalg/_fblas-f2pywrappers.f +scipy/linalg/_fblasmodule.c +scipy/linalg/_flapack-f2pywrappers.f +scipy/linalg/_flapackmodule.c +scipy/linalg/_interpolativemodule.c +scipy/linalg/_solve_toeplitz.c +scipy/linalg/_decomp_update.c +scipy/linalg/_decomp_update.pyx +scipy/linalg/_cythonized_array_utils.c +scipy/linalg/_blas_subroutine_wrappers.f +scipy/linalg/_blas_subroutines.h +scipy/linalg/_lapack_subroutine_wrappers.f +scipy/linalg/_lapack_subroutines.h +scipy/linalg/cblas.pyf +scipy/linalg/clapack.pyf +scipy/linalg/cython_blas.c +scipy/linalg/cython_lapack.c +scipy/linalg/fblas.pyf +scipy/linalg/flapack.pyf +scipy/linalg/cython_blas.pxd +scipy/linalg/cython_blas.pyx +scipy/linalg/cython_lapack.pxd +scipy/linalg/cython_lapack.pyx +scipy/linalg/src/id_dist/src/*_subr_*.f +scipy/linalg/_matfuncs_sqrtm_triu.c +scipy/linalg/_matfuncs_sqrtm_triu.cpp +scipy/linalg/_matfuncs_expm.c +scipy/linalg/_matfuncs_expm.pyx +scipy/ndimage/src/_ni_label.c +scipy/ndimage/src/_cytest.c +scipy/optimize/_bglu_dense.c +scipy/optimize/cobyla/_cobylamodule.c +scipy/optimize/_group_columns.cpp +scipy/optimize/lbfgsb_src/_lbfgsbmodule.c +scipy/optimize/lbfgsb_src/_lbfgsb-f2pywrappers.f +scipy/optimize/minpack2/_minpack2module.c +scipy/optimize/__nnls/__nnlsmodule.c +scipy/optimize/slsqp/_slsqpmodule.c +scipy/optimize/_lsq/givens_elimination.c +scipy/optimize/_trlib/_trlib.c +scipy/optimize/tnc/moduleTNC.c +scipy/optimize/tnc/_moduleTNC.c +scipy/signal/_peak_finding_utils.c +scipy/signal/_spectral.c +scipy/signal/_spectral.cpp +scipy/signal/_max_len_seq_inner.c +scipy/signal/_max_len_seq_inner.cpp +scipy/signal/_sosfilt.c +scipy/signal/_upfirdn_apply.c +scipy/signal/_correlate_nd.c +scipy/signal/_lfilter.c +scipy/signal/_bspline_util.c +scipy/sparse/_csparsetools.c +scipy/sparse/_csparsetools.pyx +scipy/sparse/csgraph/_min_spanning_tree.c +scipy/sparse/csgraph/_shortest_path.c +scipy/sparse/csgraph/_tools.c +scipy/sparse/csgraph/_traversal.c +scipy/sparse/csgraph/_flow.c +scipy/sparse/csgraph/_matching.c +scipy/sparse/csgraph/_reordering.c +scipy/sparse/linalg/dsolve/umfpack/_umfpack.py +scipy/sparse/linalg/dsolve/umfpack/_umfpack_wrap.c +scipy/sparse/linalg/_eigen/arpack/_arpack-f2pywrappers.f +scipy/sparse/linalg/_eigen/arpack/_arpackmodule.c +scipy/sparse/linalg/_eigen/arpack/arpack.pyf +scipy/sparse/linalg/_isolve/iterative/BiCGREVCOM.f +scipy/sparse/linalg/_isolve/iterative/BiCGSTABREVCOM.f +scipy/sparse/linalg/_isolve/iterative/CGREVCOM.f +scipy/sparse/linalg/_isolve/iterative/CGSREVCOM.f +scipy/sparse/linalg/_isolve/iterative/GMRESREVCOM.f +scipy/sparse/linalg/_isolve/iterative/QMRREVCOM.f +scipy/sparse/linalg/_isolve/iterative/STOPTEST2.f +scipy/sparse/linalg/_isolve/iterative/_iterative.pyf +scipy/sparse/linalg/_isolve/iterative/_iterativemodule.c +scipy/sparse/linalg/_isolve/iterative/getbreak.f +scipy/sparse/sparsetools/bsr_impl.h +scipy/sparse/sparsetools/csc_impl.h +scipy/sparse/sparsetools/csr_impl.h +scipy/sparse/sparsetools/other_impl.h +scipy/sparse/sparsetools/sparsetools_impl.h +scipy/spatial/_ckdtree.cxx +scipy/spatial/ckdtree.h +scipy/spatial/_hausdorff.c +scipy/spatial/_qhull.c +scipy/spatial/_voronoi.c +scipy/spatial/transform/_rotation.c +scipy/special/_comb.c +scipy/special/_ellip_harm_2.c +scipy/special/_ellip_harm_2.h +scipy/special/_logit.c +scipy/special/_test_internal.c +scipy/special/_ufuncs.c +scipy/special/_ufuncs.h +scipy/special/_ufuncs.pyx +scipy/special/_ufuncs_cxx.cxx +scipy/special/_ufuncs_cxx.h +scipy/special/_ufuncs_cxx.pxd +scipy/special/_ufuncs_cxx.pyx +scipy/special/_ufuncs_cxx_defs.h +scipy/special/_ufuncs_defs.h +scipy/special/_ufuncs.pyi +scipy/special/cython_special.c +scipy/special/cython_special.h +scipy/special/cython_special.pxd +scipy/special/cython_special.pyx +scipy/special/_specfunmodule.c +scipy/special/tests/data/*.npz +scipy/special/ellint_carlson_cpp_lite/Makefile +scipy/special/ellint_carlson_cpp_lite/cellint.* +scipy/special/ellint_carlson_cpp_lite/tests +scipy/stats/_rank.c +scipy/stats/_mvn-f2pywrappers.f +scipy/stats/_mvnmodule.c +scipy/stats/_statlibmodule.c +scipy/stats/vonmises_cython.c +scipy/stats/_stats.c +scipy/stats/_levy_stable/levyst.c +scipy/stats/_biasedurn.cxx +scipy/stats/_biasedurn.pyx +scipy/stats/biasedurn.cxx +scipy/stats/_sobol.c +scipy/stats/_qmc_cy.cxx +scipy/stats/_hypotests_pythran.cpp +scipy/stats/_unuran/unuran_wrapper.c +scipy/stats/_rcont/rcont.c +scipy/stats/_stats_pythran.cpp +scipy/version.py +scipy/special/_exprel.c +scipy/optimize/_group_columns.c +scipy/optimize/cython_optimize/_zeros.c +scipy/optimize/cython_optimize/_zeros.pyx +scipy/optimize/lbfgsb/_lbfgsbmodule.c +scipy/optimize/_highs/cython/src/_highs_wrapper.cxx +scipy/optimize/_highs/cython/src/_highs_constants.cxx + +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix diff --git a/statystyki/README.md b/statystyki/README.md new file mode 100644 index 0000000..6da873e --- /dev/null +++ b/statystyki/README.md @@ -0,0 +1 @@ +# ARAI diff --git a/statystyki/dane.xlsx b/statystyki/dane.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..709d9f773d6e6c112b7442905cd805400af5fe64 GIT binary patch literal 11647 zcmeHtbyQSq+c(|aAPpnkAt9a8-8FQ_5CfugN=d^IA|Q>@As{g{B1lLxgrGFi%{O|U z=R4>4ocH_xTko^intji#wXfgoz3;29pOz{z3JC%l0tNyC0s{gO#qyFZA_4*hDgpvA z0tS+)oQJ!Qox6{vUVx{aw>h`Jn=5@G3KDAp0uucC{~rH~-#~BLn0pT|PX9sb8J_-I z-3KeY>co-IJL*TpwdjLXa!eDsY5<^VP9LmMbdMlz7fvdp_BBzx4jxa>4t?%DydR@%1s3te9-N!U?b z*cH^+4K?mTLts2qhZ2e^^{xl~1a*_Imo68qGS7$K#45@OYbRUiK`B6P8>LBc_y^>D zz+^lXshn)AhIbjbh6P;&GEP;9Wwi<>af+19-y~OFg=v?(2?oAAd-mi)KCxTMivTA6 zaw{N+E#+f!IFlRa%A4R|B8g42N{p)nM)3DO#2{z7wUuk}SV?*?C}Og*#$#Go9G?>< z8Ryv}mzg*BeqY%<{pMch2~hb&H>-KOoxsiS{vH`Y>u<){sL#uE0@pY-xb0!Xjnfij z=jzSF{qy`^qx@fNiGO+YsuXoiC@)Ubf$~lC;Q92@O9EL{u#9pWgI-X`lSTZ-gd*k# zOPws#1bS5A$V$N-K{vw-OOF$_2N}-R1gqkRNW__%z|~QiS6;s8><>X1ie6Q#y@Y<# zr_*QIN-6=YejQ2dl`UnjRfk|qijzO&YYE1<4XH4R-%v-9No0qb^s5^$TVK3IoR-zy ztB$H^epIlXI+hbWlTosTD-|QEwmXqcI_PcfF!%P^pew`aC6&Ieqo`Ajbv{UpF~HK+ zwd+_ur<3^h8J9-xpbn!T(FOmQ(g2{~G}xp;@W)7AK<^_=XyxGHP*@yY*)lv%{il(r zl$QXn;BQ0;83BO`0Rz$BmFEvT0egU4tUWwje#WqW+YBN+kik*@cOUI3qt3m&I1vYt zAHqL(c%|HF4T}Y`MRqhTp!3!eMXS5oluHF%L(=wzYl<_+iIQ)PVfgW~r;t0c2x&NiS+c=2F#G6x|zvkJkLnEP)e| zwnvc&L6Fqe9rBU5P?R*W-g_*D@9d40WjSsK`RwSqD`>n9IS-en@6I2jz7)=xWSdcl zO^|?o^RSm(Fnrad@6^Ft-crUS&rNMxD@H8(&XDj*OmmN+F0I5@Lsh#Tqk}(E()|8z zVOnwUR5qp&6`}Ek)@xs4>#DjieLeG-sA(%>EMsk4xz?VFXxa9}P4wle zL&Om^POaHdJb=-K!(fLd#uhLwZAsd$En$+Lhis_b>i$5SSRa`H+X8euAIexc+>@iv z#cZBNaF%iL#h`~LM9Qnc>pH#5r%ta=fGy2v8#|<5e1hc%F*-3QEo{#T?~@#r)sRI? z`D$o7j^rS_h!v`bRqv&pAkxHk1Ci{JWXvXAOY8S5=ONXzn$))nIhz92YHw6*)AhET zJ_(I5`C!V`0+opC+}1KOtpJDq7?yNjAE)w$%qOXi+NulX#F&InolOPn8_=8;6VO}l z6f)tpQbo$N9AQj@-I{v}5bD#@&izEHEMRW~{w?&^~l z_8&ATYewEnO(_ec;^1J;CNFl}=i;oeLoK`nxVZc~pSUyZSboQzLSWB3X#Sq?r0!hL zfuC6u#zO-Z^s^rO;FD6jcNrc_quEg_aj4`()a$f+HH43$hz5M2aB zl4j|QY%PLo4CeR@e3s;P^$N0l21Rkjt3&@JyseI5@90JskQb*;{@LYzUz`9|BJlXg zjGPb@4Q+0fqOc_G%0O90pmr*`#Lk&S{YY{3c9r5allxGjDOQpjgvtGargi@iCB@uh zI&Y=Vq>hw&V$*D|E`gI00{E(~q2_sz2M82)=F?+Pw?meEbe1Tto zxZ7#gV;*LmTeauS$y436@zNrrplmZ(N{q_oU=)KG98mqb<9Ps?6 zlo9~}_YX7k_6cyc^Zx0W7mY1F) z^C$o%*n#s0K>}VnJzq*r#+sTll|v-5vtjWL{lo%yH6yLQ1HF>bYtgdbsrp>&xR!>`&qV8--THfn)5~(32U<{`5s}zj}K$6Z*okhi4|kqk~=*wxb{u^B7!? zkdznvr9@F1!{x$&q7kfY(EbS~W^S&1WHodA(N}5)Q7$QuM;-ECAF$Ue^b54Uvzs%> zkC%Llr9FX)UM3EfCU*ITW(S*3uTFV-7MlN9RYf~i&mzQ3sn{u_CfZYu#m5o!5+&so z%g`y!gjC&gLrL9Ll5NRXC{!L7oNTZJwxyf z3nFm(kuDy_mkpSDZ*OX_qbED{4T&}=yCrRt62@V7i+&Uw?^=3BCc?FTvwTeJPs>tb zgP}7t%or6qee+?-qiYZKYigL0)cN3KWy=22hhRxLfPa%bN#%Ec^~HI;7f>5YSY zL|?y`X2_le;YO~=Ae5JZv=oX~lfR_{gfggxjn@!CaTitJ(!F?^)PWMPCNXI4E2wbf zDN9{7rUu4ogjZ0w%q94#-V?A>>5Cr8*nlKd(qLJvM^gH(kC5Nb9p0V_Th{QuJ@3BS zdP;`f0~D;B+~K{eCrJU+EvI1?qi)Pq3>q_dz3a!qYA0xHI(<`|W7tQ9i~dDugrP+RSv+q6tqsFnLI-S~dSgA%2d9%>f(9UR?(v`{D~2 z1!>tc&QGvzLx+N==$1lx(_0mXcr9qFKtcwc1#8qDKUM?YU=2s$bu?vZitKcapN}7Z zl|uG&R2idQqB18O$g!NUi+w}(LSwIN@$I$!KqhRMD$AMBnO(c?E!jf+ zNR`$oo=V3zgzS-}*DO`0X0Z;qzRmvcHVzqaa7HUVZ}HHephm5CHitIW1AOH?&#tfX ziDokM!_>sE7+AG6Wgt(I^3m>X zb4sWg^KFaJ-*byCE5ZJS1-^4nYlIDJ%d19T^(jg-q-2q&=?3e{#A6xOZ9ock-F9mPT ziF=tD=B+XL2Q$~_{-|=i4n@0j1N&L8A4U*rv=Mz;rOVjrg!|0@OnVhh<_+!O{#M=a zXXEBq^5WxY=Vr(A>&*Alx9*y`c`OJM+(}y9hmOy@Zro_@mC0jtbM}#*r}T*OczGmWlMEgyK0iA-hb@m2H`?+sX;}^uiydXCykV)%z@g6>o_R8i zk~W&kS%O7dufXx~yWz@%V}sHq+6HSX%p?pdGH(3|->-(1n1cy!}qwp2{!ouB^v z=19;*54rOHLYc(n7CXqi(|+3>U39L0MRf08J%)UL(;{AWsKf~EG%TV^8jD`ih@_3h zdEOZsG`_RJ&qkR2wIKAvjOa1PO|s(}Aux2zcI(BoCQ2SWqver@zHt?pg&uFvWp ziC;H$v6fh-xZ-R;5_L&23*B{vOA!%{nbv326c7Qg<{(>q zMw;yR8*NS&=GBBJ)b$Mp^hIAu`^Z@>o?=>W*xB zla(FWW`f3{^oT~X0&D#`Rd>a`<6}?9?6KWo!3IV6E6##fZCpjd@%?RCSLl#cizh%8 zXTfJ?wM$%`TG0qE@_OY z(-W%gS%};e$Bze+ttnTvA0KJmf?$K6-6*ha)#%hf^SIU1&9@N1>K^l?i&BR$Ge2%W zp?@JZ`*ehT4gRS_$1DBd?pLCkU6BukHRk~0X(N~h};3wjlTC!#v# zp=f;TEXJP#o4bDmnx*wEj9Fciq=T^W>Ld%gf zsvImqzGmLkvj*TK1r|vf$01}>fhE?awMb%hevTio|XFh}J{j z8uED9zF9**k%?VQe>%GH3#0hgB~$&Q*vQXf%WXE*<9o9$2H(HBwfjb!GEOP+iXd+a zqJ54tdcP@IcFZ8XX@S`<*BMvjS zmXG=PKemQoy)Q|;e_Zpny3i#@cNqN(4?FPMGsARhVA3FP-y^D|$Rr>pEH1G2g^njs z38V0;ZWu_Iz$N4EANnm5+q!Gj37mz__w<&Dj#iBTnvq2x#TB4MAO}RzW)_R!3$7rD z62BB8e6@+t?=3zp@S2O9dYs6=kRlTs@B2(qE@i+IdlbANbI+Ann~kyY#Fmv1D8>hl zx`0=OWHEl-h|$T2JBa58ELla*FB_VP*&RRxo}OUh zVKDJw#Tw784)~Vpmaf*nPakTBV%}B8R<*S9U;{+Nt)(6o!N6R>p*9N+ z2+lwkaurX%-bkWcnt&>rfY#S24`dKVOzzc)+O#Pn-+j)~j3uLUgyM7N{d27oJR~gb z0Izi*gz%BdpDhJ%M>{(oZ=PSvuh3kaX6`Z1OA>X!vL_|~!Gj1Lq9b2c;S2#bv zH!s4{>rCy?#8%*Z|9s#fopN4D8p9ypo&QZfG|SW4?Ybxb(fs z{A}0julY3Zo)srgkt#p(8WCL&1Yv%231~SqNQD$ z_oy@Tf3>)?Q3!Ooz&opLosnVK4Szp?dBPr>5myFF#}kS%yUIEXHG58C&;z?DLA z9sMlA`({39g7Kc+S^A)GC-0S^ibQKQxJHWGs@+{3GJwx7)Qxjkh?~=JWB){t+JW z`gJ+4jSL+=27Ks5gw`@?`71wPGt#sxnwe%#p^q zO=mp-cstlDB&&ohen8Tm+Jm}Rye!#+fn$uVb6Dr250SFHpJn~1Rj<2i-1%hZ?S8cD zb5k$!+MI@sDcB{AI{-`U#as|1*Sz{clM?0RO$pWCIWE zKHVJVci^SYJi&cjMKjeIYW?0!z96YGbJ4z1HNSd3SsMY$6jcx}#EWFDJj^=q99!Ni zO=nbr#BK^KucI>eQ9;no^&rMyWo}df$8Pr^21P|Qo+L6AG_t@B5f`Nv?OpADM5>EQ z7Cb*B^N{N8yNCS9SO}w}$IGG_3qmV$#%7?cb{kPPM6luGFZkkakx*Y{38)K|yBfiT zbd{Zm;ulN!awq{0h`>F%&j*ArcRbnKhQ?BeN=A*=*AbWDl!x zAm~{^Y>my3#rD%8GY~X_ur|R8VaAnTIA^~rUBax&v(xodL@&#D{fvga>B{xCag(jR zSET*yQbSZA7Zfbp0ub+)+0Sg(ixCJQlTTM$QbUqP%d72w09NSi*{kUQwLQ+mipR5A zZ=4nDCuUdti}I{saa;+ST;ij61E!C1NU!D_f+zq9d;g(|7*ShFv1ujiP!fI){6yS@eO0ae^m5Q2wc80+xT? z*@fTxHGBd<0$<_%UT;Sr$j(;R2jt}L@T(sck=(5Ul_rQf2s^0xxa6K9OE|a0NQQ3_ zQAqBg%I`*2SHJa1zRF|m`oc=_X$_fM;_=v{8@hPo4}BUP)|)Q}Wkorp8K%oI8yXL9 ze1d&(U-ap&x5+yKlW4k{*J|k(pkcKk9^lCshY3*U5;mV5P$ZB!oPa$s0%9zLo{Z|_46Ys* zE#F6TmL%6f>^CcpLG!giW*v)?xh2mvgi_QlXtW(jlFGa@I@#|D625OK=_ZYNTmIU= z--nIHU=WrVJap~BxA=buUHm_*%G@*$c<3VNhiT4(V{Y=9HDs}3v`EF8oKg*{_s-@; z@Mh}Hz}=GffcM9D_;#z01>h}lq6l+3(W*kmjcH+-B>bJv zD55Hsg0?RquyUuOiF}KU&0w0b6V>s8-mayJ)7{7TCV~hH^z;dJAfTp_m+lmU~E5Fm2 z7jvMK6_zI2}QW!^6ju~umOoObWx)BvSAtjSK~gBC@Xc9*&y z+l2F}7GHwN(3J9R#};owkl9<*h-lBNtU@Bmd)8>}=K&7l`47JzO#4%DLG1+J8?OyH zlFHY-xZU_Z3BtWzpMEN8elHi-dODP6_R*!z?p#gk3wUCvC5QlAgJ_|!Y`uS4s)HBB ztM17>LgW+f0Auv-p}pvvv&gHWNsqgA7@9n2w_Y*#?0A?HXuw-R8Pf|-1eP&=*uD*l zwIbbnA)nKzw{fYn$kB;nsgdI zhMs_kwcfOtUM4}7BW{lk20|tK=Y-JMOPb^?rnnC=8@)$~G3$dBJV?1lFv2Gybz21M z zMf3){A#NsI5(}8wA?dKaU?x_&9B^eTs>S+ZaNq&ilqOvymb%H_VoIpTG!oPoN`U zIXoyss-w|MzH0}(N$GU0y5mS9y=De{OLGz3VjO{@J#0t(D7vUm$5#M{66M1u#+nFm z-bf=F(!eZ0M12WM(aqWo@A5o%4VHW^iu)<{)@6SOC~oxeyL()7a5AbYcRZ65yCD=e zMm^Igunz=Pp%ASyy7<^TUhBgh;7ue|U` zbP4|u!sphu9yVGa4^M9%8xN4(Pe%)H%<4c}bXWK}rDfgs`!ibL;{;Yx!Pm5`@p zWfAg(F*z&MnHD-g1lv}*ar=95oe zpecOP?Q^OmO>;!YQ?EF#52Ng9h*YY?HR9<~2rZ@tmdLvt;C9c}3Mp@=tZ2!YIdPQZ zYns}~8OynJ1wbr-nE9Y>wq;}+0fNtjLvta54;Ic4KJhlt%LGK%Gecn(_y+HT(VuSg zvPHtOJtz70*>dW`MOvCQaQffwq_|HFU|b5^hz0v^YbHd_gZmKluY*jsZyxKl5_Nfi zr{jfl>;#L>kiY7H-x8wU?XZjNcoPNW#`idbFs=X{@%#Jax_TQ76A~Za8E-B_I z&u$D>U?CNj$H(;*n*SKqn|RE?@o*JmfDgI}{;Fm`PtX5q8T^&~>&Q*f)LiE!=sV!} zLBj|umy>bS7ga1n^)hNmH<>+NQKQnGNqj6fwO?w-#HGkA2JH)0ZR z8_v_)$4pN7lvriwQKY{K?A1L9CEo>+*`ZMka!Si*2dOFkC^RP1Voqa!cKOl8kHyTo z>v)bSUnJcs2*6$C2@fbMhN;X@j+^AhK#*@UMCb7zdXL&gsa|w@eK`WFk64LGKDD5O zpj1t}O^UdLOmdwT3Gr!_i3Fn9NT65Lw{^&rel;o~`i3=X+VE_=HD%qP8b>6zl*tD* zQEMnE^r`gsHPf(!V*QbNGTi8_+I!KiYu=ITAlpQz7LP7ZqP=+qu&(HDf6T0 z-toL;xwOl-01N6Kt$XYQ!}sEkNe3bl7d%D(XOil_ckJKmKTuY+RR0d}cOu=t1%Ix2 zaI^Ret?qZhzmtppD%gYetAO|)s7Alz{7yCb6X^y{KKYG!^1JZw1N1+IZE*gmV*c+q z{ddvdr$m2>w!%A9@c;dNX7oG2?+vX#0W{&`{D0l}f3&xLNBO<-`V(cB_Kzp{y$<^w z;rHs~PXsLbf4q-hwaV`(e~-C;Vjv(q1t1{&M+E*|{O`W>ui~pLe-ZzeXVp?gh3m*q R<|Z~mKb*l?#QyWw{{fjbb+P~e literal 0 HcmV?d00001 diff --git a/statystyki/load_data.py b/statystyki/load_data.py new file mode 100644 index 0000000..94ce3c4 --- /dev/null +++ b/statystyki/load_data.py @@ -0,0 +1,92 @@ +import pandas as pd +import argparse +import warnings + +warnings.filterwarnings('ignore') + +parser = argparse.ArgumentParser() +parser.add_argument('-t', '--typ') +parser.add_argument('-k','--kwota') +parser.add_argument('-b', '--biegly') + +args = parser.parse_args() + +TYP = args.typ +KWOTA = int(args.kwota) +BIEGLY = str(args.biegly) + +def calc_stats(typ=TYP,KWOTA=KWOTA,BIEGLY = BIEGLY): + mapka = {'1':'cywilnej','2':'górniczej','3':'gospodarczej','4':'prawa pracy & ubezpieczeń'} + koszt_bieglego= 1789.42 + koszt = 0 + if KWOTA < 100000 and typ != '4': + df = pd.read_excel('dane.xlsx',sheet_name='rejon') + mask = df['RODZAJ'] == int(typ) + liczba_miesiecy = df[mask]['mean'] + procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 + koszt_sadu = 0 + koszt_adwokata = 0 + if KWOTA <= 500: + koszt_sadu = 30 + koszt_adwokata = 90 + elif KWOTA > 500 and KWOTA <= 1500: + koszt_sadu = 100 + koszt_adwokata = 270 + elif KWOTA > 1500 and KWOTA <= 4000: + koszt_sadu = 200 + elif KWOTA > 4000 and KWOTA <= 7500: + koszt_sadu = 400 + elif KWOTA > 7500 and KWOTA <= 10000: + koszt_sadu = 500 + elif KWOTA > 10000 and KWOTA <= 15000: + koszt_sadu = 750 + elif KWOTA > 15000 and KWOTA <= 20000: + koszt_sadu = 1000 + elif KWOTA > 20000: + koszt_sadu = KWOTA * 0.05 + if koszt_sadu > 20000: + koszt_sadu = 20000 + + if KWOTA > 1500 and KWOTA <= 5000: + koszt_adwokata = 900 + elif KWOTA > 5000 and KWOTA <= 10000: + koszt_adwokata = 1800 + elif KWOTA > 10000 and KWOTA <= 50000: + koszt_adwokata = 3600 + elif KWOTA > 50000 and KWOTA <= 100000: + koszt_adwokata = 5400 + + + if BIEGLY == 'True': + koszt = koszt_sadu + koszt_adwokata + koszt_bieglego + else: + koszt = koszt_sadu + koszt_adwokata + print(f"Średni czas trwania rozprawy typu {mapka[typ]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa dłuzej niz rok, jej minimalny koszt wyniesie {koszt}") + + elif KWOTA > 100000: + df = pd.read_excel('dane.xlsx',sheet_name='okreg') + mask = df['RODZAJ'] == int(typ) + liczba_miesiecy = df[mask]['mean'] + procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 + + if KWOTA <= 200000: + koszt_adwokata = 5400 + elif KWOTA > 200000 and KWOTA <= 2000000: + koszt_adwokata = 10800 + elif KWOTA > 2000000 and KWOTA <= 5000000: + koszt_adwokata = 15000 + elif KWOTA > 500000: + koszt_adwokata = 25000 + + koszt_sadu = KWOTA * 0.05 + if koszt_sadu > 20000: + koszt_sadu = 20000 + + if BIEGLY == 'True': + koszt = koszt_sadu + koszt_adwokata + koszt_bieglego + else: + koszt = koszt_sadu + koszt_adwokata + + print(f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}") + +calc_stats() \ No newline at end of file From 4437632a730756550dc7bbec8ec6aa1f6545a9b5 Mon Sep 17 00:00:00 2001 From: Jakub Jarzembowski Date: Sat, 9 Mar 2024 19:11:49 +0100 Subject: [PATCH 17/27] packed into folder --- statystyki/.gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/statystyki/.gitignore b/statystyki/.gitignore index 3e85487..7320cdf 100644 --- a/statystyki/.gitignore +++ b/statystyki/.gitignore @@ -121,12 +121,9 @@ celerybeat.pid # Environments .env -.venv env/ -venv/ ENV/ env.bak/ -venv.bak/ # Spyder project settings .spyderproject From 188cd6415a5076c41f54b3cc4ad4d22ec8101692 Mon Sep 17 00:00:00 2001 From: Jakub Jarzembowski Date: Sat, 9 Mar 2024 19:12:47 +0100 Subject: [PATCH 18/27] packed into folder --- statystyki/.gitignore | 2 - statystyki/venv/bin/Activate.ps1 | 241 ++++++++++++++++++++++++++++++ statystyki/venv/bin/activate | 66 ++++++++ statystyki/venv/bin/activate.csh | 25 ++++ statystyki/venv/bin/activate.fish | 64 ++++++++ statystyki/venv/bin/f2py | 8 + statystyki/venv/bin/normalizer | 8 + statystyki/venv/bin/pip | 8 + statystyki/venv/bin/pip3 | 8 + statystyki/venv/bin/pip3.9 | 8 + statystyki/venv/bin/python | 1 + statystyki/venv/bin/python3 | 1 + statystyki/venv/bin/python3.9 | 1 + statystyki/venv/pyvenv.cfg | 3 + 14 files changed, 442 insertions(+), 2 deletions(-) create mode 100644 statystyki/venv/bin/Activate.ps1 create mode 100644 statystyki/venv/bin/activate create mode 100644 statystyki/venv/bin/activate.csh create mode 100644 statystyki/venv/bin/activate.fish create mode 100755 statystyki/venv/bin/f2py create mode 100755 statystyki/venv/bin/normalizer create mode 100755 statystyki/venv/bin/pip create mode 100755 statystyki/venv/bin/pip3 create mode 100755 statystyki/venv/bin/pip3.9 create mode 120000 statystyki/venv/bin/python create mode 120000 statystyki/venv/bin/python3 create mode 120000 statystyki/venv/bin/python3.9 create mode 100644 statystyki/venv/pyvenv.cfg diff --git a/statystyki/.gitignore b/statystyki/.gitignore index 7320cdf..68c5efd 100644 --- a/statystyki/.gitignore +++ b/statystyki/.gitignore @@ -306,8 +306,6 @@ package-lock.json *.tmp *.vim tags -.venv/ -venv/ .theia/ .vscode/ diff --git a/statystyki/venv/bin/Activate.ps1 b/statystyki/venv/bin/Activate.ps1 new file mode 100644 index 0000000..9d3646a --- /dev/null +++ b/statystyki/venv/bin/Activate.ps1 @@ -0,0 +1,241 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/statystyki/venv/bin/activate b/statystyki/venv/bin/activate new file mode 100644 index 0000000..3792034 --- /dev/null +++ b/statystyki/venv/bin/activate @@ -0,0 +1,66 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1="(venv) ${PS1:-}" + export PS1 +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null +fi diff --git a/statystyki/venv/bin/activate.csh b/statystyki/venv/bin/activate.csh new file mode 100644 index 0000000..1c9d251 --- /dev/null +++ b/statystyki/venv/bin/activate.csh @@ -0,0 +1,25 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "(venv) $prompt" +endif + +alias pydoc python -m pydoc + +rehash diff --git a/statystyki/venv/bin/activate.fish b/statystyki/venv/bin/activate.fish new file mode 100644 index 0000000..8ab7a8b --- /dev/null +++ b/statystyki/venv/bin/activate.fish @@ -0,0 +1,64 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/); you cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + functions -e fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + + set -e VIRTUAL_ENV + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" +end diff --git a/statystyki/venv/bin/f2py b/statystyki/venv/bin/f2py new file mode 100755 index 0000000..8d95283 --- /dev/null +++ b/statystyki/venv/bin/f2py @@ -0,0 +1,8 @@ +#!/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from numpy.f2py.f2py2e import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/statystyki/venv/bin/normalizer b/statystyki/venv/bin/normalizer new file mode 100755 index 0000000..1578333 --- /dev/null +++ b/statystyki/venv/bin/normalizer @@ -0,0 +1,8 @@ +#!/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from charset_normalizer.cli import cli_detect +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli_detect()) diff --git a/statystyki/venv/bin/pip b/statystyki/venv/bin/pip new file mode 100755 index 0000000..424b04a --- /dev/null +++ b/statystyki/venv/bin/pip @@ -0,0 +1,8 @@ +#!/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/statystyki/venv/bin/pip3 b/statystyki/venv/bin/pip3 new file mode 100755 index 0000000..424b04a --- /dev/null +++ b/statystyki/venv/bin/pip3 @@ -0,0 +1,8 @@ +#!/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/statystyki/venv/bin/pip3.9 b/statystyki/venv/bin/pip3.9 new file mode 100755 index 0000000..424b04a --- /dev/null +++ b/statystyki/venv/bin/pip3.9 @@ -0,0 +1,8 @@ +#!/Users/jakubjarzembowski/Desktop/hackathon/ARAI/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/statystyki/venv/bin/python b/statystyki/venv/bin/python new file mode 120000 index 0000000..9745953 --- /dev/null +++ b/statystyki/venv/bin/python @@ -0,0 +1 @@ +/Users/jakubjarzembowski/opt/anaconda3/bin/python \ No newline at end of file diff --git a/statystyki/venv/bin/python3 b/statystyki/venv/bin/python3 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/statystyki/venv/bin/python3 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/statystyki/venv/bin/python3.9 b/statystyki/venv/bin/python3.9 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/statystyki/venv/bin/python3.9 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/statystyki/venv/pyvenv.cfg b/statystyki/venv/pyvenv.cfg new file mode 100644 index 0000000..4c8d6f8 --- /dev/null +++ b/statystyki/venv/pyvenv.cfg @@ -0,0 +1,3 @@ +home = /Users/jakubjarzembowski/opt/anaconda3/bin +include-system-site-packages = false +version = 3.9.13 From 97cde5040ca74c6d84eebeb71e232abb87e554fc Mon Sep 17 00:00:00 2001 From: Mateusz Szpyruk Date: Sat, 9 Mar 2024 19:20:55 +0100 Subject: [PATCH 19/27] feat: removed rouge jakub files --- dane.xlsx | Bin 11647 -> 0 bytes load_data.py | 92 --------------------------------------------------- 2 files changed, 92 deletions(-) delete mode 100644 dane.xlsx delete mode 100644 load_data.py diff --git a/dane.xlsx b/dane.xlsx deleted file mode 100644 index 709d9f773d6e6c112b7442905cd805400af5fe64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11647 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 z zMf3){A#NsI5(}8wA?dKaU?x_&9B^eTs>S+ZaNq&ilqOvymb%H_VoIpTG!oPoN`U zIXoyss-w|MzH0}(N$GU0y5mS9y=De{OLGz3VjO{@J#0t(D7vUm$5#M{66M1u#+nFm z-bf=F(!eZ0M12WM(aqWo@A5o%4VHW^iu)<{)@6SOC~oxeyL()7a5AbYcRZ65yCD=e zMm^Igunz=Pp%ASyy7<^TUhBgh;7ue|U` zbP4|u!sphu9yVGa4^M9%8xN4(Pe%)H%<4c}bXWK}rDfgs`!ibL;{;Yx!Pm5`@p zWfAg(F*z&MnHD-g1lv}*ar=95oe zpecOP?Q^OmO>;!YQ?EF#52Ng9h*YY?HR9<~2rZ@tmdLvt;C9c}3Mp@=tZ2!YIdPQZ zYns}~8OynJ1wbr-nE9Y>wq;}+0fNtjLvta54;Ic4KJhlt%LGK%Gecn(_y+HT(VuSg zvPHtOJtz70*>dW`MOvCQaQffwq_|HFU|b5^hz0v^YbHd_gZmKluY*jsZyxKl5_Nfi zr{jfl>;#L>kiY7H-x8wU?XZjNcoPNW#`idbFs=X{@%#Jax_TQ76A~Za8E-B_I z&u$D>U?CNj$H(;*n*SKqn|RE?@o*JmfDgI}{;Fm`PtX5q8T^&~>&Q*f)LiE!=sV!} zLBj|umy>bS7ga1n^)hNmH<>+NQKQnGNqj6fwO?w-#HGkA2JH)0ZR z8_v_)$4pN7lvriwQKY{K?A1L9CEo>+*`ZMka!Si*2dOFkC^RP1Voqa!cKOl8kHyTo z>v)bSUnJcs2*6$C2@fbMhN;X@j+^AhK#*@UMCb7zdXL&gsa|w@eK`WFk64LGKDD5O zpj1t}O^UdLOmdwT3Gr!_i3Fn9NT65Lw{^&rel;o~`i3=X+VE_=HD%qP8b>6zl*tD* zQEMnE^r`gsHPf(!V*QbNGTi8_+I!KiYu=ITAlpQz7LP7ZqP=+qu&(HDf6T0 z-toL;xwOl-01N6Kt$XYQ!}sEkNe3bl7d%D(XOil_ckJKmKTuY+RR0d}cOu=t1%Ix2 zaI^Ret?qZhzmtppD%gYetAO|)s7Alz{7yCb6X^y{KKYG!^1JZw1N1+IZE*gmV*c+q z{ddvdr$m2>w!%A9@c;dNX7oG2?+vX#0W{&`{D0l}f3&xLNBO<-`V(cB_Kzp{y$<^w z;rHs~PXsLbf4q-hwaV`(e~-C;Vjv(q1t1{&M+E*|{O`W>ui~pLe-ZzeXVp?gh3m*q R<|Z~mKb*l?#QyWw{{fjbb+P~e diff --git a/load_data.py b/load_data.py deleted file mode 100644 index 94ce3c4..0000000 --- a/load_data.py +++ /dev/null @@ -1,92 +0,0 @@ -import pandas as pd -import argparse -import warnings - -warnings.filterwarnings('ignore') - -parser = argparse.ArgumentParser() -parser.add_argument('-t', '--typ') -parser.add_argument('-k','--kwota') -parser.add_argument('-b', '--biegly') - -args = parser.parse_args() - -TYP = args.typ -KWOTA = int(args.kwota) -BIEGLY = str(args.biegly) - -def calc_stats(typ=TYP,KWOTA=KWOTA,BIEGLY = BIEGLY): - mapka = {'1':'cywilnej','2':'górniczej','3':'gospodarczej','4':'prawa pracy & ubezpieczeń'} - koszt_bieglego= 1789.42 - koszt = 0 - if KWOTA < 100000 and typ != '4': - df = pd.read_excel('dane.xlsx',sheet_name='rejon') - mask = df['RODZAJ'] == int(typ) - liczba_miesiecy = df[mask]['mean'] - procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 - koszt_sadu = 0 - koszt_adwokata = 0 - if KWOTA <= 500: - koszt_sadu = 30 - koszt_adwokata = 90 - elif KWOTA > 500 and KWOTA <= 1500: - koszt_sadu = 100 - koszt_adwokata = 270 - elif KWOTA > 1500 and KWOTA <= 4000: - koszt_sadu = 200 - elif KWOTA > 4000 and KWOTA <= 7500: - koszt_sadu = 400 - elif KWOTA > 7500 and KWOTA <= 10000: - koszt_sadu = 500 - elif KWOTA > 10000 and KWOTA <= 15000: - koszt_sadu = 750 - elif KWOTA > 15000 and KWOTA <= 20000: - koszt_sadu = 1000 - elif KWOTA > 20000: - koszt_sadu = KWOTA * 0.05 - if koszt_sadu > 20000: - koszt_sadu = 20000 - - if KWOTA > 1500 and KWOTA <= 5000: - koszt_adwokata = 900 - elif KWOTA > 5000 and KWOTA <= 10000: - koszt_adwokata = 1800 - elif KWOTA > 10000 and KWOTA <= 50000: - koszt_adwokata = 3600 - elif KWOTA > 50000 and KWOTA <= 100000: - koszt_adwokata = 5400 - - - if BIEGLY == 'True': - koszt = koszt_sadu + koszt_adwokata + koszt_bieglego - else: - koszt = koszt_sadu + koszt_adwokata - print(f"Średni czas trwania rozprawy typu {mapka[typ]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa dłuzej niz rok, jej minimalny koszt wyniesie {koszt}") - - elif KWOTA > 100000: - df = pd.read_excel('dane.xlsx',sheet_name='okreg') - mask = df['RODZAJ'] == int(typ) - liczba_miesiecy = df[mask]['mean'] - procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 - - if KWOTA <= 200000: - koszt_adwokata = 5400 - elif KWOTA > 200000 and KWOTA <= 2000000: - koszt_adwokata = 10800 - elif KWOTA > 2000000 and KWOTA <= 5000000: - koszt_adwokata = 15000 - elif KWOTA > 500000: - koszt_adwokata = 25000 - - koszt_sadu = KWOTA * 0.05 - if koszt_sadu > 20000: - koszt_sadu = 20000 - - if BIEGLY == 'True': - koszt = koszt_sadu + koszt_adwokata + koszt_bieglego - else: - koszt = koszt_sadu + koszt_adwokata - - print(f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}") - -calc_stats() \ No newline at end of file From 81612bbc39f1edcc9c2ac8c858e4d49ac8fcbb6f Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 21:09:32 +0100 Subject: [PATCH 20/27] feat: finished? --- arai-frontend/package.json | 3 + arai-frontend/pnpm-lock.yaml | 24 ++++ arai-frontend/src/app/backend.service.ts | 15 +-- .../app/case-input/case-input.component.html | 2 + .../app/case-input/case-input.component.scss | 19 ++- .../app/case-input/case-input.component.ts | 8 +- .../app/cost-view/cost-view.component.html | 20 ++- .../app/cost-view/cost-view.component.scss | 44 +++++++ .../src/app/cost-view/cost-view.component.ts | 10 +- .../email-input/email-input.component.html | 20 +++ .../email-input/email-input.component.scss | 7 ++ .../email-input/email-input.component.spec.ts | 23 ++++ .../app/email-input/email-input.component.ts | 25 ++++ .../mediators-list.component.html | 61 +++++---- .../mediators-list.component.scss | 32 +++++ .../mediators-list.component.ts | 116 ++++++++++++++---- arai-frontend/src/app/requests-responses.ts | 3 +- 17 files changed, 356 insertions(+), 76 deletions(-) create mode 100644 arai-frontend/src/app/email-input/email-input.component.html create mode 100644 arai-frontend/src/app/email-input/email-input.component.scss create mode 100644 arai-frontend/src/app/email-input/email-input.component.spec.ts create mode 100644 arai-frontend/src/app/email-input/email-input.component.ts diff --git a/arai-frontend/package.json b/arai-frontend/package.json index 0c2bad5..0e2c0e1 100644 --- a/arai-frontend/package.json +++ b/arai-frontend/package.json @@ -25,6 +25,7 @@ "@angular/router": "^17.0.0", "@angular/ssr": "^17.0.3", "express": "^4.18.2", + "faker": "^6.6.6", "json-server": "1.0.0-alpha.23", "rxjs": "~7.8.0", "socket.io-client": "^4.7.4", @@ -36,7 +37,9 @@ "@angular-devkit/build-angular": "^17.0.3", "@angular/cli": "^17.0.3", "@angular/compiler-cli": "^17.0.0", + "@faker-js/faker": "^8.4.1", "@types/express": "^4.17.17", + "@types/faker": "^6.6.9", "@types/jasmine": "~5.1.0", "@types/node": "^18.18.0", "@types/uuid": "^9.0.8", diff --git a/arai-frontend/pnpm-lock.yaml b/arai-frontend/pnpm-lock.yaml index 671e8d9..95a624b 100644 --- a/arai-frontend/pnpm-lock.yaml +++ b/arai-frontend/pnpm-lock.yaml @@ -47,6 +47,9 @@ dependencies: express: specifier: ^4.18.2 version: 4.18.3 + faker: + specifier: ^6.6.6 + version: 6.6.6 json-server: specifier: 1.0.0-alpha.23 version: 1.0.0-alpha.23 @@ -76,9 +79,15 @@ devDependencies: '@angular/compiler-cli': specifier: ^17.0.0 version: 17.2.4(@angular/compiler@17.2.4)(typescript@5.2.2) + '@faker-js/faker': + specifier: ^8.4.1 + version: 8.4.1 '@types/express': specifier: ^4.17.17 version: 4.17.21 + '@types/faker': + specifier: ^6.6.9 + version: 6.6.9 '@types/jasmine': specifier: ~5.1.0 version: 5.1.4 @@ -2260,6 +2269,11 @@ packages: dev: true optional: true + /@faker-js/faker@8.4.1: + resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + dev: true + /@fastify/busboy@2.1.1: resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} @@ -3503,6 +3517,13 @@ packages: '@types/serve-static': 1.15.5 dev: true + /@types/faker@6.6.9: + resolution: {integrity: sha512-Y9YYm5L//8ooiiknO++4Gr539zzdI0j3aXnOBjo1Vk+kTvffY10GuE2wn78AFPECwZ5MYGTjiDVw1naLLdDimw==} + deprecated: This is a stub types definition. faker provides its own type definitions, so you do not need this installed. + dependencies: + faker: 6.6.6 + dev: true + /@types/http-errors@2.0.4: resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} dev: true @@ -4913,6 +4934,9 @@ packages: tmp: 0.0.33 dev: true + /faker@6.6.6: + resolution: {integrity: sha512-9tCqYEDHI5RYFQigXFwF1hnCwcWCOJl/hmll0lr5D2Ljjb0o4wphb69wikeJDz5qCEzXCoPvG6ss5SDP6IfOdg==} + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true diff --git a/arai-frontend/src/app/backend.service.ts b/arai-frontend/src/app/backend.service.ts index 4c9fb87..d9ddcc1 100644 --- a/arai-frontend/src/app/backend.service.ts +++ b/arai-frontend/src/app/backend.service.ts @@ -32,19 +32,16 @@ export class BackendService { } } - public sendMessage(message: UserInputRequest): Promise { + public sendMessage(message: GenericRequest): Promise { return new Promise((resolve, reject) => { if (message.request_type === "user_input") { this.userInputArray.push(message as UserInputRequest); } - - // Assuming `serializeToQueryParams` is a method that converts your message object into HttpParams. - // You will need to implement this conversion based on your `GenericRequest` structure. - const params = this.serializeToQueryParams(message); - - console.log(`request: `, params.toString()); - - this.http.get(`${this.address}`, { params }).subscribe({ + const headers = new HttpHeaders().set("Content-Type", "application/json"); + + console.log(`request: `, JSON.stringify(message)); + + this.http.post(this.address, JSON.stringify(message), { headers }).subscribe({ next: (response) => { console.log(`response: `, response); resolve(response); diff --git a/arai-frontend/src/app/case-input/case-input.component.html b/arai-frontend/src/app/case-input/case-input.component.html index b6078ec..2368579 100644 --- a/arai-frontend/src/app/case-input/case-input.component.html +++ b/arai-frontend/src/app/case-input/case-input.component.html @@ -1,5 +1,7 @@

+

Oblicz koszta i czas sporu

+ Opis Sprawy diff --git a/arai-frontend/src/app/case-input/case-input.component.scss b/arai-frontend/src/app/case-input/case-input.component.scss index 19a84b8..c14f097 100644 --- a/arai-frontend/src/app/case-input/case-input.component.scss +++ b/arai-frontend/src/app/case-input/case-input.component.scss @@ -5,6 +5,16 @@ body, html { align-items: center; margin: 0; } + +.center { + text-align: center; +} + +.page-container { + display: flex; + justify-content: center; + align-items: center; +} .lawyering-form { display: flex; @@ -28,7 +38,7 @@ body, html { .checkbox-group { display: flex; - flex-direction: column; + flex-direction: row; gap: 10px; // For spacing between checkboxes } @@ -38,6 +48,7 @@ body, html { color: #ffffff; font-size: 16px; font-weight: 500; + width: 100%; } } @@ -51,5 +62,11 @@ body, html { width: 100%; /* Makes the submit button full width on smaller screens */ align-self: center; /* Center align if preferred */ } + + .checkbox-group { + display: flex; + flex-direction: column; + gap: 10px; // For spacing between checkboxes + } } \ No newline at end of file diff --git a/arai-frontend/src/app/case-input/case-input.component.ts b/arai-frontend/src/app/case-input/case-input.component.ts index 25ae0df..1b41a0d 100644 --- a/arai-frontend/src/app/case-input/case-input.component.ts +++ b/arai-frontend/src/app/case-input/case-input.component.ts @@ -5,6 +5,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox' import { MatButtonModule } from '@angular/material/button' import { BackendService } from '../backend.service'; import { GenericRequest, UserInputRequest, userInput } from '../requests-responses'; +import { Router } from '@angular/router'; @Component({ @@ -23,10 +24,10 @@ export class CaseInputComponent { userInputForm: FormGroup; userInput: userInput | null = null; - constructor(private fb: FormBuilder, private readonly backendService: BackendService) { + constructor(private fb: FormBuilder, private readonly backendService: BackendService, private readonly router: Router) { this.userInputForm = this.fb.group({ generic_input: [''], - trial_value: [0], + trial_value: [], location: [''], experts_called: [false], witnesses_called: [false] @@ -37,7 +38,8 @@ export class CaseInputComponent { this.userInput = this.userInputForm.value; if(this.userInput !== null) { const result = await this.backendService.sendMessage(new UserInputRequest(this.userInput)); - console.log(`result: `, result); + console.log(`result: `, result); + this.router.navigate(['koszt']); } else { console.error(`caseInputComponent, onSubmit, userInput is null!`) } diff --git a/arai-frontend/src/app/cost-view/cost-view.component.html b/arai-frontend/src/app/cost-view/cost-view.component.html index aadef5b..324bb44 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.html +++ b/arai-frontend/src/app/cost-view/cost-view.component.html @@ -1,5 +1,15 @@ -Przewidywalne minimalne koszta: -@if(costData !== null) { - Koszta: {{costData.cost_of_trial}} zł
- Przewidywalny czas: {{costData.time_of_trial | date:'L'}} miesiące -} \ No newline at end of file + + + +

Chcesz zminimalizować koszta aż o 90%?

+
+ +
\ No newline at end of file diff --git a/arai-frontend/src/app/cost-view/cost-view.component.scss b/arai-frontend/src/app/cost-view/cost-view.component.scss index e69de29..b8d2ff5 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.scss +++ b/arai-frontend/src/app/cost-view/cost-view.component.scss @@ -0,0 +1,44 @@ +.legal-costs { + font-family: 'Times New Roman', serif; + color: #2a2a2a; // Dark text for readability + background-color: #f5f5f5; // Light background to keep the content subtle + padding: 20px; + border: 1px solid #ddd; // Slight border for definition + border-radius: 5px; // Soften the edges for a modern look + font-size: 16px; + + .cost-details { + margin-top: 10px; + padding: 10px; + background-color: #fff; // A clean background for the cost details + border-left: 5px solid #004085; // A striking left border for emphasis + font-size: 24px; + + span { + font-weight: bold; // Make the dynamic content pop + } + + .cost { + color: #007bff; // A professional blue for costs + } + + .time { + color: #28a745; // A hopeful green for the time + } + } + } + + +.bait { + text-align: center; +} + +.find-mediator { + width: 100%; +} + +.center-button { + display: flex; + justify-content: center; + align-items: center; +} \ No newline at end of file diff --git a/arai-frontend/src/app/cost-view/cost-view.component.ts b/arai-frontend/src/app/cost-view/cost-view.component.ts index d1f240c..3e7842e 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.ts +++ b/arai-frontend/src/app/cost-view/cost-view.component.ts @@ -1,11 +1,13 @@ import { Component, Input } from '@angular/core'; import { StatisticsOutputInterface } from '../requests-responses'; import { DatePipe } from '@angular/common'; +import { MatButtonModule } from '@angular/material/button'; +import { Router } from '@angular/router'; @Component({ selector: 'app-cost-view', standalone: true, - imports: [DatePipe], + imports: [DatePipe, MatButtonModule], templateUrl: './cost-view.component.html', styleUrl: './cost-view.component.scss' }) @@ -15,6 +17,8 @@ export class CostViewComponent { time_of_trial: Date.UTC(0, 6, 0, 0, 0, 0, 0) }; +constructor(private readonly router: Router) {} + public calculateTimeDifference(utcDateNumber: number): string { const currentDate = new Date(); const targetDate = new Date(utcDateNumber); @@ -40,4 +44,8 @@ public calculateTimeDifference(utcDateNumber: number): string { } } +onSubmit() { + this.router.navigate(["mediatorzy"]); +} + } diff --git a/arai-frontend/src/app/email-input/email-input.component.html b/arai-frontend/src/app/email-input/email-input.component.html new file mode 100644 index 0000000..f35d6aa --- /dev/null +++ b/arai-frontend/src/app/email-input/email-input.component.html @@ -0,0 +1,20 @@ +

Wprowadź email drugiej strony

+ +

Poinformujemy osobę o twojej chęci do podjęcia mediacji

+ + + Email + + @if (emailFormControl.hasError('email') && !emailFormControl.hasError('required')) { + Please enter a valid email address + } + @if (emailFormControl.hasError('required')) { + Email is required + } + + +
+ + + diff --git a/arai-frontend/src/app/email-input/email-input.component.scss b/arai-frontend/src/app/email-input/email-input.component.scss new file mode 100644 index 0000000..a6b073e --- /dev/null +++ b/arai-frontend/src/app/email-input/email-input.component.scss @@ -0,0 +1,7 @@ +.center { + width: 100%; +} + +.title { + text-align: center; +} \ No newline at end of file diff --git a/arai-frontend/src/app/email-input/email-input.component.spec.ts b/arai-frontend/src/app/email-input/email-input.component.spec.ts new file mode 100644 index 0000000..348de29 --- /dev/null +++ b/arai-frontend/src/app/email-input/email-input.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EmailInputComponent } from './email-input.component'; + +describe('EmailInputComponent', () => { + let component: EmailInputComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [EmailInputComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(EmailInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/arai-frontend/src/app/email-input/email-input.component.ts b/arai-frontend/src/app/email-input/email-input.component.ts new file mode 100644 index 0000000..97217cf --- /dev/null +++ b/arai-frontend/src/app/email-input/email-input.component.ts @@ -0,0 +1,25 @@ +import { Component, Inject } from '@angular/core'; +import { FormControl, Validators } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import {MAT_DIALOG_DATA, MatDialogModule, MatDialogRef} from '@angular/material/dialog' +import { MatInputModule } from '@angular/material/input'; + +@Component({ + selector: 'app-email-input', + standalone: true, + imports: [MatDialogModule, MatInputModule, MatButtonModule], + templateUrl: './email-input.component.html', + styleUrl: './email-input.component.scss' +}) +export class EmailInputComponent { + constructor( + public dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: any) {} + + emailFormControl = new FormControl('', [Validators.required, Validators.email]); + + + onNoClick(): void { + this.dialogRef.close(); + } +} diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.html b/arai-frontend/src/app/mediators-list/mediators-list.component.html index a90591c..8bdc7de 100644 --- a/arai-frontend/src/app/mediators-list/mediators-list.component.html +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.html @@ -1,32 +1,29 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
No. {{element.position}} Name {{element.name}} Weight {{element.weight}} Symbol {{element.symbol}}
\ No newline at end of file +
+@for(mediator of mediatorzy; track mediator) { + + +
+ {{ mediator.name }} + + {{ mediator.specialization }} +
+
+ {{ convertToStars(mediator.ai_rating) }} +
+ Liczba opinii: {{ mediator.number_of_opinions }} +
+
+
+ +

+ location_on {{ generateCity() }} {{ generateAddress() }}
+ attach_money Cena za godzinę: {{ generateCost() }} zł
+ @if(generateOnline()) { class="available">Mediacja zdalna } +

+
+ + + +
+} +
\ No newline at end of file diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.scss b/arai-frontend/src/app/mediators-list/mediators-list.component.scss index e69de29..5fd3c4a 100644 --- a/arai-frontend/src/app/mediators-list/mediators-list.component.scss +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.scss @@ -0,0 +1,32 @@ +.example-card { + width: 350px; +} + +.example-header-image { + background-size: cover; + width: 40px; /* Example size, adjust as needed */ + height: 40px; /* Example size, adjust as needed */ + border-radius: 50%; /* Makes the image round */ +} + +.golden-star { + color: gold; +} + +.ratings-row { + display: flex; + align-items: center; + gap: 10px; +} + +.available { + color: green; +} + +.center { + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + gap: 20px; +} diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.ts b/arai-frontend/src/app/mediators-list/mediators-list.component.ts index cba0990..f030287 100644 --- a/arai-frontend/src/app/mediators-list/mediators-list.component.ts +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.ts @@ -1,34 +1,102 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { MatTableModule } from '@angular/material/table' - -export interface PeriodicElement { - name: string; - position: number; - weight: number; - symbol: string; -} - -const ELEMENT_DATA: PeriodicElement[] = [ - {position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H'}, - {position: 2, name: 'Helium', weight: 4.0026, symbol: 'He'}, - {position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li'}, - {position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be'}, - {position: 5, name: 'Boron', weight: 10.811, symbol: 'B'}, - {position: 6, name: 'Carbon', weight: 12.0107, symbol: 'C'}, - {position: 7, name: 'Nitrogen', weight: 14.0067, symbol: 'N'}, - {position: 8, name: 'Oxygen', weight: 15.9994, symbol: 'O'}, - {position: 9, name: 'Fluorine', weight: 18.9984, symbol: 'F'}, - {position: 10, name: 'Neon', weight: 20.1797, symbol: 'Ne'}, -]; +import { RecommendedMediatorsInterface } from '../requests-responses'; +import { MatCardModule } from '@angular/material/card' +import { MatButtonModule } from '@angular/material/button'; +import { faker } from '@faker-js/faker'; +import {MatIconModule } from '@angular/material/icon' +import { MatDialog } from '@angular/material/dialog'; +import { EmailInputComponent } from '../email-input/email-input.component'; @Component({ selector: 'app-mediators-list', standalone: true, - imports: [MatTableModule], + imports: [MatTableModule, MatCardModule, MatButtonModule, MatIconModule], templateUrl: './mediators-list.component.html', styleUrl: './mediators-list.component.scss' }) export class MediatorsListComponent { - displayedColumns: string[] = ['position', 'name', 'weight', 'symbol']; - dataSource = ELEMENT_DATA; + @Input() mediatorzy: RecommendedMediatorsInterface[] = [ + { + "name": "Mateusz Szpyruk", + "specialization": "Prawo podatkowe", + "localization": "Katowice", + "ai_rating": 99, + "user_rating": 99, + "number_of_opinions": 5 + }, + { + "name": "Jan Kowalski", + "specialization": "Prawo pracy", + "localization": "Katowice", + "ai_rating": 90, + "user_rating": 99, + "number_of_opinions": 5 + }, + { + "name": "Jan Kowalski", + "specialization": "Prawo pracy", + "localization": "Katowice", + "ai_rating": 76, + "user_rating": 99, + "number_of_opinions": 5 + } +] + +constructor(private readonly dialog: MatDialog) {} + +generatePersonInfo() { + const personInfo = { + firstName: faker.name.firstName(), + lastName: faker.name.lastName(), + email: faker.internet.email(), + avatar: faker.image.avatar() // Generating person image + }; + console.log(`faker.image.avatar(): `, faker.image.avatar()); + const avatarUrl = personInfo.avatar; + return avatarUrl; +} + +convertToStars(score: number): string { + if (score < 0 || score > 100) { + return 'Score must be between 0 and 100'; + } + + // Calculate the number of full stars + const fullStars = Math.floor(score / 20); + // Determine if there should be a half star + const halfStar = (score % 20) >= 10 ? 1 : 0; + // Calculate the number of empty stars + const emptyStars = 5 - fullStars - halfStar; + + return '★'.repeat(fullStars) + '✩'.repeat(halfStar) + '☆'.repeat(emptyStars); +} + +generateCity() { + return faker.location.city(); +} + +generateAddress() { + return faker.location.streetAddress(); +} + +generateCost() { + return faker.commerce.price(); +} + +generateOnline() { + return faker.datatype.boolean(); +} + +umowSie() { + const dialogRef = this.dialog.open(EmailInputComponent, { + width: '250px', + data: { /* Data passed to the modal */ } + }); + + dialogRef.afterClosed().subscribe(result => { + console.log('The dialog was closed'); + // Optional: handle data returned from the modal + }); +} } diff --git a/arai-frontend/src/app/requests-responses.ts b/arai-frontend/src/app/requests-responses.ts index 45d866d..c77f39d 100644 --- a/arai-frontend/src/app/requests-responses.ts +++ b/arai-frontend/src/app/requests-responses.ts @@ -48,7 +48,8 @@ export interface RecommendedMediatorsInterface { "name": string, "specialization": string, "localization": string, - "score": number, + "ai_rating": number, + "user_rating": number, "number_of_opinions": number } From 4e0412a48dd91a6b437250ae560635646949da6b Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 21:24:12 +0100 Subject: [PATCH 21/27] feat: final version --- .../app/cost-view/cost-view.component.html | 5 +- .../app/cost-view/cost-view.component.scss | 75 ++++++++++--------- 2 files changed, 45 insertions(+), 35 deletions(-) diff --git a/arai-frontend/src/app/cost-view/cost-view.component.html b/arai-frontend/src/app/cost-view/cost-view.component.html index 324bb44..48289bb 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.html +++ b/arai-frontend/src/app/cost-view/cost-view.component.html @@ -1,3 +1,4 @@ +
-

Chcesz zminimalizować koszta aż o 90%?

+

Chcesz zminimalizować koszta aż do 90%?

+
+
\ No newline at end of file diff --git a/arai-frontend/src/app/cost-view/cost-view.component.scss b/arai-frontend/src/app/cost-view/cost-view.component.scss index b8d2ff5..2de4eb7 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.scss +++ b/arai-frontend/src/app/cost-view/cost-view.component.scss @@ -1,44 +1,51 @@ .legal-costs { - font-family: 'Times New Roman', serif; - color: #2a2a2a; // Dark text for readability - background-color: #f5f5f5; // Light background to keep the content subtle - padding: 20px; - border: 1px solid #ddd; // Slight border for definition - border-radius: 5px; // Soften the edges for a modern look - font-size: 16px; + font-family: 'Times New Roman', serif; + color: #2a2a2a; + background-color: #f5f5f5; + padding: 20px; + border: 1px solid #ddd; + border-radius: 5px; + font-size: 16px; + width: 300px; + margin: 0 auto; +} - .cost-details { - margin-top: 10px; - padding: 10px; - background-color: #fff; // A clean background for the cost details - border-left: 5px solid #004085; // A striking left border for emphasis - font-size: 24px; - - span { - font-weight: bold; // Make the dynamic content pop - } - - .cost { - color: #007bff; // A professional blue for costs - } - - .time { - color: #28a745; // A hopeful green for the time - } - } - } - +.main { + display: flex; + justify-content: center; + flex-direction: column; +} + +.legal-costs .cost-details { + margin-top: 10px; + padding: 10px; + background-color: #fff; + border-left: 5px solid #004085; + font-size: 24px; +} + +.legal-costs .cost-details span { + font-weight: bold; +} + +.legal-costs .cost-details .cost { + color: #007bff; +} + +.legal-costs .cost-details .time { + color: #28a745; +} .bait { - text-align: center; + text-align: center; } .find-mediator { - width: 100%; + width: 100%; } .center-button { - display: flex; - justify-content: center; - align-items: center; -} \ No newline at end of file + display: flex; + justify-content: center; + align-items: center; +} From 4d942c0f21fb9db2fd3eb283718cf565db78d966 Mon Sep 17 00:00:00 2001 From: Mateusz Szpyruk Date: Sat, 9 Mar 2024 21:26:01 +0100 Subject: [PATCH 22/27] Update --- Backend_correct/app.py | 13 +++++++++---- statystyki/load_data.py | 9 ++++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Backend_correct/app.py b/Backend_correct/app.py index 246ffcf..5dc24af 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -1,5 +1,9 @@ from flask import Flask, request, jsonify from flask_cors import CORS, cross_origin +import pathlib +import sys +import pandas as pd +import os app = Flask(__name__) cors = CORS(app) @@ -11,7 +15,9 @@ def recommended_mediators(): data = request.get_json() input = data.get('request_data', {}) - # print(input.get("location")) + + tmp = os.system('python3 ..\statystyki\load_data.py -t 1 -k 25000 -b True') + print(tmp) top_5 = { "response_type": "recommended_mediators", @@ -39,11 +45,10 @@ def recommended_mediators(): "ai_rating": 90, "user_rating": 99, "number_of_opinions": 5 - }]] + }], tmp] } - - return jsonify(top_5) + return jsonify(tmp) if __name__ == '__main__': app.run(debug=True) \ No newline at end of file diff --git a/statystyki/load_data.py b/statystyki/load_data.py index 94ce3c4..3225d26 100644 --- a/statystyki/load_data.py +++ b/statystyki/load_data.py @@ -20,7 +20,7 @@ def calc_stats(typ=TYP,KWOTA=KWOTA,BIEGLY = BIEGLY): koszt_bieglego= 1789.42 koszt = 0 if KWOTA < 100000 and typ != '4': - df = pd.read_excel('dane.xlsx',sheet_name='rejon') + df = pd.read_excel('..\statystyki\dane.xlsx',sheet_name='rejon') mask = df['RODZAJ'] == int(typ) liczba_miesiecy = df[mask]['mean'] procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 @@ -64,7 +64,7 @@ def calc_stats(typ=TYP,KWOTA=KWOTA,BIEGLY = BIEGLY): print(f"Średni czas trwania rozprawy typu {mapka[typ]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa dłuzej niz rok, jej minimalny koszt wyniesie {koszt}") elif KWOTA > 100000: - df = pd.read_excel('dane.xlsx',sheet_name='okreg') + df = pd.read_excel('..\statystyki\dane.xlsx',sheet_name='okreg') mask = df['RODZAJ'] == int(typ) liczba_miesiecy = df[mask]['mean'] procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 @@ -87,6 +87,9 @@ def calc_stats(typ=TYP,KWOTA=KWOTA,BIEGLY = BIEGLY): else: koszt = koszt_sadu + koszt_adwokata - print(f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}") + return_string = f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}" + print(return_string) + + return return_string calc_stats() \ No newline at end of file From 00c0af76122d3bf8aae5960f376c9a8030f2e462 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 21:35:25 +0100 Subject: [PATCH 23/27] fix: retrieving data from niewiem scrip[t --- Backend_correct/app.py | 86 ++++++++++++++++++++++++++++++++++++-- Backend_correct/dane.xlsx | Bin 0 -> 11647 bytes 2 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 Backend_correct/dane.xlsx diff --git a/Backend_correct/app.py b/Backend_correct/app.py index 5dc24af..95cf073 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -16,8 +16,8 @@ def recommended_mediators(): input = data.get('request_data', {}) - tmp = os.system('python3 ..\statystyki\load_data.py -t 1 -k 25000 -b True') - print(tmp) + result = calc_stats("2", 25000, True) + print(result) top_5 = { "response_type": "recommended_mediators", @@ -45,10 +45,88 @@ def recommended_mediators(): "ai_rating": 90, "user_rating": 99, "number_of_opinions": 5 - }], tmp] + }]] } - return jsonify(tmp) + return jsonify(top_5) + +def calc_stats(typ,kwota,biegly): + mapka = {'1':'cywilnej','2':'górniczej','3':'gospodarczej','4':'prawa pracy & ubezpieczeń'} + koszt_bieglego= 1789.42 + koszt = 0 + danePath = 'dane.xlsx' + if kwota < 100000 and typ != '4': + df = pd.read_excel(danePath,sheet_name='rejon') + mask = df['RODZAJ'] == int(typ) + liczba_miesiecy = df[mask]['mean'] + procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 + koszt_sadu = 0 + koszt_adwokata = 0 + if kwota <= 500: + koszt_sadu = 30 + koszt_adwokata = 90 + elif kwota > 500 and kwota <= 1500: + koszt_sadu = 100 + koszt_adwokata = 270 + elif kwota > 1500 and kwota <= 4000: + koszt_sadu = 200 + elif kwota > 4000 and kwota <= 7500: + koszt_sadu = 400 + elif kwota > 7500 and kwota <= 10000: + koszt_sadu = 500 + elif kwota > 10000 and kwota <= 15000: + koszt_sadu = 750 + elif kwota > 15000 and kwota <= 20000: + koszt_sadu = 1000 + elif kwota > 20000: + koszt_sadu = kwota * 0.05 + if koszt_sadu > 20000: + koszt_sadu = 20000 + + if kwota > 1500 and kwota <= 5000: + koszt_adwokata = 900 + elif kwota > 5000 and kwota <= 10000: + koszt_adwokata = 1800 + elif kwota > 10000 and kwota <= 50000: + koszt_adwokata = 3600 + elif kwota > 50000 and kwota <= 100000: + koszt_adwokata = 5400 + + + if biegly == 'True': + koszt = koszt_sadu + koszt_adwokata + koszt_bieglego + else: + koszt = koszt_sadu + koszt_adwokata + print(f"Średni czas trwania rozprawy typu {mapka[typ]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa dłuzej niz rok, jej minimalny koszt wyniesie {koszt}") + + elif kwota > 100000: + df = pd.read_excel(danePath,sheet_name='okreg') + mask = df['RODZAJ'] == int(typ) + liczba_miesiecy = df[mask]['mean'] + procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 + + if kwota <= 200000: + koszt_adwokata = 5400 + elif kwota > 200000 and kwota <= 2000000: + koszt_adwokata = 10800 + elif kwota > 2000000 and kwota <= 5000000: + koszt_adwokata = 15000 + elif kwota > 500000: + koszt_adwokata = 25000 + + koszt_sadu = kwota * 0.05 + if koszt_sadu > 20000: + koszt_sadu = 20000 + + if biegly == 'True': + koszt = koszt_sadu + koszt_adwokata + koszt_bieglego + else: + koszt = koszt_sadu + koszt_adwokata + + return_string = f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}" + print(return_string) + + return return_string if __name__ == '__main__': app.run(debug=True) \ No newline at end of file diff --git a/Backend_correct/dane.xlsx b/Backend_correct/dane.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..709d9f773d6e6c112b7442905cd805400af5fe64 GIT binary patch literal 11647 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 z zMf3){A#NsI5(}8wA?dKaU?x_&9B^eTs>S+ZaNq&ilqOvymb%H_VoIpTG!oPoN`U zIXoyss-w|MzH0}(N$GU0y5mS9y=De{OLGz3VjO{@J#0t(D7vUm$5#M{66M1u#+nFm z-bf=F(!eZ0M12WM(aqWo@A5o%4VHW^iu)<{)@6SOC~oxeyL()7a5AbYcRZ65yCD=e zMm^Igunz=Pp%ASyy7<^TUhBgh;7ue|U` zbP4|u!sphu9yVGa4^M9%8xN4(Pe%)H%<4c}bXWK}rDfgs`!ibL;{;Yx!Pm5`@p zWfAg(F*z&MnHD-g1lv}*ar=95oe zpecOP?Q^OmO>;!YQ?EF#52Ng9h*YY?HR9<~2rZ@tmdLvt;C9c}3Mp@=tZ2!YIdPQZ zYns}~8OynJ1wbr-nE9Y>wq;}+0fNtjLvta54;Ic4KJhlt%LGK%Gecn(_y+HT(VuSg zvPHtOJtz70*>dW`MOvCQaQffwq_|HFU|b5^hz0v^YbHd_gZmKluY*jsZyxKl5_Nfi zr{jfl>;#L>kiY7H-x8wU?XZjNcoPNW#`idbFs=X{@%#Jax_TQ76A~Za8E-B_I z&u$D>U?CNj$H(;*n*SKqn|RE?@o*JmfDgI}{;Fm`PtX5q8T^&~>&Q*f)LiE!=sV!} zLBj|umy>bS7ga1n^)hNmH<>+NQKQnGNqj6fwO?w-#HGkA2JH)0ZR z8_v_)$4pN7lvriwQKY{K?A1L9CEo>+*`ZMka!Si*2dOFkC^RP1Voqa!cKOl8kHyTo z>v)bSUnJcs2*6$C2@fbMhN;X@j+^AhK#*@UMCb7zdXL&gsa|w@eK`WFk64LGKDD5O zpj1t}O^UdLOmdwT3Gr!_i3Fn9NT65Lw{^&rel;o~`i3=X+VE_=HD%qP8b>6zl*tD* zQEMnE^r`gsHPf(!V*QbNGTi8_+I!KiYu=ITAlpQz7LP7ZqP=+qu&(HDf6T0 z-toL;xwOl-01N6Kt$XYQ!}sEkNe3bl7d%D(XOil_ckJKmKTuY+RR0d}cOu=t1%Ix2 zaI^Ret?qZhzmtppD%gYetAO|)s7Alz{7yCb6X^y{KKYG!^1JZw1N1+IZE*gmV*c+q z{ddvdr$m2>w!%A9@c;dNX7oG2?+vX#0W{&`{D0l}f3&xLNBO<-`V(cB_Kzp{y$<^w z;rHs~PXsLbf4q-hwaV`(e~-C;Vjv(q1t1{&M+E*|{O`W>ui~pLe-ZzeXVp?gh3m*q R<|Z~mKb*l?#QyWw{{fjbb+P~e literal 0 HcmV?d00001 From ba4b84644d93010807a4a5f16c8d8dcfd1ba7ee1 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 21:38:13 +0100 Subject: [PATCH 24/27] feat: return good values --- Backend_correct/app.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Backend_correct/app.py b/Backend_correct/app.py index 95cf073..4e4b68b 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -16,14 +16,14 @@ def recommended_mediators(): input = data.get('request_data', {}) - result = calc_stats("2", 25000, True) + {liczba_miesiecy, koszt} = calc_stats("2", 25000, True) print(result) top_5 = { "response_type": "recommended_mediators", "response_data": [{ - "cost_of_trial": 5000, - "time_of_trial": 70 + "cost_of_trial": koszt, + "time_of_trial": liczba_miesiecy }, [{ "name": "Mateusz Szpyruk", "specialization": "Prawo podatkowe", @@ -127,6 +127,6 @@ def calc_stats(typ,kwota,biegly): return_string = f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}" print(return_string) - return return_string + return {liczba_miesiecy, koszt} if __name__ == '__main__': app.run(debug=True) \ No newline at end of file From 6f5ba914469dac8ee5209e077c3bae6d1c938b8d Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 21:58:31 +0100 Subject: [PATCH 25/27] feat: correctly show costs --- Backend_correct/app.py | 39 ++++--------------- arai-frontend/src/app/backend.service.ts | 6 +-- .../app/case-input/case-input.component.ts | 10 +++-- .../src/app/cost-view/cost-view.component.ts | 10 ++++- arai-frontend/src/app/koszta.service.spec.ts | 16 ++++++++ arai-frontend/src/app/koszta.service.ts | 9 +++++ arai-frontend/src/app/requests-responses.ts | 13 +++++++ 7 files changed, 63 insertions(+), 40 deletions(-) create mode 100644 arai-frontend/src/app/koszta.service.spec.ts create mode 100644 arai-frontend/src/app/koszta.service.ts diff --git a/Backend_correct/app.py b/Backend_correct/app.py index 4e4b68b..b30fab1 100644 --- a/Backend_correct/app.py +++ b/Backend_correct/app.py @@ -16,15 +16,14 @@ def recommended_mediators(): input = data.get('request_data', {}) - {liczba_miesiecy, koszt} = calc_stats("2", 25000, True) - print(result) + liczba_miesiecy, koszt = calc_stats("2", 25000, True) top_5 = { "response_type": "recommended_mediators", - "response_data": [{ + "response_data": {"first": { "cost_of_trial": koszt, "time_of_trial": liczba_miesiecy - }, [{ + }, "second": [{ "name": "Mateusz Szpyruk", "specialization": "Prawo podatkowe", "location": input.get("location"), @@ -45,7 +44,7 @@ def recommended_mediators(): "ai_rating": 90, "user_rating": 99, "number_of_opinions": 5 - }]] + }]} } return jsonify(top_5) @@ -99,34 +98,10 @@ def calc_stats(typ,kwota,biegly): else: koszt = koszt_sadu + koszt_adwokata print(f"Średni czas trwania rozprawy typu {mapka[typ]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa dłuzej niz rok, jej minimalny koszt wyniesie {koszt}") - - elif kwota > 100000: - df = pd.read_excel(danePath,sheet_name='okreg') - mask = df['RODZAJ'] == int(typ) - liczba_miesiecy = df[mask]['mean'] - procent = (1 - df[mask]['procent do 12 miesięcy']) * 100 + returnMiesiace = round(liczba_miesiecy,0).to_string(index=False) + print(returnMiesiace, koszt) + return returnMiesiace, koszt - if kwota <= 200000: - koszt_adwokata = 5400 - elif kwota > 200000 and kwota <= 2000000: - koszt_adwokata = 10800 - elif kwota > 2000000 and kwota <= 5000000: - koszt_adwokata = 15000 - elif kwota > 500000: - koszt_adwokata = 25000 - - koszt_sadu = kwota * 0.05 - if koszt_sadu > 20000: - koszt_sadu = 20000 - - if biegly == 'True': - koszt = koszt_sadu + koszt_adwokata + koszt_bieglego - else: - koszt = koszt_sadu + koszt_adwokata - return_string = f"Średni czas trwania rozprawy typu {mapka[TYP]} wynosi {round(liczba_miesiecy,0).to_string(index=False)} miesięcy, a {procent.to_string(index=False)}% spraw trwa krócej niz rok, a jej minimalny koszt wynosi {koszt}" - print(return_string) - - return {liczba_miesiecy, koszt} if __name__ == '__main__': app.run(debug=True) \ No newline at end of file diff --git a/arai-frontend/src/app/backend.service.ts b/arai-frontend/src/app/backend.service.ts index d9ddcc1..2c151a2 100644 --- a/arai-frontend/src/app/backend.service.ts +++ b/arai-frontend/src/app/backend.service.ts @@ -1,5 +1,5 @@ import { EventEmitter, Injectable } from '@angular/core'; -import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, StatisticsOutputResponse, UserInputRequest } from './requests-responses'; +import { GenericRequest, GenericResponse, RecommendedMediatorsResponse, ReturnResponse, StatisticsOutputResponse, UserInputRequest } from './requests-responses'; import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; @Injectable({ @@ -32,7 +32,7 @@ export class BackendService { } } - public sendMessage(message: GenericRequest): Promise { + public sendMessage(message: GenericRequest): Promise { return new Promise((resolve, reject) => { if (message.request_type === "user_input") { this.userInputArray.push(message as UserInputRequest); @@ -41,7 +41,7 @@ export class BackendService { console.log(`request: `, JSON.stringify(message)); - this.http.post(this.address, JSON.stringify(message), { headers }).subscribe({ + this.http.post(this.address, JSON.stringify(message), { headers }).subscribe({ next: (response) => { console.log(`response: `, response); resolve(response); diff --git a/arai-frontend/src/app/case-input/case-input.component.ts b/arai-frontend/src/app/case-input/case-input.component.ts index 1b41a0d..ab86e05 100644 --- a/arai-frontend/src/app/case-input/case-input.component.ts +++ b/arai-frontend/src/app/case-input/case-input.component.ts @@ -4,8 +4,9 @@ import { MatInputModule } from '@angular/material/input' import { MatCheckboxModule } from '@angular/material/checkbox' import { MatButtonModule } from '@angular/material/button' import { BackendService } from '../backend.service'; -import { GenericRequest, UserInputRequest, userInput } from '../requests-responses'; +import { GenericRequest, ReturnResponse, UserInputRequest, userInput } from '../requests-responses'; import { Router } from '@angular/router'; +import { KosztaService } from '../koszta.service'; @Component({ @@ -24,7 +25,7 @@ export class CaseInputComponent { userInputForm: FormGroup; userInput: userInput | null = null; - constructor(private fb: FormBuilder, private readonly backendService: BackendService, private readonly router: Router) { + constructor(private fb: FormBuilder, private readonly backendService: BackendService, private readonly router: Router, private readonly kosztaService: KosztaService) { this.userInputForm = this.fb.group({ generic_input: [''], trial_value: [], @@ -37,8 +38,9 @@ export class CaseInputComponent { async onSubmit() { this.userInput = this.userInputForm.value; if(this.userInput !== null) { - const result = await this.backendService.sendMessage(new UserInputRequest(this.userInput)); - console.log(`result: `, result); + const result = await this.backendService.sendMessage(new UserInputRequest(this.userInput)) as ReturnResponse; + this.kosztaService.czas = String(result.response_data.first.time_of_trial); + this.kosztaService.koszta = String(result.response_data.first.cost_of_trial); this.router.navigate(['koszt']); } else { console.error(`caseInputComponent, onSubmit, userInput is null!`) diff --git a/arai-frontend/src/app/cost-view/cost-view.component.ts b/arai-frontend/src/app/cost-view/cost-view.component.ts index 3e7842e..98c6b11 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.ts +++ b/arai-frontend/src/app/cost-view/cost-view.component.ts @@ -3,6 +3,7 @@ import { StatisticsOutputInterface } from '../requests-responses'; import { DatePipe } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; import { Router } from '@angular/router'; +import { KosztaService } from '../koszta.service'; @Component({ selector: 'app-cost-view', @@ -17,7 +18,14 @@ export class CostViewComponent { time_of_trial: Date.UTC(0, 6, 0, 0, 0, 0, 0) }; -constructor(private readonly router: Router) {} +constructor(private readonly router: Router, private readonly kosztaService: KosztaService) {} + +ngOnInit() { + this.costData = { + cost_of_trial: Number(this.kosztaService.koszta), + time_of_trial: Number(this.kosztaService.czas), + } +} public calculateTimeDifference(utcDateNumber: number): string { const currentDate = new Date(); diff --git a/arai-frontend/src/app/koszta.service.spec.ts b/arai-frontend/src/app/koszta.service.spec.ts new file mode 100644 index 0000000..0b19e19 --- /dev/null +++ b/arai-frontend/src/app/koszta.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { KosztaService } from './koszta.service'; + +describe('KosztaService', () => { + let service: KosztaService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(KosztaService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/arai-frontend/src/app/koszta.service.ts b/arai-frontend/src/app/koszta.service.ts new file mode 100644 index 0000000..a726a17 --- /dev/null +++ b/arai-frontend/src/app/koszta.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class KosztaService { + public koszta: string = ""; + public czas: string = ""; +} diff --git a/arai-frontend/src/app/requests-responses.ts b/arai-frontend/src/app/requests-responses.ts index c77f39d..e5d2352 100644 --- a/arai-frontend/src/app/requests-responses.ts +++ b/arai-frontend/src/app/requests-responses.ts @@ -63,6 +63,19 @@ export class RecommendedMediatorsResponse extends GenericResponse { } } +interface response { + first: { + cost_of_trial: number, + time_of_trial: number + }, + second: RecommendedMediatorsInterface[]; +} + +export class ReturnResponse { + "response_type" = "recommended_mediators"; + "response_data": response +} + export interface StatisticsOutputInterface { "cost_of_trial": number, "time_of_trial": number From 1186b987d155b3b228414b981e4b9f4b237df285 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 22:00:15 +0100 Subject: [PATCH 26/27] feat: time of trial works --- arai-frontend/src/app/cost-view/cost-view.component.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arai-frontend/src/app/cost-view/cost-view.component.html b/arai-frontend/src/app/cost-view/cost-view.component.html index 48289bb..2517828 100644 --- a/arai-frontend/src/app/cost-view/cost-view.component.html +++ b/arai-frontend/src/app/cost-view/cost-view.component.html @@ -1,16 +1,16 @@
-

Chcesz zminimalizować koszta aż do 90%?

+

Chcesz znacznie zredukować koszta?

From deff9f12051cd3c9fd9c3775c09d48411e272f98 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Sat, 9 Mar 2024 22:16:33 +0100 Subject: [PATCH 27/27] feat: green online --- .../src/app/mediators-list/mediators-list.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arai-frontend/src/app/mediators-list/mediators-list.component.html b/arai-frontend/src/app/mediators-list/mediators-list.component.html index 8bdc7de..5a0d0ab 100644 --- a/arai-frontend/src/app/mediators-list/mediators-list.component.html +++ b/arai-frontend/src/app/mediators-list/mediators-list.component.html @@ -18,7 +18,7 @@

location_on {{ generateCity() }} {{ generateAddress() }}
attach_money Cena za godzinę: {{ generateCost() }} zł
- @if(generateOnline()) { class="available">Mediacja zdalna } + @if(generateOnline()) {

Mediacja zdalna

}